mirror of
https://gitlab.com/liyaowhen/youtubecollector-git.git
synced 2026-10-01 01:12:59 +00:00
added add to other playlist feature for item
This commit is contained in:
@@ -30,7 +30,10 @@ namespace Song {
|
||||
{ "preferences", this.on_preferences_action },
|
||||
{ "quit", this.quit }
|
||||
};
|
||||
var add_song_to_playlist_action = new SimpleAction("add_item_to_playlist", VariantType.STRING_ARRAY);
|
||||
add_song_to_playlist_action.activate.connect(add_song_to_playlist);
|
||||
this.add_action_entries (action_entries, this);
|
||||
this.add_action(add_song_to_playlist_action);
|
||||
this.set_accels_for_action ("app.quit", {"<primary>q"});
|
||||
}
|
||||
|
||||
@@ -62,5 +65,41 @@ namespace Song {
|
||||
private void on_preferences_action () {
|
||||
message ("app.preferences action activated");
|
||||
}
|
||||
|
||||
private void add_song_to_playlist(Action a, GLib.Variant? data) {
|
||||
// [current_playlist.name, target_playlist.name, item.name]
|
||||
print("action used");
|
||||
string[] request = data.get_strv ();
|
||||
if (request.length != 3) return;
|
||||
|
||||
var config = Config.get_instance ();
|
||||
print("request is valid");
|
||||
|
||||
PlaylistObject? target_playlist = null;
|
||||
PlaylistObject? current_playlist = null;
|
||||
config.playlists.foreach((i) => {
|
||||
if (i.name == request[1]) {
|
||||
target_playlist = i;
|
||||
}
|
||||
if (i.name == request[0]) {
|
||||
current_playlist = i;
|
||||
}
|
||||
});
|
||||
if (target_playlist == null | current_playlist == null) return;
|
||||
print("was able to find playlist reference");
|
||||
|
||||
PlaylistItem? item = null;
|
||||
current_playlist.items.foreach ((i) => {
|
||||
if (i.name == request[2]) {
|
||||
item = i;
|
||||
}
|
||||
});
|
||||
if (item == null) return;
|
||||
print("item was not null");
|
||||
|
||||
target_playlist.add_item (item);
|
||||
print("added to other playlist");
|
||||
config.save.begin();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -261,7 +261,7 @@ namespace Song {
|
||||
}
|
||||
}*/
|
||||
playlist.items.foreach((item) => {
|
||||
MusicListRow i = new MusicListRow(item);
|
||||
MusicListRow i = new MusicListRow(item, playlist);
|
||||
content.append(i);
|
||||
|
||||
});
|
||||
@@ -269,7 +269,7 @@ namespace Song {
|
||||
config.config_changed.connect(() => {
|
||||
content.remove_all();
|
||||
playlist.items.foreach((item) => {
|
||||
MusicListRow i = new MusicListRow(item);
|
||||
MusicListRow i = new MusicListRow(item, playlist);
|
||||
content.append(i);
|
||||
|
||||
});
|
||||
|
||||
@@ -3,9 +3,13 @@ namespace Song {
|
||||
|
||||
private Settings settings = new Settings("com.liyaowhen.Song.playlists");
|
||||
public PlaylistItem item;
|
||||
private PlaylistObject playlist;
|
||||
|
||||
public MusicListRow (PlaylistItem _item) {
|
||||
private Gee.HashSet<Gtk.Widget> playlist_widgets = new Gee.HashSet<Gtk.Widget>();
|
||||
|
||||
public MusicListRow (PlaylistItem _item, PlaylistObject playlist) {
|
||||
this.item = _item;
|
||||
this.playlist = playlist;
|
||||
build_ui();
|
||||
}
|
||||
|
||||
@@ -54,11 +58,53 @@ namespace Song {
|
||||
});
|
||||
|
||||
append(play_button);
|
||||
|
||||
var options_button = new Gtk.MenuButton();
|
||||
options_button.set_icon_name("view-more-symbolic");
|
||||
options_button.add_css_class("flat");
|
||||
|
||||
|
||||
var add_playlists_menu = new Menu();
|
||||
fill_playlists(add_playlists_menu);
|
||||
|
||||
var menu = new Menu();
|
||||
menu.append_section("Add To Other Playlists", add_playlists_menu);
|
||||
|
||||
//popover.set_child(nav_view);
|
||||
|
||||
|
||||
|
||||
options_button.set_menu_model(menu);
|
||||
prepend(options_button);
|
||||
|
||||
spacing = 5;
|
||||
}
|
||||
|
||||
private async void fill_playlists(Menu menu) {
|
||||
var config = Config.get_instance();
|
||||
|
||||
menu.remove_all();
|
||||
|
||||
config.playlists.foreach((i) => {
|
||||
if (i != playlist) {
|
||||
var playlist = new MenuItem(i.name, null);
|
||||
string[] target_array = {this.playlist.name, i.name, item.name};
|
||||
playlist.set_action_and_target_value("app.add_item_to_playlist", target_array);
|
||||
menu.append_item(playlist);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public class AddItemToPlaylistRequest : GLib.Object {
|
||||
public PlaylistObject? target = null;
|
||||
public PlaylistItem? item = null;
|
||||
|
||||
public AddItemToPlaylistRequest(PlaylistObject playlist, PlaylistItem item) {
|
||||
this.target = playlist;
|
||||
this.item = item;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user