diff --git a/core/Layouts/HeaderItem.vala b/core/Layouts/HeaderItem.vala index ecf946e6a..8cf98188f 100644 --- a/core/Layouts/HeaderItem.vala +++ b/core/Layouts/HeaderItem.vala @@ -122,7 +122,7 @@ public class Layouts.HeaderItem : Adw.Bin { set { if (value) { listbox.css_classes = { "boxed-list" }; - listbox.margin_top = 3; + listbox.margin_top = 12; listbox.margin_bottom = 3; listbox.margin_start = 3; listbox.margin_end = 3; @@ -147,11 +147,12 @@ public class Layouts.HeaderItem : Adw.Bin { halign = Gtk.Align.START }; - name_label.add_css_class (Granite.STYLE_CLASS_H4_LABEL); - name_label.add_css_class (Granite.STYLE_CLASS_SMALL_LABEL); + name_label.add_css_class ("h4"); + name_label.add_css_class ("heading"); listbox = new Gtk.ListBox () { - hexpand = true + hexpand = true, + margin_top = 6 }; listbox.set_placeholder (get_placeholder ()); diff --git a/core/Util/Util.vala b/core/Util/Util.vala index aea4ae6a1..9182d71df 100644 --- a/core/Util/Util.vala +++ b/core/Util/Util.vala @@ -749,7 +749,7 @@ public class Util : GLib.Object { dialog.body_use_markup = true; dialog.add_response ("cancel", _("Cancel")); - dialog.add_response ("delete", _("Reset all")); + dialog.add_response ("delete", _("Delete All")); dialog.set_response_appearance ("delete", Adw.ResponseAppearance.DESTRUCTIVE); dialog.show (); diff --git a/core/Widgets/ContextMenu/MenuItem.vala b/core/Widgets/ContextMenu/MenuItem.vala index 69036ac41..80af1f085 100644 --- a/core/Widgets/ContextMenu/MenuItem.vala +++ b/core/Widgets/ContextMenu/MenuItem.vala @@ -101,7 +101,7 @@ public class Widgets.ContextMenu.MenuItem : Gtk.Button { } construct { - add_css_class (Granite.STYLE_CLASS_FLAT); + add_css_class ("flat"); add_css_class ("no-font-bold"); menu_icon = new Gtk.Image () { @@ -125,7 +125,7 @@ public class Widgets.ContextMenu.MenuItem : Gtk.Button { child = select_icon }; - var arrow_icon = new Gtk.Image.from_icon_name ("pan-end-symbolic") { + var arrow_icon = new Gtk.Image.from_icon_name ("go-next-symbolic") { css_classes = { "dim-label" }, margin_start = 6 }; diff --git a/core/Widgets/DateTimePicker/DateTimePicker.vala b/core/Widgets/DateTimePicker/DateTimePicker.vala index 3d80e5697..a8c6eeeae 100644 --- a/core/Widgets/DateTimePicker/DateTimePicker.vala +++ b/core/Widgets/DateTimePicker/DateTimePicker.vala @@ -79,8 +79,8 @@ public class Widgets.DateTimePicker.DateTimePicker : Gtk.Popover { construct { today_item = new Widgets.ContextMenu.MenuItem (_("Today"), "star-outline-thick-symbolic"); - tomorrow_item = new Widgets.ContextMenu.MenuItem (_("Tomorrow"), "month-symbolic"); - next_week_item = new Widgets.ContextMenu.MenuItem (_("Next week"), "month-symbolic"); + tomorrow_item = new Widgets.ContextMenu.MenuItem (_("Tomorrow"), "today-calendar-symbolic"); + next_week_item = new Widgets.ContextMenu.MenuItem (_("Next week"), "work-week-symbolic"); date_item = new Widgets.ContextMenu.MenuItem (_("Choose a date"), "month-symbolic"); date_item.arrow = true; diff --git a/data/io.github.alainm23.planify.gresource.xml b/data/io.github.alainm23.planify.gresource.xml index f6c1e6cee..3be9d9034 100644 --- a/data/io.github.alainm23.planify.gresource.xml +++ b/data/io.github.alainm23.planify.gresource.xml @@ -74,5 +74,7 @@ resources/icons/list-drag-handle-symbolic.svg resources/icons/mailbox-symbolic.svg resources/icons/checkmark-small-symbolic.svg + resources/icons/work-week-symbolic.svg + resources/icons/permissions-generic-symbolic.svg diff --git a/data/resources/icons/permissions-generic-symbolic.svg b/data/resources/icons/permissions-generic-symbolic.svg new file mode 100644 index 000000000..89b383792 --- /dev/null +++ b/data/resources/icons/permissions-generic-symbolic.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/data/resources/icons/work-week-symbolic.svg b/data/resources/icons/work-week-symbolic.svg new file mode 100644 index 000000000..d938b7686 --- /dev/null +++ b/data/resources/icons/work-week-symbolic.svg @@ -0,0 +1,4 @@ + + + + diff --git a/data/resources/stylesheet/stylesheet.css b/data/resources/stylesheet/stylesheet.css index 79c4bf66a..078ef6b23 100644 --- a/data/resources/stylesheet/stylesheet.css +++ b/data/resources/stylesheet/stylesheet.css @@ -209,7 +209,10 @@ entry.flat:focus-within { .card-selected { transition: all 225ms ease-in-out; - margin: 24px; + margin-bottom: 24px; + margin-top: 24px; + margin-left: 3px; + margin-right: 3px; padding-left: 9px; padding-top: 3px; padding-right: 3px; @@ -535,7 +538,8 @@ checkbutton.theme-selector radio:checked { color: @theme_selected_fg_color; } -.header-item-button { +.header-item-button, +.header-item-button button { padding: 3px; min-height: 16px; min-width: 16px; diff --git a/data/resources/stylesheet/typography.css b/data/resources/stylesheet/typography.css index ac3c48657..d8b73b580 100644 --- a/data/resources/stylesheet/typography.css +++ b/data/resources/stylesheet/typography.css @@ -1,33 +1,3 @@ -.h1, -.title-1 { - font-size: 24pt; - font-weight: 700; - letter-spacing: -0.04em; -} - -.h2, -.title-2 { - font-weight: 300; - font-size: 18pt; - letter-spacing: -0.05em; -} - -.h3, -.title-3 { - font-size: 11pt; -} - -label.h4, -.h4 label, -.heading, -.title-4, -.title-4 label { - font-weight: 700; - opacity: 0.8; - padding-bottom: 0.5em; - padding-top: 0.5em; -} - .small-label { font-size: 0.85em; } diff --git a/src/Dialogs/DatePicker.vala b/src/Dialogs/DatePicker.vala index 678126789..e819e9bd2 100644 --- a/src/Dialogs/DatePicker.vala +++ b/src/Dialogs/DatePicker.vala @@ -65,10 +65,10 @@ public class Dialogs.DatePicker : Adw.Window { today_item.secondary_text = new GLib.DateTime.now_local ().format ("%a"); today_item.margin_top = 6; - var tomorrow_item = new Widgets.ContextMenu.MenuItem (_("Tomorrow"), "month-symbolic"); + var tomorrow_item = new Widgets.ContextMenu.MenuItem (_("Tomorrow"), "today-calendar-symbolic"); tomorrow_item.secondary_text = new GLib.DateTime.now_local ().add_days (1).format ("%a"); - var next_week_item = new Widgets.ContextMenu.MenuItem (_("Next Week"), "month-symbolic"); + var next_week_item = new Widgets.ContextMenu.MenuItem (_("Next Week"), "work-week-symbolic"); next_week_item.secondary_text = Util.get_default ().get_relative_date_from_date ( Util.get_default ().get_format_date (new GLib.DateTime.now_local ().add_days (7)) ); diff --git a/src/Dialogs/Preferences/Pages/Sidebar.vala b/src/Dialogs/Preferences/Pages/Sidebar.vala index 3fcc49467..97832f65f 100644 --- a/src/Dialogs/Preferences/Pages/Sidebar.vala +++ b/src/Dialogs/Preferences/Pages/Sidebar.vala @@ -28,7 +28,6 @@ public class Dialogs.Preferences.Pages.Sidebar : Adw.Bin { var settings_header = new Dialogs.Preferences.SettingsHeader (_("Sidebar")); var views_group = new Layouts.HeaderItem (_("Show in Sidebar")) { - listbox_no_margin = true, card = true, reveal = true, margin_top = 12 diff --git a/src/Dialogs/Preferences/PreferencesWindow.vala b/src/Dialogs/Preferences/PreferencesWindow.vala index 5076ae5d4..30d6ba06e 100644 --- a/src/Dialogs/Preferences/PreferencesWindow.vala +++ b/src/Dialogs/Preferences/PreferencesWindow.vala @@ -298,8 +298,8 @@ public class Dialogs.Preferences.PreferencesWindow : Adw.PreferencesWindow { delete_row.activated.connect (() => { destroy (); - Util.get_default ().clear_database (_("Are you sure you want to reset all?"), - _("The process removes all stored information without the possibility of undoing it"), + Util.get_default ().clear_database (_("Delete All Data?"), + _("Deletes all your lists, tasks, and reminders irreversibly"), Planify.instance.main_window); }); diff --git a/src/Layouts/ItemRow.vala b/src/Layouts/ItemRow.vala index bf44ae74a..777444a86 100644 --- a/src/Layouts/ItemRow.vala +++ b/src/Layouts/ItemRow.vala @@ -266,7 +266,7 @@ public class Layouts.ItemRow : Layouts.ItemBase { child = content_textview }; - hide_loading_button = new Widgets.LoadingButton.with_icon ("pan-down-symbolic", 16) { + hide_loading_button = new Widgets.LoadingButton.with_icon ("go-up-symbolic", 16) { valign = Gtk.Align.START, css_classes = { "flat", "dim-label", "no-padding" } }; @@ -971,6 +971,8 @@ public class Layouts.ItemRow : Layouts.ItemBase { } private Gtk.Popover build_button_context_menu () { + var back_item = new Widgets.ContextMenu.MenuItem (_("Back"), "go-previous-symbolic"); + var copy_clipboard_item = new Widgets.ContextMenu.MenuItem (_("Copy to Clipboard"), "clipboard-symbolic"); var duplicate_item = new Widgets.ContextMenu.MenuItem (_("Duplicate"), "tabs-stack-symbolic"); var move_item = new Widgets.ContextMenu.MenuItem (_("Move"), "arrow3-right-symbolic"); @@ -1006,7 +1008,7 @@ public class Layouts.ItemRow : Layouts.ItemBase { }; menu_stack.add_named (menu_box, "menu"); - menu_stack.add_named (get_repeat_widget (popover), "repeat"); + menu_stack.add_named (get_repeat_widget (popover, back_item), "repeat"); popover.child = menu_stack; @@ -1046,6 +1048,10 @@ public class Layouts.ItemRow : Layouts.ItemBase { menu_stack.set_visible_child_name ("menu"); }); + back_item.clicked.connect (() => { + menu_stack.set_visible_child_name ("menu"); + }); + popover.show.connect (() => { more_information_item.title = get_updated_info (); }); @@ -1058,7 +1064,7 @@ public class Layouts.ItemRow : Layouts.ItemBase { return popover; } - private Gtk.Widget get_repeat_widget (Gtk.Popover popover) { + private Gtk.Widget get_repeat_widget (Gtk.Popover popover, Widgets.ContextMenu.MenuItem back_item) { var none_item = new Widgets.ContextMenu.MenuItem (_("None")); var daily_item = new Widgets.ContextMenu.MenuItem (_("Daily")); var weekly_item = new Widgets.ContextMenu.MenuItem (_("Weekly")); @@ -1068,6 +1074,8 @@ public class Layouts.ItemRow : Layouts.ItemBase { var menu_box = new Gtk.Box (Gtk.Orientation.VERTICAL, 0); menu_box.margin_top = menu_box.margin_bottom = 3; + menu_box.append (back_item); + menu_box.append (new Widgets.ContextMenu.MenuSeparator ()); menu_box.append (daily_item); menu_box.append (weekly_item); menu_box.append (monthly_item); diff --git a/src/Layouts/LabelRow.vala b/src/Layouts/LabelRow.vala index 099f27d67..e0f84390f 100644 --- a/src/Layouts/LabelRow.vala +++ b/src/Layouts/LabelRow.vala @@ -36,12 +36,12 @@ public class Layouts.LabelRow : Gtk.ListBoxRow { } construct { - css_classes = { "no-selectable", "transition" }; + css_classes = { "selectable-item", "transition" }; widget_color = new Gtk.Grid () { valign = Gtk.Align.CENTER, - height_request = 16, - width_request = 16, + height_request = 19, + width_request = 19, css_classes = { "circle-color" } }; @@ -63,27 +63,30 @@ public class Layouts.LabelRow : Gtk.ListBoxRow { }; - var edit_button = new Gtk.Button.from_icon_name ("edit-symbolic") { - css_classes = { "flat", "padding-3" } - }; - - var trash_button = new Gtk.Button.from_icon_name ("user-trash-symbolic") { - css_classes = { "flat", "padding-3" } - }; + var menu_button = new Gtk.MenuButton () { + valign = Gtk.Align.CENTER, + halign = Gtk.Align.CENTER, + popover = build_context_menu (), + icon_name = "view-more-symbolic", + css_classes = { "flat", "header-item-button", "dim-label" } + }; var buttons_box = new Gtk.Box (Gtk.Orientation.HORIZONTAL, 6); - buttons_box.append (edit_button); - buttons_box.append (trash_button); - - var buttons_box_revealer = new Gtk.Revealer (); - buttons_box_revealer.transition_type = Gtk.RevealerTransitionType.SLIDE_LEFT; - buttons_box_revealer.child = buttons_box; + buttons_box.append (menu_button); + buttons_box.append (new Gtk.Image.from_icon_name ("go-next-symbolic") { + css_classes = { "dim-label" } + }); - handle_grid = new Gtk.Box (Gtk.Orientation.HORIZONTAL, 6); + handle_grid = new Gtk.Box (Gtk.Orientation.HORIZONTAL, 6) { + margin_start = 6, + margin_end = 6, + margin_top = 3, + margin_bottom = 3 + }; handle_grid.append (widget_color); handle_grid.append (name_label); handle_grid.append (count_revealer); - handle_grid.append (buttons_box_revealer); + handle_grid.append (buttons_box); var reorder_child = new Widgets.ReorderChild (handle_grid, this); @@ -110,19 +113,61 @@ public class Layouts.LabelRow : Gtk.ListBoxRow { count_revealer.reveal_child = int.parse (count_label.label) > 0; }); - var motion_gesture = new Gtk.EventControllerMotion (); - add_controller (motion_gesture); - motion_gesture.enter.connect (() => { - buttons_box_revealer.reveal_child = true; - count_revealer.reveal_child = false; + reorder_child.on_drop_end.connect ((listbox) => { + update_labels_item_order (listbox); }); + } - motion_gesture.leave.connect (() => { - buttons_box_revealer.reveal_child = false; - count_revealer.reveal_child = int.parse (count_label.label) > 0; - }); + public void update_request () { + name_label.label = label.name; + Util.get_default ().set_widget_color (Util.get_default ().get_color (label.color), widget_color); + } + + private void update_labels_item_order (Gtk.ListBox listbox) { + unowned Layouts.LabelRow? label_row = null; + var row_index = 0; + + do { + label_row = (Layouts.LabelRow) listbox.get_row_at_index (row_index); + + if (label_row != null) { + label_row.label.item_order = row_index; + Services.Database.get_default ().update_label (label_row.label); + } + + row_index++; + } while (label_row != null); + } + + private Gtk.Popover build_context_menu () { + var edit_item = new Widgets.ContextMenu.MenuItem (_("Edit Label"), "edit-symbolic"); + var delete_item = new Widgets.ContextMenu.MenuItem (_("Delete Label"), "user-trash-symbolic"); + delete_item.add_css_class ("menu-item-danger"); + + var menu_box = new Gtk.Box (Gtk.Orientation.VERTICAL, 0); + menu_box.margin_top = menu_box.margin_bottom = 3; + menu_box.append (edit_item); + menu_box.append (new Widgets.ContextMenu.MenuSeparator ()); + menu_box.append (delete_item); + + var menu_popover = new Gtk.Popover () { + has_arrow = false, + child = menu_box, + position = Gtk.PositionType.BOTTOM, + width_request = 250 + }; + + edit_item.clicked.connect (() => { + menu_popover.popdown (); + + Services.EventBus.get_default ().close_labels (); + var dialog = new Dialogs.Label (label); + dialog.show (); + }); + + delete_item.clicked.connect (() => { + menu_popover.popdown (); - trash_button.clicked.connect (() => { Services.EventBus.get_default ().close_labels (); var dialog = new Adw.MessageDialog ((Gtk.Window) Planify.instance.main_window, @@ -145,39 +190,10 @@ public class Layouts.LabelRow : Gtk.ListBoxRow { } } }); - }); - - edit_button.clicked.connect (() => { - Services.EventBus.get_default ().close_labels (); - var dialog = new Dialogs.Label (label); - dialog.show (); - }); + }); - reorder_child.on_drop_end.connect ((listbox) => { - update_labels_item_order (listbox); - }); - } - - public void update_request () { - name_label.label = label.name; - Util.get_default ().set_widget_color (Util.get_default ().get_color (label.color), widget_color); - } - - private void update_labels_item_order (Gtk.ListBox listbox) { - unowned Layouts.LabelRow? label_row = null; - var row_index = 0; - - do { - label_row = (Layouts.LabelRow) listbox.get_row_at_index (row_index); - - if (label_row != null) { - label_row.label.item_order = row_index; - Services.Database.get_default ().update_label (label_row.label); - } - - row_index++; - } while (label_row != null); - } + return menu_popover; + } public void hide_destroy () { main_revealer.reveal_child = false; diff --git a/src/Views/Project/Project.vala b/src/Views/Project/Project.vala index 609cbc523..c45c5fa69 100644 --- a/src/Views/Project/Project.vala +++ b/src/Views/Project/Project.vala @@ -245,7 +245,7 @@ public class Views.Project : Adw.Bin { var schedule_item = new Widgets.ContextMenu.MenuItem (_("When?"), "month-symbolic"); var add_section_item = new Widgets.ContextMenu.MenuItem (_("Add Section"), "tab-new-symbolic"); add_section_item.secondary_text = "S"; - var manage_sections = new Widgets.ContextMenu.MenuItem (_("Manage Sections"), "list-large-symbolic"); + var manage_sections = new Widgets.ContextMenu.MenuItem (_("Manage Sections"), "permissions-generic-symbolic"); var filter_by_tags = new Widgets.ContextMenu.MenuItem (_("Filter by Labels"), "planner-tag"); var select_item = new Widgets.ContextMenu.MenuItem (_("Select"), "list-large-symbolic"); diff --git a/src/Widgets/ReminderPicker/ReminderPicker.vala b/src/Widgets/ReminderPicker/ReminderPicker.vala index 005916e11..91c9a0cd7 100644 --- a/src/Widgets/ReminderPicker/ReminderPicker.vala +++ b/src/Widgets/ReminderPicker/ReminderPicker.vala @@ -41,7 +41,8 @@ public class Widgets.ReminderPicker.ReminderPicker : Gtk.Popover { construct { reminders_view = new Layouts.HeaderItem (_("Reminders")) { - margin_bottom = 9 + margin_bottom = 9, + margin_top = 12 }; reminders_view.reveal_child = true; reminders_view.placeholder_message = _("Your list of reminders will show up here. Add one by clicking the '+' button.");