SHORT_POWER_KEY_N
};
+enum {
+ LONG_POWER_KEY_DISABLED,
+ LONG_POWER_KEY_MENU,
+ LONG_POWER_KEY_OFF,
+ LONG_POWER_KEY_N
+};
+
+
typedef struct _picker_t
{
guint index;
{SHORT_POWER_KEY_DISABLED, "disabled", "Disabled"},
{SHORT_POWER_KEY_MENU, "menu", "Show menu"},
{SHORT_POWER_KEY_OFF, "poweroff", "Power off"}
+};
+
+static picker_t lpk [] = {
+ {SHORT_POWER_KEY_DISABLED, "disabled", "Disabled"},
+ {SHORT_POWER_KEY_MENU, "menu", "Show menu"},
+ {SHORT_POWER_KEY_OFF, "poweroff", "Power off"}
};
+
typedef struct _MaemoTweaksMceSection MaemoTweaksMceSection;
typedef struct _MaemoTweaksMceSectionClass
MaemoTweaksMceSectionClass;
GKeyFile *ini;
GtkWidget *short_power_key;
+ GtkWidget *long_power_key;
guint value_changed : 1;
};
HILDON_BUTTON_ARRANGEMENT_VERTICAL);
hildon_button_set_title (HILDON_BUTTON (button),
- "Power button short press");
+ "Power key: short press");
+ gtk_button_set_alignment (GTK_BUTTON (button), 0.0f, 0.5f);
+ hildon_picker_button_set_selector (HILDON_PICKER_BUTTON (button),
+ HILDON_TOUCH_SELECTOR (selector));
+
+ g_signal_connect (G_OBJECT (button), "value-changed",
+ G_CALLBACK (_value_changed), section);
+
+ gtk_widget_show (button);
+ return button;
+}
+
+GtkWidget * _build_long_power_key (MaemoTweaksMceSection *section)
+{
+ gint i;
+ GtkWidget *button, *selector;
+
+ selector = hildon_touch_selector_new_text ();
+ for (i = 0; i < LONG_POWER_KEY_N; i++)
+ {
+ hildon_touch_selector_append_text (HILDON_TOUCH_SELECTOR (selector),
+ spk[i].label);
+ }
+
+ button = hildon_picker_button_new (HILDON_SIZE_AUTO,
+ HILDON_BUTTON_ARRANGEMENT_VERTICAL);
+
+ hildon_button_set_title (HILDON_BUTTON (button),
+ "Power key: long press");
gtk_button_set_alignment (GTK_BUTTON (button), 0.0f, 0.5f);
hildon_picker_button_set_selector (HILDON_PICKER_BUTTON (button),
HILDON_TOUCH_SELECTOR (selector));
{
MaemoTweaksSection *iface;
gchar *short_power_key_value;
+ gchar *long_power_key_value;
gint i;
section->short_power_key = _build_short_power_key (section);
+ section->long_power_key = _build_long_power_key (section);
section->ini = g_key_file_new ();
short_power_key_value = g_key_file_get_string (section->ini, "PowerKey",
"PowerKeyShortAction",
NULL);
+ long_power_key_value = g_key_file_get_string (section->ini, "PowerKey",
+ "PowerKeyLongAction",
+ NULL);
for (i = 0; i < SHORT_POWER_KEY_N; i++)
{
}
}
+ for (i = 0; i < LONG_POWER_KEY_N; i++)
+ {
+ if (g_strcmp0 (long_power_key_value, lpk[i].value) == 0)
+ {
+ hildon_picker_button_set_active
+ (HILDON_PICKER_BUTTON (section->long_power_key), i);
+ }
+ }
+
section->value_changed = FALSE;
iface = MAEMO_TWEAKS_SECTION (section);
iface->widget = gtk_vbox_new (FALSE, 0);
gtk_box_pack_start (GTK_BOX (iface->widget), section->short_power_key,
TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (iface->widget), section->long_power_key,
+ TRUE, TRUE, 0);
+
}
static void
(obj);
}
-
static void _save (MaemoTweaksSection *section, gboolean *requires_restart)
{
- gchar *argv[3];
- gint active;
+ gchar *argv[4];
+ gint short_active, long_active;
if (!MAEMO_TWEAKS_MCE_SECTION (section)->value_changed)
return;
*requires_restart = TRUE;
- active = hildon_picker_button_get_active
+ short_active = hildon_picker_button_get_active
(HILDON_PICKER_BUTTON (MAEMO_TWEAKS_MCE_SECTION
(section)->short_power_key));
+ long_active = hildon_picker_button_get_active
+ (HILDON_PICKER_BUTTON (MAEMO_TWEAKS_MCE_SECTION
+ (section)->long_power_key));
+
argv[0] = g_strdup ("/usr/bin/maemo-tweaks-mce-save");
- argv[1] = g_strdup_printf ("%s", spk[active].value);
- argv[2] = NULL;
+ argv[1] = g_strdup_printf ("%s", spk[short_active].value);
+ argv[2] = g_strdup_printf ("%s", lpk[long_active].value);
+ argv[3] = NULL;
g_spawn_sync ("/home/user", argv, NULL,
G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL,
g_free (argv[0]);
g_free (argv[1]);
+ g_free (argv[2]);
}