Compare commits

...

8 Commits

Author SHA1 Message Date
Imran Remtulla
2679d5a1aa Merge pull request #340 from ImranR98/dev
UI Improvements (#330, #337)
2023-03-01 21:55:47 -05:00
Imran Remtulla
e49c09c0ff Increment version 2023-03-01 21:55:04 -05:00
Imran Remtulla
c9318ef2b5 Merge pull request #336 from markus-gitdev/main
Update de.json
2023-03-01 21:54:05 -05:00
Imran Remtulla
2e88c8eede UI improvements
Update button for individual apps on list is now an icon.
Less clipping on small screens on apps list page.
2023-03-01 21:37:18 -05:00
Imran Remtulla
8648c1bea7 Added icon for non-installed Apps 2023-03-01 20:20:34 -05:00
Markus
b22e2bab0c Update de.json
Updated the following strings to a German translation:
- importFromURLsInFile
- versionDetection
- standardVersionDetection
2023-03-01 08:20:04 +01:00
Imran Remtulla
57f7bf44c2 Merge pull request #335 from ImranR98/dev
Language bugfix + package upgrades + incr. ver.
2023-02-27 19:01:20 -05:00
Imran Remtulla
ce526d8d26 Language bugfix + package upgrades + incr. ver. 2023-02-27 19:00:50 -05:00
7 changed files with 122 additions and 92 deletions

View File

@@ -217,9 +217,9 @@
"releaseDateAsVersionExplanation": "Diese Option sollte nur für Apps verwendet werden, bei denen die Versionserkennung nicht korrekt funktioniert, aber ein Veröffentlichungsdatum verfügbar ist.",
"changes": "Änderungen",
"releaseDate": "Veröffentlichungsdatum",
"importFromURLsInFile": "Import from URLs in File (like OPML)",
"versionDetection": "Version Detection",
"standardVersionDetection": "Standard version detection",
"importFromURLsInFile": "Importieren von URLs aus Datei ( z.B. OPML)",
"versionDetection": "Versionserkennung",
"standardVersionDetection": "Standardversionserkennung",
"removeAppQuestion": {
"one": "App entfernen?",
"other": "App entfernen?"

View File

@@ -21,7 +21,7 @@ import 'package:easy_localization/src/easy_localization_controller.dart';
// ignore: implementation_imports
import 'package:easy_localization/src/localization.dart';
const String currentVersion = '0.11.4';
const String currentVersion = '0.11.6';
const String currentReleaseTag =
'v$currentVersion-beta'; // KEEP THIS IN SYNC WITH GITHUB RELEASES
@@ -211,6 +211,14 @@ class _ObtainiumState extends State<Obtainium> {
false)
]);
}
if (!supportedLocales
.map((e) => e.languageCode)
.contains(context.locale.languageCode) ||
settingsProvider.forcedLocale == null &&
context.deviceLocale.languageCode !=
context.locale.languageCode) {
settingsProvider.resetLocaleSafe(context);
}
// Register the background update task according to the user's setting
if (existingUpdateInterval != settingsProvider.updateInterval) {
if (existingUpdateInterval != -1) {

View File

@@ -233,6 +233,31 @@ class AppsPageState extends State<AppsPage> {
.getSource(listedApps[index].app.url)
.changeLogPageFromStandardUrl(listedApps[index].app.url);
var transparent = const Color.fromARGB(0, 0, 0, 0).value;
var hasUpdate = listedApps[index].app.installedVersion != null &&
listedApps[index].app.installedVersion !=
listedApps[index].app.latestVersion;
var updateButton = IconButton(
visualDensity: VisualDensity.compact,
color: Theme.of(context).colorScheme.primary,
tooltip:
listedApps[index].app.additionalSettings['trackOnly'] ==
true
? tr('markUpdated')
: tr('update'),
onPressed: appsProvider.areDownloadsRunning()
? null
: () {
appsProvider.downloadAndInstallLatestApps([
listedApps[index].app.id
], globalNavigatorKey.currentContext).catchError((e) {
showError(e, context);
});
},
icon: Icon(
listedApps[index].app.additionalSettings['trackOnly'] ==
true
? Icons.check_circle_outline
: Icons.install_mobile));
return Container(
decoration: BoxDecoration(
border: Border.symmetric(
@@ -264,7 +289,22 @@ class AppsPageState extends State<AppsPage> {
listedApps[index].installedInfo!.icon!,
gaplessPlayback: true,
)
: null,
: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Transform(
alignment: Alignment.center,
transform: Matrix4.rotationZ(0.31),
child: Image(
image: const AssetImage(
'assets/graphics/icon.png'),
color: Colors.white.withOpacity(0.1),
colorBlendMode: BlendMode.modulate,
gaplessPlayback: true,
),
),
]),
title: Text(
maxLines: 1,
listedApps[index].installedInfo?.name ??
@@ -278,21 +318,33 @@ class AppsPageState extends State<AppsPage> {
),
subtitle: Text(
tr('byX', args: [listedApps[index].app.author]),
maxLines: 1,
style: TextStyle(
overflow: TextOverflow.ellipsis,
fontWeight: listedApps[index].app.pinned
? FontWeight.bold
: FontWeight.normal)),
trailing: SingleChildScrollView(
reverse: true,
child: listedApps[index].downloadProgress != null
? Text(tr('percentProgress', args: [
listedApps[index]
.downloadProgress
?.toInt()
.toString() ??
'100'
]))
: (Column(
trailing: listedApps[index].downloadProgress != null
? Text(tr('percentProgress', args: [
listedApps[index]
.downloadProgress
?.toInt()
.toString() ??
'100'
]))
: (Row(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
hasUpdate
? updateButton
: const SizedBox.shrink(),
hasUpdate
? const SizedBox(
width: 10,
)
: const SizedBox.shrink(),
Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.end,
children: [
@@ -306,80 +358,38 @@ class AppsPageState extends State<AppsPage> {
'${listedApps[index].app.installedVersion ?? tr('notInstalled')}${listedApps[index].app.additionalSettings['trackOnly'] == true ? ' ${tr('estimateInBrackets')}' : ''}',
overflow: TextOverflow.ellipsis,
textAlign: TextAlign.end,
))
)),
]),
GestureDetector(
onTap: changesUrl == null
? null
: () {
launchUrlString(changesUrl,
mode: LaunchMode
.externalApplication);
},
child: Text(
listedApps[index].app.releaseDate ==
null
? tr('changes')
: DateFormat('yyyy-MM-dd').format(
listedApps[index]
.app
.releaseDate!),
style: const TextStyle(
fontStyle: FontStyle.italic,
decoration:
TextDecoration.underline),
)),
listedApps[index].app.installedVersion !=
null &&
listedApps[index]
.app
.installedVersion !=
listedApps[index]
.app
.latestVersion
? appsProvider.areDownloadsRunning()
? Text(tr('pleaseWait'))
: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment:
MainAxisAlignment.end,
children: [
GestureDetector(
onTap: () {
appsProvider
.downloadAndInstallLatestApps(
[
listedApps[index]
.app
.id
],
globalNavigatorKey
.currentContext).catchError(
(e) {
showError(e, context);
});
},
child: Text(
listedApps[index]
.app
.additionalSettings[
'trackOnly'] ==
true
? tr('markUpdated')
: tr('update'),
style: TextStyle(
color:
Theme.of(context)
.colorScheme
.primary,
fontWeight:
FontWeight.bold),
)),
],
)
: const SizedBox.shrink(),
Row(
mainAxisSize: MainAxisSize.min,
children: [
GestureDetector(
onTap: changesUrl == null
? null
: () {
launchUrlString(changesUrl,
mode: LaunchMode
.externalApplication);
},
child: Text(
listedApps[index].app.releaseDate ==
null
? tr('changes')
: DateFormat('yyyy-MM-dd')
.format(listedApps[index]
.app
.releaseDate!),
style: const TextStyle(
fontStyle: FontStyle.italic,
decoration:
TextDecoration.underline),
))
],
),
],
))),
)
],
)),
onTap: () {
if (selectedApps.isNotEmpty) {
toggleAppSelected(listedApps[index].app);

View File

@@ -152,7 +152,7 @@ class _SettingsPageState extends State<SettingsPage> {
if (value != null) {
context.setLocale(Locale(value));
} else {
context.resetLocale();
settingsProvider.resetLocaleSafe(context);
}
});

View File

@@ -178,4 +178,15 @@ class SettingsProvider with ChangeNotifier {
bool setEqual(Set<String> a, Set<String> b) =>
a.length == b.length && a.union(b).length == a.length;
void resetLocaleSafe(BuildContext context) {
if (context.supportedLocales
.map((e) => e.languageCode)
.contains(context.deviceLocale.languageCode)) {
context.resetLocale();
} else {
context.setLocale(context.fallbackLocale!);
context.deleteSaveLocale();
}
}
}

View File

@@ -670,10 +670,10 @@ packages:
dependency: "direct main"
description:
name: sqflite
sha256: "78324387dc81df14f78df06019175a86a2ee0437624166c382e145d0a7fd9a4f"
sha256: "851d5040552cf911f4cabda08d003eca76b27da3ed0002978272e27c8fbf8ecc"
url: "https://pub.dev"
source: hosted
version: "2.2.4+1"
version: "2.2.5"
sqflite_common:
dependency: transitive
description:

View File

@@ -17,7 +17,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix.
version: 0.11.4+123 # When changing this, update the tag in main() accordingly
version: 0.11.6+125 # When changing this, update the tag in main() accordingly
environment:
sdk: '>=2.18.2 <3.0.0'
@@ -97,6 +97,7 @@ flutter:
assets:
- assets/translations/
- assets/graphics/
# An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware