diff --git a/src/bin/clapper-app/clapper-app-preferences-window.c b/src/bin/clapper-app/clapper-app-preferences-window.c index fa51eaba..a5fb2872 100644 --- a/src/bin/clapper-app/clapper-app-preferences-window.c +++ b/src/bin/clapper-app/clapper-app-preferences-window.c @@ -36,6 +36,8 @@ struct _ClapperAppPreferencesWindow AdwComboRow *seek_method_combo_row; AdwComboRow *seek_unit_combo_row; AdwSpinRow *seek_value_spin_row; + + AdwPreferencesGroup *features_group; AdwSwitchRow *server_switch_row; AdwSpinRow *audio_offset_spin_row; @@ -863,6 +865,10 @@ clapper_app_preferences_window_new (GtkApplication *gtk_app) static void clapper_app_preferences_window_init (ClapperAppPreferencesWindow *self) { +#if CLAPPER_HAVE_SERVER + ClapperEnhancerProxy *proxy; +#endif + gtk_widget_init_template (GTK_WIDGET (self)); self->rank_rows = g_ptr_array_new (); @@ -877,10 +883,15 @@ clapper_app_preferences_window_init (ClapperAppPreferencesWindow *self) self->seek_value_spin_row, "value", G_SETTINGS_BIND_DEFAULT); #if CLAPPER_HAVE_SERVER - g_settings_bind (self->settings, "server-enabled", - self->server_switch_row, "active", G_SETTINGS_BIND_DEFAULT); -#else - gtk_widget_set_sensitive (GTK_WIDGET (self->server_switch_row), FALSE); + /* When both are available, prefer enhancer over deprecated feature */ + if ((proxy = clapper_enhancer_proxy_list_get_proxy_by_module ( + clapper_get_global_enhancer_proxies (), "clapper-control-hub"))) { + gst_object_unref (proxy); + } else { + g_settings_bind (self->settings, "server-enabled", + self->server_switch_row, "active", G_SETTINGS_BIND_DEFAULT); + gtk_widget_set_visible (GTK_WIDGET (self->features_group), TRUE); + } #endif g_settings_bind (self->settings, "audio-offset", @@ -964,6 +975,8 @@ clapper_app_preferences_window_class_init (ClapperAppPreferencesWindowClass *kla gtk_widget_class_bind_template_child (widget_class, ClapperAppPreferencesWindow, seek_method_combo_row); gtk_widget_class_bind_template_child (widget_class, ClapperAppPreferencesWindow, seek_unit_combo_row); gtk_widget_class_bind_template_child (widget_class, ClapperAppPreferencesWindow, seek_value_spin_row); + + gtk_widget_class_bind_template_child (widget_class, ClapperAppPreferencesWindow, features_group); gtk_widget_class_bind_template_child (widget_class, ClapperAppPreferencesWindow, server_switch_row); gtk_widget_class_bind_template_child (widget_class, ClapperAppPreferencesWindow, audio_offset_spin_row); diff --git a/src/bin/clapper-app/clapper-app-window.c b/src/bin/clapper-app/clapper-app-window.c index f8fa4350..392a60ae 100644 --- a/src/bin/clapper-app/clapper-app-window.c +++ b/src/bin/clapper-app/clapper-app-window.c @@ -1282,14 +1282,20 @@ clapper_app_window_constructed (GObject *object) #endif } + if ((proxy = clapper_enhancer_proxy_list_get_proxy_by_module (proxies, "clapper-control-hub"))) { + clapper_enhancer_proxy_set_locally (proxy, + "queue-controllable", TRUE, NULL); + gst_object_unref (proxy); + } else { #if CLAPPER_HAVE_SERVER - feature = CLAPPER_FEATURE (clapper_server_new ()); - clapper_server_set_queue_controllable (CLAPPER_SERVER (feature), TRUE); - g_settings_bind (self->settings, "server-enabled", - feature, "enabled", G_SETTINGS_BIND_GET); - clapper_player_add_feature (player, feature); - gst_object_unref (feature); + feature = CLAPPER_FEATURE (clapper_server_new ()); + clapper_server_set_queue_controllable (CLAPPER_SERVER (feature), TRUE); + g_settings_bind (self->settings, "server-enabled", + feature, "enabled", G_SETTINGS_BIND_GET); + clapper_player_add_feature (player, feature); + gst_object_unref (feature); #endif + } #if CLAPPER_HAVE_DISCOVERER if ((proxy = clapper_enhancer_proxy_list_get_proxy_by_module (proxies, "clapper-media-scanner"))) { diff --git a/src/bin/clapper-app/ui/clapper-app-preferences-window.ui b/src/bin/clapper-app/ui/clapper-app-preferences-window.ui index 577c6d7a..420db59c 100644 --- a/src/bin/clapper-app/ui/clapper-app-preferences-window.ui +++ b/src/bin/clapper-app/ui/clapper-app-preferences-window.ui @@ -59,8 +59,9 @@ - + Features + false Server