const gchar *path = g_object_get_data (G_OBJECT (button), "path");
gchar *basename;
- entries = gconf_client_all_entries (plugin->priv->gconf, path, NULL);
+ if (strcmp (path, "silent") == 0)
+ {
+ profile_set_profile ("silent");
+ }
+ else
+ {
+ entries = gconf_client_all_entries (plugin->priv->gconf, path, NULL);
- g_slist_foreach (entries, (GFunc) _process_entry, plugin);
- g_slist_free (entries);
+ g_slist_foreach (entries, (GFunc) _process_entry, plugin);
+ g_slist_free (entries);
- profile_set_profile ("general");
+ profile_set_profile ("general");
- basename = g_path_get_basename (path);
- hildon_button_set_value (HILDON_BUTTON (plugin->priv->button), basename);
- gconf_client_set_string (plugin->priv->gconf,
- GCONF_PATH "/current-preset", basename, NULL);
- g_free (basename);
+ basename = g_path_get_basename (path);
+ hildon_button_set_value (HILDON_BUTTON (plugin->priv->button), basename);
+ gconf_client_set_string (plugin->priv->gconf,
+ GCONF_PATH "/current-preset", basename, NULL);
+ g_free (basename);
+ }
gtk_dialog_response (GTK_DIALOG (plugin->priv->dialog), GTK_RESPONSE_OK);
hildon_banner_show_information (NULL, NULL,
presets = gconf_client_all_dirs (plugin->priv->gconf, GCONF_PATH, NULL);
g_object_set (G_OBJECT (panarea), "height-request",
- MIN (350, g_slist_length (presets) * 70), NULL);
+ MIN (350, (g_slist_length (presets) + 1) * 70), NULL);
+ /* For the hardcoded Silent: ^ */
g_slist_foreach (presets, (GFunc) _add_preset, plugin);
+ /* Add hard coded Silent profile. */
+ {
+ GtkWidget *button;
+
+ button = hildon_button_new_with_text
+ (HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_VERTICAL,
+ dgettext("osso-profiles", "profi_bd_silent"), NULL);
+ gtk_button_set_alignment (GTK_BUTTON (button), 0.0f, 0.5f);
+ gtk_box_pack_start (GTK_BOX (plugin->priv->box), button, FALSE, FALSE, 0);
+ g_object_set_data_full (G_OBJECT (button), "path", "silent", NULL);
+ g_signal_connect (button, "clicked", G_CALLBACK (_preset_clicked),
+ plugin);
+ }
+
gtk_widget_show_all (GTK_DIALOG (plugin->priv->dialog)->vbox);
ret = gtk_dialog_run (GTK_DIALOG (plugin->priv->dialog));
gtk_widget_destroy (plugin->priv->dialog);
}
static void
+_reshow_profile_button_real (GtkWidget *widget,
+ TweakrProfileStatusPlugin *plugin)
+{
+ if (g_strcmp0 (G_OBJECT_CLASS_NAME (G_OBJECT_GET_CLASS (widget)),
+ "ProfilesStatusMenuItem") == 0)
+ {
+ gtk_widget_show (widget);
+ }
+}
+
+static void
_hide_profile_button_real (GtkWidget *widget,
TweakrProfileStatusPlugin *plugin)
{
}
}
-static void
-_hide_profile_button (TweakrProfileStatusPlugin *plugin, gpointer data)
+static GtkWidget *
+_find_hds_container (TweakrProfileStatusPlugin *plugin)
{
GtkWidget *parent;
const gchar *class_name;
class_name =
G_OBJECT_CLASS_NAME (G_OBJECT_GET_CLASS (G_OBJECT (parent)));
}
- if (parent != NULL)
- gtk_container_foreach (GTK_CONTAINER (parent),
+
+ return parent;
+}
+
+static void
+_reshow_profile_button (TweakrProfileStatusPlugin *plugin, gpointer data)
+{
+ GtkWidget *container;
+
+ container = _find_hds_container (plugin);
+ if (container != NULL)
+ gtk_container_foreach (GTK_CONTAINER (container),
+ (GtkCallback) _reshow_profile_button_real,
+ plugin);
+}
+
+static void
+_hide_profile_button (TweakrProfileStatusPlugin *plugin, gpointer data)
+{
+ GtkWidget *container;
+
+ container = _find_hds_container (plugin);
+ if (container != NULL)
+ gtk_container_foreach (GTK_CONTAINER (container),
(GtkCallback) _hide_profile_button_real,
plugin);
}
image = gtk_image_new_from_icon_name ("general_profile",
GTK_ICON_SIZE_BUTTON);
hildon_button_set_image (HILDON_BUTTON (plugin->priv->button), image);
-
+ hildon_button_set_style (HILDON_BUTTON (plugin->priv->button),
+ HILDON_BUTTON_STYLE_PICKER);
g_signal_connect (G_OBJECT (plugin->priv->button), "clicked",
G_CALLBACK (_button_clicked), plugin);
g_signal_connect (plugin, "realize",
G_CALLBACK (_hide_profile_button), NULL);
+ g_signal_connect (plugin, "unrealize",
+ G_CALLBACK (_reshow_profile_button), NULL);
+
+
gtk_widget_show_all (plugin->priv->button);
}