minimalistic playlist support added
authorMaksym Veremeyenko <verem@m1stereo.tv>
Wed, 15 Jun 2011 08:04:57 +0000 (11:04 +0300)
committerMaksym Veremeyenko <verem@m1stereo.tv>
Wed, 15 Jun 2011 08:04:57 +0000 (11:04 +0300)
src/dv1394app.c

index 6e5a2a3..3471a5a 100644 (file)
@@ -162,10 +162,72 @@ void on_item_quit_activate( GtkMenuItem *menuitem, gpointer user_data )
        gtk_main_quit( );
 }
 
+static void playlist_open(dv1394app this, char* filename)
+{
+       FILE* f;
+
+       if( this->selected_unit >= 0 && this->command)
+       {
+               f = fopen(filename, "rt");
+               if (f)
+               {
+                       while( !feof(f) )
+                       {
+                               char* s;
+                               char l[PATH_MAX];
+
+                               /* load string */
+                               fgets(l, sizeof(l), f);
+
+                               /* remove newlines */
+                               if( (s = strchr(l, '\n')) ) *s = 0;
+                               if( (s = strchr(l, '\r')) ) *s = 0;
+                               if( (s = strchr(l, '\t')) ) *s = 0;
+
+                               /* check for empty line */
+                               if(l[0])
+                                       mvcp_unit_append( this->command, this->selected_unit, l, -1, -1 );
+                       }
+
+                       fclose(f);
+               }
+       }
+
+}
+
+static void playlist_save(dv1394app this, char* filename)
+{
+       int index;
+       mvcp_list_entry_t entry;
+       mvcp_list list;
+       FILE* f;
+
+       if( this->selected_unit >= 0 && this->command)
+       {
+               f = fopen(filename, "wt");
+               if (f)
+               {
+                       list = mvcp_list_init( this->command, this->selected_unit);
+
+                       if ( list )
+                       {
+                               for ( index = 0; list && index < mvcp_list_count( list ); index ++ )
+                               {
+                                       mvcp_list_get( list, index, &entry );
+                                       fprintf(f, "%s\n", entry.full);
+                               }
+                               mvcp_list_close( list );
+                       }
+
+                       fclose(f);
+               }
+       }
+}
+
 /** Main window - playlist open menu item selected.
 */
 
-void on_item_open_playlist_activate( GtkMenuItem *menuitem, gpointer user_data )
+static void on_item_open_playlist_activate( GtkMenuItem *menuitem, gpointer user_data )
 {
        dv1394app this = user_data;
        GtkWidget *dialog;
@@ -185,7 +247,7 @@ void on_item_open_playlist_activate( GtkMenuItem *menuitem, gpointer user_data )
                char *filename;
 
                filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
-               fprintf(stderr, "on_item_open_playlist_activate: %s\n", filename);
+               playlist_open(this, filename);
 
                if ( this->playlist_folder )
                        g_free (this->playlist_folder);
@@ -195,7 +257,6 @@ void on_item_open_playlist_activate( GtkMenuItem *menuitem, gpointer user_data )
                        char* e = strrchr(this->playlist_folder, '/');
                        if(e) *e = 0;
                }
-               fprintf(stderr, "on_item_open_playlist_activate: this->playlist_folder=[%s]\n", this->playlist_folder);
        }
 
        gtk_widget_destroy (dialog);
@@ -204,7 +265,7 @@ void on_item_open_playlist_activate( GtkMenuItem *menuitem, gpointer user_data )
 /** Main window - playlist save menu item selected.
 */
 
-void on_item_save_playlist_activate( GtkMenuItem *menuitem, gpointer user_data )
+static void on_item_save_playlist_activate( GtkMenuItem *menuitem, gpointer user_data )
 {
        dv1394app this = user_data;
        GtkWidget *dialog;
@@ -227,7 +288,7 @@ void on_item_save_playlist_activate( GtkMenuItem *menuitem, gpointer user_data )
                char *filename;
 
                filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
-               fprintf(stderr, "on_item_save_playlist_activate: filename=[%s]\n", filename);
+               playlist_save(this, filename);
 
                if ( this->playlist_folder )
                        g_free (this->playlist_folder);
@@ -237,7 +298,6 @@ void on_item_save_playlist_activate( GtkMenuItem *menuitem, gpointer user_data )
                        char* e = strrchr(this->playlist_folder, '/');
                        if(e) *e = 0;
                }
-               fprintf(stderr, "on_item_save_playlist_activate: this->playlist_folder=[%s]\n", this->playlist_folder);
        }
 
        gtk_widget_destroy (dialog);