static void rb_static_playlist_source_init (RBStaticPlaylistSource *source) { if (playlist_pixbuf == NULL) { gint size; gtk_icon_size_lookup (RB_SOURCE_ICON_SIZE, &size, NULL); playlist_pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (), RB_STOCK_PLAYLIST, size, 0, NULL); if (playlist_pixbuf) { g_object_add_weak_pointer (playlist_pixbuf, (gpointer *) &playlist_pixbuf); rb_source_set_pixbuf (RB_SOURCE (source), playlist_pixbuf); /* drop the initial reference to the icon */ g_object_unref (playlist_pixbuf); } } else { rb_source_set_pixbuf (RB_SOURCE (source), playlist_pixbuf); } }
static void rb_source_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { RBSourcePrivate *priv = RB_SOURCE_GET_PRIVATE (object); RBSource *source = RB_SOURCE (object); switch (prop_id) { case PROP_NAME: g_free (priv->name); priv->name = g_strdup (g_value_get_string (value)); break; case PROP_ICON: rb_source_set_pixbuf (source, g_value_get_object (value)); break; case PROP_SHELL: priv->shell = g_value_get_object (value); break; case PROP_VISIBLE: priv->visible = g_value_get_boolean (value); rb_debug ("Setting %s visibility to %u", priv->name, priv->visible); break; case PROP_HIDDEN_WHEN_EMPTY: rb_source_set_hidden_when_empty (source, g_value_get_boolean (value)); break; case PROP_QUERY_MODEL: rb_source_set_query_model_internal (source, g_value_get_object (value)); break; case PROP_SOURCE_GROUP: priv->source_group = g_value_get_boxed (value); break; case PROP_ENTRY_TYPE: priv->entry_type = g_value_get_boxed (value); break; case PROP_PLUGIN: priv->plugin = g_value_get_object (value); break; case PROP_SEARCH_TYPE: priv->search_type = g_value_get_enum (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static void rb_import_errors_source_init (RBImportErrorsSource *source) { gint size; GdkPixbuf *pixbuf; source->priv = G_TYPE_INSTANCE_GET_PRIVATE (source, RB_TYPE_IMPORT_ERRORS_SOURCE, RBImportErrorsSourcePrivate); gtk_icon_size_lookup (RB_SOURCE_ICON_SIZE, &size, NULL); pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (), "dialog-error", size, 0, NULL); rb_source_set_pixbuf (RB_SOURCE (source), pixbuf); if (pixbuf != NULL) { g_object_unref (pixbuf); } }
static void rb_missing_files_source_init (RBMissingFilesSource *source) { gint size; GdkPixbuf *pixbuf; source->priv = G_TYPE_INSTANCE_GET_PRIVATE (source, RB_TYPE_MISSING_FILES_SOURCE, RBMissingFilesSourcePrivate); gtk_icon_size_lookup (RB_SOURCE_ICON_SIZE, &size, NULL); pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (), "dialog-warning", size, 0, NULL); rb_source_set_pixbuf (RB_SOURCE (source), pixbuf); if (pixbuf != NULL) { g_object_unref (pixbuf); } }
static void impl_constructed (GObject *object) { RBPodcastMainSource *source; RBPodcastManager *podcast_mgr; GdkPixbuf *pixbuf; gint size; RB_CHAIN_GOBJECT_METHOD (rb_podcast_main_source_parent_class, constructed, object); source = RB_PODCAST_MAIN_SOURCE (object); g_object_get (source, "podcast-manager", &podcast_mgr, NULL); g_signal_connect_object (podcast_mgr, "start_download", G_CALLBACK (start_download_cb), source, 0); g_signal_connect_object (podcast_mgr, "finish_download", G_CALLBACK (finish_download_cb), source, 0); g_signal_connect_object (podcast_mgr, "feed_updates_available", G_CALLBACK (feed_updates_available_cb), source, 0); g_signal_connect_object (podcast_mgr, "process_error", G_CALLBACK (feed_error_cb), source, 0); gtk_icon_size_lookup (RB_SOURCE_ICON_SIZE, &size, NULL); pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (), RB_STOCK_PODCAST, size, 0, NULL); if (pixbuf != NULL) { rb_source_set_pixbuf (RB_SOURCE (source), pixbuf); g_object_unref (pixbuf); } }
static void rb_mtp_source_constructed (GObject *object) { RBMtpSource *source; RBMtpSourcePrivate *priv; RBEntryView *tracks; RBShell *shell; RBShellPlayer *shell_player; GObject *player_backend; GtkIconTheme *theme; GdkPixbuf *pixbuf; #if defined(HAVE_GUDEV) GMount *mount; #endif gint size; RB_CHAIN_GOBJECT_METHOD (rb_mtp_source_parent_class, constructed, object); source = RB_MTP_SOURCE (object); priv = MTP_SOURCE_GET_PRIVATE (source); /* try to open the device. if gvfs has mounted it, unmount it first */ #if defined(HAVE_GUDEV) mount = find_mount_for_device (priv->udev_device); if (mount != NULL) { rb_debug ("device is already mounted, waiting until activated"); g_mount_unmount_with_operation (mount, G_MOUNT_UNMOUNT_NONE, NULL, NULL, unmount_done_cb, g_object_ref (source)); /* mount gets unreffed in callback */ } else #endif open_device (source); tracks = rb_source_get_entry_view (RB_SOURCE (source)); rb_entry_view_append_column (tracks, RB_ENTRY_VIEW_COL_RATING, FALSE); rb_entry_view_append_column (tracks, RB_ENTRY_VIEW_COL_LAST_PLAYED, FALSE); /* the source element needs our cooperation */ g_object_get (source, "shell", &shell, NULL); shell_player = RB_SHELL_PLAYER (rb_shell_get_player (shell)); g_object_get (shell_player, "player", &player_backend, NULL); g_signal_connect_object (player_backend, "prepare-source", G_CALLBACK (prepare_player_source_cb), source, 0); g_object_unref (player_backend); g_object_unref (shell); g_signal_connect_object (rb_encoder_factory_get (), "prepare-source", G_CALLBACK (prepare_encoder_source_cb), source, 0); g_signal_connect_object (rb_encoder_factory_get (), "prepare-sink", G_CALLBACK (prepare_encoder_sink_cb), source, 0); /* icon */ theme = gtk_icon_theme_get_default (); gtk_icon_size_lookup (GTK_ICON_SIZE_LARGE_TOOLBAR, &size, NULL); pixbuf = gtk_icon_theme_load_icon (theme, "multimedia-player", size, 0, NULL); rb_source_set_pixbuf (RB_SOURCE (source), pixbuf); g_object_unref (pixbuf); if (priv->album_art_supported) { RhythmDB *db; db = get_db_for_source (source); g_signal_connect_object (db, "entry-extra-metadata-notify::rb:coverArt", G_CALLBACK (artwork_notify_cb), source, 0); g_object_unref (db); } }
static GObject * rb_mtp_source_constructor (GType type, guint n_construct_properties, GObjectConstructParam *construct_properties) { RBMtpSource *source; RBMtpSourcePrivate *priv; RBEntryView *tracks; GtkIconTheme *theme; GdkPixbuf *pixbuf; gint size; guint16 *types = NULL; guint16 num_types= 0; source = RB_MTP_SOURCE (G_OBJECT_CLASS (rb_mtp_source_parent_class)-> constructor (type, n_construct_properties, construct_properties)); tracks = rb_source_get_entry_view (RB_SOURCE (source)); rb_entry_view_append_column (tracks, RB_ENTRY_VIEW_COL_RATING, FALSE); rb_entry_view_append_column (tracks, RB_ENTRY_VIEW_COL_LAST_PLAYED, FALSE); /* icon */ theme = gtk_icon_theme_get_default (); gtk_icon_size_lookup (GTK_ICON_SIZE_LARGE_TOOLBAR, &size, NULL); pixbuf = gtk_icon_theme_load_icon (theme, "multimedia-player", size, 0, NULL); rb_source_set_pixbuf (RB_SOURCE (source), pixbuf); g_object_unref (pixbuf); g_signal_connect (G_OBJECT (source), "notify::name", (GCallback)rb_mtp_source_name_changed_cb, NULL); /* figure out supported file types */ priv = MTP_SOURCE_GET_PRIVATE (source); if (LIBMTP_Get_Supported_Filetypes(priv->device, &types, &num_types) == 0) { int i; gboolean has_mp3 = FALSE; for (i = 0; i < num_types; i++) { const char *mediatype; if (i <= LIBMTP_FILETYPE_UNKNOWN) { priv->supported_types[types[i]] = 1; } /* this has to work with the remapping done in * rb-removable-media-source.c:impl_paste. */ switch (types[i]) { case LIBMTP_FILETYPE_WAV: mediatype = "audio/x-wav"; break; case LIBMTP_FILETYPE_MP3: /* special handling for mp3: always put it at the front of the list * if it's supported. */ has_mp3 = TRUE; mediatype = NULL; break; case LIBMTP_FILETYPE_WMA: mediatype = "audio/x-ms-wma"; break; case LIBMTP_FILETYPE_OGG: mediatype = "application/ogg"; break; case LIBMTP_FILETYPE_MP4: case LIBMTP_FILETYPE_M4A: case LIBMTP_FILETYPE_AAC: mediatype = "audio/aac"; break; case LIBMTP_FILETYPE_WMV: mediatype = "audio/x-ms-wmv"; break; case LIBMTP_FILETYPE_ASF: mediatype = "video/x-ms-asf"; break; case LIBMTP_FILETYPE_FLAC: mediatype = "audio/flac"; break; case LIBMTP_FILETYPE_JPEG: rb_debug ("JPEG (album art) supported"); mediatype = NULL; priv->album_art_supported = TRUE; break; default: rb_debug ("unknown libmtp filetype %s supported", LIBMTP_Get_Filetype_Description (types[i])); mediatype = NULL; break; } if (mediatype != NULL) { rb_debug ("media type %s supported", mediatype); priv->mediatypes = g_list_prepend (priv->mediatypes, g_strdup (mediatype)); } } if (has_mp3) { rb_debug ("audio/mpeg supported"); priv->mediatypes = g_list_prepend (priv->mediatypes, g_strdup ("audio/mpeg")); } } else { report_libmtp_errors (priv->device, FALSE); } if (priv->album_art_supported) { RhythmDB *db; db = get_db_for_source (source); g_signal_connect_object (db, "entry-extra-metadata-notify::rb:coverArt", G_CALLBACK (artwork_notify_cb), source, 0); g_object_unref (db); } rb_mtp_source_load_tracks (source); return G_OBJECT (source); }