40
40
#include "rhythmdb.h"
41
41
#include "rb-shell.h"
42
42
#include "rb-display-page-group.h"
43
#include "eel-gconf-extensions.h"
44
43
#include "rb-stock-icons.h"
45
44
#include "rb-debug.h"
46
45
#include "rb-util.h"
47
46
#include "rb-file-helpers.h"
48
47
#include "rb-builder-helpers.h"
49
48
#include "rb-dialog.h"
50
#include "rb-preferences.h"
51
49
#include "rb-playlist-manager.h"
52
50
#include "rb-shell-player.h"
53
51
#include "rb-display-page-model.h"
82
80
static void dacp_remote_removed (DACPShare *share, gchar *service_name, RBDaapPlugin *plugin);
84
82
/* DACPShare signals */
85
static gboolean dacp_lookup_guid (DACPShare *share, gchar *guid);
86
static void dacp_add_guid (DACPShare *share, gchar *guid);
83
static gboolean dacp_lookup_guid (DACPShare *share, gchar *guid, GSettings *settings);
84
static void dacp_add_guid (DACPShare *share, gchar *guid, GSettings *settings);
88
86
static void dacp_player_updated (RBDACPPlayer *player, DACPShare *share);
107
105
PROP_SERVICE_NAME
110
G_DEFINE_TYPE (RBDACPPairingPage, rb_dacp_pairing_page, RB_TYPE_DISPLAY_PAGE)
108
G_DEFINE_DYNAMIC_TYPE (RBDACPPairingPage, rb_dacp_pairing_page, RB_TYPE_DISPLAY_PAGE)
113
111
entry_insert_text_cb (GtkWidget *entry, gchar *text, gint len, gint *position, RBDACPPairingPage *page)
244
247
GtkWidget *passcode_widget;
245
248
GtkWidget *close_pairing_button;
246
249
PangoFontDescription *font;
250
253
g_object_get (page, "plugin", &plugin, NULL);
252
builder_filename = rb_plugin_find_file (RB_PLUGIN (plugin), "daap-prefs.ui");
255
builder_filename = rb_find_plugin_data_file (G_OBJECT (plugin), "daap-prefs.ui");
253
256
g_assert (builder_filename != NULL);
255
258
page->priv->builder = rb_builder_load (builder_filename, NULL);
332
335
RBDACPPairingPage *
333
rb_dacp_pairing_page_new (RBPlugin *plugin,
336
rb_dacp_pairing_page_new (GObject *plugin,
335
338
DACPShare *dacp_share,
336
339
const char *display_name,
342
345
GdkPixbuf *icon_pixbuf;
344
icon_filename = rb_plugin_find_file (plugin, "remote-icon.png");
347
icon_filename = rb_find_plugin_data_file (plugin, "remote-icon.png");
345
348
gtk_icon_size_lookup (GTK_ICON_SIZE_LARGE_TOOLBAR, &icon_size, NULL);
346
349
icon_pixbuf = gdk_pixbuf_new_from_file_at_size (icon_filename, icon_size, icon_size, NULL);
440
443
DMAPContainerDb *container_db;
441
444
RBPlaylistManager *playlist_manager;
446
GSettings *share_settings;
447
GSettings *daap_settings;
445
g_object_get (plugin, "shell", &shell, NULL);
451
g_object_get (plugin, "object", &shell, NULL);
447
453
g_object_get (shell,
454
460
player = DACP_PLAYER (rb_dacp_player_new (shell));
456
name = eel_gconf_get_string (CONF_DAAP_SHARE_NAME);
462
share_settings = g_settings_new ("org.gnome.rhythmbox.sharing");
463
name = g_settings_get_string (share_settings, "share-name");
457
464
if (name == NULL || *name == '\0') {
459
466
name = rb_daap_sharing_default_share_name ();
468
g_object_unref (share_settings);
462
470
share = dacp_share_new (name, player, db, container_db);
472
daap_settings = g_settings_new ("org.gnome.rhythmbox.plugins.daap");
473
settings = g_settings_get_child (daap_settings, "dacp");
474
g_object_unref (daap_settings);
464
476
g_signal_connect_object (share,
466
478
G_CALLBACK (dacp_add_guid),
467
RB_DAAP_PLUGIN (plugin),
469
481
g_signal_connect_object (share,
471
483
G_CALLBACK (dacp_lookup_guid),
472
RB_DAAP_PLUGIN (plugin),
475
487
g_signal_connect_object (share,
509
522
dacp_add_guid (DACPShare *share,
514
known_guids = eel_gconf_get_string_list (CONF_KNOWN_REMOTES);
515
if (g_slist_find_custom (known_guids, guid, (GCompareFunc) g_strcmp0)) {
516
g_slist_free (known_guids);
531
v = g_settings_get_value (settings, "known-remotes");
533
vb = g_variant_builder_new (G_VARIANT_TYPE ("as"));
534
g_variant_iter_init (&iter, v);
535
while (g_variant_iter_loop (&iter, "s", &g)) {
536
g_variant_builder_add (vb, "s", g);
519
known_guids = g_slist_insert_sorted (known_guids, guid, (GCompareFunc) g_strcmp0);
520
eel_gconf_set_string_list (CONF_KNOWN_REMOTES, known_guids);
522
g_slist_free (known_guids);
539
g_variant_builder_add (vb, "s", guid);
542
g_settings_set_value (settings, "known-remotes", g_variant_builder_end (vb));
543
g_variant_builder_unref (vb);
526
547
dacp_lookup_guid (DACPShare *share,
532
known_guids = eel_gconf_get_string_list (CONF_KNOWN_REMOTES);
533
found = g_slist_find_custom (known_guids, guid, (GCompareFunc) g_strcmp0) != NULL;
535
g_slist_free (known_guids);
554
guids = g_settings_get_strv (settings, "known-remotes");
555
found = rb_str_in_strv (guid, (const char **)guids);
595
616
rb_debug ("Remote %s (%s) found", service_name, display_name);
597
g_object_get (plugin, "shell", &shell, NULL);
618
g_object_get (plugin, "object", &shell, NULL);
599
620
GDK_THREADS_ENTER ();
611
632
rb_shell_append_display_page (shell, RB_DISPLAY_PAGE (page_group), NULL);
614
page = rb_dacp_pairing_page_new (RB_PLUGIN (plugin), shell, share, display_name, service_name);
635
page = rb_dacp_pairing_page_new (G_OBJECT (plugin), shell, share, display_name, service_name);
616
637
rb_shell_append_display_page (shell, RB_DISPLAY_PAGE (page), RB_DISPLAY_PAGE (page_group));
632
655
rb_debug ("Remote '%s' went away", service_name);
634
g_object_get (plugin, "shell", &shell, NULL);
657
g_object_get (plugin, "object", &shell, NULL);
636
659
GDK_THREADS_ENTER ();