diff --git a/data/icons/region-symbolic.svg b/data/icons/region-symbolic.svg
new file mode 100644
index 0000000000000000000000000000000000000000..11ac471a53b3f74c80811533635e35b87c0f0ccb
--- /dev/null
+++ b/data/icons/region-symbolic.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/src/livi-controls.c b/src/livi-controls.c
index 98aa994afa0427fe088365dcf8df7c2aaf4c6e0a..470593e7de36c6b845c5b7b58d481eaccae9c194 100644
--- a/src/livi-controls.c
+++ b/src/livi-controls.c
@@ -35,6 +35,7 @@ struct _LiviControls {
/* wide layout */
GtkAdjustment *adj_duration;
GtkMenuButton *btn_menu;
+ GtkMenuButton *btn_lang_menu;
GtkButton *btn_play;
GtkImage *img_play;
GtkButton *btn_mute;
@@ -42,11 +43,13 @@ struct _LiviControls {
GtkLabel *lbl_time;
/* narrow layout */
GtkMenuButton *nrw_btn_menu;
+ GtkMenuButton *nrw_btn_lang_menu;
guint64 duration;
guint64 position;
GtkPopover *playback_menu;
+ GtkPopoverMenu *lang_menu;
gboolean narrow;
};
@@ -66,11 +69,16 @@ set_narrow (LiviControls *self, gboolean narrow)
if (narrow) {
gtk_menu_button_set_popover (self->btn_menu, NULL);
gtk_menu_button_set_popover (self->nrw_btn_menu, GTK_WIDGET (self->playback_menu));
+
+ gtk_menu_button_set_popover (self->btn_lang_menu, NULL);
+ gtk_menu_button_set_popover (self->nrw_btn_lang_menu, GTK_WIDGET (self->lang_menu));
} else {
gtk_menu_button_set_popover (self->nrw_btn_menu, NULL);
gtk_menu_button_set_popover (self->btn_menu, GTK_WIDGET (self->playback_menu));
- }
+ gtk_menu_button_set_popover (self->nrw_btn_lang_menu, NULL);
+ gtk_menu_button_set_popover (self->btn_lang_menu, GTK_WIDGET (self->lang_menu));
+ }
g_object_notify_by_pspec (G_OBJECT (self), props[PROP_NARROW]);
}
@@ -167,11 +175,14 @@ livi_controls_class_init (LiviControlsClass *klass)
gtk_widget_class_bind_template_child (widget_class, LiviControls, adj_duration);
gtk_widget_class_bind_template_child (widget_class, LiviControls, btn_menu);
gtk_widget_class_bind_template_child (widget_class, LiviControls, btn_mute);
+ gtk_widget_class_bind_template_child (widget_class, LiviControls, btn_lang_menu);
gtk_widget_class_bind_template_child (widget_class, LiviControls, btn_play);
gtk_widget_class_bind_template_child (widget_class, LiviControls, img_mute);
gtk_widget_class_bind_template_child (widget_class, LiviControls, img_play);
+ gtk_widget_class_bind_template_child (widget_class, LiviControls, lang_menu);
gtk_widget_class_bind_template_child (widget_class, LiviControls, lbl_time);
gtk_widget_class_bind_template_child (widget_class, LiviControls, nrw_btn_menu);
+ gtk_widget_class_bind_template_child (widget_class, LiviControls, nrw_btn_lang_menu);
gtk_widget_class_bind_template_child (widget_class, LiviControls, playback_menu);
gtk_widget_class_bind_template_child (widget_class, LiviControls, stack);
gtk_widget_class_bind_template_callback (widget_class, on_slider_value_changed);
@@ -238,3 +249,14 @@ livi_controls_set_play_icon (LiviControls *self, const char *icon_name)
g_object_set (self->img_play, "icon-name", icon_name, NULL);
}
+
+
+void
+livi_controls_set_langs (LiviControls *self, GMenuModel *lang)
+{
+ g_assert (LIVI_IS_CONTROLS (self));
+ g_assert (lang == NULL || G_IS_MENU_MODEL (lang));
+
+ gtk_popover_menu_set_menu_model (self->lang_menu, lang);
+ gtk_widget_set_visible (GTK_WIDGET (self->btn_lang_menu), !!lang);
+}
diff --git a/src/livi-controls.h b/src/livi-controls.h
index a985a310b7b2b42a136c52801d55cd7713df53dc..0e56a86110fb88979d9c46b83801447bca599c73 100644
--- a/src/livi-controls.h
+++ b/src/livi-controls.h
@@ -20,5 +20,6 @@ void livi_controls_set_position (LiviControls *self, guint64 position_n
void livi_controls_show_mute_button (LiviControls *self, gboolean show);
void livi_controls_set_mute_icon (LiviControls *self, const char *icon_name);
void livi_controls_set_play_icon (LiviControls *self, const char *icon_name);
+void livi_controls_set_langs (LiviControls *self, GMenuModel *lang);
G_END_DECLS
diff --git a/src/livi-controls.ui b/src/livi-controls.ui
index a62e8e78ee0696c55850f17843fe49eaff7efce2..c8815bd9399c6aa58bcc8cf02b4aa1d7b298bba8 100644
--- a/src/livi-controls.ui
+++ b/src/livi-controls.ui
@@ -115,18 +115,38 @@
-
@@ -149,129 +169,148 @@
1000
-
@@ -290,7 +329,12 @@
10
+
+