Commit Graph
596 Commits
Author SHA1 Message Date
Titouan Real 923cb668da Make GcalEventEditor use GcalCalendarComboRow 2024-11-08 19:09:56 +01:00
Titouan Real 3ca07464a2 Make GcalImportDialog use GcalCalendarComboRow 2024-11-08 19:09:56 +01:00
Titouan Real 90d2b262a3 Add GcalCalendarComboRow & GcalCalendarComboRowItem 2024-11-08 19:09:52 +01:00
Abdullahi Usman b44c712a3a agenda-view: Sort events in chronological order
agenda-view sort_func uses gcal_date_time_compare_date, which is
insufficient for this case.
we want to compare events date(s) down to the last minute, so that we
can be able to sort them in chronological order.
we use the g_date_time_compare function.

Fixes: #936

Co-authored-by: Georges Basile Stavracas Neto
<georges.stavracas@gmail.com>
2024-11-06 10:53:09 -03:00
Georges Basile Stavracas Neto 416a369f0c window: Remove unused error handling 2024-11-06 10:43:42 -03:00
Georges Basile Stavracas Neto 1e8fa097e0 window: Simplify CSS recalculation code 2024-11-06 10:36:46 -03:00
Georges Basile Stavracas Neto 6b92164ff2 importer: Don't duplicate string unnecessarily 2024-11-06 10:05:27 -03:00
Georges Basile Stavracas Neto 2d75d3fb30 importer: Assert instead of trace
We go to great lengths to convert to UTF-8, so it's only fair to
expect it to be UTF-8
2024-11-06 10:04:26 -03:00
Georges Basile Stavracas Neto fa88b4999c importer: Cosmetics 2024-11-06 10:04:03 -03:00
Otávio Silva 98ced271ef importer: convert different file encodings to UTF-8
Files that aren't in the UTF-8 encoding were breaking the import dialog.
This tries to guess the encoding of the file before processing it, based
on the Byte Order Mark (BOM), and converts it to UTF-8.

Fixes #1243
2024-11-05 21:10:29 +00:00
Enzo MAROS 0e09efc43c window: Create calendar-management-dialog on demand
When the user deletes a calendar in the calendar management dialog, a
popover allows them to undo the deletion. The calendar is fully deleted
only when the toast is dismissed or when the toast reaches its timeout.
When the user closes the calendar management dialog without dismissing
the toast and before the end of the timeout, the calendar can still be
manipulated for a short period of time.

To fix this, I removed the calendar-management-dialog from the UI of the
window, and made the window create and destroy the dialog on demand.
This forces the toast overlay to dismiss all toasts.
2024-10-22 12:35:45 +00:00
Austin Pringle 11db394643 gcal-week-header: Change week header capitalization on week number heading. 2024-10-22 11:48:15 +00:00
Automeris naranja 061c027520 event-editor-dialog: Use an AdwBanner when a calendar is read-only
Using a tooltip to inform when the calendar is read-only won't
work in touch devices.

This change also improves a11y, as Orca now reads this message,
something that wasn't happening before.
2024-10-22 11:29:53 +00:00
Georges Basile Stavracas Neto c5424c8bfa calendar-management/new-calendar: Remove unused code 2024-10-11 22:39:04 -03:00
Otávio Silva b25623071f view: Fix drag and drop issue with events in daylight saving time
When dragging and dropping events in week view during the week of
daylight savings time switch, events were off by one hour. This fixes this
behavior by using the util function gcal_date_time_add_floating_minutes.

Fixes #1198
2024-08-28 00:20:18 +00:00
Jean-François Fortin Tam f7aadd23bb import-dialog: Add a11y description on "hidden" calendar status icons 2024-08-27 15:25:22 -04:00
Jean-François Fortin Tam 7566bf273b import-dialog: Show indicator icons for invisible calendars
When importing .ics files as events,
you can assign the resulting events to any writable calendar,
even those hidden from the view.

However, it is good to have a hint of such calendars being invisible.
That way, users can have predictable expectations.

Fixes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1184
2024-08-27 15:04:03 -04:00
Jean-François Fortin Tam f76659c706 import-dialog: Move parent source name color code
Reading the `get_source_parent_name_color` call after `color_paintable`,
one gets the impression they are somehow related, but they are not.

Furthermore, this unfortunate location complicates my upcoming changes.
Let's relocate that code next to the context where it is actually used.

This improves clarity and maintainability.
2024-08-27 14:45:49 -04:00
Diego Iván M.E 2df48b6fc2 import-dialog: Fix default calendar search
By !474, we now use a GListModel to store the calendars.
Nonetheless, we still use the GListStore API, which no longer
works.

This commit introduces a simple linear search for the default calendar
2024-08-27 13:40:28 +00:00
Jean-François Fortin Tam a844920620 gcal-window: Set a general tooltip for the "Today" button
This static tooltip helps users discover what the feature is about.
It also helps with accessibility in general.
2024-08-23 17:14:59 -04:00
Hari Rana d7131d5141 import: Only list writable calendars 2024-08-23 13:46:00 -03:00
Hari Rana 26d34930b6 event-editor: Only list writable calendars 2024-08-23 13:46:00 -03:00
Jean-François Fortin Tam fb5b03b2df new-calendar: Title the local calendar group
In practice, the name and color widgets are currently meant to be used
when creating a local calendar, not when subscribing online, especially
as a single online calendar link can bundle multiple calendars.

This makes the scope of those widgets clearer,
and also makes the dialog more balanced.

Related: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/566
2024-08-23 15:50:40 +00:00
Jean-François Fortin Tam 29396acf46 new-calendar: Use "title" in AdwPreferencesGroup
Replace the manually positioned & styled group label by a property

This simplifies the XML code, makes the style match the rest of the UI,
and prevents libadwaita from sometimes moving such labels to the bottom.
2024-08-23 15:50:40 +00:00
Jean-François Fortin Tam 126929b8c5 new-calendar: Clarify web calendar strings
Now that the "Open" button has been removed,
it is now a feature to "Connect" rather than "Import",
so update the section title to reflect that.

Also give a hint as to what protocols are supported.
2024-08-23 15:50:40 +00:00
Jean-François Fortin Tam a74ae36e6c Remove gcal-file-chooser-button code
As it is no longer used in the calendar management dialog,
and it was not used anywhere else in the codebase,
it can now be dropped entirely.
2024-08-23 15:50:40 +00:00
Jean-François Fortin Tam f827b8a1f2 Remove .ics file importer button in "New Calendar"
A file imported as a "new calendar" would make it dependent on the file.
This feature was confusing everybody and is downright dangerous.

This does not prevent anyone from creating normal calendars,
and importing events from .ics files into them.

Fixes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/390
2024-08-23 15:50:40 +00:00
Diego Iván M.E f482f3521f drop-overlay: Mark as not visible when there are no DnD operations
This allows the GtkInspector to select widgets that are behind it.

Fixes #1271
2024-08-20 13:47:43 +00:00
Jean-François Fortin Tam 2860a468f1 new-calendar: Show webcalendar subscription errors
Let the user know what went wrong,
using a secondary icon and tooltip directly in the URL entry field.
Also provide a hint to GTK that it is meant to be a URL field.

Fixes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1177
2024-08-16 18:46:36 -04:00
Diego Iván M.E 50c1197d61 new-calendar-page: Reset entry progress when validating
This way, the pulse is hidden once the operation fails, is cancelled
or succeeds.

Fixes #1273
2024-08-13 12:58:12 -06:00
Diego Iván M.E 648badb826 new-calendar-page: Cancel validation/discovery when user types
It allows the user to fix typos in URLs or delete them. Before this,
it would still prompt the password dialog, for instance

Closes #1272
2024-08-13 12:58:09 -06:00
Diego Iván M.E b024319f60 new-calendar-page: Change URL validation feedback
Currently, the progress bar is pulsed as soon as the user starts
typing, giving the impression that a process is on going. But,
in reality, validation is performed 500 ms.

After this changes the progress bar is pulsed only when validation
is on-going. The timeout has been increased to 750ms too.
2024-08-13 12:55:51 -06:00
Georges Basile Stavracas Neto 5f86b88c3b views/month: Increase overflow popover min width
Makes it so that it's at least 1.25 the width of a day cell, and at
most 1.5 of that.

Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1166
2024-08-13 16:25:45 +00:00
Georges Basile Stavracas Neto 2b85b9c680 views/month: Rename a variable
Makes it clearer that this is the day cell.
2024-08-13 16:25:45 +00:00
Georges Basile Stavracas Neto 54657788d0 views/month: Use variables some more
Makes it easier to reason about the if conditions there.
2024-08-13 16:25:45 +00:00
Diego Iván 0af5ffc334 event-editor-dialog: Use GcalCalendarRow to display calendars
Use the widget to display calendars and distinguish whether
they are visible or not. Currently, it does not distinguish
read-only calendars, but once !494 is merged, it should not
be a problem.
2024-08-11 23:35:42 +00:00
Diego Iván 1d418ce1ba event-editor: Introduce GcalCalendarRow
This widget displays the calendar and shows whether it is
visible or not. The widget displays the color of the calendar
at the left of the label and the visibility state at the right.
2024-08-11 23:35:42 +00:00
Jean-François Fortin Tam fb2cfe690f Add an icon to represent hidden calendars
To be used in calendars lists in the evente editor and importer dialogs
2024-08-11 23:35:42 +00:00
Enzo MAROS 5addd751fa import-dialog: Port to AdwSpinner 2024-08-06 17:27:36 +00:00
Enzo MAROS 096261af38 sync-indicator: Port to AdwSpinner 2024-08-06 17:27:36 +00:00
Enzo MAROS dee98d1e20 calendar-button: Bind calendar color with paintable
When updating the color of the calendar, the corresponding colored dot
in the "Calendars" popover does not change. This is due to the fact that
GListModel doesn't notify when one child changes internally. Any widget
depicting a calendar should watch for changes on the data.

To fix this, I used the same code as in GcalEventEditorDialog, which
creates a binding between the calendar's color and the paintable inside
the image.
2024-08-06 13:18:20 +00:00
Enzo MAROS 972b88a97d calendar-button: Remove useless listbox sort
Since the GtkListBox is bound to the calendars GListModel, and since the
GListModel is already sorted, there is no longer a need for sorting the
rows by name.
2024-08-06 13:18:20 +00:00
Diego Iván 7e4a4ca99b import-dialog: Adjust dialog to content size
Ports the import dialog out of AdwPreferencesPage to
modify some properties of the ScrolledWindow so the dialog
does the sizing as expected

This avoids scrolling when the natural height of the contents
fits within the window
2024-08-05 15:54:23 +00:00
Enzo MAROS 9ea843807d calendar-button: Implementing new update method for children
When enabling or disabling a calendar through the GcalCalendarButton
popover, the user loses the ability to click right after. This bug was
caused by the update mechanism, triggered by the calendar-changed signal,
which would delete then create a brand new GtkWidget for the row.

To fix this, I replaced the manual signal-based create, update and
remove mechanisms with a binding between the GtkListBox and the calendar
GListModel.
2024-08-05 15:43:49 +00:00
Diego Iván dfc5a9b970 drop-overlay: Introduce GcalDropOverlay
A new widget to perform drag and drop operations, for example,
dropping ICS files to the GcalWindow. It allows to overlay
a child for visual feedback when a DnD operation is done.

either in the main window or in the import dialog,
depending on whether none could be imported, or just some
of them.

It is based on Loupe's DragOverlay widget.

Closes #1257
2024-08-05 12:31:31 -03:00
Diego Iván 75ad1425e7 import-dialog: Add a toast overlay
This toast overlay will be used to display error messages
in import operations, namely, files that could not be
imported in a drag and drop operation
2024-08-05 12:09:55 -03:00
Abdullahi Usman 094d1330f4 gcal-window: start selected day at 00:00:00(HH:MM:SS)
whenever a day is selected anywhere, let start it at 00:00:00

fixes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1256
2024-07-31 22:11:25 +01:00
Diego Iván 773a55a53e import-dialog: Show event count in header bar
Fixes a regression introduced in !465 by replacing the
`GtkHeaderBar` with a `AdwHeaderBar`

Closes #1265
2024-07-29 13:10:48 -06:00
Philipp S a0ec0cde36 views/month: Distribute week day header labels homogeneously. 2024-07-26 22:09:02 +00:00
Diego Iván aaa868a62a importer: Fix a critical in import file row
Closes #1208
2024-07-24 16:00:59 +00:00