|
Matej Habrnal |
34dad7 |
From 70b2e6981b667d5cfb31f894527e16f3eeed14c9 Mon Sep 17 00:00:00 2001
|
|
Matej Habrnal |
34dad7 |
From: Jakub Filak <jfilak@redhat.com>
|
|
Matej Habrnal |
34dad7 |
Date: Fri, 15 May 2015 14:45:40 +0200
|
|
Matej Habrnal |
34dad7 |
Subject: [PATCH] applet: migrate Autoreporting options to GSettings
|
|
Matej Habrnal |
34dad7 |
|
|
Matej Habrnal |
34dad7 |
Read the option's value from the app's configuration file, update the
|
|
Matej Habrnal |
34dad7 |
gnome setting if needed and remove the option from the app's
|
|
Matej Habrnal |
34dad7 |
configuration file in order to skip the migration at next start.
|
|
Matej Habrnal |
34dad7 |
|
|
Matej Habrnal |
34dad7 |
Related to #966
|
|
Matej Habrnal |
34dad7 |
|
|
Matej Habrnal |
34dad7 |
Signed-off-by: Jakub Filak <jfilak@redhat.com>
|
|
Matej Habrnal |
34dad7 |
---
|
|
Matej Habrnal |
34dad7 |
src/applet/applet.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++-----
|
|
Matej Habrnal |
34dad7 |
1 file changed, 55 insertions(+), 5 deletions(-)
|
|
Matej Habrnal |
34dad7 |
|
|
Matej Habrnal |
34dad7 |
diff --git a/src/applet/applet.c b/src/applet/applet.c
|
|
Matej Habrnal |
34dad7 |
index 4df69fc..b534839 100644
|
|
Matej Habrnal |
34dad7 |
--- a/src/applet/applet.c
|
|
Matej Habrnal |
34dad7 |
+++ b/src/applet/applet.c
|
|
Matej Habrnal |
34dad7 |
@@ -36,6 +36,10 @@
|
|
Matej Habrnal |
34dad7 |
#include "libabrt.h"
|
|
Matej Habrnal |
34dad7 |
#include "problem_api.h"
|
|
Matej Habrnal |
34dad7 |
|
|
Matej Habrnal |
34dad7 |
+#define APP_NAME "abrt-applet"
|
|
Matej Habrnal |
34dad7 |
+#define GS_SCHEMA_ID_PRIVACY "org.gnome.desktop.privacy"
|
|
Matej Habrnal |
34dad7 |
+#define GS_PRIVACY_OPT_AUTO_REPORTING "report-technical-problems"
|
|
Matej Habrnal |
34dad7 |
+
|
|
Matej Habrnal |
34dad7 |
/* libnotify action keys */
|
|
Matej Habrnal |
34dad7 |
#define A_REPORT_REPORT "REPORT"
|
|
Matej Habrnal |
34dad7 |
#define A_RESTART_APPLICATION "RESTART"
|
|
Matej Habrnal |
34dad7 |
@@ -55,15 +59,60 @@ static bool is_autoreporting_enabled(void)
|
|
Matej Habrnal |
34dad7 |
GSettings *settings;
|
|
Matej Habrnal |
34dad7 |
gboolean ret;
|
|
Matej Habrnal |
34dad7 |
|
|
Matej Habrnal |
34dad7 |
- settings = g_settings_new ("org.gnome.desktop.privacy");
|
|
Matej Habrnal |
34dad7 |
- ret = g_settings_get_boolean (settings, "report-technical-problems");
|
|
Matej Habrnal |
34dad7 |
+ settings = g_settings_new (GS_SCHEMA_ID_PRIVACY);
|
|
Matej Habrnal |
34dad7 |
+ ret = g_settings_get_boolean (settings, GS_PRIVACY_OPT_AUTO_REPORTING);
|
|
Matej Habrnal |
34dad7 |
g_object_unref (settings);
|
|
Matej Habrnal |
34dad7 |
return ret;
|
|
Matej Habrnal |
34dad7 |
}
|
|
Matej Habrnal |
34dad7 |
|
|
Matej Habrnal |
34dad7 |
+static void migrate_auto_reporting_to_gsettings(void)
|
|
Matej Habrnal |
34dad7 |
+{
|
|
Matej Habrnal |
34dad7 |
+#define OPT_NAME "AutoreportingEnabled"
|
|
Matej Habrnal |
34dad7 |
+ map_string_t *settings = new_map_string();
|
|
Matej Habrnal |
34dad7 |
+ if (!load_app_conf_file(APP_NAME, settings))
|
|
Matej Habrnal |
34dad7 |
+ goto finito;
|
|
Matej Habrnal |
34dad7 |
+
|
|
Matej Habrnal |
34dad7 |
+ /* Silently ignore not configured options */
|
|
Matej Habrnal |
34dad7 |
+ int sv_logmode = logmode;
|
|
Matej Habrnal |
34dad7 |
+ /* but only if we run in silent mode (no -v on command line) */
|
|
Matej Habrnal |
34dad7 |
+ logmode = g_verbose == 0 ? 0 : sv_logmode;
|
|
Matej Habrnal |
34dad7 |
+
|
|
Matej Habrnal |
34dad7 |
+ int auto_reporting = 0;
|
|
Matej Habrnal |
34dad7 |
+ int configured = try_get_map_string_item_as_bool(settings, OPT_NAME, &auto_reporting);
|
|
Matej Habrnal |
34dad7 |
+
|
|
Matej Habrnal |
34dad7 |
+ logmode = sv_logmode;
|
|
Matej Habrnal |
34dad7 |
+
|
|
Matej Habrnal |
34dad7 |
+ if (!configured)
|
|
Matej Habrnal |
34dad7 |
+ goto finito;
|
|
Matej Habrnal |
34dad7 |
+
|
|
Matej Habrnal |
34dad7 |
+ /* Enable the GS option if AutoreportingEnabled is true because the user
|
|
Matej Habrnal |
34dad7 |
+ * turned the Autoreporting in abrt-applet in a before GS.
|
|
Matej Habrnal |
34dad7 |
+ *
|
|
Matej Habrnal |
34dad7 |
+ * Do not disable the GS option if AutoreportingEvent is false because the
|
|
Matej Habrnal |
34dad7 |
+ * GS option is false by default, thus disabling would revert the user's
|
|
Matej Habrnal |
34dad7 |
+ * decision to automatically report technical problems.
|
|
Matej Habrnal |
34dad7 |
+ */
|
|
Matej Habrnal |
34dad7 |
+ if (auto_reporting)
|
|
Matej Habrnal |
34dad7 |
+ {
|
|
Matej Habrnal |
34dad7 |
+ GSettings *settings = g_settings_new(GS_SCHEMA_ID_PRIVACY);
|
|
Matej Habrnal |
34dad7 |
+ g_settings_set_boolean(settings, GS_PRIVACY_OPT_AUTO_REPORTING, TRUE);
|
|
Matej Habrnal |
34dad7 |
+ g_object_unref(settings);
|
|
Matej Habrnal |
34dad7 |
+ }
|
|
Matej Habrnal |
34dad7 |
+
|
|
Matej Habrnal |
34dad7 |
+ remove_map_string_item(settings, OPT_NAME);
|
|
Matej Habrnal |
34dad7 |
+ save_app_conf_file(APP_NAME, settings);
|
|
Matej Habrnal |
34dad7 |
+
|
|
Matej Habrnal |
34dad7 |
+ log("Successfully migrated "APP_NAME":"OPT_NAME" to "GS_SCHEMA_ID_PRIVACY":"GS_PRIVACY_OPT_AUTO_REPORTING);
|
|
Matej Habrnal |
34dad7 |
+
|
|
Matej Habrnal |
34dad7 |
+#undef OPT_NAME
|
|
Matej Habrnal |
34dad7 |
+finito:
|
|
Matej Habrnal |
34dad7 |
+ free_map_string(settings);
|
|
Matej Habrnal |
34dad7 |
+ return;
|
|
Matej Habrnal |
34dad7 |
+}
|
|
Matej Habrnal |
34dad7 |
+
|
|
Matej Habrnal |
34dad7 |
static const char *get_autoreport_event_name(void)
|
|
Matej Habrnal |
34dad7 |
{
|
|
Matej Habrnal |
34dad7 |
- load_user_settings("abrt-applet");
|
|
Matej Habrnal |
34dad7 |
+ load_user_settings(APP_NAME);
|
|
Matej Habrnal |
34dad7 |
const char *configured = get_user_setting("AutoreportingEvent");
|
|
Matej Habrnal |
34dad7 |
return configured ? configured : g_settings_autoreporting_event;
|
|
Matej Habrnal |
34dad7 |
}
|
|
Matej Habrnal |
34dad7 |
@@ -554,7 +603,7 @@ static NotifyNotification *new_warn_notification(const char *body)
|
|
Matej Habrnal |
34dad7 |
|
|
Matej Habrnal |
34dad7 |
notify_notification_set_urgency(notification, NOTIFY_URGENCY_NORMAL);
|
|
Matej Habrnal |
34dad7 |
notify_notification_set_timeout(notification, NOTIFY_EXPIRES_DEFAULT);
|
|
Matej Habrnal |
34dad7 |
- notify_notification_set_hint(notification, "desktop-entry", g_variant_new_string("abrt-applet"));
|
|
Matej Habrnal |
34dad7 |
+ notify_notification_set_hint(notification, "desktop-entry", g_variant_new_string(APP_NAME));
|
|
Matej Habrnal |
34dad7 |
|
|
Matej Habrnal |
34dad7 |
return notification;
|
|
Matej Habrnal |
34dad7 |
}
|
|
Matej Habrnal |
34dad7 |
@@ -1147,13 +1196,14 @@ int main(int argc, char** argv)
|
|
Matej Habrnal |
34dad7 |
/*unsigned opts =*/ parse_opts(argc, argv, program_options, program_usage_string);
|
|
Matej Habrnal |
34dad7 |
|
|
Matej Habrnal |
34dad7 |
migrate_to_xdg_dirs();
|
|
Matej Habrnal |
34dad7 |
+ migrate_auto_reporting_to_gsettings();
|
|
Matej Habrnal |
34dad7 |
|
|
Matej Habrnal |
34dad7 |
export_abrt_envvars(0);
|
|
Matej Habrnal |
34dad7 |
msg_prefix = g_progname;
|
|
Matej Habrnal |
34dad7 |
|
|
Matej Habrnal |
34dad7 |
load_abrt_conf();
|
|
Matej Habrnal |
34dad7 |
load_event_config_data();
|
|
Matej Habrnal |
34dad7 |
- load_user_settings("abrt-applet");
|
|
Matej Habrnal |
34dad7 |
+ load_user_settings(APP_NAME);
|
|
Matej Habrnal |
34dad7 |
|
|
Matej Habrnal |
34dad7 |
/* Initialize our (dbus_abrt) machinery by filtering
|
|
Matej Habrnal |
34dad7 |
* for signals:
|
|
Matej Habrnal |
34dad7 |
--
|
|
Matej Habrnal |
34dad7 |
2.4.1
|
|
Matej Habrnal |
34dad7 |
|