Commit Graph
100 Commits
Author SHA1 Message Date
Erick Pérez Castellanos e2d4e52ec7 month-view: monitor click only on overflow indicator 2014-12-22 08:38:19 -05:00
Erick Pérez Castellanos 83bd285f3d window: use GcalView::create-event-detailed signal 2014-12-22 08:38:19 -05:00
Erick Pérez Castellanos c97473e955 month-view: emit ::create-event-detailed
Emit this signal from the "Add new event..." button of overflow popover,
the reason is mainly aesthetics since it won't look good showing one
popover after another.
2014-12-22 08:38:18 -05:00
Erick Pérez Castellanos 09f42ad955 gcal-view: signal the opening of edit-dialog directly 2014-12-22 08:38:18 -05:00
Erick Pérez Castellanos 0749520a35 edit-dialog: don't open with summary entry empty 2014-12-22 08:38:18 -05:00
Erick Pérez Castellanos 56f7f88572 month-view: fix insert ordered widgets
The head of the list might changed when ordering the list at insertion,
then, some events was getting lost
2014-12-22 08:38:18 -05:00
Erick Pérez Castellanos 4bef6148f9 month-view: sort single-day event widgets by start date
This guarantee that events widgets appear sorted by its start date on
the overflow popover
2014-12-20 09:10:00 -05:00
Erick Pérez Castellanos 420e66bdb1 event-widget: add ::compare_by_start_date
This function will eventually deprecate gcal_compare_event_widget_by_date()
2014-12-20 09:10:00 -05:00
Erick Pérez Castellanos f9627fcf98 month-view: show start time header on overflow popover 2014-12-20 09:10:00 -05:00
Erick Pérez Castellanos 9badd9f502 month-view: read 12/24 time format setting
The setting will be used when showing the start time of events in the
overflow popover.
2014-12-20 09:10:00 -05:00
Erick Pérez Castellanos 5051ba600f month-view: draw a background on the overflow indicator
This code suffer from a similar bug to ::queue_area on
::size_allocate. This need some revisiting to make it work properly.
2014-12-20 09:10:00 -05:00
Erick Pérez Castellanos 7a00364efb month-view: preserve hovered cell on popover show
The hovered cell is the indicator to draw the background and the
coloring of the overflow indicator. Preserve its value as long as the
overflow is shown.
2014-12-20 09:10:00 -05:00
Erick Pérez Castellanos d63d23bc16 month-view: add title to overflow popover 2014-12-20 09:10:00 -05:00
Erick Pérez Castellanos 96a939ab48 month-view: update note about Gtk+ clipping bug 2014-12-20 09:10:00 -05:00
Erick Pérez Castellanos bd62b96a75 month-view: FIXME removed, feature added 2014-12-20 09:10:00 -05:00
Erick Pérez Castellanos ca20726959 month-view: fix popover placement on RTL locales 2014-12-20 09:09:59 -05:00
Erick Pérez Castellanos 046dac4fe9 month-view: highlight overflow indicator on hover 2014-12-20 09:09:59 -05:00
Erick Pérez Castellanos 07b4ee4862 month-view: initial impl of overflow popover 2014-12-20 09:09:59 -05:00
Erick Pérez Castellanos e5f507b95a month-view: track events on overflow indicator area
We keep to state variables to handle hovering and clicking on the
indicator.
Note: This commit does not build because requires of upcoming work
2014-12-20 09:09:59 -05:00
Erick Pérez Castellanos 9bfa048101 month-view: add proper count of overflowed events
Keep a list of the hidden events per cell in order to add them later to
the popover
2014-12-20 09:09:59 -05:00
Erick Pérez Castellanos 06e43d836f month-view: amend fix ::forall impl 2014-12-19 10:40:39 -05:00
Erick Pérez Castellanos 2c639d2d00 month-view: queue draw on size_allocate
It should not be necessary to queue a draw operation after
::size_allocate. This has been discussed over with Gtk+ devs, as soon as
the bug is fixed these statements will goes away.
2014-12-18 22:21:18 -05:00
Erick Pérez Castellanos 780bebf871 month-view: optimize text direction query
By keeping the value of the direction factor k around we save code and
function calling every time we need to use it.
2014-12-18 19:58:13 -05:00
Erick Pérez Castellanos 232b93095d month-view: fix ::forall and ::remove impl
Take care of removing parts-widgets first whenever a master widgets is removed
2014-12-18 19:25:23 -05:00
Erick Pérez Castellanos 5b4e7d470d month-view: implement GcalView::get_by_uuid 2014-12-18 15:43:13 -05:00
Erick Pérez Castellanos 170501bbdd month-view: add helper method 2014-12-18 14:50:29 -05:00
Erick Pérez Castellanos ceabae5e2c month-view: rework handling of widget's hiding
Previously, we were hoping keeping a list of the widgets hidden by the
application, but the implementation did not work.
Now we keep a hash of those widgets hidden because of the overflow, when
a widget is not visible, and it's not in GcalMonthView::hidden_as_overflow
hash, then was hidden by the application.
2014-12-18 14:44:05 -05:00
Erick Pérez Castellanos 1f9b380238 month-view: overflow indicator drawn centered 2014-12-18 01:54:24 -05:00
Erick Pérez Castellanos fbeb6d35b2 month-view: initial implementation of size alloc
This implements breaking of events, and showing of its parts. It also
provides the information need for the drawing of the overflow indicator.
This implementation brings support to RTL locales as well as LTR.

There's some things still missing here:
1. Mark the widgets with CSS classes for styling its broken status
2. Draw properly the overflow indicator
2014-12-18 01:23:46 -05:00
Erick Pérez Castellanos 7f7739db6d month-view: add helper for hidden event-widgets
When an event is deleted we hide it while the notification with the Undo
option is shown and after a while the event is actually destroyed. This
helper is meant for keeping a set of the event-widgets hidden in that situation
2014-12-18 01:11:17 -05:00
Erick Pérez Castellanos 87856ec31c month-view: initial drawing of overflow indicator
Added FIXME for properly wording the message
2014-12-18 01:11:04 -05:00
Erick Pérez Castellanos 4c7626cad2 month-view: fix ::add, ::remove, ::forall vfuncs
Fixed some bugs:
1. Insert single-day event-widgets on the proper structure
(GcalMonthView::single_day_children)
2. Add FIXME for keep single-day events-widgets ordered
3. Properly handle hash table replacement. GHashTable::replace call
key_destroy_func() and value_destroy_func() if those are provided
4. Don't keep NULL lists on any of the hashes kept by GcalMonthView
5. Change the order in which forall is executed. Don't modify the hashes
while iterating over it.
2014-12-18 01:03:45 -05:00
Erick Pérez Castellanos 9c29618fb6 month-view: helper to calculate the split of widgets
This calculates the split according to the space left on each cell
2014-12-18 00:59:58 -05:00
Erick Pérez Castellanos 51c7e5e2ea event-widget: add convenient API to query dates
Simply it is faster not to allocate memory when there is no need of it
2014-12-18 00:56:46 -05:00
Erick Pérez Castellanos f5a08f24bb month-view: rework internals data structures
Changed internals data structures in order to handle allocation of
multidays events properly.
Modified GtkContainer::add, GtkContainer::remove and
GtkContainer::forall according to this new internal structure.
Commented out GcalView::get_by_uuid since it might get deprecated.
2014-12-16 10:06:09 -05:00
Erick Pérez Castellanos 719a294fae event-widget: add helper API
Added GcalEventWidget::is_multiday to check if an event span more than
one day.
Added GcalEventWidget::compare_by_length which compares two event
widgets according to the duration of the events they represent.
2014-12-16 10:06:09 -05:00
Erick Pérez Castellanos d1a7c6ee24 month-view: fix sigsegv if end_date is not created 2014-12-16 10:06:09 -05:00
Erick Pérez Castellanos 52a4e617b5 month-view: draw selected days marks 2014-12-16 10:06:09 -05:00
Erick Pérez Castellanos 70d69ac966 month-view: organize, clean code 2014-12-16 10:06:08 -05:00
Erick Pérez Castellanos 268ef17484 month-view: updated press/release/motions handlers
Now internal values of button press, motion and releases are kept
according the cell numbers alone, as explained in the comments.
2014-12-16 10:06:08 -05:00
Erick Pérez Castellanos aaee4a2657 month-view: initial work to new mockup from Lapo
There's a bunch of stuff missing here, but this code is already working.
This includes only part of the drawing code, I already take into account
here LTR and RTL languages.
Here month-view make use of classes for styling different regions of the
grid, there are:
1. header class, which is used for the font and color details of the
days naming on the top of the grid
2. current class, which is used for drawing the current day number and
its background
3. lines class: which set the color property of the lines in the grid
4. :selected pseudo-class is used for drawing the font on the days
marked when creating an event. This will work as well for keyboard
navigation

What's missing here:
1. properly update click/press marks to new model
2. draw border around the selected days
2014-12-16 10:06:08 -05:00
Erick Pérez Castellanos 60946551b3 event-widget: add ::clone API 2014-12-16 10:06:08 -05:00
Erick Pérez Castellanos 069ea90d57 manager: implement ::enable/disable methods 2014-12-15 13:38:42 -05:00
Erick Pérez Castellanos 9e42922543 manager: Keep references of the clients internally
In order to remove clients from the ECalDataModel without destroying we
need to keep a reference to it.
2014-12-15 13:38:37 -05:00
Erick Pérez Castellanos 2a6b9a31ce app: fix sigsegv when not getting a date from cli 2014-12-10 01:21:19 -05:00
Erick Pérez Castellanos e2a2721e9e window: add safety check 2014-12-09 15:37:02 -05:00
Erick Pérez Castellanos 83345b2fb4 app: gained --date option
GcalWindow loads the date from GcalApplication.
2014-12-09 15:36:01 -05:00
Erick Pérez Castellanos 738bb89d94 edit-dialog: fix memory leaks 2014-12-08 12:33:41 -05:00
Erick Pérez Castellanos e58959d851 e-cal-data-model: fix event with no end-date
Google Calendar set no end-date on events with 0 sec duration time. We
need to make the corner case work.
2014-12-08 11:33:44 -05:00
Erick Pérez Castellanos 98e4b44a7d manager: defer adding client to the internal hash
Wait until the client is opened and connected to add it to the internal
hash, so GcalManager::get_sources work properly.
2014-12-08 11:21:14 -05:00
Erick Pérez Castellanos e62f48bfea events: fix handling of event with no end date
Fix the sigsegv in edit-dialog and event-widgets when there's no
end-date set.
Set a guard in Utils::gcal_dup_icaltime function.
There's still some problems with the events showing the first time but
not anymore.

Bug: https://bugzilla.gnome.org/show_bug.cgi?id=736002
2014-12-08 11:21:14 -05:00
Erick Pérez Castellanos b5ff5437f6 manager: removed unneeded code, and comments 2014-12-05 22:40:15 -05:00
Erick Pérez Castellanos db71a1c1f6 window: adjust new-event popover position 2014-12-05 22:30:10 -05:00
Erick Pérez Castellanos 314f60e040 about: praise our artists properly
Add jimmac to artists list
2014-12-05 16:20:57 -05:00
Erick Pérez Castellanos fe7b1d942e app: use new icon 2014-12-05 16:20:16 -05:00
Erick Pérez Castellanos 2853e9a3b2 about: add Lapo to the design/art team 2014-12-05 08:17:30 -05:00
Erick Pérez Castellanos da19ffd6ab window: create edit-dialog at construct time
This isn't as dynamical as one was, so create it at construction will
work just fine, and we have the 'if's.
2014-12-05 08:17:30 -05:00
Erick Pérez Castellanos 532a4de02e event-widget: fixed typo on method name 2014-12-05 08:17:30 -05:00
Erick Pérez Castellanos 9188d37e53 manager: removed EVENT_CREATED signal
Since we are opening edit-dialog on event creation directly, we don't
need this notification anymore.
2014-12-05 08:17:30 -05:00
Erick Pérez Castellanos 1f614948a8 style: HACKING updated 2014-12-04 17:31:00 -05:00
Erick Pérez Castellanos 1916986f15 app: active More details button from new event popover
GcalWindow got connected to GcalManager, and pass just created component
to GcalEditDialog
GcalEditDialog gained support to handle component not committed to
manager singleton instance yet.
2014-12-04 17:10:56 -05:00
Erick Pérez Castellanos b36a390292 manager: updated GcalManager::create_event
Move the API to use ECalComponent instead of uids.
2014-12-04 17:10:56 -05:00
Erick Pérez Castellanos 78bced937e utils: add helper method for component construction 2014-12-04 17:10:56 -05:00
Erick Pérez Castellanos 1c277b99b3 window: connect signal to the right object
The ::remove_event handler was not connected to the GtkRevealer so it
was not executing itself when the notification was closed. That caused
the application never removed any events. Fixed now.
2014-12-04 17:10:55 -05:00
Erick Pérez Castellanos dc941b6a9d edit-dialog: use reccurrence_id of events
When generating the uuid of an event if the event is recurrent, you need
to take into account its rid.
2014-12-04 17:10:55 -05:00
Erick Pérez Castellanos 927233cabb build: remove GcalNewEventWidget related files 2014-12-04 17:10:55 -05:00
Erick Pérez Castellanos af3ce14ac2 app: remove GcalNewEventWidget, use GcalWindow ui
Since there will be no behavior on GcalNewEventWidget we can use simple
ui from GcalWindow to accomplish this.
2014-12-04 17:10:55 -05:00
Erick Pérez Castellanos 83eb99efba manager: update retrieve sources API
The move to newer API is to drop GtkListStore dependency on the manager.
2014-12-04 17:10:55 -05:00
Erick Pérez Castellanos 329118079d manager: update GcalManager::remove_event API
Move GcalManager::remove_event API to new style using ESource and
ECalComponent instead of uuid
Update GcalWindow uses of this API
2014-12-04 17:10:55 -05:00
Erick Pérez Castellanos 67732884bb utils: build an uuid string
Use an ESource and ECalComponent to build an uuid string with the format specified
2014-12-04 17:10:55 -05:00
Erick Pérez Castellanos e0ef2892fd window: fixed event removed notification
Moved all this code into ui file.
Removed public API of GcalWindow. In time, if needed by some other
object it can be brought back.
2014-12-04 17:10:55 -05:00
Erick Pérez Castellanos 52fc61a1a5 window: set view visible before show it
Since the move into using GtkBuilder's files the views aren't show
automatically. That's why the setting of the view initially was failing.

Bug: https://bugzilla.gnome.org/show_bug.cgi?id=741003
2014-12-04 17:10:54 -05:00
Erick Pérez Castellanos 947e23758c misc: whitespace, comments and strings fixed 2014-12-04 17:10:54 -05:00
Erick Pérez Castellanos f3bd29ba9c app: use new search ECalDataModel 2014-12-04 17:10:54 -05:00
Erick Pérez Castellanos 7fa696c137 manager: added ECalDataModel for search alone 2014-12-04 17:10:54 -05:00
Erick Pérez Castellanos 934b1c4be0 window: more code moved into ui file 2014-12-04 17:10:54 -05:00
Erick Pérez Castellanos f8f8991510 window: move more code into ui file
Probably I can load the GMenuModel of the popover directly but I don't
know exactly how, and I've asked already and you can set bindings using
builder's ui file, just like before I don't know how at this time.
2014-12-04 17:10:54 -05:00
Erick Pérez Castellanos 3887951323 month-view: more double to int rounding issues
Style fixes
2014-12-04 17:10:52 -05:00
Erick Pérez Castellanos 260237bc85 month-view: style cleaning 2014-12-04 17:10:52 -05:00
Erick Pérez Castellanos 5cbdf28387 month-view: added current day highlight
Improved ::draw vfunc code. Use .current class to handle active day styling
2014-12-04 17:10:52 -05:00
Erick Pérez Castellanos 298a0e56c2 Revert: month-view: fix cell rendering glitch
This was not the proper fix.
2014-12-04 17:10:52 -05:00
Erick Pérez Castellanos 4425149647 month-view: optimized, organized ::draw vfunc code 2014-12-04 17:10:51 -05:00
Erick Pérez Castellanos 184854e318 week-view: take into account GNOME time format
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=703321
2014-12-04 17:10:51 -05:00
Erick Pérez Castellanos 8c5eaa66c8 views: fixed docs style 2014-12-04 17:10:51 -05:00
Erick Pérez Castellanos c77076c7d6 week-view: added current day highlight
Cleaned code a little bit. Removed unnecessary instructions. Added style
class to handle current day.
2014-12-04 17:10:51 -05:00
Erick Pérez Castellanos 746864e7bc event-widget: fix icons scaling, made 16x always.
Previously the scaling was made to the size of the text layout which
caused a blurriness of the icon. Making its size a multiple of 16 made
the icon preserve its sharpness.
2014-12-04 17:10:51 -05:00
Erick Pérez Castellanos 3b9f2aa128 window: set timezone of date when moving to today 2014-12-04 17:10:51 -05:00
Erick Pérez Castellanos c526329450 misc: code style and comments removed 2014-12-04 17:10:51 -05:00
Erick Pérez Castellanos 251e849548 year-view: launch edit dialog on event activate 2014-12-04 17:10:51 -05:00
Erick Pérez Castellanos 2cecaf9337 week-view: add first_weekday setting to view
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=703317
2014-12-04 17:10:50 -05:00
Erick Pérez Castellanos a67635bb05 month-view: add first_weekday settings to view
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=703317
2014-12-04 17:10:50 -05:00
Erick Pérez Castellanos ff73499ab0 utils: retrieve first_weekday from locale
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=703317
2014-12-04 17:10:50 -05:00
Erick Pérez Castellanos 8531fedde9 month-view: optimize set :date property
There's no need to calculate first day of month date twice.
2014-12-04 17:10:50 -05:00
Erick Pérez Castellanos 4d7237b46e window: shorten stack transition duration 2014-12-04 17:10:50 -05:00
Erick Pérez Castellanos c9d347cceb misc: updates to code style and docs 2014-12-04 17:10:50 -05:00
Erick Pérez Castellanos 461057727b window: sync search-view hiding with stack transition
The previous approach was causing an error on the animation code of
GtkStack because the search-view's GdkWindow was banishing before
the end of the animation.
2014-12-04 17:10:50 -05:00
Erick Pérez Castellanos e68ca325b4 views: use GcalEventWidget API for locked sate 2014-12-04 17:10:50 -05:00
Erick Pérez Castellanos 4c98b16c76 event-widget: render locked state of the calendar 2014-12-04 17:10:50 -05:00
Erick Pérez Castellanos b3cab47334 build: remove unused c/css code 2014-12-04 17:10:49 -05:00
Erick Pérez Castellanos f4eaf2217d search: added initial search implementation 2014-12-04 17:10:49 -05:00