private Widget BuildTiles() { var vbox = new VBox() { Spacing = 12, BorderWidth = 4 }; var titleLabel = new Label("Menu:"); vbox.PackStart(titleLabel, false, false, 0); this.presonal_recommendation_view = new SongKickViewInfo("Personal recommendations", recommendations_contents_box); this.search_by_artist_view = new SongKickViewInfo("Find music events by artist", search_by_artist_contents_box) { ShouldBeSeparated = true }; this.search_by_location_view = new SongKickViewInfo("Find music events by location", search_by_location_contents_box); this.search_locations = new SongKickViewInfo("Find locations", search_location_contents_box) { ShouldBeSeparated = true }; this.search_artists = new SongKickViewInfo("Find artists", search_artists_contents_box); var songkickViews = new SongKickViewInfo [] { presonal_recommendation_view, search_by_artist_view, search_by_location_view, search_locations, search_artists }; // add buttons lock (propagate_change_view_events_lock) { propagate_change_view_events = false; foreach (var view in songkickViews) { if (view.ShouldBeSeparated) { vbox.PackStart(new HSeparator(), false, false, 0); } var button = new Gtk.ToggleButton(view.Name); view.Button = button; button.Clicked += (o, a) => this.SetView(view); vbox.PackStart(button, false, false, 0); } propagate_change_view_events = true; } // add clickable SongKick logo: vbox.PackEnd(new SongKickLogo(), false, false, 0); return(vbox); }
private void SetView(SongKickViewInfo view) { if (propagate_change_view_events) { lock (propagate_change_view_events_lock) { if (propagate_change_view_events) { propagate_change_view_events = false; SetViewHelper(view); propagate_change_view_events = true; } } } }
private void SetViewHelper(SongKickViewInfo view) { foreach (Widget w in contents_box.AllChildren) { contents_box.Remove(w); } if (active_view != null) { ThreadAssist.ProxyToMain(() => active_view.Button.Active = false); } active_view = view; ThreadAssist.ProxyToMain(() => active_view.Button.Active = true); contents_box.PackStart(view.CorrespondingBox, true, true, 0); ShowAll(); }
private void SetViewHelper(SongKickViewInfo view) { foreach (Widget w in contents_box.AllChildren) { contents_box.Remove (w); } if (active_view != null) { ThreadAssist.ProxyToMain (() => active_view.Button.Active = false ); } active_view = view; ThreadAssist.ProxyToMain (() => active_view.Button.Active = true ); contents_box.PackStart(view.CorrespondingBox, true, true, 0); ShowAll (); }
private void SetView(SongKickViewInfo view) { if (propagate_change_view_events) { lock (propagate_change_view_events_lock) { if (propagate_change_view_events) { propagate_change_view_events = false; SetViewHelper (view); propagate_change_view_events = true; } } } }
private Widget BuildTiles() { var vbox = new VBox () { Spacing = 12, BorderWidth = 4 }; var titleLabel = new Label ("Menu:"); vbox.PackStart (titleLabel, false, false, 0); this.presonal_recommendation_view = new SongKickViewInfo ("Personal recommendations", recommendations_contents_box); this.search_by_artist_view = new SongKickViewInfo("Find music events by artist", search_by_artist_contents_box) { ShouldBeSeparated = true }; this.search_by_location_view = new SongKickViewInfo("Find music events by location", search_by_location_contents_box); this.search_locations = new SongKickViewInfo ("Find locations", search_location_contents_box) { ShouldBeSeparated = true }; this.search_artists = new SongKickViewInfo ("Find artists", search_artists_contents_box); var songkickViews = new SongKickViewInfo [] { presonal_recommendation_view, search_by_artist_view, search_by_location_view, search_locations, search_artists }; // add buttons lock (propagate_change_view_events_lock) { propagate_change_view_events = false; foreach (var view in songkickViews) { if (view.ShouldBeSeparated) { vbox.PackStart (new HSeparator(), false, false, 0); } var button = new Gtk.ToggleButton (view.Name); view.Button = button; button.Clicked += (o, a) => this.SetView (view); vbox.PackStart (button, false, false, 0); } propagate_change_view_events = true; } // add clickable SongKick logo: vbox.PackEnd (new SongKickLogo(), false, false, 0); return vbox; }