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 },
|
{ "preferences", this.on_preferences_action },
|
||||||
{ "quit", this.quit }
|
{ "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_entries (action_entries, this);
|
||||||
|
this.add_action(add_song_to_playlist_action);
|
||||||
this.set_accels_for_action ("app.quit", {"<primary>q"});
|
this.set_accels_for_action ("app.quit", {"<primary>q"});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -62,5 +65,41 @@ namespace Song {
|
|||||||
private void on_preferences_action () {
|
private void on_preferences_action () {
|
||||||
message ("app.preferences action activated");
|
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) => {
|
playlist.items.foreach((item) => {
|
||||||
MusicListRow i = new MusicListRow(item);
|
MusicListRow i = new MusicListRow(item, playlist);
|
||||||
content.append(i);
|
content.append(i);
|
||||||
|
|
||||||
});
|
});
|
||||||
@@ -269,7 +269,7 @@ namespace Song {
|
|||||||
config.config_changed.connect(() => {
|
config.config_changed.connect(() => {
|
||||||
content.remove_all();
|
content.remove_all();
|
||||||
playlist.items.foreach((item) => {
|
playlist.items.foreach((item) => {
|
||||||
MusicListRow i = new MusicListRow(item);
|
MusicListRow i = new MusicListRow(item, playlist);
|
||||||
content.append(i);
|
content.append(i);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -3,9 +3,13 @@ namespace Song {
|
|||||||
|
|
||||||
private Settings settings = new Settings("com.liyaowhen.Song.playlists");
|
private Settings settings = new Settings("com.liyaowhen.Song.playlists");
|
||||||
public PlaylistItem item;
|
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.item = _item;
|
||||||
|
this.playlist = playlist;
|
||||||
build_ui();
|
build_ui();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -55,10 +59,52 @@ namespace Song {
|
|||||||
|
|
||||||
append(play_button);
|
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;
|
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