Commit Graph
100 Commits
Author SHA1 Message Date
Georges Basile Stavracas Neto c548d580ea edit-dialog: make alarms' widgets insensitive on read-only 2016-07-06 18:54:59 -03:00
Georges Basile Stavracas Neto 37061a38f4 edit-dialog: improve sizing 2016-07-06 18:54:59 -03:00
Georges Basile Stavracas Neto 5cb2e86fa6 edit-dialog: improve titlebar button
Make it insensitive when the event is read-only, and add
a tooltip for users to learn what does the button do.
2016-07-06 18:54:59 -03:00
Georges Basile Stavracas Neto a2b6b478bb edit-dialog: fix spurious properties 2016-07-06 18:54:59 -03:00
Georges Basile Stavracas Neto a5634dc5fb edit-dialog: put the time selectors in a revealer 2016-07-06 18:54:59 -03:00
Georges Basile Stavracas Neto 5dd456c81d edit-dialog: move All Day check below time row 2016-07-06 18:54:59 -03:00
Georges Basile Stavracas Neto b6c19e8399 edit-dialog: group dates and times
Instead of start and end, group the selectors by
dates and times.
2016-07-06 18:54:59 -03:00
Georges Basile Stavracas Neto 025d931da8 edit-dialog: use circular icons for sources
They look nicer in the current UI.
2016-07-06 18:54:59 -03:00
Georges Basile Stavracas Neto 9e17710052 edit-dialog: implement moving events between sources
After adding the button in the headerbar, it is natural to
bring back the ability to move events between sources.

This commit finally includes the usage of GcalManager:move_event_to_source
function, which was implemented ages ago.
2016-07-06 18:54:59 -03:00
Georges Basile Stavracas Neto 4d30db74f5 edit-dialog: increase summary label width
Since we moved the Agenda button to the headerbar,
fill the now free space with the summary label.
2016-07-06 18:54:59 -03:00
Georges Basile Stavracas Neto bbcf20cf44 edit-dialog: add a button in the headerbar
This button will be used to select the new source of the event.
2016-07-06 18:54:59 -03:00
Georges Basile Stavracas Neto 7844122dd2 event-widget: avoid crash when retrieving the DnD pixbuf
Since we're storing the GdkWindow relative to the event widget,
it's usually safer to create a pixbuf of the widget *after* it's
drawn, and not while it's being drawed.

This commit moves the pixbuf retrieval code to the draw-begin
implementation, so we only create the pixbuf when actually
using it.
2016-07-06 15:57:19 -03:00
Georges Basile Stavracas Neto c406b604e2 edit-dialog: fix Reminders dim label size 2016-07-06 12:38:09 -03:00
Georges Basile Stavracas Neto dc1f742cfe edit-dialog: make buttons sensitive when removing alarm 2016-07-06 03:13:38 -03:00
Georges Basile Stavracas Neto db2983be61 edit-dialog: sort alarms by relative date 2016-07-06 03:01:56 -03:00
Georges Basile Stavracas Neto 9723d60233 edit-dialog: make already-added alarms' buttons insensitive
Since we only support 1 alarm per time, we have to check and
eventually make insensitive the buttons related to the alarms.
2016-07-06 03:01:56 -03:00
Georges Basile Stavracas Neto 2e7d17fe63 edit-dialog: implement add alarm popover
The new popover handles all the possible alarms we support.
2016-07-06 03:01:56 -03:00
Georges Basile Stavracas Neto 2a18761908 edit-dialog: show available alarms
This commit introduces the ability in Edit dialog to
display the currently available alarms, as well as basic
editing of these alarms.

Currently, only removing the alarms and modifying it to
play a sound or not is available. The following up commit
will add the ability to add new alarms.
2016-07-06 03:01:56 -03:00
Georges Basile Stavracas Neto 19d68573dd utils: move utility method to get alarm's minutes 2016-07-06 03:01:56 -03:00
Georges Basile Stavracas Neto f518cba8e4 edit-dialog: simplify action handling
Instead of keeping a ref to the GcalEditDialog::select-calendar
action, use the builtin facilities and simplify the action
handling by using a const structure.

This is also a preparation for the next few commits where alarms
will be added.
2016-07-06 03:01:56 -03:00
Georges Basile Stavracas Neto 1ddc690810 event: add support for alarms
This commit prepares GcalEvent to handle alarms. Basically,
it is now able to load the current alarms of an event, and add
and remove alarms for them.
2016-07-06 03:01:56 -03:00
Georges Basile Stavracas Neto dfdaa3a590 year-view: simplify empty sidebar list calculation 2016-07-05 23:55:33 -03:00
Georges Basile Stavracas Neto 9fcb224032 window: avoid a crashing timeout
If the user quickly performs a search, open up the calendar
and close it immediately after, the timeout for showing the
event is mistakenly called after the window is destroyed and
causes Calendar to crash.

Fix that by keeping the source id tracked, and realizing it
on finalize().
2016-06-30 00:01:06 -03:00
Georges Basile Stavracas Neto 58b193f886 manager: keep the Shell's activated event alive
Currently, the user performs a search in Shell and activates
the result. That should show the edit dialog with the event
being edited, but it's not happening correctly.

Debugging the warnings generated, it was found that the event
was being unref()d and, obviously, that was not what we wanted.

Fix that by only unref()ing the events we don't want, and keeping
the wanted event alive.
2016-06-30 00:01:06 -03:00
Georges Basile Stavracas Neto 33c7031164 project: remove GbScrolledWindow
The max-content-height property was ported to GtkScrolledWindow,
which means we don't have to use a custom class anymore.
2016-06-17 18:18:38 -03:00
Georges Basile Stavracas Neto b0525a54f9 quick-add-popover: make it non-vertically-homogeneous
When there are lots of agendas, this would cause a huge
popover.
2016-06-17 18:00:32 -03:00
Georges Basile Stavracas Neto de921ff54b source-dialog: open file when response is ok
The source dialog currently skips the file selected by
pressing the Open button.

Fix that by also considering the response of the dialog.
2016-06-01 11:59:22 -03:00
Georges Basile Stavracas Neto 1d7d91cd7c Bump 3.21.2 release 2016-05-31 12:39:05 -03:00
Georges Basile Stavracas Neto 82b5953b76 month-view: fix invalid cell calculation 2016-05-21 19:15:14 -03:00
Georges Basile Stavracas Neto 1c90791d3b year-view: fix hover & dnd drawing on RTL locales 2016-05-21 19:06:15 -03:00
Georges Basile Stavracas Neto 5960a45d00 month-view: consider the days delay when dealing with the cell
The cell number does not consider the days delay, thus is not
the current day. To find the current day, we must remove the
days delay.
2016-05-21 19:02:39 -03:00
Georges Basile Stavracas Neto 88730dbafb year-view: don't render DnD when it leaves 2016-05-21 18:54:47 -03:00
Georges Basile Stavracas Neto 82c7918b15 year-view: implement the ::drag-drop operation
This magical commit finally implements the Drag and Drop
on Year view, enabling users to drop events from the sidebar
to the year navigator.
2016-05-21 18:54:47 -03:00
Georges Basile Stavracas Neto 44f5cbe607 year-view: render DnD selector on hover
This commit adds the ability to render a DnD square
to give visual feedback for the hover operation.
2016-05-21 18:54:47 -03:00
Georges Basile Stavracas Neto c7d92e9f37 year-view: make the year navigator a DnD dest
This way, we can drop events at the widget.
2016-05-21 18:54:47 -03:00
Georges Basile Stavracas Neto c2bf75d151 month-view: improve rendering of DnD target
This commit makes the lines always 1px.
2016-05-21 18:54:47 -03:00
Georges Basile Stavracas Neto 220d7c88bd month-view: save the event when dragged and dropped
This magical commit finally implements the Drag n' Drop
feature for Month view by changing the start and end dates
of the events according to the cell where the user drops
the event.
2016-05-21 18:54:47 -03:00
Georges Basile Stavracas Neto 1f534aa97e month-view: hold a pointer to the singleton GcalManager
It'll be used in the next commit to save the DnD'ed event.
2016-05-21 18:54:47 -03:00
Georges Basile Stavracas Neto 982b7da02b month-view: draw a drop target background
When dragging an event, it is very important to have
a visual feedback of the possible target areas.

As such, add a gtk_render_background() call to render
the drag cell's background.
2016-05-21 18:54:47 -03:00
Georges Basile Stavracas Neto d0821d7e4d month-view: set as a drag destination
The month view will be the first one to receive
support for drag and drop. As such, it must be
set as a drag destination.
2016-05-21 18:54:47 -03:00
Georges Basile Stavracas Neto dc65a9e906 event-widget: use a gint for date compare 2016-05-21 18:54:47 -03:00
Georges Basile Stavracas Neto b90d356c7b event-widget: set a proper icon for drag n' drop 2016-05-21 18:54:47 -03:00
Georges Basile Stavracas Neto f980bbc638 event-widget: setup itself as a drag source
Ideally, every single view will support drag and drop. So
let's just assume that and make the event widget set itself
as a drag source, and let each view set itself as a drag
target.
2016-05-21 18:54:47 -03:00
Georges Basile Stavracas Neto f3da1b2cec subscriber-view: iter the single day table
When we modify an event, the start date may change
and there is no way to retrieve it back. Since we're
relying on the start date to get the cell number and,
remove the widget, it leads to a crash because the
widget is not removed.

Fix that by brute-forcely search the widget in the
correct table.
2016-05-21 18:53:37 -03:00
Georges Basile Stavracas Neto 96de78d9af trivial: style fix 2016-05-21 18:53:16 -03:00
Georges Basile Stavracas Neto 46deb620e7 app-menu: add a Calendars... item in the app menu
I won't hurt to have 2 ways to access this dialog and,
appearently, the current behavior happens to bother
some users.

https://bugzilla.gnome.org/show_bug.cgi?id=762705
2016-05-20 22:33:35 -03:00
Georges Basile Stavracas Neto 9c150de822 year-view: don't cancel selection while dragging
This breaks the users' expectations that the navigator
will keep the selected dates. The old behavior was hazardous
for users with disabilities.

https://bugzilla.gnome.org/show_bug.cgi?id=762462
2016-05-20 22:18:34 -03:00
Georges Basile Stavracas Neto 6a8a4dfad0 year-view: add hover effect to the navigator
The current implementation of the Year navigator gives
absolutely no clue that the days are actually selectable,
which may confuse some users.

A simple way to inform the user that the Year navigator
is actually interactive is the hovering effect.

Fix the lack of feedback by adding the hover effect to the
year navigator.

https://bugzilla.gnome.org/show_bug.cgi?id=762462
2016-05-20 22:09:00 -03:00
Georges Basile Stavracas Neto 7553d5191f window: change check button state when a source is enabled
Instead of destroying and readding the rows, simply set the
checkbutton's active state when the source is enabled or
disabled.

https://bugzilla.gnome.org/show_bug.cgi?id=766259
2016-05-20 11:41:22 -03:00
Georges Basile Stavracas Neto a83e8dd972 year-view: calculate number of rows on-the-fly
Instead of adding another field to the structure and
do many pointer lookups, calculate the number of rows
on the fly.
2016-05-19 09:57:42 -03:00
Georges Basile Stavracas Neto e6c9ecd7eb month-view: clear the pointer when it's not stored in place
It leaks a reference, but only happens for end date.
2016-05-18 11:57:43 -03:00
Georges Basile Stavracas Neto 12e6de6383 month-view: update comments
Many things changed during the mean time.
2016-05-18 11:51:10 -03:00
Georges Basile Stavracas Neto 266474c1e3 month-view: correctly check if dates are different
The previous commit introduced many changes in the way
the conditions are done. Unfortunately, one of these
conditions was only partially fixed.

Fix that by using the correct function to compare dates.
2016-05-18 11:27:11 -03:00
Georges Basile Stavracas Neto 692a9639a3 month-view: fix various reference issues with GDateTime
The current code does multiple needless unrefs, uses the
GDateTime API in a wrongly manner and leaks references
all around.

This causes the Calendar application to emit multiple warning
messages and in the worst case, crash immediately.

Fix that by rewriting the critical sections of the code that
deals with the start and end mark cells.

https://bugzilla.gnome.org/show_bug.cgi?id=763641
2016-05-18 11:20:00 -03:00
Georges Basile Stavracas Neto b03edc6cd4 theme: drop .views CSS class
The default class for content viewers in Gtk+ is .view and
ideally provided by the theme. Not only that, but it provides
the exact same functionality of ours, but in a way that is
overridable for theme designers.

Fix this issue by removing the class from out CSS.

https://bugzilla.gnome.org/show_bug.cgi?id=765664
2016-05-08 14:45:57 -03:00
Georges Basile Stavracas Neto 48df0903e5 month-view: consider the top padding for the extra events popover
When the mouse button is released, only the bottom padding was being
taken into account to calculate whether the click was in the "Show
N events" area.

This commit fixes this issue by considering the top padding as well.

https://bugzilla.gnome.org/show_bug.cgi?id=765678
2016-05-08 14:14:56 -03:00
Georges Basile Stavracas Neto 4e735ef3ce build: define ABOUT_NLS when configuring
This fixes the various translation issues throughout
Calendar.

https://bugzilla.gnome.org/show_bug.cgi?id=764333
2016-03-29 20:41:04 -03:00
Georges Basile Stavracas Neto ff651256bd Bump 3.19.92 release 2016-03-14 21:56:42 -03:00
Georges Basile Stavracas Neto c9499b6f7b utils: better compare datetimes by date
By multiplying the year difference by 360 and
month difference by 30, we have a much better
idea of how far the dates are.
2016-03-11 22:55:00 -03:00
Georges Basile Stavracas Neto 1f021f8da2 month-view: fix one more child context issue
The code for multiday events was broken as well.
2016-03-09 17:42:21 -03:00
Georges Basile Stavracas Neto 34a6ac389a view: update interface code
This commit updates GcalView interface to use
modern GLib API and, consequently, removes tons
of obsolete code.
2016-03-09 14:19:04 -03:00
Georges Basile Stavracas Neto 042a9b34ab month-view: emit dates in local timezone 2016-03-09 12:22:06 -03:00
Georges Basile Stavracas Neto 7d3e125012 event-widget: remove obsolete comment 2016-03-09 12:07:05 -03:00
Georges Basile Stavracas Neto 1c52e36c71 month-view: match style context state from child
We were mistakenly using the style context of the view
to retrieve the child's margin.

Fix that by retrieving the child margin from the child's
style context.
2016-03-09 12:04:28 -03:00
Georges Basile Stavracas Neto fef23f1243 search-view: don't load events with no dtstart 2016-03-09 11:19:52 -03:00
Georges Basile Stavracas Neto 09b79e1cc8 Bump 3.19.91 release 2016-03-02 22:28:53 -03:00
Georges Basile Stavracas Neto 64747e4f80 event: load tzid with icaltimezone_get_builtin_timezone 2016-03-01 15:27:07 -03:00
Georges Basile Stavracas Neto 67e370034a style: fix white on white current day on year view 2016-03-01 01:19:41 -03:00
Georges Basile Stavracas Neto 7be1dd95fa event-widget: draw icons at the end of the widget
Instead of breaking the vertical alignment of events by
drawing icons both at the start and end of the widget,
only draw them by the end.

This commit also improves drawing for RTL locales.
2016-03-01 00:16:49 -03:00
Georges Basile Stavracas Neto 5227f3fcdc event-widget: show start time when event is timed
We differentiate all day events from timed events by their
ordering, but we don't give any visual clues of this
differentiation.

Fix that by adding the start time of the event when it's a
timed event.

https://bugzilla.gnome.org/show_bug.cgi?id=753131
2016-02-29 23:24:14 -03:00
Georges Basile Stavracas Neto d84be66d70 event-widget: bring back alarm icon 2016-02-29 22:20:52 -03:00
Georges Basile Stavracas Neto ab902030e7 edit-dialog: don't destroy the dialog on delete 2016-02-29 18:09:59 -03:00
Georges Basile Stavracas Neto a56e6c00c3 event: both start & end dates must be midnight to be all day
https://bugzilla.gnome.org/show_bug.cgi?id=762570
2016-02-29 16:14:22 -03:00
Georges Basile Stavracas Neto 4d170155de event: remove spurious debug message 2016-02-29 16:09:55 -03:00
Georges Basile Stavracas Neto 9a3baf726c edit-dialog: correctly transform the edited datetime 2016-02-29 15:49:36 -03:00
Georges Basile Stavracas Neto ce2c955269 event: correctly store timezones 2016-02-29 15:49:22 -03:00
Georges Basile Stavracas Neto d70613929b utils: fix timezones on event component creation 2016-02-28 14:13:19 -03:00
Georges Basile Stavracas Neto 1cdd73a69a event: format tzid with builtin GDateTime facilities 2016-02-28 14:13:19 -03:00
Georges Basile Stavracas Neto af6f2141ab window: use g_clear_pointer instead of g_date_time_unref
This would handle the case where the datetime is NULL for us.
2016-02-28 14:13:19 -03:00
Georges Basile Stavracas Neto 85f4854a73 quick-add-popover: only multiday events are all day
Everything else is considered a 1h event starting now on
local timezone.
2016-02-26 21:14:30 +01:00
Georges Basile Stavracas Neto e85e55a350 month-view: only send end_date if event is multiday 2016-02-26 21:14:23 +01:00
Georges Basile Stavracas Neto 87620ebbbd event: properly set the timezone 2016-02-26 21:14:23 +01:00
Georges Basile Stavracas Neto e067e8cf73 event-widget: disconnect from event's signals on finalize
When we finalize, we remove the event. Normally this means
that the event also gets finalized, as the widget almost
always holds the only reference to the event.

However, there are some rare cases where we finalize the widget
but not the event. If the event the updates the color or the
summary, we try to redraw the finalized widget and crash.

Fix that by disconnecting the signals when finalizing the widget.
2016-02-22 00:02:59 -03:00
Georges Basile Stavracas Neto e4bfdb7ed2 event: plug a memory leak 2016-02-22 00:02:59 -03:00
Georges Basile Stavracas Neto 079750561a window: remove queued event on finalize
When the user removes an event, we first hide it and,
after a timeout, we remove it. The problem is that if
the user closes the window before the timeout is fired,
the event never gets deleted.

Fix that by deleting the event on finalize if there's
any event queued.

https://bugzilla.gnome.org/show_bug.cgi?id=762284
2016-02-18 15:36:56 -02:00
Georges Basile Stavracas Neto d5cd6c7fc9 window: don't block mainloop when showing dialogs
By using gtk_dialog_run(), we enter in a recursive mainloop
which blocks the parent's one. Because of that, we see weird
things like the quick add popover not still floating around.
2016-02-18 15:28:17 -02:00
Georges Basile Stavracas Neto 9df6a37fd9 edit-dialog: fix more timezone issues 2016-02-18 10:27:53 +01:00
Georges Basile Stavracas Neto fd6d6e97c9 quick-add-popover: fix event creation again 2016-02-18 04:02:46 -02:00
Georges Basile Stavracas Neto 21aa8ecde4 event-widget: simplify rendering code 2016-02-18 04:02:46 -02:00
Georges Basile Stavracas Neto 1a77668b40 style: improve style 2016-02-18 02:11:08 -02:00
Georges Basile Stavracas Neto 83d49be004 style: match single and multi day event themes
We were using different border radius values, and this
commit unifies them.
2016-02-18 02:09:54 -02:00
Georges Basile Stavracas Neto 47bf180809 month-view: fix bottom event overflow calc
We draw a sector of height = bottom_padding * 2 + font_height,
but we calculate it wrongly. Fix that by correctly multiplying
by 2.
2016-02-18 02:08:16 -02:00
Georges Basile Stavracas Neto 6775ffd7b3 edit-dialog: edit datetimes in the system timezone
The dates are adjusted to the system timezone when an
event is set, and we adjust it back to the event's zone
when we save and close the dialog.
2016-02-18 01:28:42 -02:00
Georges Basile Stavracas Neto beac852401 year-view: adjust hours to local timezone
The same principle of month view's overflow popover.
2016-02-18 04:13:34 +01:00
Georges Basile Stavracas Neto 86c6e5da87 quick-add-popover: set local timezone when editing the event
If we add directly from the quick add popover, the event is
all day by default. If we're editing the event, it may or
may not be an all day event. In that case, if the user decides
to give it a time, we want it to be in the local timezone.
2016-02-18 04:03:09 +01:00
Georges Basile Stavracas Neto e5cd5ba7f5 edit-dialog: set UTC timezone when event is all day
This is part of the definition of an all day event.
2016-02-18 04:02:37 +01:00
Georges Basile Stavracas Neto 1af016e2d5 month-view: use adjust hours on popover headers
If an event is from a different timezone, the headers of
the overflown popover should be translated to the current
timezone.

For example, if an event happens at 17h -0300, the translated
hour is 22h +0200. The current code already handles these
differnces, but the listbox row wasn't updated.
2016-02-18 03:42:41 +01:00
Georges Basile Stavracas Neto 2bb5f42b66 edit-dialog: forbid editing times when source is readonly 2016-02-18 03:34:48 +01:00
Georges Basile Stavracas Neto b1184978b1 window: use GDateTimes to pass the range
Another case where we can improve the code by porting
to GLib's api.
2016-02-18 03:31:35 +01:00
Georges Basile Stavracas Neto 5a75abb52e data-model: fix boudaries' checks
The end date is non-incluse, as defined by the iCalendar
protocol.
2016-02-18 03:31:35 +01:00