From 8f315b2880c9a8ccc1fb825d439eb8212b7bd993 Mon Sep 17 00:00:00 2001 From: Dennis Loose Date: Mon, 2 Dec 2024 12:35:57 +0100 Subject: [PATCH] feat: add deb management links --- packages/app_center/lib/constants.dart | 6 ++++++ packages/app_center/lib/deb/deb_page.dart | 16 +++++++++++++--- packages/app_center/lib/deb/local_deb_page.dart | 17 +++++++++++++---- packages/app_center/lib/manage/manage_page.dart | 16 ++++++++++++++++ packages/app_center/lib/src/l10n/app_en.arb | 2 ++ 5 files changed, 50 insertions(+), 7 deletions(-) diff --git a/packages/app_center/lib/constants.dart b/packages/app_center/lib/constants.dart index cea54b241..9d61a3629 100644 --- a/packages/app_center/lib/constants.dart +++ b/packages/app_center/lib/constants.dart @@ -21,3 +21,9 @@ const kSearchFieldIconConstraints = BoxConstraints( ); const kSearchFieldContentPadding = EdgeInsets.all(12); const kSearchFieldPrefixIcon = Icon(YaruIcons.search, size: 16); + +// URLs +const localDebInfoUrl = + 'https://ubuntu.com/server/docs/third-party-repository-usage'; +const debManageDocsUrl = + 'https://documentation.ubuntu.com/server/tutorial/managing-software/#installing-deb-packages'; diff --git a/packages/app_center/lib/deb/deb_page.dart b/packages/app_center/lib/deb/deb_page.dart index d39683cfc..12b76dd68 100644 --- a/packages/app_center/lib/deb/deb_page.dart +++ b/packages/app_center/lib/deb/deb_page.dart @@ -238,6 +238,7 @@ class _Header extends StatelessWidget { @override Widget build(BuildContext context) { + final l10n = AppLocalizations.of(context); return Column( children: [ const SizedBox(height: kPagePadding), @@ -259,9 +260,18 @@ class _Header extends StatelessWidget { ], ), const SizedBox(height: kPagePadding), - Align( - alignment: AlignmentDirectional.centerStart, - child: _DebActionButtons(debModel: debModel), + Row( + children: [ + _DebActionButtons(debModel: debModel), + const SizedBox(width: 32), + Html( + shrinkWrap: true, + data: + '${l10n.debPageDocumentationLinkLabel} >', + style: {'body': Style(margin: Margins.zero)}, + onLinkTap: (url, attributes, element) => launchUrlString(url!), + ), + ], ), const SizedBox(height: 42), const Divider(), diff --git a/packages/app_center/lib/deb/local_deb_page.dart b/packages/app_center/lib/deb/local_deb_page.dart index f2414ea28..68286f1cc 100644 --- a/packages/app_center/lib/deb/local_deb_page.dart +++ b/packages/app_center/lib/deb/local_deb_page.dart @@ -13,9 +13,6 @@ import 'package:ubuntu_widgets/ubuntu_widgets.dart'; import 'package:url_launcher/url_launcher_string.dart'; import 'package:yaru/yaru.dart'; -const localDebInfoUrl = - 'https://ubuntu.com/server/docs/third-party-repository-usage'; - class LocalDebPage extends ConsumerWidget { const LocalDebPage({required this.path, super.key}); @@ -221,7 +218,19 @@ class _Header extends StatelessWidget { ), ), const SizedBox(height: kPagePadding), - _LocalDebActionButtons(debData: debData), + Row( + children: [ + _LocalDebActionButtons(debData: debData), + const SizedBox(width: 32), + Html( + shrinkWrap: true, + data: + '${l10n.debPageDocumentationLinkLabel} >', + style: {'body': Style(margin: Margins.zero)}, + onLinkTap: (url, attributes, element) => launchUrlString(url!), + ), + ], + ), const SizedBox(height: kPagePadding), const Divider(), ], diff --git a/packages/app_center/lib/manage/manage_page.dart b/packages/app_center/lib/manage/manage_page.dart index 53cf882f6..329274326 100644 --- a/packages/app_center/lib/manage/manage_page.dart +++ b/packages/app_center/lib/manage/manage_page.dart @@ -8,8 +8,10 @@ import 'package:app_center/manage/updates_model.dart'; import 'package:app_center/snapd/currently_installing_model.dart'; import 'package:app_center/snapd/snapd.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_html/flutter_html.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:ubuntu_widgets/ubuntu_widgets.dart'; +import 'package:url_launcher/url_launcher_string.dart'; import 'package:yaru/yaru.dart'; class ManagePage extends ConsumerWidget { @@ -62,6 +64,20 @@ class ManagePage extends ConsumerWidget { l10n.managePageDebUpdatesMessage, style: textTheme.titleMedium, ), + Html( + shrinkWrap: true, + data: + '${l10n.managePageDocumentationLinkLabel}', + style: { + 'body': Style( + margin: Margins.zero, + fontSize: FontSize(textTheme.titleMedium!.fontSize!), + fontWeight: textTheme.titleMedium!.fontWeight, + lineHeight: LineHeight(textTheme.titleMedium!.height), + ), + }, + onLinkTap: (url, attributes, element) => launchUrlString(url!), + ), _SelfUpdateInfoBox(), Builder( builder: (context) { diff --git a/packages/app_center/lib/src/l10n/app_en.arb b/packages/app_center/lib/src/l10n/app_en.arb index 7305fac55..7c10aa45b 100644 --- a/packages/app_center/lib/src/l10n/app_en.arb +++ b/packages/app_center/lib/src/l10n/app_en.arb @@ -114,6 +114,7 @@ } } }, + "managePageDocumentationLinkLabel": "Learn how to manage Debian packages in the documentation.", "productivityPageLabel": "Productivity", "developmentPageLabel": "Development", "gamesPageLabel": "Games", @@ -283,6 +284,7 @@ "snapReportPrivacyAgreementAndLabel": "and ", "snapReportPrivacyAgreementPrivacyPolicy": "Privacy Policy", "debPageErrorNoPackageInfo": "No package information found", + "debPageDocumentationLinkLabel": "Learn about managing Debian packages", "externalResources": "Additional resources", "externalResourcesButtonLabel": "Discover more", "allGamesButtonLabel": "All games",