summaryrefslogtreecommitdiff
path: root/capplet
diff options
context:
space:
mode:
Diffstat (limited to 'capplet')
-rw-r--r--capplet/gsm-properties-dialog.c118
-rw-r--r--capplet/gsp-app.c53
-rw-r--r--capplet/gsp-app.h5
-rw-r--r--capplet/gsp-keyfile.h1
4 files changed, 76 insertions, 101 deletions
diff --git a/capplet/gsm-properties-dialog.c b/capplet/gsm-properties-dialog.c
index 69fe3fe..cb314c5 100644
--- a/capplet/gsm-properties-dialog.c
+++ b/capplet/gsm-properties-dialog.c
@@ -69,8 +69,7 @@ struct _GsmPropertiesDialog
};
enum {
- STORE_COL_VISIBLE = 0,
- STORE_COL_ENABLED,
+ STORE_COL_ENABLED = 0,
STORE_COL_GICON,
STORE_COL_DESCRIPTION,
STORE_COL_APP,
@@ -102,6 +101,8 @@ find_by_app (GtkTreeModel *model,
g_object_unref (iter_app);
return TRUE;
}
+
+ g_object_unref (iter_app);
} while (gtk_tree_model_iter_next (model, iter));
return FALSE;
@@ -112,14 +113,12 @@ _fill_iter_from_app (GtkListStore *list_store,
GtkTreeIter *iter,
GspApp *app)
{
- gboolean hidden;
gboolean enabled;
GIcon *icon;
const char *description;
const char *app_name;
- hidden = gsp_app_get_hidden (app);
- enabled = gsp_app_get_enabled (app);
+ enabled = !gsp_app_get_hidden (app);
icon = gsp_app_get_icon (app);
description = gsp_app_get_description (app);
app_name = gsp_app_get_name (app);
@@ -150,7 +149,6 @@ _fill_iter_from_app (GtkListStore *list_store,
}
gtk_list_store_set (list_store, iter,
- STORE_COL_VISIBLE, !hidden,
STORE_COL_ENABLED, enabled,
STORE_COL_GICON, icon,
STORE_COL_DESCRIPTION, description,
@@ -196,13 +194,13 @@ _app_added (GsmPropertiesDialog *dialog,
GspApp *app,
GspAppManager *manager)
{
+ (void) manager;
append_app (dialog, app);
}
static void
-_app_removed (GsmPropertiesDialog *dialog,
- GspApp *app,
- GspAppManager *manager)
+remove_app (GsmPropertiesDialog *dialog,
+ GspApp *app)
{
GtkTreeIter iter;
@@ -218,6 +216,15 @@ _app_removed (GsmPropertiesDialog *dialog,
}
static void
+_app_removed (GsmPropertiesDialog *dialog,
+ GspApp *app,
+ GspAppManager *manager)
+{
+ (void) manager;
+ remove_app (dialog, app);
+}
+
+static void
populate_model (GsmPropertiesDialog *dialog)
{
GSList *apps;
@@ -263,10 +270,9 @@ on_startup_enabled_toggled (GtkCellRendererToggle *cell_renderer,
-1);
active = gtk_cell_renderer_toggle_get_active (cell_renderer);
- active = !active;
if (app) {
- gsp_app_set_enabled (app, active);
+ gsp_app_set_hidden (app, active);
g_object_unref (app);
}
}
@@ -462,34 +468,11 @@ on_row_activated (GtkTreeView *tree_view,
}
static void
-update_tree_view (GsmPropertiesDialog *dialog)
-{
- GSList *apps;
- GSList *l;
- gboolean show_hidden;
- GspApp *app;
-
- show_hidden = g_settings_get_boolean (dialog->settings, SPC_SHOW_HIDDEN_KEY);
-
- apps = gsp_app_manager_get_apps (dialog->manager);
- for (l = apps; l != NULL; l = l->next) {
- app = GSP_APP (l->data);
- if (gsp_app_get_nodisplay(app)) {
- if (show_hidden) {
- _app_added (dialog, app, dialog->manager);
- }else{
- _app_removed (dialog, app, dialog->manager);
- }
- }
- }
- g_slist_free (apps);
-}
-
-static void
-on_show_hidden_clicked (GtkWidget *widget,
+on_show_hidden_toggled (GtkToggleButton *togglebutton,
GsmPropertiesDialog *dialog)
{
- update_tree_view (dialog);
+ (void) togglebutton;
+ gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (dialog->tree_filter));
}
static void
@@ -499,11 +482,41 @@ on_save_session_clicked (GtkWidget *widget,
g_debug ("Session saving is not implemented yet!");
}
+static gboolean
+visible_func (GtkTreeModel *model,
+ GtkTreeIter *iter,
+ gpointer data)
+{
+ gboolean visible = FALSE;
+ GtkToggleButton *toggle_button = data;;
+ GspApp *app;
+ gboolean show_hidden;
+
+ show_hidden = gtk_toggle_button_get_active (toggle_button);
+
+ gtk_tree_model_get (model, iter,
+ STORE_COL_APP, &app,
+ -1);
+
+ if (app) {
+ gboolean nodisplay;
+
+ nodisplay = gsp_app_get_nodisplay (app);
+ visible = show_hidden || !nodisplay;
+ g_object_unref (app);
+ } else {
+ visible = show_hidden;
+ }
+
+ return visible;
+}
+
static void
setup_dialog (GsmPropertiesDialog *dialog)
{
GtkTreeView *treeview;
GtkWidget *button;
+ GtkToggleButton *toggle_button;
GtkTreeModel *tree_filter;
GtkTreeViewColumn *column;
GtkCellRenderer *renderer;
@@ -518,9 +531,20 @@ setup_dialog (GsmPropertiesDialog *dialog)
_("_Close"), "window-close",
GTK_RESPONSE_CLOSE);
+ dialog->settings = g_settings_new (SPC_CONFIG_SCHEMA);
+
+ toggle_button = GTK_TOGGLE_BUTTON (gtk_builder_get_object (dialog->xml,
+ CAPPLET_SHOW_HIDDEN_WIDGET_NAME));
+
+ g_settings_bind (dialog->settings, SPC_SHOW_HIDDEN_KEY,
+ toggle_button, "active", G_SETTINGS_BIND_DEFAULT);
+
+ g_signal_connect (toggle_button, "toggled",
+ G_CALLBACK (on_show_hidden_toggled),
+ dialog);
+
dialog->list_store = gtk_list_store_new (NUMBER_OF_COLUMNS,
G_TYPE_BOOLEAN,
- G_TYPE_BOOLEAN,
G_TYPE_ICON,
G_TYPE_STRING,
G_TYPE_OBJECT,
@@ -530,8 +554,7 @@ setup_dialog (GsmPropertiesDialog *dialog)
g_object_unref (dialog->list_store);
dialog->tree_filter = tree_filter;
- gtk_tree_model_filter_set_visible_column (GTK_TREE_MODEL_FILTER (tree_filter),
- STORE_COL_VISIBLE);
+ gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER (tree_filter), visible_func, toggle_button, NULL);
treeview = GTK_TREE_VIEW (gtk_builder_get_object (dialog->xml,
CAPPLET_TREEVIEW_WIDGET_NAME));
@@ -660,8 +683,6 @@ setup_dialog (GsmPropertiesDialog *dialog)
dialog);
- dialog->settings = g_settings_new (SPC_CONFIG_SCHEMA);
-
button = GTK_WIDGET (gtk_builder_get_object (dialog->xml,
CAPPLET_REMEMBER_WIDGET_NAME));
@@ -669,17 +690,6 @@ setup_dialog (GsmPropertiesDialog *dialog)
button, "active", G_SETTINGS_BIND_DEFAULT);
button = GTK_WIDGET (gtk_builder_get_object (dialog->xml,
- CAPPLET_SHOW_HIDDEN_WIDGET_NAME));
-
- g_settings_bind (dialog->settings, SPC_SHOW_HIDDEN_KEY,
- button, "active", G_SETTINGS_BIND_DEFAULT);
-
- g_signal_connect (button,
- "clicked",
- G_CALLBACK (on_show_hidden_clicked),
- dialog);
-
- button = GTK_WIDGET (gtk_builder_get_object (dialog->xml,
CAPPLET_SAVE_WIDGET_NAME));
g_signal_connect (button,
"clicked",
@@ -694,7 +704,7 @@ setup_dialog (GsmPropertiesDialog *dialog)
G_CALLBACK (_app_removed), dialog);
populate_model (dialog);
- update_tree_view (dialog);
+ gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (dialog->tree_filter));
}
static GObject *
diff --git a/capplet/gsp-app.c b/capplet/gsp-app.c
index 169701f..0c310b0 100644
--- a/capplet/gsp-app.c
+++ b/capplet/gsp-app.c
@@ -42,11 +42,10 @@
#define GSP_APP_SAVE_DELAY 2
#define GSP_ASP_SAVE_MASK_HIDDEN 0x0001
-#define GSP_ASP_SAVE_MASK_ENABLED 0x0002
-#define GSP_ASP_SAVE_MASK_NAME 0x0004
-#define GSP_ASP_SAVE_MASK_EXEC 0x0008
-#define GSP_ASP_SAVE_MASK_COMMENT 0x0010
-#define GSP_ASP_SAVE_MASK_DELAY 0x0020
+#define GSP_ASP_SAVE_MASK_NAME 0x0002
+#define GSP_ASP_SAVE_MASK_EXEC 0x0004
+#define GSP_ASP_SAVE_MASK_COMMENT 0x0008
+#define GSP_ASP_SAVE_MASK_DELAY 0x0010
#define GSP_ASP_SAVE_MASK_ALL 0xffff
typedef struct {
@@ -55,7 +54,6 @@ typedef struct {
gboolean hidden;
gboolean nodisplay;
- gboolean enabled;
char *name;
char *exec;
@@ -343,10 +341,7 @@ _gsp_app_user_equal_system (GspApp *app,
if (gsp_key_file_get_boolean (keyfile,
G_KEY_FILE_DESKTOP_KEY_HIDDEN,
- FALSE) != priv->hidden ||
- gsp_key_file_get_boolean (keyfile,
- GSP_KEY_FILE_DESKTOP_KEY_AUTOSTART_ENABLED,
- TRUE) != priv->enabled) {
+ FALSE) != priv->hidden) {
g_free (path);
g_key_file_free (keyfile);
return FALSE;
@@ -472,12 +467,6 @@ _gsp_app_save (gpointer data)
priv->hidden);
}
- if (priv->save_mask & GSP_ASP_SAVE_MASK_ENABLED) {
- gsp_key_file_set_boolean (keyfile,
- GSP_KEY_FILE_DESKTOP_KEY_AUTOSTART_ENABLED,
- priv->enabled);
- }
-
if (priv->save_mask & GSP_ASP_SAVE_MASK_NAME) {
gsp_key_file_set_locale_string (keyfile,
G_KEY_FILE_DESKTOP_KEY_NAME,
@@ -589,21 +578,9 @@ gsp_app_get_hidden (GspApp *app)
return priv->hidden;
}
-gboolean
-gsp_app_get_enabled (GspApp *app)
-{
- GspAppPrivate *priv;
-
- g_return_val_if_fail (GSP_IS_APP (app), FALSE);
-
- priv = gsp_app_get_instance_private (app);
-
- return priv->enabled;
-}
-
void
-gsp_app_set_enabled (GspApp *app,
- gboolean enabled)
+gsp_app_set_hidden (GspApp *app,
+ gboolean hidden)
{
GspAppPrivate *priv;
@@ -611,12 +588,12 @@ gsp_app_set_enabled (GspApp *app,
priv = gsp_app_get_instance_private (app);
- if (enabled == priv->enabled) {
+ if (hidden == priv->hidden) {
return;
}
- priv->enabled = enabled;
- priv->save_mask |= GSP_ASP_SAVE_MASK_ENABLED;
+ priv->hidden = hidden;
+ priv->save_mask |= GSP_ASP_SAVE_MASK_HIDDEN;
_gsp_app_queue_save (app);
_gsp_app_emit_changed (app);
@@ -963,9 +940,6 @@ gsp_app_new (const char *path,
priv->hidden = gsp_key_file_get_boolean (keyfile,
G_KEY_FILE_DESKTOP_KEY_HIDDEN,
FALSE);
- priv->enabled = gsp_key_file_get_boolean (keyfile,
- GSP_KEY_FILE_DESKTOP_KEY_AUTOSTART_ENABLED,
- TRUE);
priv->nodisplay = gsp_key_file_get_boolean (keyfile,
G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY,
FALSE);
@@ -1114,7 +1088,6 @@ gsp_app_create (const char *name,
priv->basename, NULL);
priv->hidden = FALSE;
- priv->enabled = TRUE;
priv->nodisplay = FALSE;
if (!gsm_util_text_is_blank (name)) {
@@ -1214,12 +1187,6 @@ gsp_app_copy_desktop_file (const char *uri)
priv->save_mask |= GSP_ASP_SAVE_MASK_HIDDEN;
}
- if (!priv->enabled) {
- changed = TRUE;
- priv->enabled = TRUE;
- priv->save_mask |= GSP_ASP_SAVE_MASK_ENABLED;
- }
-
if (changed) {
_gsp_app_queue_save (app);
}
diff --git a/capplet/gsp-app.h b/capplet/gsp-app.h
index 8bc2700..f327d72 100644
--- a/capplet/gsp-app.h
+++ b/capplet/gsp-app.h
@@ -58,10 +58,9 @@ const char *gsp_app_get_basename (GspApp *app);
const char *gsp_app_get_path (GspApp *app);
gboolean gsp_app_get_hidden (GspApp *app);
+void gsp_app_set_hidden (GspApp *app,
+ gboolean hidden);
-gboolean gsp_app_get_enabled (GspApp *app);
-void gsp_app_set_enabled (GspApp *app,
- gboolean enabled);
gboolean gsp_app_get_nodisplay (GspApp *app);
const char *gsp_app_get_name (GspApp *app);
diff --git a/capplet/gsp-keyfile.h b/capplet/gsp-keyfile.h
index 97f135f..aecd2ef 100644
--- a/capplet/gsp-keyfile.h
+++ b/capplet/gsp-keyfile.h
@@ -33,7 +33,6 @@
extern "C" {
#endif
-#define GSP_KEY_FILE_DESKTOP_KEY_AUTOSTART_ENABLED "X-MATE-Autostart-enabled"
#define GSP_KEY_FILE_DESKTOP_KEY_DELAY "X-MATE-Autostart-Delay"
void gsp_key_file_populate (GKeyFile *keyfile);