Settings
This commit is contained in:
parent
9bf0a9520f
commit
2edfa54973
|
|
@ -3,6 +3,7 @@ import 'package:flutter/gestures.dart';
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:invoiceninja_flutter/redux/app/app_actions.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/debug/state_inspector.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/icon_text.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/resources/cached_image.dart';
|
||||
import 'package:invoiceninja_flutter/utils/pdf.dart';
|
||||
|
|
@ -220,7 +221,9 @@ class MenuDrawer extends StatelessWidget {
|
|||
],
|
||||
)),
|
||||
Align(
|
||||
child: SidebarFooter(),
|
||||
child: state.prefState.isMenuCollapsed
|
||||
? SidebarFooterCollapsed()
|
||||
: SidebarFooter(),
|
||||
alignment: Alignment(0, 1),
|
||||
),
|
||||
],
|
||||
|
|
@ -313,51 +316,6 @@ class SidebarFooter extends StatelessWidget {
|
|||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final state = StoreProvider.of<AppState>(context).state;
|
||||
final localization = AppLocalization.of(context);
|
||||
final ThemeData themeData = Theme.of(context);
|
||||
final TextStyle aboutTextStyle = themeData.textTheme.body2;
|
||||
final TextStyle linkStyle =
|
||||
themeData.textTheme.body2.copyWith(color: themeData.accentColor);
|
||||
|
||||
void showAbout() {
|
||||
showAboutDialog(
|
||||
context: context,
|
||||
applicationName: 'Invoice Ninja',
|
||||
applicationIcon: Image.asset(
|
||||
'assets/images/logo.png',
|
||||
width: 40.0,
|
||||
height: 40.0,
|
||||
),
|
||||
applicationVersion: 'Version: $kAppVersion',
|
||||
applicationLegalese: '© ${DateTime.now().year} Invoice Ninja',
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(top: 24.0),
|
||||
child: RichText(
|
||||
text: TextSpan(
|
||||
children: <TextSpan>[
|
||||
TextSpan(
|
||||
style: aboutTextStyle,
|
||||
text: localization.thankYouForUsingOurApp +
|
||||
'\n\n' +
|
||||
localization.ifYouLikeIt,
|
||||
),
|
||||
_LinkTextSpan(
|
||||
style: linkStyle,
|
||||
url: getAppURL(context),
|
||||
text: ' ' + localization.clickHere + ' ',
|
||||
),
|
||||
TextSpan(
|
||||
style: aboutTextStyle,
|
||||
text: localization.toRateIt,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
return Container(
|
||||
color: Theme.of(context).bottomAppBarColor,
|
||||
|
|
@ -376,9 +334,14 @@ class SidebarFooter extends StatelessWidget {
|
|||
icon: Icon(Icons.help_outline),
|
||||
onPressed: () => launch('https://docs.invoiceninja.com'),
|
||||
),
|
||||
IconButton(
|
||||
icon: Icon(Icons.group),
|
||||
onPressed: () =>
|
||||
launch('https://www.invoiceninja.com/forums/forum/support'),
|
||||
),
|
||||
IconButton(
|
||||
icon: Icon(Icons.info_outline),
|
||||
onPressed: () => showAbout(),
|
||||
onPressed: () => _showAbout(context),
|
||||
),
|
||||
if (kDebugMode)
|
||||
IconButton(
|
||||
|
|
@ -430,3 +393,96 @@ class SidebarFooter extends StatelessWidget {
|
|||
);
|
||||
}
|
||||
}
|
||||
|
||||
class SidebarFooterCollapsed extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final localization = AppLocalization.of(context);
|
||||
return PopupMenuButton<String>(
|
||||
icon: Icon(Icons.info_outline),
|
||||
onSelected: (value) {
|
||||
if (value == localization.about) {
|
||||
_showAbout(context);
|
||||
}
|
||||
},
|
||||
itemBuilder: (BuildContext context) => [
|
||||
PopupMenuItem<String>(
|
||||
child: ListTile(
|
||||
leading: Icon(Icons.mail),
|
||||
title: Text(localization.contactUs),
|
||||
),
|
||||
value: localization.contactUs,
|
||||
),
|
||||
PopupMenuItem<String>(
|
||||
child: ListTile(
|
||||
leading: Icon(Icons.help_outline),
|
||||
title: Text(localization.documentation),
|
||||
),
|
||||
value: localization.documentation,
|
||||
),
|
||||
PopupMenuItem<String>(
|
||||
child: ListTile(
|
||||
leading: Icon(Icons.group),
|
||||
title: Text(localization.supportForum),
|
||||
),
|
||||
value: localization.supportForum,
|
||||
),
|
||||
PopupMenuItem<String>(
|
||||
child: ListTile(
|
||||
leading: Icon(Icons.info_outline),
|
||||
title: Text(localization.about),
|
||||
),
|
||||
value: localization.about,
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void _showAbout(BuildContext context) {
|
||||
|
||||
final localization = AppLocalization.of(context);
|
||||
final ThemeData themeData = Theme.of(context);
|
||||
final TextStyle aboutTextStyle = themeData.textTheme.body2;
|
||||
final TextStyle linkStyle =
|
||||
themeData.textTheme.body2.copyWith(color: themeData.accentColor);
|
||||
|
||||
|
||||
showAboutDialog(
|
||||
context: context,
|
||||
applicationName: 'Invoice Ninja',
|
||||
applicationIcon: Image.asset(
|
||||
'assets/images/logo.png',
|
||||
width: 40.0,
|
||||
height: 40.0,
|
||||
),
|
||||
applicationVersion: 'Version: $kAppVersion',
|
||||
applicationLegalese: '© ${DateTime.now().year} Invoice Ninja',
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(top: 24.0),
|
||||
child: RichText(
|
||||
text: TextSpan(
|
||||
children: <TextSpan>[
|
||||
TextSpan(
|
||||
style: aboutTextStyle,
|
||||
text: localization.thankYouForUsingOurApp +
|
||||
'\n\n' +
|
||||
localization.ifYouLikeIt,
|
||||
),
|
||||
_LinkTextSpan(
|
||||
style: linkStyle,
|
||||
url: getAppURL(context),
|
||||
text: ' ' + localization.clickHere + ' ',
|
||||
),
|
||||
TextSpan(
|
||||
style: aboutTextStyle,
|
||||
text: localization.toRateIt,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,6 +14,10 @@ abstract class LocaleCodeAware {
|
|||
mixin LocalizationsProvider on LocaleCodeAware {
|
||||
static final Map<String, Map<String, String>> _localizedValues = {
|
||||
'en': {
|
||||
'support_forum': 'Support Forum',
|
||||
'about': 'About',
|
||||
'documentation': 'Documentation',
|
||||
'contact_us': 'Contact Us',
|
||||
'subtotal': 'Subtotal',
|
||||
'line_total': 'Line Total',
|
||||
'item': 'Item',
|
||||
|
|
@ -15851,6 +15855,15 @@ mixin LocalizationsProvider on LocaleCodeAware {
|
|||
|
||||
String get subtotal => _localizedValues[localeCode]['subtotal'];
|
||||
|
||||
String get contactUs => _localizedValues[localeCode]['contact_us'];
|
||||
|
||||
String get documentation => _localizedValues[localeCode]['documentation'];
|
||||
|
||||
String get about => _localizedValues[localeCode]['about'];
|
||||
|
||||
String get supportForum => _localizedValues[localeCode]['support_forum'];
|
||||
|
||||
|
||||
String lookup(String key) {
|
||||
final lookupKey = toSnakeCase(key);
|
||||
return _localizedValues[localeCode][lookupKey] ??
|
||||
|
|
|
|||
Loading…
Reference in New Issue