From 1a59a45a5808a2928234868f305c182b429a7908 Mon Sep 17 00:00:00 2001 From: "Zeeshan Ali (Khattak)" Date: Tue, 2 Jun 2009 17:32:02 +0300 Subject: [PATCH] ui: Treeview to handle 'folders' option Instead of providing a text area to put the paths, provide a treeview and buttons to interact with it. For now only clear button works. --- data/rygel-preferences.ui | 73 +++++++++++++++++++++++++++++++---- src/ui/rygel-folder-pref-section.vala | 66 ++++++++++++++++++++----------- 2 files changed, 108 insertions(+), 31 deletions(-) diff --git a/data/rygel-preferences.ui b/data/rygel-preferences.ui index f5c9410..a4c70b3 100644 --- a/data/rygel-preferences.ui +++ b/data/rygel-preferences.ui @@ -2,10 +2,15 @@ + + + + + + 5 Rygel Preferences - False 400 normal False @@ -377,17 +382,70 @@ - + True - True - automatic - automatic - + True True - folders-textbuffer + folders-liststore + False + False + True + + 0 + + + + + True + vertical + + + gtk-add + True + True + True + True + True + + + + 0 + + + + + gtk-remove + True + True + True + True + + + + 1 + + + + + gtk-clear + True + True + True + True + True + + + + 2 + + + + + 1 + @@ -501,5 +559,4 @@ both - diff --git a/src/ui/rygel-folder-pref-section.vala b/src/ui/rygel-folder-pref-section.vala index 2948380..4e1d811 100644 --- a/src/ui/rygel-folder-pref-section.vala +++ b/src/ui/rygel-folder-pref-section.vala @@ -26,43 +26,50 @@ using Gee; public class Rygel.FolderPrefSection : Rygel.PluginPrefSection { const string NAME = "Folder"; const string FOLDERS_KEY = "folders"; - const string FOLDERS_TEXTVIEW = FOLDERS_KEY + "-textview"; - const string FOLDERS_TEXTBUFFER = FOLDERS_KEY + "-textbuffer"; + const string FOLDERS_TEXTVIEW = FOLDERS_KEY + "-treeview"; + const string FOLDERS_LISTSTORE = FOLDERS_KEY + "-liststore"; - private TextView text_view; - private TextBuffer text_buffer; + private TreeView treeview; + private ListStore liststore; public FolderPrefSection (Builder builder, Configuration config) { base (builder, config, NAME); - this.text_view = (TextView) builder.get_object (FOLDERS_TEXTVIEW); - assert (this.text_view != null); - this.text_buffer = (TextBuffer) builder.get_object (FOLDERS_TEXTBUFFER); - assert (this.text_buffer != null); + this.treeview = (TreeView) builder.get_object (FOLDERS_TEXTVIEW); + assert (this.treeview != null); + this.liststore = (ListStore) builder.get_object (FOLDERS_LISTSTORE); + assert (this.liststore != null); + + treeview.insert_column_with_attributes (-1, + "paths", + new CellRendererText (), + "text", + 0, + null); var folders = config.get_string_list (this.name, FOLDERS_KEY); - string text = ""; foreach (var folder in folders) { - text += folder + "\n"; + TreeIter iter; + + this.liststore.append (out iter); + this.liststore.set (iter, 0, folder, -1); } - this.text_buffer.set_text (text, -1); + + builder.connect_signals (this); } public override void save () { - TextIter start; - TextIter end; - - this.text_buffer.get_start_iter (out start); - this.text_buffer.get_end_iter (out end); - - var text = this.text_buffer.get_text (start, end, false); - - var folders = text.split ("\n", -1); + TreeIter iter; var folder_list = new ArrayList (); - foreach (var folder in folders) { - folder_list.add (folder); + if (this.liststore.get_iter_first (out iter)) { + do { + string folder; + + this.liststore.get (iter, 0, out folder, -1); + folder_list.add (folder); + } while (this.liststore.iter_next (ref iter)); } this.config.set_string_list (this.name, FOLDERS_KEY, folder_list); @@ -72,6 +79,19 @@ public class Rygel.FolderPrefSection : Rygel.PluginPrefSection { CheckButton enabled_check) { base.on_enabled_check_toggled (enabled_check); - this.text_view.sensitive = enabled_check.active; + this.treeview.sensitive = enabled_check.active; + } + + [CCode (instance_pos = -1)] + public void on_add_button_clicked (Button button) { + } + + [CCode (instance_pos = -1)] + public void on_remove_button_clicked (Button button) { + } + + [CCode (instance_pos = -1)] + public void on_clear_button_clicked (Button button) { + this.liststore.clear (); } } -- 2.7.4