From 0c8e1834f7fe81d727cbe7b6043697e25f5cfa7d Mon Sep 17 00:00:00 2001 From: Hari Rana Date: Sat, 16 Mar 2024 10:28:43 -0400 Subject: [PATCH] about, appdata: Port to `AdwAboutDialog.new_from_appdata` This removes a lot of duplicated code, as we can simply reuse the appdata file. It will also allow us to add release notes without needing to rewrite them. A simple update in the `adw_about_dialog_new_from_appdata` method will take care of displaying the release notes. This also renames the appdata file from `appdata.xml` to `metainfo.xml`, as `appdata.xml` is considered a legacy filename. --- data/meson.build | 1 - meson.build | 3 ++- src/appdata/appdata.gresource.xml.in | 6 +++++ {data => src}/appdata/meson.build | 20 +++++++++++++--- .../org.gnome.Calendar.metainfo.xml.in.in | 2 ++ src/gui/gcal-application.c | 24 +++++++------------ src/meson.build | 1 + 7 files changed, 36 insertions(+), 21 deletions(-) create mode 100644 src/appdata/appdata.gresource.xml.in rename {data => src}/appdata/meson.build (53%) rename data/appdata/org.gnome.Calendar.appdata.xml.in.in => src/appdata/org.gnome.Calendar.metainfo.xml.in.in (99%) diff --git a/data/meson.build b/data/meson.build index 11affc08..07db5f1d 100644 --- a/data/meson.build +++ b/data/meson.build @@ -1,5 +1,4 @@ subdir('icons') -subdir('appdata') enum_headers = files(src_dir / 'gcal-enums.h') diff --git a/meson.build b/meson.build index 7b64415d..48a13870 100644 --- a/meson.build +++ b/meson.build @@ -13,7 +13,7 @@ project( calendar_version = meson.project_version() version_array = calendar_version.split('.') -calendar_major_version = version_array[0].to_int() +calendar_major_version = version_array[0] calendar_minor_version = version_array[1] @@ -71,6 +71,7 @@ set_defines = [ ['PACKAGE_STRING', '@0@ @1@'.format(meson.project_name(), calendar_version)], ['PACKAGE_TARNAME', meson.project_name()], ['PACKAGE_URL', 'https://apps.gnome.org/Calendar/'], + ['MAJOR_VERSION', calendar_major_version + '.' + '0'], ['PACKAGE_VERSION', calendar_version + rev], ['VERSION', calendar_version + rev], ['GETTEXT_PACKAGE', meson.project_name()], diff --git a/src/appdata/appdata.gresource.xml.in b/src/appdata/appdata.gresource.xml.in new file mode 100644 index 00000000..a2ce71e7 --- /dev/null +++ b/src/appdata/appdata.gresource.xml.in @@ -0,0 +1,6 @@ + + + + @appid@.metainfo.xml + + diff --git a/data/appdata/meson.build b/src/appdata/meson.build similarity index 53% rename from data/appdata/meson.build rename to src/appdata/meson.build index f227a033..1304fb52 100644 --- a/data/appdata/meson.build +++ b/src/appdata/meson.build @@ -2,11 +2,11 @@ appdata_conf = configuration_data() appdata_conf.set('appid', application_id) appdata = i18n.merge_file( input: configure_file( - input: files('org.gnome.Calendar.appdata.xml.in.in'), - output: 'org.gnome.Calendar.appdata.xml.in', + input: files('org.gnome.Calendar.metainfo.xml.in.in'), + output: 'org.gnome.Calendar.metainfo.xml.in', configuration: appdata_conf ), - output: '@0@.appdata.xml'.format(application_id), + output: '@0@.metainfo.xml'.format(application_id), po_dir: po_dir, install: true, install_dir: calendar_datadir / 'metainfo' @@ -22,3 +22,17 @@ if appstreamcli.found() depends: appdata, ) endif + +## GResource +gresource = configure_file( + input: 'appdata.gresource.xml.in', + output: 'appdata.gresource.xml', + configuration: appdata_conf, +) + +built_sources += gnome.compile_resources( + 'appdata-resources', + gresource, + c_name: 'appdata', + dependencies: [gresource, appdata], +) diff --git a/data/appdata/org.gnome.Calendar.appdata.xml.in.in b/src/appdata/org.gnome.Calendar.metainfo.xml.in.in similarity index 99% rename from data/appdata/org.gnome.Calendar.appdata.xml.in.in rename to src/appdata/org.gnome.Calendar.metainfo.xml.in.in index 5d48774f..2d5e8b5b 100644 --- a/data/appdata/org.gnome.Calendar.appdata.xml.in.in +++ b/src/appdata/org.gnome.Calendar.metainfo.xml.in.in @@ -56,6 +56,8 @@ https://gitlab.gnome.org/GNOME/gnome-calendar https://l10n.gnome.org/module/gnome-calendar/ https://welcome.gnome.org/app/Calendar/ + https://matrix.to/#/#gnome-calendar:gnome.org + https://discourse.gnome.org/tag/calendar GNOME The GNOME Project diff --git a/src/gui/gcal-application.c b/src/gui/gcal-application.c index da334e6d..c69a1b17 100644 --- a/src/gui/gcal-application.c +++ b/src/gui/gcal-application.c @@ -229,22 +229,14 @@ gcal_application_show_about (GSimpleAction *simple, copyright = build_about_copyright (self); troubleshooting = build_system_information (); - about = g_object_new (ADW_TYPE_ABOUT_DIALOG, - "application-name", _("Calendar"), - "application-icon", APPLICATION_ID, - "developer-name", _("The GNOME Project"), - "version", VERSION, - "copyright", copyright, - "website", "https://apps.gnome.org/Calendar/", - "issue-url", "https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues", - "support-url", "https://discourse.gnome.org/tag/calendar", - "license-type", GTK_LICENSE_GPL_3_0, - "developers", developers, - "designers", designers, - "translator-credits", _("translator-credits"), - "debug-info", troubleshooting, - "debug-info-filename", "Calendar.txt", - NULL); + about = adw_about_dialog_new_from_appdata ("/org/gnome/calendar/appdata", MAJOR_VERSION); + + adw_about_dialog_set_designers (ADW_ABOUT_DIALOG (about), designers); + adw_about_dialog_set_copyright (ADW_ABOUT_DIALOG (about), copyright); + adw_about_dialog_set_developers (ADW_ABOUT_DIALOG (about), developers); + adw_about_dialog_set_debug_info (ADW_ABOUT_DIALOG (about), troubleshooting); + adw_about_dialog_set_debug_info_filename (ADW_ABOUT_DIALOG (about), "Calendar.txt"); + adw_about_dialog_set_translator_credits (ADW_ABOUT_DIALOG (about), _("translator-credits")); weather_service = gcal_context_get_weather_service (self->context); adw_about_dialog_add_legal_section (ADW_ABOUT_DIALOG (about), diff --git a/src/meson.build b/src/meson.build index 857ca482..c1e4f1d8 100644 --- a/src/meson.build +++ b/src/meson.build @@ -64,6 +64,7 @@ calendar_incs = [ ################### sources = files() +subdir('appdata') subdir('core') subdir('gui') subdir('search')