~pimvullers/beat-box/fix-983560

« back to all changes in this revision

Viewing changes to src/Views/ListView/PodcastListView.vala

  • Committer: sgringwe at gmail
  • Date: 2012-04-18 20:42:05 UTC
  • Revision ID: sgringwe@gmail.com-20120418204205-v1qcna51y2cbt9r9
*Abstracted ViewWrapper for different view types to spread out view-specific code
*Re-fixed libnotify closing/updating
*Put welcome screen in proper views rather than LW
*Fixed device add/removal

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
        public TreeViewSetup podcast_setup { set; get; }
30
30
 
31
31
        //for header column chooser
32
 
        Gtk.Menu columnChooserMenu;
33
32
        CheckMenuItem columnEpisode; // episode
34
33
        CheckMenuItem columnName; // name
35
34
        CheckMenuItem columnLength;
51
50
        Gtk.MenuItem mediaRemove;
52
51
        Gtk.MenuItem mediaSaveLocally;
53
52
        Gtk.MenuItem importToLibrary;
54
 
 
55
 
        // for editing cells in-treeview
56
 
        CellRendererText cellTrack;
57
 
        CellRendererText cellTitle;
58
 
        CellRendererText cellLength;
59
 
        CellRendererText cellArtist;
60
 
        SmartAlbumRenderer cellAlbum;
61
 
        CellRendererText cellGenre;
62
 
        CellRendererText cellYear;
63
 
        CellRendererPixbuf cellRating;
64
 
        CellRendererText cellSkips;
65
 
        CellRendererText cellPlays;
66
53
        
67
54
        public enum PodcastColumn {
68
55
                ROWID,
126
113
        }
127
114
 
128
115
    public void buildUI() {
129
 
                cellTrack = new CellRendererText();
130
 
                cellTitle = new CellRendererText();
131
 
                cellLength = new CellRendererText();
132
 
                cellArtist = new CellRendererText();
133
 
                cellAlbum = new SmartAlbumRenderer();
134
 
                cellGenre = new CellRendererText();
135
 
                cellYear = new CellRendererText();
136
 
                cellRating = new CellRendererPixbuf();
137
 
                cellSkips = new CellRendererText();
138
 
                cellPlays = new CellRendererText();
139
 
 
140
 
                cellRating.xalign = 0.0f;
141
 
 
142
 
                //cellTitle.editable = false;
143
 
                //cellTitle.edited.connect(cellTitleEdited);
144
 
 
145
 
                /* id is always first and is stored as an int. Then the rest are (1)
146
 
                 * strings (for simplicity), and include:
147
 
                 * #, track, title, artist, album, genre, comment, year, rating, (9)
148
 
                 * bitrate, play count, last played, date added, file name, (5)
149
 
                 * bpm, length, file size, (3) */
150
 
                var to_use = new GLib.List<TreeViewColumn>();
151
 
                var originalOrder = new GLib.List<TreeViewColumn>();
152
 
                var correctStringOrder = new GLib.List<string>();
153
 
                to_use = tvs.get_columns();
154
 
 
155
 
                /* put them in the order for treemodel */
156
 
                foreach(var tvc in to_use) {
157
 
                        originalOrder.append(tvc);
158
 
                        correctStringOrder.append(tvc.title);
159
 
                }
160
 
 
161
 
                int index = 0;
162
 
                foreach(TreeViewColumn tvc in originalOrder) {
163
 
                        if(!(tvc.title == " " || tvc.title == "id")) {
164
 
                                if(tvc.title == "Length")
165
 
                                        insert_column_with_data_func(-1, tvc.title, cellLength, cellHelper.lengthTreeViewFiller);
166
 
                                else if(tvc.title == "Rating")
167
 
                                        insert_column_with_data_func(-1, tvc.title, cellRating, cellHelper.ratingTreeViewFiller);
168
 
                                else if(tvc.title == "Date")
169
 
                                        insert_column_with_data_func(-1, tvc.title, cellYear, cellHelper.dateTreeViewFiller);
170
 
                                else if(tvc.title == "Episode")
171
 
                                        insert_column_with_data_func(-1, tvc.title, cellTrack, cellHelper.intelligentTreeViewFiller);
172
 
                                else if(tvc.title == "Name")
173
 
                                        insert_column_with_data_func(-1, tvc.title, cellTitle, cellHelper.stringTreeViewFiller);
174
 
                                else if(tvc.title == "Artist")
175
 
                                        insert_column_with_data_func(-1, tvc.title, cellArtist, cellHelper.stringTreeViewFiller);
176
 
                                else if(tvc.title == "Comment")
177
 
                                        insert_column_with_data_func(-1, tvc.title, new CellRendererText(), cellHelper.stringTreeViewFiller);
178
 
                                else if(tvc.title == "Category")
179
 
                                        insert_column_with_data_func(-1, tvc.title, new CellRendererText(), cellHelper.stringTreeViewFiller);
180
 
                                else if(tvc.title == "Podcast")
181
 
                                        insert_column_with_data_func(-1, tvc.title, cellAlbum, cellHelper.smartAlbumFiller);
182
 
                                else {
183
 
                                        insert_column(tvc, index);
184
 
                                }
185
 
 
186
 
 
187
 
                                get_column(index).resizable = true;
188
 
                                get_column(index).reorderable = false;
189
 
                                get_column(index).clickable = true;
190
 
                                get_column(index).sort_column_id = index;
191
 
                                get_column(index).set_sort_indicator(false);
192
 
                                get_column(index).visible = tvc.visible;
193
 
                                get_column(index).sizing = Gtk.TreeViewColumnSizing.FIXED;
194
 
                                get_column(index).fixed_width = tvc.fixed_width;
195
 
                        }
196
 
                        else if(tvc.title == " ") {
197
 
                                insert_column(tvc, index);
198
 
 
199
 
                                tvc.fixed_width = 24;
200
 
                                tvc.clickable = false;
201
 
                                tvc.sort_column_id = -1;
202
 
                                tvc.resizable = false;
203
 
                                tvc.reorderable = false;
204
 
 
205
 
                                tvc.clear_attributes (tvc.get_cells().nth_data(0));
206
 
                                tvc.clear_attributes (tvc.get_cells().nth_data(1));
207
 
 
208
 
                                tvc.set_cell_data_func(tvc.get_cells().nth_data(0), iconDataFunc);
209
 
                                tvc.set_cell_data_func(tvc.get_cells().nth_data(1), iconDataFunc);
210
 
                        }
211
 
                        else if(tvc.title == "id") {
212
 
                                insert_column(tvc, index);
213
 
                        }
214
 
                        else {
215
 
                                insert_column(tvc, index);
216
 
                        }
217
 
 
218
 
                        get_column(index).get_button().button_press_event.connect(viewHeaderClick);
219
 
                        get_column(index).notify["width"].connect(viewHeadersResized);
220
 
 
221
 
                        ++index;
222
 
                }
 
116
                add_columns();
223
117
                
224
118
                set_compare_func(view_compare_func);
225
119
        set_search_func(view_search_func);
226
120
        set_value_func(view_value_func);
227
 
                
228
 
                //rearrangeColumns(correctStringOrder);
229
 
                //viewColumnsChanged();
230
121
 
231
122
                button_press_event.connect(viewClick);
232
 
 
233
 
                //cursor_changed.connect_after(() => { update_rating_menu(); });
234
123
                button_release_event.connect(viewClickRelease);
235
 
                //columns_changed.connect(viewColumnsChanged);
236
124
 
237
125
                // column chooser menu
238
 
                columnChooserMenu = new Gtk.Menu();
239
126
                columnEpisode = new CheckMenuItem.with_label("Episode");
240
127
                columnName = new CheckMenuItem.with_label("Name");
241
128
                columnLength = new CheckMenuItem.with_label("Length");
299
186
                mediaRemove.activate.connect(mediaRemoveClicked);
300
187
                importToLibrary.activate.connect(importToLibraryClicked);
301
188
                mediaRateMedia.activate.connect(mediaRateMediaClicked);
302
 
                //mediaMenuActionMenu.show_all();
303
189
 
304
190
                update_sensitivities();
305
 
 
306
 
                //this.list_model.rows_reordered.connect(modelRowsReordered);
307
 
                //this.list_model.sort_column_changed.connect(sortColumnChanged);
308
191
        }
309
192
        
310
193
        public void rearrangeColumns(LinkedList<string> correctOrder) {
358
241
                }
359
242
        }
360
243
 
361
 
        public virtual void viewColumnsChanged() {
362
 
                updateTreeViewSetup();
363
 
        }
364
 
 
365
244
        public void updateColumnVisibilities() {
366
245
                int index = 0;
367
246
                foreach(TreeViewColumn tvc in get_columns()) {
532
411
                }
533
412
        }
534
413
 
535
 
        private bool viewHeaderClick(Gtk.Widget w, Gdk.EventButton e) {
536
 
                if(e.button == 3) {
537
 
                        columnChooserMenu.popup (null, null, null, 3, get_current_event_time());
538
 
                        return true;
539
 
                }
540
 
                else if(e.button == 1) {
541
 
                        lw.shuffleChooser.setOption(0);
542
 
                        
543
 
                        updateTreeViewSetup();
544
 
 
545
 
                        return false;
546
 
                }
547
 
 
548
 
                return false;
549
 
        }
550
 
 
551
 
        void viewHeadersResized() {
552
 
                updateTreeViewSetup();
553
 
        }
554
 
 
555
414
        protected override void updateTreeViewSetup() {
556
415
                if(tvs == null || get_columns().length() != TreeViewSetup.PODCAST_COLUMN_COUNT)
557
416
                        return;