playlist item editing implemented
[omnplay] / src / omnplay.cpp
index f71a85c..e4ed096 100644 (file)
@@ -449,6 +449,7 @@ static void omnplay_playlist_insert_items(omnplay_instance_t* app, int idx,
     playlist_item_t* items, int count)
 {
     int i;
+    GtkTreePath* path;
 
     pthread_mutex_lock(&app->playlist.lock);
     pthread_mutex_lock(&app->players.lock);
@@ -480,6 +481,12 @@ static void omnplay_playlist_insert_items(omnplay_instance_t* app, int idx,
     /* redraw playlist */
     omnplay_playlist_draw(app);
 
+    /* select */
+    path = gtk_tree_path_new_from_indices(idx + count, -1);
+    gtk_tree_selection_select_path(gtk_tree_view_get_selection(GTK_TREE_VIEW(app->playlist_grid)), path);
+    gtk_tree_view_set_cursor(GTK_TREE_VIEW(app->playlist_grid), path, NULL, FALSE);
+    gtk_tree_path_free(path);
+
     pthread_mutex_unlock(&app->players.lock);
     pthread_mutex_unlock(&app->playlist.lock);
 };
@@ -513,7 +520,26 @@ static void omnplay_playlist_item_add(omnplay_instance_t* app, int after)
 
 static void omnplay_playlist_item_edit(omnplay_instance_t* app)
 {
+    int idx;
+    playlist_item_t item;
+
+    /* find insert position */
+    idx = get_first_selected_item_playlist(app);
+
+    if(idx < 0)
+        return;
 
+    /* check for playing block */
+    if(idx_in_players_range(app, idx))
+        return;
+
+    item = app->playlist.item[idx];
+
+    if(ui_playlist_item_dialog(app, &item))
+    {
+        app->playlist.item[idx] = item;
+        omnplay_playlist_draw_item(app, idx);
+    };
 };
 
 static void omnplay_ctl(omnplay_instance_t* app, control_buttons_t button)