static void import_complete_cb (RhythmDBImportJob *job, int total, RBAndroidSource *source) { RBAndroidSourcePrivate *priv = GET_PRIVATE (source); GSettings *settings; RBShell *shell; if (priv->ejecting) { rb_device_source_default_eject (RB_DEVICE_SOURCE (source)); } else { g_object_get (source, "shell", &shell, NULL); rb_shell_append_display_page (shell, RB_DISPLAY_PAGE (priv->import_errors), RB_DISPLAY_PAGE (source)); g_object_unref (shell); g_object_set (source, "load-status", RB_SOURCE_LOAD_STATUS_LOADED, NULL); g_object_get (source, "encoding-settings", &settings, NULL); rb_transfer_target_transfer (RB_TRANSFER_TARGET (source), settings, NULL, FALSE); g_object_unref (settings); rb_media_player_source_purge_metadata_cache (RB_MEDIA_PLAYER_SOURCE (source)); } g_clear_object (&priv->import_job); }
static void import_complete_cb (RhythmDBImportJob *job, int total, RBGenericPlayerSource *source) { RBGenericPlayerSourceClass *klass = RB_GENERIC_PLAYER_SOURCE_GET_CLASS (source); RBGenericPlayerSourcePrivate *priv = GET_PRIVATE (source); RBShell *shell; GDK_THREADS_ENTER (); g_object_get (source, "shell", &shell, NULL); rb_shell_append_display_page (shell, RB_DISPLAY_PAGE (priv->import_errors), RB_DISPLAY_PAGE (source)); g_object_unref (shell); if (klass->impl_load_playlists) klass->impl_load_playlists (source); g_object_unref (priv->import_job); priv->import_job = NULL; rb_display_page_notify_status_changed (RB_DISPLAY_PAGE (source)); g_object_set (source, "load-status", RB_SOURCE_LOAD_STATUS_LOADED, NULL); rb_transfer_target_transfer (RB_TRANSFER_TARGET (source), NULL, FALSE); GDK_THREADS_LEAVE (); }
static RBTrackTransferBatch * impl_paste (RBSource *source, GList *entries) { gboolean defer; defer = (ensure_loaded (RB_GENERIC_PLAYER_SOURCE (source)) == FALSE); return rb_transfer_target_transfer (RB_TRANSFER_TARGET (source), entries, defer); }
static gboolean device_loaded_idle (RBMtpSource *source) { GSettings *settings; g_object_set (source, "load-status", RB_SOURCE_LOAD_STATUS_LOADED, NULL); g_object_get (source, "encoding-settings", &settings, NULL); rb_transfer_target_transfer (RB_TRANSFER_TARGET (source), settings, NULL, FALSE); g_object_unref (settings); return FALSE; }
static RBTrackTransferBatch * impl_paste (RBSource *source, GList *entries) { gboolean defer; RBTrackTransferBatch *batch; GSettings *settings; defer = (ensure_loaded (RB_MTP_SOURCE (source)) == FALSE); g_object_get (source, "encoding-settings", &settings, NULL); batch = rb_transfer_target_transfer (RB_TRANSFER_TARGET (source), settings, entries, defer); g_object_unref (settings); return batch; }
static void impl_show_properties (RBMediaPlayerSource *source, GtkWidget *info_box, GtkWidget *notebook) { RBMtpSourcePrivate *priv = MTP_SOURCE_GET_PRIVATE (source); GtkBuilder *builder; GtkWidget *widget; GHashTableIter iter; gpointer key, value; int num_podcasts; char *device_name; char *builder_file; GObject *plugin; char *text; GList *output_formats; GList *t; GString *str; g_object_get (source, "plugin", &plugin, NULL); builder_file = rb_find_plugin_data_file (G_OBJECT (plugin), "mtp-info.ui"); g_object_unref (plugin); if (builder_file == NULL) { g_warning ("Couldn't find mtp-info.ui"); return; } builder = rb_builder_load (builder_file, NULL); g_free (builder_file); if (builder == NULL) { rb_debug ("Couldn't load mtp-info.ui"); return; } /* 'basic' tab stuff */ widget = GTK_WIDGET (gtk_builder_get_object (builder, "mtp-basic-info")); gtk_box_pack_start (GTK_BOX (info_box), widget, TRUE, TRUE, 0); widget = GTK_WIDGET (gtk_builder_get_object (builder, "entry-mtp-name")); g_object_get (source, "name", &device_name, NULL); gtk_entry_set_text (GTK_ENTRY (widget), device_name); g_free (device_name); g_signal_connect (widget, "focus-out-event", (GCallback)rb_mtp_source_name_changed_cb, source); num_podcasts = 0; g_hash_table_iter_init (&iter, priv->entry_map); while (g_hash_table_iter_next (&iter, &key, &value)) { LIBMTP_track_t *track = value; if (g_strcmp0 (track->genre, "Podcast") == 0) { num_podcasts++; } } widget = GTK_WIDGET (gtk_builder_get_object (builder, "mtp-num-tracks")); text = g_strdup_printf ("%d", g_hash_table_size (priv->entry_map) - num_podcasts); gtk_label_set_text (GTK_LABEL (widget), text); g_free (text); widget = GTK_WIDGET (gtk_builder_get_object (builder, "mtp-num-podcasts")); text = g_strdup_printf ("%d", num_podcasts); gtk_label_set_text (GTK_LABEL (widget), text); g_free (text); widget = GTK_WIDGET (gtk_builder_get_object (builder, "mtp-num-playlists")); text = g_strdup_printf ("%d", 0); /* correct, but wrong */ gtk_label_set_text (GTK_LABEL (widget), text); g_free (text); /* 'advanced' tab stuff */ widget = GTK_WIDGET (gtk_builder_get_object (builder, "mtp-advanced-tab")); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), widget, gtk_label_new (_("Advanced"))); widget = GTK_WIDGET (gtk_builder_get_object (builder, "label-mtp-model-value")); gtk_label_set_text (GTK_LABEL (widget), priv->model_name); widget = GTK_WIDGET (gtk_builder_get_object (builder, "label-serial-number-value")); gtk_label_set_text (GTK_LABEL (widget), priv->serial); widget = GTK_WIDGET (gtk_builder_get_object (builder, "label-firmware-version-value")); gtk_label_set_text (GTK_LABEL (widget), priv->device_version); widget = GTK_WIDGET (gtk_builder_get_object (builder, "label-manufacturer-value")); gtk_label_set_text (GTK_LABEL (widget), priv->manufacturer); str = g_string_new (""); output_formats = rb_transfer_target_get_format_descriptions (RB_TRANSFER_TARGET (source)); for (t = output_formats; t != NULL; t = t->next) { if (t != output_formats) { g_string_append (str, "\n"); } g_string_append (str, t->data); } rb_list_deep_free (output_formats); widget = GTK_WIDGET (gtk_builder_get_object (builder, "label-audio-formats-value")); gtk_label_set_text (GTK_LABEL (widget), str->str); g_string_free (str, TRUE); g_object_unref (builder); }
static void impl_show_properties (RBMediaPlayerSource *source, GtkWidget *info_box, GtkWidget *notebook) { RBGenericPlayerSourcePrivate *priv = GET_PRIVATE (source); RhythmDBQueryModel *model; GtkBuilder *builder; GtkWidget *widget; GString *str; char *device_name; char *builder_file; char *vendor_name; char *model_name; char *serial_id; GObject *plugin; char *text; GList *output_formats; GList *t; g_object_get (source, "plugin", &plugin, NULL); builder_file = rb_find_plugin_data_file (plugin, "generic-player-info.ui"); g_object_unref (plugin); if (builder_file == NULL) { g_warning ("Couldn't find generic-player-info.ui"); return; } builder = rb_builder_load (builder_file, NULL); g_free (builder_file); if (builder == NULL) { rb_debug ("Couldn't load generic-player-info.ui"); return; } /* 'basic' tab stuff */ widget = GTK_WIDGET (gtk_builder_get_object (builder, "generic-player-basic-info")); gtk_box_pack_start (GTK_BOX (info_box), widget, TRUE, TRUE, 0); widget = GTK_WIDGET (gtk_builder_get_object (builder, "entry-device-name")); g_object_get (source, "name", &device_name, NULL); gtk_entry_set_text (GTK_ENTRY (widget), device_name); g_free (device_name); /* don't think we can support this.. g_signal_connect (widget, "focus-out-event", (GCallback)rb_mtp_source_name_changed_cb, source); */ g_object_get (source, "base-query-model", &model, NULL); widget = GTK_WIDGET (gtk_builder_get_object (builder, "num-tracks")); text = g_strdup_printf ("%d", gtk_tree_model_iter_n_children (GTK_TREE_MODEL (model), NULL)); gtk_label_set_text (GTK_LABEL (widget), text); g_free (text); g_object_unref (model); widget = GTK_WIDGET (gtk_builder_get_object (builder, "num-playlists")); text = g_strdup_printf ("%d", g_list_length (priv->playlists)); gtk_label_set_text (GTK_LABEL (widget), text); g_free (text); /* 'advanced' tab stuff */ widget = GTK_WIDGET (gtk_builder_get_object (builder, "generic-player-advanced-tab")); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), widget, gtk_label_new (_("Advanced"))); g_object_get (priv->device_info, "model", &model_name, "vendor", &vendor_name, "serial", &serial_id, NULL); widget = GTK_WIDGET (gtk_builder_get_object (builder, "label-model-value")); gtk_label_set_text (GTK_LABEL (widget), model_name); widget = GTK_WIDGET (gtk_builder_get_object (builder, "label-manufacturer-value")); gtk_label_set_text (GTK_LABEL (widget), vendor_name); widget = GTK_WIDGET (gtk_builder_get_object (builder, "label-serial-number-value")); gtk_label_set_text (GTK_LABEL (widget), serial_id); g_free (model_name); g_free (vendor_name); g_free (serial_id); str = g_string_new (""); output_formats = rb_transfer_target_get_format_descriptions (RB_TRANSFER_TARGET (source)); for (t = output_formats; t != NULL; t = t->next) { if (t != output_formats) { g_string_append (str, "\n"); } g_string_append (str, t->data); } rb_list_deep_free (output_formats); widget = GTK_WIDGET (gtk_builder_get_object (builder, "audio-format-list")); gtk_label_set_text (GTK_LABEL (widget), str->str); g_string_free (str, TRUE); g_object_unref (builder); }