From ae1c76ff830d146d41e88d6fba724c0a54bce868 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:45:20 +0200 Subject: Adding upstream version 1:43.6. Signed-off-by: Daniel Baumann --- panels/diagnostics/cc-diagnostics-panel.c | 143 +++++++++++++++++++++ panels/diagnostics/cc-diagnostics-panel.h | 32 +++++ panels/diagnostics/cc-diagnostics-panel.ui | 29 +++++ panels/diagnostics/diagnostics.gresource.xml | 6 + .../gnome-diagnostics-panel.desktop.in.in | 19 +++ panels/diagnostics/icons/meson.build | 4 + .../org.gnome.Settings-diagnostics-symbolic.svg | 8 ++ panels/diagnostics/meson.build | 41 ++++++ 8 files changed, 282 insertions(+) create mode 100644 panels/diagnostics/cc-diagnostics-panel.c create mode 100644 panels/diagnostics/cc-diagnostics-panel.h create mode 100644 panels/diagnostics/cc-diagnostics-panel.ui create mode 100644 panels/diagnostics/diagnostics.gresource.xml create mode 100644 panels/diagnostics/gnome-diagnostics-panel.desktop.in.in create mode 100644 panels/diagnostics/icons/meson.build create mode 100644 panels/diagnostics/icons/scalable/org.gnome.Settings-diagnostics-symbolic.svg create mode 100644 panels/diagnostics/meson.build (limited to 'panels/diagnostics') diff --git a/panels/diagnostics/cc-diagnostics-panel.c b/panels/diagnostics/cc-diagnostics-panel.c new file mode 100644 index 0000000..9aeca6e --- /dev/null +++ b/panels/diagnostics/cc-diagnostics-panel.c @@ -0,0 +1,143 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- + * + * Copyright (C) 2018 Red Hat, Inc + * + * 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * Author: Matthias Clasen + */ + +#include "cc-diagnostics-panel.h" +#include "cc-diagnostics-resources.h" +#include "cc-util.h" +#include "shell/cc-application.h" + +#include +#include + +struct _CcDiagnosticsPanel +{ + CcPanel parent_instance; + + AdwPreferencesGroup *diagnostics_group; + GtkSwitch *abrt_switch; + + GSettings *privacy_settings; +}; + +CC_PANEL_REGISTER (CcDiagnosticsPanel, cc_diagnostics_panel) + +/* Static init function */ + +static void +set_panel_visibility (CcPanelVisibility visibility) +{ + CcApplication *application; + + application = CC_APPLICATION (g_application_get_default ()); + cc_shell_model_set_panel_visibility (cc_application_get_model (application), + "diagnostics", + visibility); + +} + +static void +abrt_appeared_cb (GDBusConnection *connection, + const gchar *name, + const gchar *name_owner, + gpointer user_data) +{ + g_debug ("ABRT appeared"); + set_panel_visibility (CC_PANEL_VISIBLE); +} + +static void +abrt_vanished_cb (GDBusConnection *connection, + const gchar *name, + gpointer user_data) +{ + g_debug ("ABRT vanished"); + set_panel_visibility (CC_PANEL_VISIBLE_IN_SEARCH); +} + +void +cc_diagnostics_panel_static_init_func (void) +{ + g_bus_watch_name (G_BUS_TYPE_SYSTEM, + "org.freedesktop.problems.daemon", + G_BUS_NAME_WATCHER_FLAGS_NONE, + abrt_appeared_cb, + abrt_vanished_cb, + NULL, + NULL); + + set_panel_visibility (CC_PANEL_VISIBLE_IN_SEARCH); +} + +static void +cc_diagnostics_panel_finalize (GObject *object) +{ + CcDiagnosticsPanel *self = CC_DIAGNOSTICS_PANEL (object); + + g_clear_object (&self->privacy_settings); + + G_OBJECT_CLASS (cc_diagnostics_panel_parent_class)->finalize (object); +} + +static void +cc_diagnostics_panel_class_init (CcDiagnosticsPanelClass *klass) +{ + GObjectClass *oclass = G_OBJECT_CLASS (klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + + oclass->finalize = cc_diagnostics_panel_finalize; + + gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/diagnostics/cc-diagnostics-panel.ui"); + + gtk_widget_class_bind_template_child (widget_class, CcDiagnosticsPanel, diagnostics_group); + gtk_widget_class_bind_template_child (widget_class, CcDiagnosticsPanel, abrt_switch); +} + +static void +cc_diagnostics_panel_init (CcDiagnosticsPanel *self) +{ + g_autofree gchar *os_name = NULL; + g_autofree gchar *url = NULL; + g_autofree gchar *msg = NULL; + g_autofree gchar *link = NULL; + + g_resources_register (cc_diagnostics_get_resource ()); + + gtk_widget_init_template (GTK_WIDGET (self)); + + self->privacy_settings = g_settings_new ("org.gnome.desktop.privacy"); + + g_settings_bind (self->privacy_settings, "report-technical-problems", + self->abrt_switch, "active", + G_SETTINGS_BIND_DEFAULT); + + os_name = g_get_os_info (G_OS_INFO_KEY_NAME); + if (!os_name) + os_name = g_strdup ("GNOME"); + url = g_get_os_info (G_OS_INFO_KEY_PRIVACY_POLICY_URL); + if (!url) + url = g_strdup ("http://www.gnome.org/privacy-policy"); + /* translators: Text used in link to privacy policy */ + link = g_strdup_printf ("%s", url, _("Learn more")); + /* translators: The first '%s' is the distributor's name, such as 'Fedora', the second '%s' is a link to the privacy policy */ + msg = g_strdup_printf (_("Sending reports of technical problems helps us improve %s. Reports " + "are sent anonymously and are scrubbed of personal data. %s"), + os_name, link); + adw_preferences_group_set_description (self->diagnostics_group, msg); +} diff --git a/panels/diagnostics/cc-diagnostics-panel.h b/panels/diagnostics/cc-diagnostics-panel.h new file mode 100644 index 0000000..3875ec5 --- /dev/null +++ b/panels/diagnostics/cc-diagnostics-panel.h @@ -0,0 +1,32 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- + * + * Copyright (C) 2018 Red Hat, Inc + * + * 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * Author: Matthias Clasen + */ + +#pragma once + +#include + +G_BEGIN_DECLS + +#define CC_TYPE_DIAGNOSTICS_PANEL (cc_diagnostics_panel_get_type ()) +G_DECLARE_FINAL_TYPE (CcDiagnosticsPanel, cc_diagnostics_panel, CC, DIAGNOSTICS_PANEL, CcPanel) + +void cc_diagnostics_panel_static_init_func (void); + +G_END_DECLS diff --git a/panels/diagnostics/cc-diagnostics-panel.ui b/panels/diagnostics/cc-diagnostics-panel.ui new file mode 100644 index 0000000..a08a4ca --- /dev/null +++ b/panels/diagnostics/cc-diagnostics-panel.ui @@ -0,0 +1,29 @@ + + + + diff --git a/panels/diagnostics/diagnostics.gresource.xml b/panels/diagnostics/diagnostics.gresource.xml new file mode 100644 index 0000000..541d62c --- /dev/null +++ b/panels/diagnostics/diagnostics.gresource.xml @@ -0,0 +1,6 @@ + + + + cc-diagnostics-panel.ui + + diff --git a/panels/diagnostics/gnome-diagnostics-panel.desktop.in.in b/panels/diagnostics/gnome-diagnostics-panel.desktop.in.in new file mode 100644 index 0000000..68d4cb0 --- /dev/null +++ b/panels/diagnostics/gnome-diagnostics-panel.desktop.in.in @@ -0,0 +1,19 @@ +[Desktop Entry] +Name=Diagnostics +Comment=Report your problems +Exec=gnome-control-center diagnostics +# FIXME +# Translators: Do NOT translate or transliterate this text (this is an icon file name)! +Icon=org.gnome.Settings-diagnostics-symbolic +Terminal=false +Type=Application +NoDisplay=true +StartupNotify=true +Categories=GNOME;GTK;Settings;DesktopSettings;X-GNOME-Settings-Panel;X-GNOME-PrivacySettings; +OnlyShowIn=GNOME;Unity; +X-GNOME-Bugzilla-Bugzilla=GNOME +X-GNOME-Bugzilla-Product=gnome-control-center +X-GNOME-Bugzilla-Component=privacy +X-GNOME-Bugzilla-Version=@VERSION@ +# Translators: Search terms to find the Diagnostics panel. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +Keywords=diagnostics;crash; diff --git a/panels/diagnostics/icons/meson.build b/panels/diagnostics/icons/meson.build new file mode 100644 index 0000000..c1b200d --- /dev/null +++ b/panels/diagnostics/icons/meson.build @@ -0,0 +1,4 @@ +install_data( + 'scalable/org.gnome.Settings-diagnostics-symbolic.svg', + install_dir: join_paths(control_center_icondir, 'hicolor', 'scalable', 'apps') +) diff --git a/panels/diagnostics/icons/scalable/org.gnome.Settings-diagnostics-symbolic.svg b/panels/diagnostics/icons/scalable/org.gnome.Settings-diagnostics-symbolic.svg new file mode 100644 index 0000000..34e4afc --- /dev/null +++ b/panels/diagnostics/icons/scalable/org.gnome.Settings-diagnostics-symbolic.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/panels/diagnostics/meson.build b/panels/diagnostics/meson.build new file mode 100644 index 0000000..0061d38 --- /dev/null +++ b/panels/diagnostics/meson.build @@ -0,0 +1,41 @@ +panels_list += cappletname +desktop = 'gnome-@0@-panel.desktop'.format(cappletname) + +desktop_in = configure_file( + input: desktop + '.in.in', + output: desktop + '.in', + configuration: desktop_conf +) + +i18n.merge_file( + type: 'desktop', + input: desktop_in, + output: desktop, + po_dir: po_dir, + install: true, + install_dir: control_center_desktopdir +) + +sources = files('cc-diagnostics-panel.c') + +resource_data = files('cc-diagnostics-panel.ui') + +sources += gnome.compile_resources( + 'cc-' + cappletname + '-resources', + cappletname + '.gresource.xml', + c_name: 'cc_' + cappletname, + dependencies: resource_data, + export: true +) + +cflags += '-DGNOMELOCALEDIR="@0@"'.format(control_center_localedir) + +panels_libs += static_library( + cappletname, + sources: sources, + include_directories: [top_inc, common_inc], + dependencies: common_deps, + c_args: cflags +) + +subdir('icons') -- cgit v1.2.3