Commit Graph
579 Commits
Author SHA1 Message Date
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
Diego Iván 2038ff1da1 import-dialog: Port to AdwDialog
This also brings some other changes:

* Enables closing the window using Escape
* Fixes a few criticals

Closes #1258
2024-07-24 16:00:59 +00:00
Automeris naranja e00d8cbf66 gcal-calendars-page: Minor tweaks to the AdwToast title
AdwToast title is already bold, so using HTML b tags doesn't do
anything. To fix this, use quote symbols instead.

And:
- Use the quote symbols recommended by HIG:
https://developer.gnome.org/hig/guidelines/typography.html#take-advantage-of-unicode
- Add a translator comment explaining what "%s" means
2024-07-24 15:08:51 +00:00
Hari Rana 00cf2a735d event-popover: Rework UI and code
This builds on top of the existing UI/code, while adding a few improvements and
behavioral changes:

- The popover displays the changes-prevent icon when the even is read-only.
- Each section is properly separated with `GtkSeparator`s, with equal amount of
top and bottom margins.
- Location and Meetings section are mutually exclusive; only one is shown.
- When an event has no event note, the popover will always display that there's no
description.
- `GcalMeetingRow` has been ported to `GtkListBoxRow`.
- The action button adapts its icon and tooltip text depending on the event
permission.
2024-07-22 16:20:57 -06:00
Abdullahi Usman 1e3acba3cb date-chooser: fix some events randomly disappearing
because days starts at 01:01:01 (HH:MM::SS), some events at the start
or end of day may be push into another day or back into previous day.
day should starts at 00:00:00 and previous day should stop at 23:59:59.

fixes:
https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1255
2024-07-21 23:03:43 +01:00
Otávio Silva c175073ab0 import-file-row: correctly display start and end dates in import dialog
In the import dialog, start and end date-time fields were being
incorrectly displayed, not considering the local timezone and the
24-hours vs 12-hours format used by the user. Also, the libical
already deals with the case in which events do not have the DTEND
field, simplifying the implementation.

Fixes #1175
2024-07-20 20:20:16 +00:00
Otávio Silva 0bc006be5c import-dialog: add constructed() override
Add GObject.constructed override and call the setup_calendars
function inside of it.
2024-07-20 20:20:16 +00:00
Otávio Silva b8903657c5 import-file-row: Receive a context
Modify the GcalImportFileRow struct to now have the
property GcalContext.
2024-07-20 20:20:16 +00:00
Jean-François Fortin Tam 006437bf61 Avoid duplication when adding online calendars
When subscribing to one or multiple online Webcal or CalDAV calendars,
do not unexpectedly create an extra local calendar.

While this doesn't allow customizing names & colors while subscribing,
users can still easily set those just after adding the subscriptions,
as they are then returned to the "Calendars" page of "Manage Calendars".

Punting this to a separate step might not seem like the "perfect" flow,
but it works well enough and fixes the buggy UX that we currently had.

Fixes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/566
Fixes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/978
2024-07-09 16:44:01 -04:00
Georges Basile Stavracas Neto 75a42c7d83 event-widget: Truncate the correct string
I shouldn't write code in a hurry
2024-07-09 17:40:01 -03:00
Georges Basile Stavracas Neto 06bf58d5fa event-widget: Don't modify translated strings 2024-07-09 17:35:48 -03:00
Daniel Garcia Moreno d7bbda4eaa views/agenda: Do not create new header for all-day
Fix https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/898
Fix https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/968
2024-07-09 19:59:42 +00:00
Dimitrios Christidis 5dbf0c24bd event-editor: Introduce reminder at event start time 2024-07-09 19:54:03 +00:00
Abdullahi Usman d8e2fd6d81 reminders-section: make alarm sound changes persistent
When the alarm sound changes, the change is not updated because
gcal-manager does not see the changes.

We now update the components and make more comparisons so that
it can be seen by gcal-manager
2024-07-09 19:47:13 +00:00
Abdullahi Usman 420a126ddb reminders-section: fix reminder alarm toggle button states
Alarm toggle state are in three stages because we do not update both
icon and active when pressed.

we now update the icons to match their states.
2024-07-09 19:47:13 +00:00
Vitaly Dyachkov 2dab78b556 Make event title selectable
Currenlty, there is no easy way to copy an event title.
2024-07-09 19:31:56 +00:00
Otávio Silva 7cebd2bf95 event-widget: Use "On..." in tooltip when location is a meeting service
In the tooltip, the event location always has the preposition "At ...".
This changes it to "On ..." when the location is a known meeting
service.
2024-07-09 16:26:29 -03:00
Otávio Silva f3359d0246 event-widget: Display meeting service name in event tooltip
In case the location is an URL, it is irrelevant to display the full
link,
as it is not clickable. So, this shows the meeting service provider if
it
is known or reduces the text in the tooltip, preventing it from covering
other information in the calendar.

Closes: #1232
2024-07-09 16:26:00 -03:00