[Xfce4-commits] <ristretto:master> Add 'Clear private data' dialog

Stephan Arts noreply at xfce.org
Sun Aug 14 13:14:01 CEST 2011


Updating branch refs/heads/master
         to 9b0c6127d7d1d0723897c513bf37b192ddb63ae2 (commit)
       from a45d64c05502d2e1b9f311c9a70973e367556c61 (commit)

commit 9b0c6127d7d1d0723897c513bf37b192ddb63ae2
Author: Stephan Arts <stephan at xfce.org>
Date:   Fri Aug 12 22:42:47 2011 +0200

    Add 'Clear private data' dialog

 po/POTFILES.in                                 |    1 +
 src/Makefile.am                                |    1 +
 src/main_window.c                              |   16 +-
 src/preferences_dialog.c                       |    4 +
 src/privacy_dialog.c                           |  309 ++++++++++++++++++++++++
 src/{preferences_dialog.h => privacy_dialog.h} |   45 ++--
 6 files changed, 352 insertions(+), 24 deletions(-)

diff --git a/po/POTFILES.in b/po/POTFILES.in
index 7b16104..0d6289b 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -2,6 +2,7 @@ src/main.c
 src/main_window.c
 src/app_menu_item.c
 src/image_viewer.c
+src/privacy_dialog.c
 src/preferences_dialog.c
 src/image.c
 src/image_list.c
diff --git a/src/Makefile.am b/src/Makefile.am
index 71d2c29..65dddfc 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -5,6 +5,7 @@ ristretto_SOURCES = \
 	image.c image.h \
 	image_viewer.c image_viewer.h \
 	settings.c settings.h \
+	privacy_dialog.h privacy_dialog.c \
 	preferences_dialog.h preferences_dialog.c \
 	main_window_ui.h \
 	main_window.c main_window.h \
diff --git a/src/main_window.c b/src/main_window.c
index e540149..342e35d 100644
--- a/src/main_window.c
+++ b/src/main_window.c
@@ -42,6 +42,7 @@
 #include "gnome_wallpaper_manager.h"
 #include "meego_wallpaper_manager.h"
 
+#include "privacy_dialog.h"
 #include "preferences_dialog.h"
 #include "app_menu_item.h"
 
@@ -283,7 +284,7 @@ static GtkActionEntry action_entries[] =
   { "open-with-menu", NULL, N_ ("_Open with..."), NULL, },
   { "sorting-menu", NULL, N_ ("_Sorting"), NULL, },
   { "delete", GTK_STOCK_DELETE, N_ ("_Delete"), "Delete", N_ ("Delete this image from disk"), G_CALLBACK (cb_rstto_main_window_delete), },
-  { "clear-private-data", GTK_STOCK_PREFERENCES, N_ ("_Clear private data"), "<control><shift>Delete", NULL, G_CALLBACK(cb_rstto_main_window_clear_private_data), },
+  { "clear-private-data", GTK_STOCK_CLEAR, N_ ("_Clear private data"), "<control><shift>Delete", NULL, G_CALLBACK(cb_rstto_main_window_clear_private_data), },
   { "preferences", GTK_STOCK_PREFERENCES, N_ ("_Preferences"), NULL, NULL, G_CALLBACK (cb_rstto_main_window_preferences), },
 /* View Menu */
   { "view-menu", NULL, N_ ("_View"), NULL, },
@@ -377,7 +378,11 @@ rstto_main_window_get_type (void)
         };
 
         rstto_main_window_type = g_type_register_static (GTK_TYPE_WINDOW, "RsttoMainWindow", &rstto_main_window_info, 0);
+
     }
+
+
+
     return rstto_main_window_type;
 }
 
@@ -709,6 +714,9 @@ rstto_main_window_class_init(RsttoMainWindowClass *window_class)
                                      pspec);
 }
 
+
+
+
 static void
 rstto_main_window_size_allocate (GtkWidget *widget, GtkAllocation *allocation)
 {
@@ -2515,5 +2523,9 @@ rstto_main_window_add_file_to_recent_files (GFile *file)
 static void
 cb_rstto_main_window_clear_private_data (GtkWidget *widget, RsttoMainWindow *window)
 {
-    g_debug("%s", __FUNCTION__);
+    GtkWidget *dialog = rstto_privacy_dialog_new (GTK_WINDOW (window));
+
+    gtk_dialog_run (GTK_DIALOG (dialog));
+
+    gtk_widget_destroy (dialog);
 }
diff --git a/src/preferences_dialog.c b/src/preferences_dialog.c
index 738f005..8efabe9 100644
--- a/src/preferences_dialog.c
+++ b/src/preferences_dialog.c
@@ -464,7 +464,11 @@ rstto_preferences_dialog_init(RsttoPreferencesDialog *dialog)
     gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), notebook);
     gtk_widget_show_all (notebook);
 
+    /* Window should not be resizable */
+    gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
+
     gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_CLOSE, GTK_RESPONSE_OK);
+
 }
 
 static void
diff --git a/src/privacy_dialog.c b/src/privacy_dialog.c
new file mode 100644
index 0000000..7896c2a
--- /dev/null
+++ b/src/privacy_dialog.c
@@ -0,0 +1,309 @@
+/*
+ *  Copyright (c) Stephan Arts 2006-2011 <stephan at xfce.org>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Library General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h>
+#include <gtk/gtk.h>
+#include <libxfce4ui/libxfce4ui.h>
+#include <libxfce4util/libxfce4util.h>
+
+#include "settings.h"
+#include "privacy_dialog.h"
+
+static void
+rstto_privacy_dialog_init(RsttoPrivacyDialog *);
+static void
+rstto_privacy_dialog_class_init(GObjectClass *);
+static void
+rstto_recent_chooser_init (GtkRecentChooserIface *iface);
+
+static void
+rstto_privacy_dialog_dispose (GObject *object);
+
+static void
+rstto_privacy_dialog_set_property    (GObject      *object,
+                                      guint         property_id,
+                                      const GValue *value,
+                                      GParamSpec   *pspec);
+static void
+rstto_privacy_dialog_get_property    (GObject    *object,
+                                      guint       property_id,
+                                      GValue     *value,
+                                      GParamSpec *pspec);
+
+static void
+cb_rstto_privacy_dialog_combobox_timeframe_changed (GtkComboBox *, gpointer user_data);
+
+
+static GtkWidgetClass *parent_class = NULL;
+
+enum
+{
+    PROP_0,
+    PROP_FILTER,
+    PROP_LIMIT,
+    PROP_LOCAL_ONLY,
+    PROP_SELECT_MULTIPLE,
+    PROP_RECENT_MANAGER,
+    PROP_SORT_TYPE,
+    PROP_SHOW_TIPS,
+    PROP_SHOW_ICONS,
+    PROP_SHOW_NOT_FOUND,
+    PROP_SHOW_PRIVATE,
+};
+
+struct _RsttoPrivacyDialogPriv
+{
+    RsttoSettings *settings;
+
+    GtkWidget *cleanup_frame;
+    GtkWidget *cleanup_vbox;
+    GtkWidget *cleanup_timeframe_combo;
+};
+
+GType
+rstto_privacy_dialog_get_type (void)
+{
+    static GType rstto_privacy_dialog_type = 0;
+
+    if (!rstto_privacy_dialog_type)
+    {
+        static const GTypeInfo rstto_privacy_dialog_info = 
+        {
+            sizeof (RsttoPrivacyDialogClass),
+            (GBaseInitFunc) NULL,
+            (GBaseFinalizeFunc) NULL,
+            (GClassInitFunc) rstto_privacy_dialog_class_init,
+            (GClassFinalizeFunc) NULL,
+            NULL,
+            sizeof (RsttoPrivacyDialog),
+            0,
+            (GInstanceInitFunc) rstto_privacy_dialog_init,
+            NULL
+        };
+
+        rstto_privacy_dialog_type = g_type_register_static (XFCE_TYPE_TITLED_DIALOG, "RsttoPrivacyDialog", &rstto_privacy_dialog_info, 0);
+
+        static const GInterfaceInfo recent_chooser_info =
+        {
+            (GInterfaceInitFunc) rstto_recent_chooser_init,
+            NULL,
+            NULL
+        };
+
+        g_type_add_interface_static (rstto_privacy_dialog_type, GTK_TYPE_RECENT_CHOOSER, &recent_chooser_info);
+    }
+    return rstto_privacy_dialog_type;
+}
+
+static void
+rstto_privacy_dialog_init(RsttoPrivacyDialog *dialog)
+{
+    GtkWidget *display_main_hbox;
+    GtkWidget *display_main_lbl;
+
+    dialog->priv = g_new0 (RsttoPrivacyDialogPriv, 1);
+
+    dialog->priv->settings = rstto_settings_new ();
+
+    display_main_hbox = gtk_hbox_new(FALSE, 0);
+    display_main_lbl = gtk_label_new(_("Timerange to clear:"));
+
+
+    dialog->priv->cleanup_vbox = gtk_vbox_new(FALSE, 0);
+    dialog->priv->cleanup_frame = xfce_gtk_frame_box_new_with_content(_("Cleanup"), dialog->priv->cleanup_vbox);
+    dialog->priv->cleanup_timeframe_combo = gtk_combo_box_new_text();
+    gtk_combo_box_insert_text(GTK_COMBO_BOX(dialog->priv->cleanup_timeframe_combo), 0, N_("Last Hour"));
+    gtk_combo_box_insert_text(GTK_COMBO_BOX(dialog->priv->cleanup_timeframe_combo), 1, N_("Last Two Hours"));
+    gtk_combo_box_insert_text(GTK_COMBO_BOX(dialog->priv->cleanup_timeframe_combo), 2, N_("Last Four Hours"));
+    gtk_combo_box_insert_text(GTK_COMBO_BOX(dialog->priv->cleanup_timeframe_combo), 3, N_("Today"));
+    gtk_combo_box_insert_text(GTK_COMBO_BOX(dialog->priv->cleanup_timeframe_combo), 4, N_("Everything"));
+    g_signal_connect (G_OBJECT (dialog->priv->cleanup_timeframe_combo), 
+                      "changed", (GCallback)cb_rstto_privacy_dialog_combobox_timeframe_changed, dialog);
+    gtk_combo_box_set_active(GTK_COMBO_BOX(dialog->priv->cleanup_timeframe_combo), 0);
+
+    gtk_box_pack_start (GTK_BOX (dialog->priv->cleanup_vbox), 
+                        display_main_hbox, FALSE, FALSE, 0);
+    gtk_box_pack_start (GTK_BOX (display_main_hbox), 
+                        display_main_lbl, FALSE, FALSE, 0);
+    gtk_box_pack_start (GTK_BOX (display_main_hbox), 
+                        dialog->priv->cleanup_timeframe_combo, FALSE, FALSE, 0);
+
+    gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), 
+                       dialog->priv->cleanup_frame);
+
+    gtk_widget_show_all (dialog->priv->cleanup_frame);
+
+    /* Window should not be resizable */
+    gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
+
+    gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
+    gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_APPLY, GTK_RESPONSE_OK);
+}
+
+static void
+rstto_privacy_dialog_class_init(GObjectClass *object_class)
+{
+    GParamSpec *pspec;
+
+    parent_class = g_type_class_peek_parent (RSTTO_PRIVACY_DIALOG_CLASS (object_class));
+
+    object_class->dispose = rstto_privacy_dialog_dispose;
+
+    object_class->set_property = rstto_privacy_dialog_set_property;
+    object_class->get_property = rstto_privacy_dialog_get_property;
+
+    pspec = g_param_spec_object ("filter",
+                                 "",
+                                 "",
+                                 GTK_TYPE_RECENT_FILTER,
+                                 G_PARAM_READWRITE);
+    g_object_class_install_property (object_class,
+                                     PROP_FILTER,
+                                     pspec);
+    pspec = g_param_spec_object ("recent-manager",
+                                 "",
+                                 "",
+                                 GTK_TYPE_RECENT_MANAGER,
+                                 G_PARAM_READWRITE);
+    g_object_class_install_property (object_class,
+                                     PROP_RECENT_MANAGER,
+                                     pspec);
+    pspec = g_param_spec_int    ("limit",
+                                 "",
+                                 "",
+                                 -1,
+                                 100,
+                                 -1,
+                                 G_PARAM_READWRITE);
+    g_object_class_install_property (object_class,
+                                     PROP_LIMIT,
+                                     pspec);
+    pspec = g_param_spec_boolean ("local-only",
+                                  "",
+                                  "",
+                                  FALSE,
+                                  G_PARAM_READWRITE);
+    g_object_class_install_property (object_class,
+                                     PROP_LOCAL_ONLY,
+                                     pspec);
+
+    pspec = g_param_spec_boolean ("select-multiple",
+                                  "",
+                                  "",
+                                  FALSE,
+                                  G_PARAM_READWRITE);
+    g_object_class_install_property (object_class,
+                                     PROP_SELECT_MULTIPLE,
+                                     pspec);
+    pspec = g_param_spec_boolean ("show-tips",
+                                  "",
+                                  "",
+                                  FALSE,
+                                  G_PARAM_READWRITE);
+    g_object_class_install_property (object_class,
+                                     PROP_SHOW_TIPS,
+                                     pspec);
+    pspec = g_param_spec_boolean ("show-icons",
+                                  "",
+                                  "",
+                                  FALSE,
+                                  G_PARAM_READWRITE);
+    g_object_class_install_property (object_class,
+                                     PROP_SHOW_ICONS,
+                                     pspec);
+    pspec = g_param_spec_boolean ("show-not-found",
+                                  "",
+                                  "",
+                                  FALSE,
+                                  G_PARAM_READWRITE);
+    g_object_class_install_property (object_class,
+                                     PROP_SHOW_NOT_FOUND,
+                                     pspec);
+    pspec = g_param_spec_boolean ("show-private",
+                                  "",
+                                  "",
+                                  FALSE,
+                                  G_PARAM_READWRITE);
+    g_object_class_install_property (object_class,
+                                     PROP_SHOW_PRIVATE,
+                                     pspec);
+    pspec = g_param_spec_enum   ("sort-type",
+                                 "",
+                                 "",
+                                 GTK_TYPE_RECENT_SORT_TYPE,
+                                 GTK_RECENT_SORT_NONE,
+                                 G_PARAM_READWRITE);
+    g_object_class_install_property (object_class,
+                                     PROP_SORT_TYPE,
+                                     pspec);
+}
+
+static void
+rstto_recent_chooser_init (GtkRecentChooserIface *iface)
+{
+}
+
+static void
+rstto_privacy_dialog_dispose (GObject *object)
+{
+    RsttoPrivacyDialog *dialog = RSTTO_PRIVACY_DIALOG (object);
+    if (dialog->priv->settings)
+    {
+        g_object_unref (dialog->priv->settings);
+        dialog->priv->settings = NULL;
+    }
+    
+    G_OBJECT_CLASS(parent_class)->dispose(object);
+}
+
+
+GtkWidget *
+rstto_privacy_dialog_new (GtkWindow *parent)
+{
+    GtkWidget *dialog = g_object_new (RSTTO_TYPE_PRIVACY_DIALOG,
+                                      "title", _("Clear private data"),
+                                      "icon-name", GTK_STOCK_CLEAR,
+                                      NULL);
+    gtk_window_set_transient_for (GTK_WINDOW (dialog), parent);
+
+    return dialog;
+}
+
+static void
+rstto_privacy_dialog_set_property    (GObject      *object,
+                                      guint         property_id,
+                                      const GValue *value,
+                                      GParamSpec   *pspec)
+{
+}
+
+static void
+rstto_privacy_dialog_get_property    (GObject    *object,
+                                      guint       property_id,
+                                      GValue     *value,
+                                      GParamSpec *pspec)
+{
+}
+/***************/
+/*  CALLBACKS  */
+/***************/
+static void
+cb_rstto_privacy_dialog_combobox_timeframe_changed (GtkComboBox *combobox, gpointer user_data)
+{
+    RsttoPrivacyDialog *dialog = RSTTO_PRIVACY_DIALOG (user_data);
+}
diff --git a/src/preferences_dialog.h b/src/privacy_dialog.h
similarity index 50%
copy from src/preferences_dialog.h
copy to src/privacy_dialog.h
index 34c663f..e9c270e 100644
--- a/src/preferences_dialog.h
+++ b/src/privacy_dialog.h
@@ -16,53 +16,54 @@
  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-#ifndef __RISTRETTO_PREFERENCES_DIALOG_H__
-#define __RISTRETTO_PREFERENCES_DIALOG_H__
+#ifndef __RISTRETTO_PRIVACY_DIALOG_H__
+#define __RISTRETTO_PRIVACY_DIALOG_H__
 
 G_BEGIN_DECLS
 
-#define RSTTO_TYPE_PREFERENCES_DIALOG rstto_preferences_dialog_get_type()
+#define RSTTO_TYPE_PRIVACY_DIALOG rstto_privacy_dialog_get_type()
 
-#define RSTTO_PREFERENCES_DIALOG(obj)( \
+#define RSTTO_PRIVACY_DIALOG(obj)( \
         G_TYPE_CHECK_INSTANCE_CAST ((obj), \
-                RSTTO_TYPE_PREFERENCES_DIALOG, \
-                RsttoPreferencesDialog))
+                RSTTO_TYPE_PRIVACY_DIALOG, \
+                RsttoPrivacyDialog))
 
-#define RSTTO_IS_PREFERENCES_DIALOG(obj)( \
+#define RSTTO_IS_PRIVACY_DIALOG(obj)( \
         G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
-                RSTTO_TYPE_PREFERENCES_DIALOG))
+                RSTTO_TYPE_PRIVACY_DIALOG))
 
-#define RSTTO_PREFERENCES_DIALOG_CLASS(klass)( \
+#define RSTTO_PRIVACY_DIALOG_CLASS(klass)( \
         G_TYPE_CHECK_CLASS_CAST ((klass), \
-                RSTTO_TYPE_PREFERENCES_DIALOG, \
-                RsttoPreferencesDialogClass))
+                RSTTO_TYPE_PRIVACY_DIALOG, \
+                RsttoPrivacyDialogClass))
 
-#define RSTTO_IS_PREFERENCES_DIALOG_CLASS(klass)( \
+#define RSTTO_IS_PRIVACY_DIALOG_CLASS(klass)( \
         G_TYPE_CHECK_CLASS_TYPE ((klass), \
-                RSTTO_TYPE_PREFERENCES_DIALOG()))
+                RSTTO_TYPE_PRIVACY_DIALOG()))
 
-typedef struct _RsttoPreferencesDialog RsttoPreferencesDialog;
+typedef struct _RsttoPrivacyDialog RsttoPrivacyDialog;
 
-typedef struct _RsttoPreferencesDialogPriv RsttoPreferencesDialogPriv;
+typedef struct _RsttoPrivacyDialogPriv RsttoPrivacyDialogPriv;
 
-struct _RsttoPreferencesDialog
+struct _RsttoPrivacyDialog
 {
     XfceTitledDialog parent;
-    RsttoPreferencesDialogPriv *priv;
+    RsttoPrivacyDialogPriv *priv;
 };
 
-typedef struct _RsttoPreferencesDialogClass RsttoPreferencesDialogClass;
+typedef struct _RsttoPrivacyDialogClass RsttoPrivacyDialogClass;
 
-struct _RsttoPreferencesDialogClass
+struct _RsttoPrivacyDialogClass
 {
     XfceTitledDialogClass  parent_class;
 };
 
-GType      rstto_preferences_dialog_get_type();
+GType
+rstto_privacy_dialog_get_type();
 
 GtkWidget *
-rstto_preferences_dialog_new (GtkWindow *parent);
+rstto_privacy_dialog_new (GtkWindow *parent);
 
 G_END_DECLS
 
-#endif /* __RISTRETTO_PREFERENCES_DIALOG_H__ */
+#endif /* __RISTRETTO_PRIVACY_DIALOG_H__ */


More information about the Xfce4-commits mailing list