summaryrefslogtreecommitdiff
path: root/src/events/Branch.vala
diff options
context:
space:
mode:
Diffstat (limited to 'src/events/Branch.vala')
-rw-r--r--src/events/Branch.vala77
1 files changed, 34 insertions, 43 deletions
diff --git a/src/events/Branch.vala b/src/events/Branch.vala
index e1b5221..1093411 100644
--- a/src/events/Branch.vala
+++ b/src/events/Branch.vala
@@ -1,15 +1,14 @@
-/* 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.
*/
public class Events.Branch : Sidebar.Branch {
- internal static Icon open_icon;
- internal static Icon closed_icon;
- internal static Icon events_icon;
- internal static Icon single_event_icon;
- internal static Icon no_event_icon;
+ internal static string icon = Resources.ICON_FOLDER;
+ internal static string events_icon = Resources.ICON_EVENTS;
+ internal static string single_event_icon = Resources.ICON_ONE_EVENT;
+ internal static string no_event_icon = Resources.ICON_NO_EVENT;
// NOTE: Because the comparators must be static methods (due to CompareFunc's stupid impl.)
// and there's an assumption that only one Events.Branch is ever created, this is a static
@@ -20,11 +19,14 @@ public class Events.Branch : Sidebar.Branch {
Event, Events.EventEntry>();
private Events.UndatedDirectoryEntry undated_entry = new Events.UndatedDirectoryEntry();
private Events.NoEventEntry no_event_entry = new Events.NoEventEntry();
+ private Events.MasterDirectoryEntry all_events_entry = new Events.MasterDirectoryEntry();
public Branch() {
- base (new Events.MasterDirectoryEntry(), Sidebar.Branch.Options.STARTUP_EXPAND_TO_FIRST_CHILD,
+ base (new Sidebar.Header(_("Events")), Sidebar.Branch.Options.STARTUP_EXPAND_TO_FIRST_CHILD,
event_year_comparator);
+ graft(get_root(), all_events_entry);
+
// seed the branch
foreach (DataObject object in Event.global.get_all())
add_event((Event) object);
@@ -49,25 +51,18 @@ public class Events.Branch : Sidebar.Branch {
}
internal static void init() {
- open_icon = new ThemedIcon(Resources.ICON_FOLDER_OPEN);
- closed_icon = new ThemedIcon(Resources.ICON_FOLDER_CLOSED);
- events_icon = new ThemedIcon(Resources.ICON_EVENTS);
- single_event_icon = new ThemedIcon(Resources.ICON_ONE_EVENT);
- no_event_icon = new ThemedIcon(Resources.ICON_NO_EVENT);
-
sort_ascending = Config.Facade.get_instance().get_events_sort_ascending();
}
internal static void terminate() {
- open_icon = null;
- closed_icon = null;
- events_icon = null;
- single_event_icon = null;
- no_event_icon = null;
+ }
+
+ public bool is_user_renameable() {
+ return true;
}
public Events.MasterDirectoryEntry get_master_entry() {
- return (Events.MasterDirectoryEntry) get_root();
+ return all_events_entry;
}
private static int event_year_comparator(Sidebar.Entry a, Sidebar.Entry b) {
@@ -91,6 +86,12 @@ public class Events.Branch : Sidebar.Branch {
else if (b is Events.NoEventEntry)
return -1;
+ // The All events entry should always appear on top
+ if (a is Events.MasterDirectoryEntry)
+ return -1;
+ else if (b is Events.MasterDirectoryEntry)
+ return 1;
+
if (!sort_ascending) {
Sidebar.Entry swap = a;
a = b;
@@ -312,7 +313,8 @@ public class Events.Branch : Sidebar.Branch {
int event_year = event_tm.year + 1900;
return find_first_child(get_root(), (entry) => {
- if ((entry is Events.UndatedDirectoryEntry) || (entry is Events.NoEventEntry))
+ if ((entry is Events.UndatedDirectoryEntry) || (entry is Events.NoEventEntry) ||
+ entry is Events.MasterDirectoryEntry)
return false;
else
return ((Events.YearDirectoryEntry) entry).get_year() == event_year;
@@ -334,11 +336,11 @@ public class Events.Branch : Sidebar.Branch {
}
private void graft_event(Sidebar.Entry parent, Event event,
- owned CompareDataFunc<Sidebar.Entry>? comparator = null) {
+ owned CompareFunc<Sidebar.Entry>? comparator = null) {
Events.EventEntry entry = new Events.EventEntry(event);
entry_map.set(event, entry);
- graft(parent, entry, (owned) comparator);
+ graft(parent, entry, comparator);
}
private void reparent_event(Event event, Sidebar.Entry new_parent) {
@@ -372,16 +374,8 @@ public abstract class Events.DirectoryEntry : Sidebar.SimplePageEntry, Sidebar.E
public DirectoryEntry() {
}
- public override Icon? get_sidebar_icon() {
- return null;
- }
-
- public virtual Icon? get_sidebar_open_icon() {
- return Events.Branch.open_icon;
- }
-
- public virtual Icon? get_sidebar_closed_icon() {
- return Events.Branch.closed_icon;
+ public override string? get_sidebar_icon() {
+ return Events.Branch.icon;
}
public bool expand_on_select() {
@@ -397,15 +391,7 @@ public class Events.MasterDirectoryEntry : Events.DirectoryEntry {
return MasterEventsDirectoryPage.NAME;
}
- public override Icon? get_sidebar_icon() {
- return Events.Branch.events_icon;
- }
-
- public override Icon? get_sidebar_open_icon() {
- return Events.Branch.events_icon;
- }
-
- public override Icon? get_sidebar_closed_icon() {
+ public override string? get_sidebar_icon() {
return Events.Branch.events_icon;
}
@@ -492,7 +478,7 @@ public class Events.EventEntry : Sidebar.SimplePageEntry, Sidebar.RenameableEntr
return event.get_name();
}
- public override Icon? get_sidebar_icon() {
+ public override string? get_sidebar_icon() {
return Events.Branch.single_event_icon;
}
@@ -500,6 +486,10 @@ public class Events.EventEntry : Sidebar.SimplePageEntry, Sidebar.RenameableEntr
return new EventPage(event);
}
+ public bool is_user_renameable() {
+ return true;
+ }
+
public void rename(string new_name) {
string? prepped = Event.prep_event_name(new_name);
if (prepped != null)
@@ -523,6 +513,7 @@ public class Events.EventEntry : Sidebar.SimplePageEntry, Sidebar.RenameableEntr
}
}
+
public class Events.NoEventEntry : Sidebar.SimplePageEntry {
public NoEventEntry() {
}
@@ -531,7 +522,7 @@ public class Events.NoEventEntry : Sidebar.SimplePageEntry {
return NoEventPage.NAME;
}
- public override Icon? get_sidebar_icon() {
+ public override string? get_sidebar_icon() {
return Events.Branch.no_event_icon;
}