[snappy] ui: add fullscreen button
- From: Luis de Bethencourt <luisbg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [snappy] ui: add fullscreen button
- Date: Thu, 18 Apr 2013 17:22:31 +0000 (UTC)
commit d9d82c673a77ed743eb7bc28d7df15084d423a93
Author: Luis de Bethencourt <luis debethencourt com>
Date: Thu Apr 18 11:46:02 2013 -0400
ui: add fullscreen button
data/Makefile.am | 1 +
data/fullscreen.svg | 27 ++++++++++++++++++++++++++
docs/clutter_controls_layout | 1 +
src/user_interface.c | 45 ++++++++++++++++++++++++++++++++++----------
src/user_interface.h | 2 ++
5 files changed, 66 insertions(+), 10 deletions(-)
---
diff --git a/data/Makefile.am b/data/Makefile.am
index 2004299..1e54e9f 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -4,6 +4,7 @@ icons_DATA = \
audio-stream-toggle.png \
audio-volume-high.svg \
audio-volume-low.svg \
+ fullscreen.svg \
media-actions-pause.svg \
media-actions-start.svg \
subtitles-active.svg \
diff --git a/data/fullscreen.svg b/data/fullscreen.svg
new file mode 100644
index 0000000..5c0399a
--- /dev/null
+++ b/data/fullscreen.svg
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="20px" height="20px" viewBox="0 0 20 20" enable-background="new 0 0 20 20"
xml:space="preserve">
+<g id="Layer_2">
+</g>
+<path opacity="0.75" fill="#FFFFFF" enable-background="new "
d="M17.605,1H2.395C0.991,1,0,1.956,0,3.4v13.203
+
c0,1.331,0.916,2.398,2.394,2.398h15.212c1.441,0,2.395-1.18,2.395-2.398V3.4C20.002,1.994,18.973,1,17.605,1z
M7.085,15.17
+ l1.599,1.604c0.044,0.043,0.056,0.107,0.032,0.165c-0.023,0.057-0.078,0.095-0.141,0.095H2.989v-5.256
+
c0-0.062,0.037-0.115,0.094-0.14c0.057-0.023,0.121-0.011,0.164,0.032l1.399,1.401c0.078,0.077,0.205,0.077,0.281,0l3.536-3.573
+ l1.976,2.012L7.085,14.89C7.007,14.967,7.007,15.093,7.085,15.17z
M16.963,8.691c0,0.062-0.037,0.118-0.094,0.142
+
s-0.123,0.011-0.166-0.033l-1.561-1.695c-0.078-0.077-0.205-0.077-0.281,0l-3.443,3.393L9.481,8.486l3.365-3.31
+
c0.078-0.077,0.078-0.202,0-0.281l-1.611-1.604c-0.043-0.043-0.057-0.107-0.031-0.165c0.023-0.057,0.08-0.094,0.141-0.094h5.621
+ v5.658H16.963z"/>
+<path opacity="0.65" fill="#FFFFFF" enable-background="new "
d="M17.602,1.002H2.4C0.993,1.002,0,1.954,0,3.398v1
+
c0-1.444,0.993-2.396,2.4-2.396h15.2c1.371,0,2.4,0.99,2.4,2.396v-1C20,1.992,18.971,1.002,17.602,1.002z"/>
+<path opacity="0.25" enable-background="new " d="M17.586,19H2.416c-1.479,0-2.396-1.068-2.396-2.399v1
+
C0.02,18.933,0.936,20,2.416,20h15.17c1.441,0,2.396-1.181,2.396-2.399v-1C19.982,17.819,19.027,19,17.586,19z"/>
+<path opacity="0.65" fill="#FFFFFF" enable-background="new "
d="M2.975,18.034h5.598c0.062,0,0.117-0.037,0.141-0.095
+ c0.024-0.057,0.012-0.121-0.033-0.166l-0.739-0.739H2.975V18.034z"/>
+<path opacity="0.65" fill="#FFFFFF" enable-background="new "
d="M16.715,8.8L15.15,7.105c-0.078-0.077-0.205-0.077-0.281,0
+
l-3.449,3.393L9.975,9.001L9.479,9.487l1.941,2.011l3.449-3.393c0.076-0.077,0.203-0.077,0.281,0L16.715,9.8
+
c0.043,0.044,0.109,0.057,0.166,0.033s0.094-0.079,0.094-0.141v-1c0,0.062-0.037,0.117-0.094,0.141S16.758,8.844,16.715,8.8z"/>
+<path opacity="0.65" fill="#FFFFFF" enable-background="new "
d="M7.078,15.171l0.358,0.358l3.001-3.019l-0.494-0.503
+ l-2.865,2.883C7,14.968,7,15.094,7.078,15.171z"/>
+</svg>
diff --git a/docs/clutter_controls_layout b/docs/clutter_controls_layout
index f592cd2..ffe2183 100644
--- a/docs/clutter_controls_layout
+++ b/docs/clutter_controls_layout
@@ -32,6 +32,7 @@ ui->control_box (fixed alignment bin)
ui->audio_stream_toggle
]
ui->subtitle_toggle
+ ui->fullscreen_button
]
]
]
diff --git a/src/user_interface.c b/src/user_interface.c
index 0576f21..3df409b 100644
--- a/src/user_interface.c
+++ b/src/user_interface.c
@@ -237,7 +237,7 @@ event_cb (ClutterStage * stage, ClutterEvent * event, UserInterface * ui)
case CLUTTER_F:
case CLUTTER_F11:
{
- // Fullscreen button
+ // Fullscreen keys
toggle_fullscreen (ui);
handled = TRUE;
@@ -506,6 +506,10 @@ event_cb (ClutterStage * stage, ClutterEvent * event, UserInterface * ui)
show_controls (ui, FALSE);
}
+ } else if (actor == ui->fullscreen_button) {
+ // Fullscreen button
+ toggle_fullscreen (ui);
+
} else if (actor == ui->audio_stream_toggle) {
cycle_streams (ui->engine, STREAM_AUDIO);
@@ -566,7 +570,7 @@ static void
load_controls (UserInterface * ui)
{
// Check icon files exist
- gchar *icon_files[8];
+ gchar *icon_files[9];
gchar *duration_str = NULL;
gint c;
gfloat pos;
@@ -588,6 +592,7 @@ load_controls (UserInterface * ui)
"audio-volume-low.svg", NULL);
ui->volume_high_png = g_build_filename (ui->data_dir,
"audio-volume-high.svg", NULL);
+ ui->fullscreen_svg = g_build_filename (ui->data_dir, "fullscreen.svg", NULL);
ui->subtitle_active_png = g_build_filename (ui->data_dir,
"subtitles-active.svg", NULL);
ui->subtitle_inactive_png = g_build_filename (ui->data_dir,
@@ -601,12 +606,13 @@ load_controls (UserInterface * ui)
icon_files[1] = ui->pause_png;
icon_files[2] = ui->volume_low_png;
icon_files[3] = ui->volume_high_png;
- icon_files[4] = ui->subtitle_active_png;
- icon_files[5] = ui->subtitle_inactive_png;
- icon_files[6] = ui->video_stream_toggle_png;
- icon_files[7] = ui->audio_stream_toggle_png;
+ icon_files[4] = ui->fullscreen_svg;
+ icon_files[5] = ui->subtitle_active_png;
+ icon_files[6] = ui->subtitle_inactive_png;
+ icon_files[7] = ui->video_stream_toggle_png;
+ icon_files[8] = ui->audio_stream_toggle_png;
- for (c = 0; c < 8; c++) {
+ for (c = 0; c < 9; c++) {
if (!g_file_test (icon_files[c], G_FILE_TEST_EXISTS)) {
g_print ("Icon file doesn't exist, are you sure you have "
" installed snappy correctly?\nThis file needed is: %s\n",
@@ -862,6 +868,24 @@ load_controls (UserInterface * ui)
CLUTTER_BOX_ALIGNMENT_CENTER, /* x-align */
CLUTTER_BOX_ALIGNMENT_START); /* y-align */
+ // Controls fullscreen
+ ui->fullscreen_button = gtk_clutter_texture_new ();
+ gtk_clutter_texture_set_from_pixbuf (GTK_CLUTTER_TEXTURE
+ (ui->fullscreen_button),
+ gdk_pixbuf_new_from_file (ui->fullscreen_svg, NULL), &error);
+ if (!ui->fullscreen_button && error)
+ g_debug ("Clutter error: %s", error->message);
+ if (error) {
+ g_error_free (error);
+ error = NULL;
+ }
+ clutter_box_layout_pack (CLUTTER_BOX_LAYOUT (ui->info_box_layout), ui->fullscreen_button, FALSE, /*
expand */
+ FALSE, /* x-fill */
+ FALSE, /* y-fill */
+ CLUTTER_BOX_ALIGNMENT_CENTER, /* x-align */
+ CLUTTER_BOX_ALIGNMENT_START); /* y-align */
+
+ // Add Info Box to Main Box Layout
clutter_box_layout_pack (CLUTTER_BOX_LAYOUT (ui->main_box_layout), ui->info_box, FALSE, /* expand */
FALSE, /* x-fill */
FALSE, /* y-fill */
@@ -1149,9 +1173,9 @@ update_controls_size (UserInterface * ui)
icon_size = ctl_height * PLAY_TOGGLE_RATIO;
if (ui->subtitles_available) {
- control_box_width = ctl_width + (icon_size * 0.72f);
+ control_box_width = ctl_width + (icon_size * 2.0f);
} else {
- control_box_width = ctl_width;
+ control_box_width = ctl_width + (icon_size);
}
control_box_height = ctl_height * 0.85;
@@ -1196,7 +1220,8 @@ update_controls_size (UserInterface * ui)
icon_size = ctl_height * VOLUME_ICON_RATIO;
clutter_actor_set_size (ui->volume_low, icon_size, icon_size);
- clutter_actor_set_size (ui->volume_high, icon_size * 1.2f, icon_size); /* originally 24x24 */
+ clutter_actor_set_size (ui->volume_high, icon_size * 1.2f, icon_size);
+ clutter_actor_set_size (ui->fullscreen_button, icon_size, icon_size);
clutter_actor_set_size (ui->subtitle_toggle, icon_size * 1.4f, icon_size);
clutter_box_layout_set_spacing (CLUTTER_BOX_LAYOUT (ui->middle_box_layout),
diff --git a/src/user_interface.h b/src/user_interface.h
index 509ea34..71b900a 100644
--- a/src/user_interface.h
+++ b/src/user_interface.h
@@ -88,6 +88,7 @@ struct _UserInterface
gchar *play_png, *pause_png;
gchar *segment_png;
gchar *volume_low_png, *volume_high_png;
+ gchar *fullscreen_svg;
gchar *subtitle_active_png, *subtitle_inactive_png;
gchar *video_stream_toggle_png, *audio_stream_toggle_png;
gchar *data_dir;
@@ -108,6 +109,7 @@ struct _UserInterface
ClutterActor *control_pos;
ClutterActor *volume_box;
ClutterActor *volume_low, *volume_high;
+ ClutterActor *fullscreen_button;
ClutterActor *subtitle_toggle;
ClutterActor *video_stream_toggle, *audio_stream_toggle;
ClutterActor *vol_int, *vol_int_bg, *volume_point;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]