Kenneth Bruen
2 years ago
9 changed files with 418 additions and 7 deletions
File diff suppressed because one or more lines are too long
@ -0,0 +1,140 @@ |
|||||||
|
import 'package:fluent_ui/fluent_ui.dart'; |
||||||
|
import 'package:flutter/services.dart'; |
||||||
|
import 'package:info_tren/pages/about/about_page.dart'; |
||||||
|
import 'package:url_launcher/url_launcher.dart'; |
||||||
|
|
||||||
|
class AboutPageFluent extends AboutPageShared { |
||||||
|
const AboutPageFluent({super.key}); |
||||||
|
|
||||||
|
@override |
||||||
|
State<AboutPageShared> createState() => AboutPageStateFluent(); |
||||||
|
} |
||||||
|
|
||||||
|
class AboutPageStateFluent extends AboutPageState<AboutPageFluent> { |
||||||
|
@override |
||||||
|
Widget build(BuildContext context) { |
||||||
|
return NavigationView( |
||||||
|
appBar: NavigationAppBar( |
||||||
|
title: Text(pageTitle), |
||||||
|
), |
||||||
|
content: SingleChildScrollView( |
||||||
|
child: Column( |
||||||
|
mainAxisSize: MainAxisSize.min, |
||||||
|
crossAxisAlignment: CrossAxisAlignment.stretch, |
||||||
|
children: [ |
||||||
|
Center( |
||||||
|
child: Text( |
||||||
|
'Info Tren', |
||||||
|
style: FluentTheme.of(context).typography.display, |
||||||
|
), |
||||||
|
), |
||||||
|
if (packageInfo != null) |
||||||
|
Center( |
||||||
|
child: Text( |
||||||
|
packageInfo!.packageName, |
||||||
|
style: FluentTheme.of(context).typography.caption, |
||||||
|
), |
||||||
|
), |
||||||
|
// ListTile( |
||||||
|
// title: Text(versionTitleText), |
||||||
|
// subtitle: localChangelog.isEmpty ? null : Text(localChangelog.first.title), |
||||||
|
// ), |
||||||
|
const Divider(), |
||||||
|
for (final log in mergedChangelogs) ...[ |
||||||
|
Padding( |
||||||
|
padding: const EdgeInsets.fromLTRB(8, 8, 8, 0), |
||||||
|
child: Row( |
||||||
|
crossAxisAlignment: CrossAxisAlignment.center, |
||||||
|
children: [ |
||||||
|
Expanded( |
||||||
|
child: Text( |
||||||
|
log.version.toString(), |
||||||
|
style: FluentTheme.of(context).typography.title, |
||||||
|
), |
||||||
|
), |
||||||
|
if (localChangelog.isNotEmpty && log.version == localChangelog.first.version) |
||||||
|
Container( |
||||||
|
decoration: BoxDecoration( |
||||||
|
border: Border.all( |
||||||
|
color: FluentTheme.of(context).inactiveColor, |
||||||
|
width: 1, |
||||||
|
), |
||||||
|
borderRadius: BorderRadius.circular(20), |
||||||
|
), |
||||||
|
child: Padding( |
||||||
|
padding: const EdgeInsets.all(4), |
||||||
|
child: Text( |
||||||
|
currentVersionText, |
||||||
|
style: const TextStyle( |
||||||
|
inherit: true, |
||||||
|
), |
||||||
|
), |
||||||
|
), |
||||||
|
), |
||||||
|
if (remoteChangelog.isNotEmpty && log.version == remoteChangelog.first.version && (localChangelog.isEmpty || localChangelog.first.version != log.version)) |
||||||
|
Container( |
||||||
|
decoration: BoxDecoration( |
||||||
|
border: Border.all( |
||||||
|
color: Colors.green, |
||||||
|
width: 1, |
||||||
|
), |
||||||
|
borderRadius: BorderRadius.circular(20), |
||||||
|
), |
||||||
|
child: Padding( |
||||||
|
padding: const EdgeInsets.all(4), |
||||||
|
child: Text( |
||||||
|
latestVersionText, |
||||||
|
style: TextStyle( |
||||||
|
inherit: true, |
||||||
|
color: Colors.green, |
||||||
|
), |
||||||
|
), |
||||||
|
), |
||||||
|
), |
||||||
|
if (AboutPageState.download == 'apk' && log.apkLink != null) |
||||||
|
GestureDetector( |
||||||
|
onSecondaryTap: () { |
||||||
|
Clipboard.setData(ClipboardData(text: log.apkLink!.toString())); |
||||||
|
// ScaffoldMessenger.of(context).showSnackBar(const SnackBar( |
||||||
|
// content: Text('Link copied to clipboard'), |
||||||
|
// )); |
||||||
|
}, |
||||||
|
onLongPress: () { |
||||||
|
Clipboard.setData(ClipboardData(text: log.apkLink!.toString())); |
||||||
|
// ScaffoldMessenger.of(context).showSnackBar(const SnackBar( |
||||||
|
// content: Text('Link copied to clipboard'), |
||||||
|
// )); |
||||||
|
}, |
||||||
|
onTap: () { |
||||||
|
launchUrl( |
||||||
|
log.apkLink!, |
||||||
|
mode: LaunchMode.externalApplication, |
||||||
|
); |
||||||
|
}, |
||||||
|
behavior: HitTestBehavior.translucent, |
||||||
|
child: const Tooltip( |
||||||
|
message: 'Download APK', |
||||||
|
child: Padding( |
||||||
|
padding: EdgeInsets.all(4), |
||||||
|
child: Icon(FluentIcons.download), |
||||||
|
), |
||||||
|
), |
||||||
|
), |
||||||
|
], |
||||||
|
), |
||||||
|
), |
||||||
|
Padding( |
||||||
|
padding: const EdgeInsets.all(8.0), |
||||||
|
child: RichText( |
||||||
|
text: TextSpan( |
||||||
|
text: log.description, |
||||||
|
), |
||||||
|
), |
||||||
|
), |
||||||
|
], |
||||||
|
], |
||||||
|
), |
||||||
|
), |
||||||
|
); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,8 @@ |
|||||||
|
[Desktop Entry] |
||||||
|
Type=Application |
||||||
|
Encoding=UTF-8 |
||||||
|
Name=Info Tren |
||||||
|
Comment= |
||||||
|
Exec= |
||||||
|
Icon= |
||||||
|
Terminal=False |
@ -0,0 +1,39 @@ |
|||||||
|
#! /bin/sh |
||||||
|
install_dir="$1" |
||||||
|
if [ -z "$install_dir" ]; then |
||||||
|
echo "Please specify a directory to install InfoTren to." |
||||||
|
echo "Example:" |
||||||
|
echo " $0 ~/infotren" |
||||||
|
exit 3 |
||||||
|
fi |
||||||
|
|
||||||
|
if [ ! -d "$install_dir" ]; then |
||||||
|
if [ -d $(dirname "$install_dir") ]; then |
||||||
|
mkdir "$install_dir" |
||||||
|
else |
||||||
|
echo "$install_dir doesn't exist. Please specify a directory to install InfoTren to." |
||||||
|
echo "Example:" |
||||||
|
echo " $0 ~/infotren" |
||||||
|
exit 1 |
||||||
|
fi |
||||||
|
fi |
||||||
|
|
||||||
|
if [ ! -f ./infotren.desktop ]; then |
||||||
|
if [ -f "$(dirname $0)/infotren.desktop" ]; then |
||||||
|
cd "$(dirname $0)" |
||||||
|
else |
||||||
|
echo "Run this script from inside the infotren directory." |
||||||
|
exit 2 |
||||||
|
fi |
||||||
|
fi |
||||||
|
|
||||||
|
echo "Installing InfoTren to $install_dir" |
||||||
|
cp -r . "$install_dir" |
||||||
|
if [ -z "$XDG_DATA_HOME" ]; then |
||||||
|
XDG_DATA_HOME=~/.local/share |
||||||
|
fi |
||||||
|
if [ ! -d "$XDG_DATA_HOME/applications" ]; then |
||||||
|
mkdir -p "$XDG_DATA_HOME/applications" |
||||||
|
fi |
||||||
|
echo "Installing infotren.desktop to $XDG_DATA_HOME/applications/infotren.desktop" |
||||||
|
cat infotren.desktop | sed "s|Exec=|Exec=$install_dir/info_tren|g" > "$XDG_DATA_HOME/applications/infotren.desktop" |
Loading…
Reference in new issue