wavs saved as wavs, pumped up version
[maemo-recorder] / src / maemo-recorder-ui.c
index f22a194..0bfc029 100644 (file)
@@ -1,4 +1,4 @@
-/* vim: set ts=4 sw=4 et: */
+/* vim: set sts=4 sw=4 et: */
 /*
  * maemo-recorder-ui.c
  *
@@ -37,7 +37,7 @@
 #include "maemo-recorder.h"
 #include "maemo-recorder-ui.h"
 #include "maemo-recorder-file.h"
-
+#include "settings.h"
 
 #define DEFAULT_REC_BLOCKSIZE "160"
 
@@ -171,17 +171,16 @@ static gboolean createPipeline(AppData *app, PipeLineType type)
     {
         case PIPELINE_PLAY_MP3:
             ULOG_INFO("mp3 playback - queue");
-            src = gst_element_factory_make ("filesrc", "source");
+            src = gst_element_factory_make ("gnomevfssrc", "source");
             queue = gst_element_factory_make ("queue", "queue");
             sink = gst_element_factory_make ("dspmp3sink", "sink");
 
             g_object_set(G_OBJECT (queue), 
-                "max-size-buffers", 8192,
                 "min-threshold-bytes", 131072,
-                "min-threshold-buffers", 2048,
                 NULL );
             g_object_set(G_OBJECT(src), 
                     "location", app->openFileName, 
+                    "blocksize", 65536,
                     NULL);
             break;
 
@@ -313,7 +312,8 @@ static gboolean createPipeline(AppData *app, PipeLineType type)
                         ULOG_ERR("gst_element_link failed for src, filter and sink!");
                         return FALSE;
                     }
-                    break;   
+                    break;
+
                 case FORMAT_WAV:
                     gst_bin_add_many(GST_BIN(pipeline), src, parse, sink, NULL);
                     if (!gst_element_link_many (src, parse, sink, NULL))
@@ -348,6 +348,7 @@ static gboolean createPipeline(AppData *app, PipeLineType type)
                     }
 
                     break;
+
                 case FORMAT_WAV:
                     gst_bin_add_many(GST_BIN(pipeline), src, parse, NULL);
                     if (!gst_element_link_many (src, parse, NULL))
@@ -358,7 +359,6 @@ static gboolean createPipeline(AppData *app, PipeLineType type)
                     app->playPipeline = pipeline;
                     g_signal_connect(parse, "pad_added",
                                  G_CALLBACK(new_pad_cb), app);
-             
                     break;
 
                 default:
@@ -426,6 +426,7 @@ static gboolean destroyPipeline(AppData *data, PipeLineType type)
             data->recPipeline = NULL;
             */
             break;
+
         default:
             pipeline = data->playPipeline;
             /*
@@ -505,11 +506,11 @@ static void pipelineStateChanged (GstElement *element,
           break;
 
         case GST_STATE_READY:
-          /* hildon_banner_show_information(GTK_WIDGET(data->mainView), NULL, "Ready..."); */
-          ULOG_INFO("%s() - Ready", G_STRFUNC);
-          gtk_entry_set_text(GTK_ENTRY(data->mainViewData.stateEntry), 
+            /* hildon_banner_show_information(GTK_WIDGET(data->mainView), NULL, "Ready..."); */
+            ULOG_INFO("%s() - Ready", G_STRFUNC);
+            gtk_entry_set_text(GTK_ENTRY(data->mainViewData.stateEntry), 
                      RECORDER_MSG_READY);  
-          break;
+            break;
 
         case GST_STATE_PAUSED:
           {
@@ -577,6 +578,7 @@ static gboolean cbBus(GstBus *bus,
             g_free (debug);
             break;
         }
+
         case GST_MESSAGE_ERROR: 
         {
             GError *err;
@@ -589,6 +591,7 @@ static gboolean cbBus(GstBus *bus,
             /* break; */
             /* flow through to eos */
         }
+
         case GST_MESSAGE_EOS:
         {
             ULOG_INFO("%s() - eos", G_STRFUNC);
@@ -614,6 +617,7 @@ static gboolean cbBus(GstBus *bus,
              }
              break;
         }
+
         case GST_MESSAGE_STATE_CHANGED: 
         {
             GstState old;
@@ -1080,6 +1084,11 @@ static void cbSave(GtkWidget* widget, AppData *data)
 }
 #endif
 
+static void cbSettings(GtkWidget* widget, AppData *data)
+{
+    settings_edit( widget, data );
+}
+
 static void cbSaveAs(GtkWidget* widget, AppData *data) 
 {
     GtkWidget* dialog = NULL;
@@ -1102,6 +1111,9 @@ static void cbSaveAs(GtkWidget* widget, AppData *data)
               GTK_WINDOW(data->mainView), 
               GTK_FILE_CHOOSER_ACTION_SAVE));
 
+    gtk_file_chooser_set_current_folder( GTK_FILE_CHOOSER(dialog), 
+            get_default_dir() );
+
     /* show it */
     gtk_widget_show_all(dialog);
 
@@ -1187,29 +1199,29 @@ static void cbRec(GtkWidget* widget, AppData *data)
     switch (data->filter)
     {
         case FORMAT_PCM:
-            data->saveFileName = g_strdup(DEFAULT_TMP_FILE);
-            data->openFileName = g_strdup(DEFAULT_TMP_FILE);
-            break;
+             data->saveFileName = g_strdup_printf("%s/%s", get_default_dir(), DEFAULT_TMP_FILE);
+             data->openFileName = g_strdup_printf("%s/%s", get_default_dir(), DEFAULT_TMP_FILE);
+             break;
 
-        case FORMAT_PCMA:
-            data->saveFileName = g_strdup(DEFAULT_TMP_PCMA_FILE);
-            data->openFileName = g_strdup(DEFAULT_TMP_PCMA_FILE);
-            break;
-         
-        case FORMAT_PCMU:
-            data->saveFileName = g_strdup(DEFAULT_TMP_PCMU_FILE);
-            data->openFileName = g_strdup(DEFAULT_TMP_PCMU_FILE);
-            break;
+         case FORMAT_PCMA:
+             data->saveFileName = g_strdup_printf("%s/%s", get_default_dir(), DEFAULT_TMP_PCMA_FILE);
+             data->openFileName = g_strdup_printf("%s/%s", get_default_dir(), DEFAULT_TMP_PCMA_FILE);
+             break;
+             
+         case FORMAT_PCMU:
+             data->saveFileName = g_strdup_printf("%s/%s", get_default_dir(), DEFAULT_TMP_PCMU_FILE);
+             data->openFileName = g_strdup_printf("%s/%s", get_default_dir(), DEFAULT_TMP_PCMU_FILE);
+             break;
 
-        case FORMAT_WAV:
-            data->saveFileName = g_strdup(DEFAULT_TMP_WAV_FILE);
-            data->openFileName = g_strdup(DEFAULT_TMP_WAV_FILE);
-            break;
+         case FORMAT_WAV:
+             data->saveFileName = g_strdup_printf("%s/%s", get_default_dir(), DEFAULT_TMP_WAV_FILE);
+             data->openFileName = g_strdup_printf("%s/%s", get_default_dir(), DEFAULT_TMP_WAV_FILE);
+             break;
 
-        case FORMAT_ILBC:
-        default:
-            data->saveFileName = g_strdup(DEFAULT_TMP_ILBC_FILE);
-            data->openFileName = g_strdup(DEFAULT_TMP_ILBC_FILE);
+         case FORMAT_ILBC:
+         default:
+             data->saveFileName = g_strdup_printf("%s/%s", get_default_dir(), DEFAULT_TMP_ILBC_FILE);
+             data->openFileName = g_strdup_printf("%s/%s", get_default_dir(), DEFAULT_TMP_ILBC_FILE);
             break;
     }
 
@@ -1512,7 +1524,7 @@ static void createMenu( AppData *data )
     GtkWidget *item_pcmu;
     GtkWidget *item_ilbc;
     GtkWidget *item_pcm;
-   
+    GtkWidget *item_settings;
     /*
     GtkWidget *item_radio_type1;
     */
@@ -1532,20 +1544,31 @@ static void createMenu( AppData *data )
     item_file_open = gtk_menu_item_new_with_label(_("Open..."));
     item_file_save_as = gtk_menu_item_new_with_label(_("Save as..."));
     item_others = gtk_menu_item_new_with_label (_("Recording format"));
+    item_settings = gtk_menu_item_new_with_label (_("Settings"));
     
     item_pcma = gtk_radio_menu_item_new_with_label(
-        group, "PCM A-law");
+        group, FORMAT_NAME_PCMA);
     item_ilbc = gtk_radio_menu_item_new_with_label_from_widget(
-        GTK_RADIO_MENU_ITEM(item_pcma), "iLBC");
+        GTK_RADIO_MENU_ITEM(item_pcma), FORMAT_NAME_ILBC);
     item_pcmu = gtk_radio_menu_item_new_with_label_from_widget(
-        GTK_RADIO_MENU_ITEM(item_pcma), "PCM u-law");
+        GTK_RADIO_MENU_ITEM(item_pcma), FORMAT_NAME_PCMU);
     item_pcm = gtk_radio_menu_item_new_with_label_from_widget(
-        GTK_RADIO_MENU_ITEM(item_pcma), "WAV");
+        GTK_RADIO_MENU_ITEM(item_pcma), FORMAT_NAME_WAV);
+    
+    data->filter = get_default_filter();
+
+    if (data->filter == FORMAT_ILBC)
+        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_ilbc), TRUE);
+    else if (data->filter == FORMAT_WAV)
+        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_pcm), TRUE);
+    else if (data->filter == FORMAT_PCMA)
+        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_pcma), TRUE);
+    else 
+    {
+        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_ilbc), TRUE);
+        data->filter = FORMAT_ILBC;
+    }
     
-    /* default is iLBC */
-    gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_ilbc), TRUE); 
-    data->filter = FORMAT_ILBC;
-
     data->radio_pcma = item_pcma;
     data->radio_ilbc = item_ilbc;
     data->radio_pcm = item_pcm;        
@@ -1564,6 +1587,8 @@ static void createMenu( AppData *data )
     gtk_menu_append( menu_others, item_pcma );
     gtk_menu_append( menu_others, item_ilbc);
     
+    gtk_menu_append( main_menu, item_settings );
+    
     gtk_menu_append( main_menu, item_close );
 
     /* Add others submenu to the "Others" item */
@@ -1577,6 +1602,9 @@ static void createMenu( AppData *data )
         GTK_SIGNAL_FUNC (cbOpen), data);
     g_signal_connect( G_OBJECT( item_file_save_as), "activate",
         GTK_SIGNAL_FUNC (cbSaveAs), data);
+    g_signal_connect( G_OBJECT( item_settings ), "activate",
+        GTK_SIGNAL_FUNC (cbSettings), data);
+    
     g_signal_connect( G_OBJECT( item_close ), "activate",
         GTK_SIGNAL_FUNC (cbItemClose), data);
 
@@ -1632,6 +1660,9 @@ gboolean maemo_recorder_ui_new(AppData *data)
     gtk_table_set_col_spacings (GTK_TABLE (table), 0);
 
     label = gtk_label_new_with_mnemonic(_("Filename:"));
+    /*
+    gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5);
+    */
     gtk_table_attach_defaults (GTK_TABLE (table),
             label,
             0, 1, 0, 1);
@@ -1643,6 +1674,9 @@ gboolean maemo_recorder_ui_new(AppData *data)
     gtk_label_set_mnemonic_widget (GTK_LABEL (label), entry1);
 
     label = gtk_label_new_with_mnemonic (_("Length:"));
+    /*
+    gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5);
+    */
     gtk_table_attach_defaults (GTK_TABLE (table),
             label,
             0, 1, 1, 2);
@@ -1654,6 +1688,9 @@ gboolean maemo_recorder_ui_new(AppData *data)
     gtk_label_set_mnemonic_widget (GTK_LABEL (label), entry2);
 
     label = gtk_label_new_with_mnemonic (_("State:"));
+    /*
+    gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5);
+    */
     gtk_table_attach_defaults (GTK_TABLE (table),
             label,
             0, 1, 2, 3);
@@ -1836,6 +1873,7 @@ static gdouble guessMediaLength(AppData *data)
         default:
             return -1.0;
     }
+
     if (bitrate == 0.0)
         return -1.0;