From c43dfb815a4951b8248f4f0e98babe4f80204f03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Fri, 3 Apr 2015 13:14:53 +0200 Subject: Imported Upstream version 0.22.0 --- src/searches/Branch.vala | 20 ++++++----- src/searches/SavedSearchDialog.vala | 67 +++++++++++++++++++------------------ src/searches/SavedSearchPage.vala | 2 +- src/searches/SearchBoolean.vala | 21 ++++++++---- src/searches/Searches.vala | 2 +- 5 files changed, 62 insertions(+), 50 deletions(-) (limited to 'src/searches') diff --git a/src/searches/Branch.vala b/src/searches/Branch.vala index 229c710..00a9ea7 100644 --- a/src/searches/Branch.vala +++ b/src/searches/Branch.vala @@ -1,4 +1,4 @@ -/* Copyright 2011-2014 Yorba Foundation +/* Copyright 2011-2015 Yorba Foundation * * This software is licensed under the GNU LGPL (version 2.1 or later). * See the COPYING file in this distribution. @@ -9,7 +9,7 @@ public class Searches.Branch : Sidebar.Branch { new Gee.HashMap(); public Branch() { - base (new Searches.Grouping(), + base (new Searches.Header(), Sidebar.Branch.Options.HIDE_IF_EMPTY | Sidebar.Branch.Options.AUTO_OPEN_ON_NEW_CHILD | Sidebar.Branch.Options.STARTUP_EXPAND_TO_FIRST_CHILD, @@ -60,12 +60,12 @@ public class Searches.Branch : Sidebar.Branch { } } -public class Searches.Grouping : Sidebar.Grouping, Sidebar.Contextable { +public class Searches.Header : Sidebar.Header, Sidebar.Contextable { private Gtk.UIManager ui = new Gtk.UIManager(); private Gtk.Menu? context_menu = null; - public Grouping() { - base (_("Saved Searches"), new ThemedIcon(Gtk.Stock.FIND)); + public Header() { + base (_("Saved Searches")); setup_context_menu(); } @@ -104,7 +104,7 @@ public class Searches.Grouping : Sidebar.Grouping, Sidebar.Contextable { public class Searches.SidebarEntry : Sidebar.SimplePageEntry, Sidebar.RenameableEntry, Sidebar.DestroyableEntry { - private static Icon single_search_icon; + private static string single_search_icon = "find"; private SavedSearch search; @@ -113,11 +113,9 @@ public class Searches.SidebarEntry : Sidebar.SimplePageEntry, Sidebar.Renameable } internal static void init() { - single_search_icon = new ThemedIcon(Gtk.Stock.FIND); } internal static void terminate() { - single_search_icon = null; } public SavedSearch for_saved_search() { @@ -128,7 +126,7 @@ public class Searches.SidebarEntry : Sidebar.SimplePageEntry, Sidebar.Renameable return search.get_name(); } - public override Icon? get_sidebar_icon() { + public override string? get_sidebar_icon() { return single_search_icon; } @@ -136,6 +134,10 @@ public class Searches.SidebarEntry : Sidebar.SimplePageEntry, Sidebar.Renameable return new SavedSearchPage(search); } + public bool is_user_renameable() { + return true; + } + public void rename(string new_name) { if (!SavedSearchTable.get_instance().exists(new_name)) AppWindow.get_command_manager().execute(new RenameSavedSearchCommand(search, new_name)); diff --git a/src/searches/SavedSearchDialog.vala b/src/searches/SavedSearchDialog.vala index da7f7db..eb016d3 100644 --- a/src/searches/SavedSearchDialog.vala +++ b/src/searches/SavedSearchDialog.vala @@ -1,4 +1,4 @@ -/* Copyright 2011-2014 Yorba Foundation +/* Copyright 2011-2015 Yorba Foundation * * This software is licensed under the GNU LGPL (version 2.1 or later). * See the COPYING file in this distribution. @@ -48,13 +48,12 @@ public class SavedSearchDialog { set_type_combo_box(SearchCondition.SearchType.ANY_TEXT); // Sets default. type_combo.changed.connect(on_type_changed); - remove_button = new Gtk.Button(); - remove_button.set_label(" – "); + remove_button = new Gtk.Button.from_icon_name("list-remove-symbolic", Gtk.IconSize.BUTTON); remove_button.button_press_event.connect(on_removed); align = new Gtk.Alignment(0,0,0,0); - box = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 8); + box = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 3); box.pack_start(type_combo, false, false, 0); box.pack_start(align, false, false, 0); box.pack_start(new Gtk.Alignment(0,0,0,0), true, true, 0); // Fill space. @@ -172,6 +171,7 @@ public class SavedSearchDialog { text_context.append_text(_("ends with")); text_context.append_text(_("does not contain")); text_context.append_text(_("is not set")); + text_context.append_text(_("is set")); text_context.set_active(0); text_context.changed.connect(on_changed); @@ -180,7 +180,7 @@ public class SavedSearchDialog { entry.set_activates_default(true); entry.changed.connect(on_changed); - box = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 8); + box = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 3); box.pack_start(text_context, false, false, 0); box.pack_start(entry, false, false, 0); box.show_all(); @@ -212,7 +212,9 @@ public class SavedSearchDialog { } public override bool is_complete() { - return entry.text.chomp() != "" || get_text_context() == SearchConditionText.Context.IS_NOT_SET; + return entry.text.chomp() != "" || + get_text_context() == SearchConditionText.Context.IS_NOT_SET || + get_text_context() == SearchConditionText.Context.IS_SET; } private SearchConditionText.Context get_text_context() { @@ -220,7 +222,8 @@ public class SavedSearchDialog { } private void on_changed() { - if (get_text_context() == SearchConditionText.Context.IS_NOT_SET) { + if (get_text_context() == SearchConditionText.Context.IS_NOT_SET + || get_text_context() == SearchConditionText.Context.IS_SET) { entry.hide(); } else { entry.show(); @@ -255,7 +258,7 @@ public class SavedSearchDialog { media_type.set_active(0); media_type.changed.connect(on_changed); - box = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 8); + box = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 3); box.pack_start(media_context, false, false, 0); box.pack_start(media_type, false, false, 0); box.show_all(); @@ -317,7 +320,7 @@ public class SavedSearchDialog { modified_state.set_active(0); modified_state.changed.connect(on_changed); - box = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 8); + box = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 3); box.pack_start(modified_context, false, false, 0); box.pack_start(modified_state, false, false, 0); box.show_all(); @@ -372,7 +375,7 @@ public class SavedSearchDialog { flagged_state.set_active(0); flagged_state.changed.connect(on_changed); - box = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 8); + box = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 3); box.pack_start(new Gtk.Label(_("is")), false, false, 0); box.pack_start(flagged_state, false, false, 0); box.show_all(); @@ -437,7 +440,7 @@ public class SavedSearchDialog { context.set_active(0); context.changed.connect(on_changed); - box = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 8); + box = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 3); box.pack_start(new Gtk.Label(_("is")), false, false, 0); box.pack_start(rating, false, false, 0); box.pack_start(context, false, false, 0); @@ -512,7 +515,7 @@ public class SavedSearchDialog { and = new Gtk.Label(_("and")); - box = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 8); + box = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 3); box.pack_start(context, false, false, 0); box.pack_start(label_one, false, false, 0); box.pack_start(and, false, false, 0); @@ -604,14 +607,16 @@ public class SavedSearchDialog { int orig_month = cal.month; int orig_year = cal.year; Gtk.Dialog d = new Gtk.Dialog.with_buttons(null, null, - Gtk.DialogFlags.MODAL, Gtk.Stock.CANCEL, Gtk.ResponseType.REJECT, - Gtk.Stock.OK, Gtk.ResponseType.ACCEPT); + Gtk.DialogFlags.MODAL, Resources.CANCEL_LABEL, Gtk.ResponseType.REJECT, + Resources.OK_LABEL, Gtk.ResponseType.ACCEPT); d.set_modal(true); d.set_resizable(false); d.set_decorated(false); ((Gtk.Box) d.get_content_area()).add(cal); ulong id_1 = cal.day_selected.connect(()=>{update_date_labels();}); - ulong id_2 = cal.day_selected_double_click.connect(()=>{d.close();}); + ulong id_2 = cal.day_selected_double_click.connect(()=> { + d.response(Gtk.ResponseType.ACCEPT); + }); d.show_all(); int res = d.run(); if (res != Gtk.ResponseType.ACCEPT) { @@ -656,14 +661,7 @@ public class SavedSearchDialog { // Default is text search. add_text_search(); row_list.get(0).allow_removal(false); - - // Add buttons for new search. - dialog.add_action_widget(new Gtk.Button.from_stock(Gtk.Stock.CANCEL), Gtk.ResponseType.CANCEL); - Gtk.Button ok_button = new Gtk.Button.from_stock(Gtk.Stock.OK); - ok_button.can_default = true; - dialog.add_action_widget(ok_button, Gtk.ResponseType.OK); - dialog.set_default_response(Gtk.ResponseType.OK); - + dialog.show_all(); set_valid(false); } @@ -673,12 +671,6 @@ public class SavedSearchDialog { edit_mode = true; setup_dialog(); - // Add close button. - Gtk.Button close_button = new Gtk.Button.from_stock(Gtk.Stock.CLOSE); - close_button.can_default = true; - dialog.add_action_widget(close_button, Gtk.ResponseType.OK); - dialog.set_default_response(Gtk.ResponseType.OK); - dialog.show_all(); // Load existing search into dialog. @@ -701,12 +693,21 @@ public class SavedSearchDialog { // Builds the dialog UI. Doesn't add buttons to the dialog or call dialog.show(). private void setup_dialog() { builder = AppWindow.create_builder(); - - dialog = builder.get_object("Search criteria") as Gtk.Dialog; - dialog.set_parent_window(AppWindow.get_instance().get_parent_window()); + + dialog = new Gtk.Dialog.with_buttons(_("Search"), + (Gtk.Window) AppWindow.get_instance().get_parent_window(), + Gtk.DialogFlags.MODAL | + Gtk.DialogFlags.DESTROY_WITH_PARENT | + Gtk.DialogFlags.USE_HEADER_BAR, + _("Cancel"), Gtk.ResponseType.CANCEL, + _("OK"), Gtk.ResponseType.OK, + null); + dialog.set_resizable(false); dialog.set_transient_for(AppWindow.get_instance()); + dialog.set_default_response(Gtk.ResponseType.OK); dialog.response.connect(on_response); - + dialog.get_content_area().add(builder.get_object("criteria") as Gtk.Widget); + add_criteria = builder.get_object("Add search button") as Gtk.Button; add_criteria.button_press_event.connect(on_add_criteria); diff --git a/src/searches/SavedSearchPage.vala b/src/searches/SavedSearchPage.vala index 8e6672e..99473fb 100644 --- a/src/searches/SavedSearchPage.vala +++ b/src/searches/SavedSearchPage.vala @@ -1,4 +1,4 @@ -/* Copyright 2011-2014 Yorba Foundation +/* Copyright 2011-2015 Yorba Foundation * * This software is licensed under the GNU LGPL (version 2.1 or later). * See the COPYING file in this distribution. diff --git a/src/searches/SearchBoolean.vala b/src/searches/SearchBoolean.vala index 431e398..8031814 100644 --- a/src/searches/SearchBoolean.vala +++ b/src/searches/SearchBoolean.vala @@ -1,4 +1,4 @@ -/* Copyright 2011-2014 Yorba Foundation +/* Copyright 2011-2015 Yorba Foundation * * This software is licensed under the GNU LGPL (version 2.1 or later). * See the COPYING file in this distribution. @@ -206,7 +206,8 @@ public class SearchConditionText : SearchCondition { STARTS_WITH, ENDS_WITH, DOES_NOT_CONTAIN, - IS_NOT_SET; + IS_NOT_SET, + IS_SET; public string to_string() { switch (this) { @@ -228,6 +229,9 @@ public class SearchConditionText : SearchCondition { case Context.IS_NOT_SET: return "IS_NOT_SET"; + case Context.IS_SET: + return "IS_SET"; + default: error("unrecognized text search context enumeration value"); } @@ -252,6 +256,9 @@ public class SearchConditionText : SearchCondition { else if (str == "IS_NOT_SET") return Context.IS_NOT_SET; + else if (str == "IS_SET") + return Context.IS_SET; + else error("unrecognized text search context name: %s", str); } @@ -287,6 +294,9 @@ public class SearchConditionText : SearchCondition { case Context.IS_NOT_SET: return (is_string_empty(haystack)); + + case Context.IS_SET: + return (!is_string_empty(haystack)); } return false; @@ -298,10 +308,9 @@ public class SearchConditionText : SearchCondition { // title if (SearchType.ANY_TEXT == search_type || SearchType.TITLE == search_type) { - string title = source.get_title(); - if(title != null){ - ret |= string_match(text, String.remove_diacritics(title.down())); - } + string? title = (null != source.get_title()) ? + String.remove_diacritics(source.get_title().down()) : null; + ret |= string_match(text, title); } // tags diff --git a/src/searches/Searches.vala b/src/searches/Searches.vala index 478de86..691bcf0 100644 --- a/src/searches/Searches.vala +++ b/src/searches/Searches.vala @@ -1,4 +1,4 @@ -/* Copyright 2011-2014 Yorba Foundation +/* Copyright 2011-2015 Yorba Foundation * * This software is licensed under the GNU Lesser General Public License * (version 2.1 or later). See the COPYING file in this distribution. -- cgit v1.2.3