From 63edb15a1a3912d70cd5a05cf7ae54c8e4eeba6f Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Wed, 30 Oct 2019 21:19:05 +0200 Subject: [PATCH] Settings --- lib/ui/client/view/client_view_details.dart | 41 +------------------- lib/ui/user/view/user_view.dart | 34 +++++++++++------ lib/ui/vendor/view/vendor_view_details.dart | 42 +-------------------- 3 files changed, 24 insertions(+), 93 deletions(-) diff --git a/lib/ui/client/view/client_view_details.dart b/lib/ui/client/view/client_view_details.dart index cf8b76bd8..9bc7558d5 100644 --- a/lib/ui/client/view/client_view_details.dart +++ b/lib/ui/client/view/client_view_details.dart @@ -1,8 +1,8 @@ import 'dart:async'; import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; +import 'package:invoiceninja_flutter/ui/app/lists/app_list_tile.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart'; @@ -171,42 +171,3 @@ class _ClientViewDetailsState extends State { } } -class AppListTile extends StatelessWidget { - const AppListTile({ - this.icon, - this.title, - this.subtitle, - this.dense = false, - this.onTap, - this.copyValue, - }); - - final IconData icon; - final String title; - final String subtitle; - final bool dense; - final Function onTap; - final String copyValue; - - @override - Widget build(BuildContext context) { - return Material( - color: Theme.of(context).canvasColor, - child: ListTile( - contentPadding: EdgeInsets.only(left: 12.0, top: 8.0, bottom: 8.0), - leading: Icon(icon), - title: Text(title), - subtitle: subtitle == null ? Container() : Text(subtitle), - dense: dense, - onTap: onTap, - onLongPress: () { - Clipboard.setData(ClipboardData(text: copyValue ?? title)); - Scaffold.of(context).showSnackBar(SnackBar( - content: Text(AppLocalization.of(context) - .copiedToClipboard - .replaceFirst(':value', copyValue ?? title)))); - }, - ), - ); - } -} diff --git a/lib/ui/user/view/user_view.dart b/lib/ui/user/view/user_view.dart index 41829a68d..a0fb6162a 100644 --- a/lib/ui/user/view/user_view.dart +++ b/lib/ui/user/view/user_view.dart @@ -5,13 +5,14 @@ import 'package:invoiceninja_flutter/redux/invoice/invoice_selectors.dart'; import 'package:invoiceninja_flutter/ui/app/actions_menu_button.dart'; import 'package:invoiceninja_flutter/ui/app/buttons/edit_icon_button.dart'; import 'package:invoiceninja_flutter/ui/app/entities/entity_state_title.dart'; +import 'package:invoiceninja_flutter/ui/app/lists/app_list_tile.dart'; import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart'; import 'package:invoiceninja_flutter/ui/user/view/user_view_vm.dart'; import 'package:flutter/material.dart'; -import 'package:invoiceninja_flutter/ui/app/two_value_header.dart'; import 'package:invoiceninja_flutter/utils/icons.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart'; +import 'package:url_launcher/url_launcher.dart'; class UserView extends StatelessWidget { const UserView({ @@ -32,17 +33,17 @@ class UserView extends StatelessWidget { appBar: AppBar( leading: !isMobile(context) ? IconButton( - icon: Icon(Icons.arrow_back), - onPressed: viewModel.onBackPressed, - ) + icon: Icon(Icons.arrow_back), + onPressed: viewModel.onBackPressed, + ) : null, title: EntityStateTitle(entity: user), actions: [ userCompany.canEditEntity(user) ? EditIconButton( - isVisible: !(user.isDeleted ?? false), // TODO remove this - onPressed: () => viewModel.onEditPressed(context), - ) + isVisible: !(user.isDeleted ?? false), // TODO remove this + onPressed: () => viewModel.onEditPressed(context), + ) : Container(), ActionMenuButton( entityActions: user.getActions(userCompany: userCompany), @@ -54,12 +55,21 @@ class UserView extends StatelessWidget { ), body: ListView( children: [ + AppListTile( + icon: Icons.email, + title: user.email, + copyValue: user.email, + subtitle: localization.email, + onTap: () => launch('mailto:' + user.email), + ), + /* TwoValueHeader( label1: localization.paidToDate, value1: '', label2: localization.balanceDue, value2: '', ), + */ Divider( height: 1.0, ), @@ -165,11 +175,11 @@ class UserView extends StatelessWidget { class EntityListTile extends StatelessWidget { const EntityListTile( {this.icon, - this.onTap, - this.onLongPress, - this.title, - this.subtitle, - this.bottomPadding = 12}); + this.onTap, + this.onLongPress, + this.title, + this.subtitle, + this.bottomPadding = 12}); final Function onTap; final Function onLongPress; diff --git a/lib/ui/vendor/view/vendor_view_details.dart b/lib/ui/vendor/view/vendor_view_details.dart index c60e2cf0d..5ea8bee53 100644 --- a/lib/ui/vendor/view/vendor_view_details.dart +++ b/lib/ui/vendor/view/vendor_view_details.dart @@ -1,7 +1,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; +import 'package:invoiceninja_flutter/ui/app/lists/app_list_tile.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart'; @@ -154,43 +154,3 @@ class _VendorViewDetailsState extends State { ); } } - -class AppListTile extends StatelessWidget { - const AppListTile({ - this.icon, - this.title, - this.subtitle, - this.dense = false, - this.onTap, - this.copyValue, - }); - - final IconData icon; - final String title; - final String subtitle; - final bool dense; - final Function onTap; - final String copyValue; - - @override - Widget build(BuildContext context) { - return Material( - color: Theme.of(context).canvasColor, - child: ListTile( - contentPadding: EdgeInsets.only(left: 12.0, top: 8.0, bottom: 8.0), - leading: Icon(icon), - title: Text(title), - subtitle: subtitle == null ? Container() : Text(subtitle), - dense: dense, - onTap: onTap, - onLongPress: () { - Clipboard.setData(ClipboardData(text: copyValue ?? title)); - Scaffold.of(context).showSnackBar(SnackBar( - content: Text(AppLocalization.of(context) - .copiedToClipboard - .replaceFirst(':value', copyValue ?? title)))); - }, - ), - ); - } -}