From c3848553d72ef9d5df9b7c60497e87047a1708b0 Mon Sep 17 00:00:00 2001 From: Sarah Jamie Lewis Date: Thu, 9 Jun 2022 13:49:15 -0700 Subject: [PATCH 1/5] Bugfix when resizing app when menu is open --- lib/views/messageview.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/views/messageview.dart b/lib/views/messageview.dart index 93003515..7c029a11 100644 --- a/lib/views/messageview.dart +++ b/lib/views/messageview.dart @@ -81,7 +81,7 @@ class _MessageViewState extends State { @override Widget build(BuildContext context) { // After leaving a conversation the selected conversation is set to null... - if (Provider.of(context).profileOnion == "") { + if (Provider.of(context, listen: false).profileOnion == "") { return Card(child: Center(child: Text(AppLocalizations.of(context)!.addContactFirst))); } From 84299076506d61b9caab4059f66ae35f7c6a97d2 Mon Sep 17 00:00:00 2001 From: Sarah Jamie Lewis Date: Thu, 9 Jun 2022 14:26:02 -0700 Subject: [PATCH 2/5] modal menus design fixes --- lib/views/contactsview.dart | 92 +++++++++++++++++++---------------- lib/views/profilemgrview.dart | 91 ++++++++++++++++++++-------------- 2 files changed, 104 insertions(+), 79 deletions(-) diff --git a/lib/views/contactsview.dart b/lib/views/contactsview.dart index a6e51512..d5ed01d2 100644 --- a/lib/views/contactsview.dart +++ b/lib/views/contactsview.dart @@ -257,58 +257,66 @@ class _ContactsViewState extends State { padding: EdgeInsets.all(10.0), child: Column( mainAxisAlignment: MainAxisAlignment.center, - mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, children: [ - Row(mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ - Spacer(), - Expanded( - child: Tooltip( - message: AppLocalizations.of(context)!.tooltipAddContact, - child: ElevatedButton( - child: Text(AppLocalizations.of(context)!.addContact, semanticsLabel: AppLocalizations.of(context)!.addContact), - onPressed: () { - _pushAddContact(false); - }, - ))), - Spacer() - ]), + Expanded( + child: Tooltip( + message: AppLocalizations.of(context)!.tooltipAddContact, + child: ElevatedButton( + style: ElevatedButton.styleFrom( + minimumSize: Size.fromWidth(double.infinity), + maximumSize: Size.fromWidth(400), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.horizontal(left: Radius.circular(180), right: Radius.circular(180))), + ), + child: Text( + AppLocalizations.of(context)!.addContact, + semanticsLabel: AppLocalizations.of(context)!.addContact, + textAlign: TextAlign.center, + ), + onPressed: () { + _pushAddContact(false); + }, + ))), SizedBox( height: 20, ), - Row(mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ - Spacer(), - Expanded( + Expanded( + child: Tooltip( + message: groupsEnabled ? AppLocalizations.of(context)!.addServerTooltip : AppLocalizations.of(context)!.thisFeatureRequiresGroupExpermientsToBeEnabled, + child: ElevatedButton( + style: ElevatedButton.styleFrom( + minimumSize: Size.fromWidth(double.infinity), + maximumSize: Size.fromWidth(400), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.horizontal(left: Radius.circular(180), right: Radius.circular(180))), + ), + child: Text(AppLocalizations.of(context)!.addServerTitle, semanticsLabel: AppLocalizations.of(context)!.addServerTitle, textAlign: TextAlign.center), + onPressed: groupsEnabled + ? () { + _pushAddContact(false); + } + : null, + )), + ), + SizedBox( + height: 20, + ), + Expanded( child: Tooltip( - message: groupsEnabled ? AppLocalizations.of(context)!.addServerTooltip : AppLocalizations.of(context)!.thisFeatureRequiresGroupExpermientsToBeEnabled, + message: groupsEnabled ? AppLocalizations.of(context)!.createGroupTitle : AppLocalizations.of(context)!.thisFeatureRequiresGroupExpermientsToBeEnabled, child: ElevatedButton( - child: Text(AppLocalizations.of(context)!.addServerTitle, semanticsLabel: AppLocalizations.of(context)!.addServerTitle), + style: ElevatedButton.styleFrom( + minimumSize: Size.fromWidth(double.infinity), + maximumSize: Size.fromWidth(400), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.horizontal(left: Radius.circular(180), right: Radius.circular(180))), + ), + child: Text(AppLocalizations.of(context)!.createGroupTitle, semanticsLabel: AppLocalizations.of(context)!.createGroupTitle, textAlign: TextAlign.center), onPressed: groupsEnabled ? () { - _pushAddContact(false); + _pushAddContact(true); } : null, - )), - ), - Spacer() - ]), - SizedBox( - height: 20, - ), - Row(mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ - Spacer(), - Expanded( - child: Tooltip( - message: groupsEnabled ? AppLocalizations.of(context)!.createGroupTitle : AppLocalizations.of(context)!.thisFeatureRequiresGroupExpermientsToBeEnabled, - child: ElevatedButton( - child: Text(AppLocalizations.of(context)!.createGroupTitle, semanticsLabel: AppLocalizations.of(context)!.createGroupTitle), - onPressed: groupsEnabled - ? () { - _pushAddContact(true); - } - : null, - ))), - Spacer() - ]), + ))), ], ))), ))); diff --git a/lib/views/profilemgrview.dart b/lib/views/profilemgrview.dart index 1d48ff0c..0212d72e 100644 --- a/lib/views/profilemgrview.dart +++ b/lib/views/profilemgrview.dart @@ -194,49 +194,66 @@ class _ProfileMgrViewState extends State { padding: EdgeInsets.all(10.0), child: Column( mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, mainAxisSize: MainAxisSize.min, children: [ - Row(mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ - Spacer(), - Expanded( - child: ElevatedButton( - child: Text(AppLocalizations.of(context)!.addProfileTitle, semanticsLabel: AppLocalizations.of(context)!.addProfileTitle), - onPressed: () { - _pushAddProfile(context); - }, - )), - Spacer() - ]), SizedBox( height: 20, ), - Row(mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ - Spacer(), - Expanded( - child: Tooltip( - message: AppLocalizations.of(context)!.importProfileTooltip, - child: ElevatedButton( - child: Text(AppLocalizations.of(context)!.importProfile, semanticsLabel: AppLocalizations.of(context)!.importProfile), - onPressed: () { - // 10GB profiles should be enough for anyone? - showFilePicker(context, MaxGeneralFileSharingSize, (file) { - showPasswordDialog(context, AppLocalizations.of(context)!.importProfile, AppLocalizations.of(context)!.importProfile, (password) { - Navigator.popUntil(context, (route) => route.isFirst); - Provider.of(context, listen: false).cwtch.ImportProfile(file.path, password).then((value) { - if (value == "") { - final snackBar = SnackBar(content: Text(AppLocalizations.of(context)!.successfullyImportedProfile.replaceFirst("%profile", file.path))); - ScaffoldMessenger.of(context).showSnackBar(snackBar); - } else { - final snackBar = SnackBar(content: Text(AppLocalizations.of(context)!.failedToImportProfile)); - ScaffoldMessenger.of(context).showSnackBar(snackBar); - } - }); + Expanded( + child: ElevatedButton( + style: ElevatedButton.styleFrom( + minimumSize: Size(double.infinity, 20), + maximumSize: Size(400, 20), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.horizontal(left: Radius.circular(180), right: Radius.circular(180))), + ), + child: Text( + AppLocalizations.of(context)!.addProfileTitle, + semanticsLabel: AppLocalizations.of(context)!.addProfileTitle, + style: TextStyle(fontWeight: FontWeight.bold), + ), + onPressed: () { + _pushAddProfile(context); + }, + )), + SizedBox( + height: 20, + ), + Expanded( + child: Tooltip( + message: AppLocalizations.of(context)!.importProfileTooltip, + child: ElevatedButton( + style: ElevatedButton.styleFrom( + minimumSize: Size(double.infinity, 20), + maximumSize: Size(400, 20), + shape: RoundedRectangleBorder( + side: BorderSide(color: Provider.of(context).theme.defaultButtonActiveColor, width: 2.0), + borderRadius: BorderRadius.horizontal(left: Radius.circular(180), right: Radius.circular(180))), + primary: Provider.of(context).theme.backgroundMainColor, + ), + child: + Text(AppLocalizations.of(context)!.importProfile, semanticsLabel: AppLocalizations.of(context)!.importProfile, style: TextStyle(fontWeight: FontWeight.bold)), + onPressed: () { + // 10GB profiles should be enough for anyone? + showFilePicker(context, MaxGeneralFileSharingSize, (file) { + showPasswordDialog(context, AppLocalizations.of(context)!.importProfile, AppLocalizations.of(context)!.importProfile, (password) { + Navigator.popUntil(context, (route) => route.isFirst); + Provider.of(context, listen: false).cwtch.ImportProfile(file.path, password).then((value) { + if (value == "") { + final snackBar = SnackBar(content: Text(AppLocalizations.of(context)!.successfullyImportedProfile.replaceFirst("%profile", file.path))); + ScaffoldMessenger.of(context).showSnackBar(snackBar); + } else { + final snackBar = SnackBar(content: Text(AppLocalizations.of(context)!.failedToImportProfile)); + ScaffoldMessenger.of(context).showSnackBar(snackBar); + } }); - }, () {}, () {}); - }, - ))), - Spacer() - ]), + }); + }, () {}, () {}); + }, + ))), + SizedBox( + height: 20, + ), ], ))), ))); From 6d42f2c76c7d4d26ef890c022c474b5c445c6ace Mon Sep 17 00:00:00 2001 From: Sarah Jamie Lewis Date: Thu, 9 Jun 2022 14:28:24 -0700 Subject: [PATCH 3/5] make text bold and add additional padding to contacts modal --- lib/views/contactsview.dart | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/lib/views/contactsview.dart b/lib/views/contactsview.dart index d5ed01d2..7c389e02 100644 --- a/lib/views/contactsview.dart +++ b/lib/views/contactsview.dart @@ -260,6 +260,9 @@ class _ContactsViewState extends State { crossAxisAlignment: CrossAxisAlignment.center, mainAxisSize: MainAxisSize.max, children: [ + SizedBox( + height: 20, + ), Expanded( child: Tooltip( message: AppLocalizations.of(context)!.tooltipAddContact, @@ -273,6 +276,7 @@ class _ContactsViewState extends State { AppLocalizations.of(context)!.addContact, semanticsLabel: AppLocalizations.of(context)!.addContact, textAlign: TextAlign.center, + style: TextStyle(fontWeight: FontWeight.bold), ), onPressed: () { _pushAddContact(false); @@ -290,7 +294,12 @@ class _ContactsViewState extends State { maximumSize: Size.fromWidth(400), shape: RoundedRectangleBorder(borderRadius: BorderRadius.horizontal(left: Radius.circular(180), right: Radius.circular(180))), ), - child: Text(AppLocalizations.of(context)!.addServerTitle, semanticsLabel: AppLocalizations.of(context)!.addServerTitle, textAlign: TextAlign.center), + child: Text( + AppLocalizations.of(context)!.addServerTitle, + semanticsLabel: AppLocalizations.of(context)!.addServerTitle, + textAlign: TextAlign.center, + style: TextStyle(fontWeight: FontWeight.bold), + ), onPressed: groupsEnabled ? () { _pushAddContact(false); @@ -310,13 +319,21 @@ class _ContactsViewState extends State { maximumSize: Size.fromWidth(400), shape: RoundedRectangleBorder(borderRadius: BorderRadius.horizontal(left: Radius.circular(180), right: Radius.circular(180))), ), - child: Text(AppLocalizations.of(context)!.createGroupTitle, semanticsLabel: AppLocalizations.of(context)!.createGroupTitle, textAlign: TextAlign.center), + child: Text( + AppLocalizations.of(context)!.createGroupTitle, + semanticsLabel: AppLocalizations.of(context)!.createGroupTitle, + textAlign: TextAlign.center, + style: TextStyle(fontWeight: FontWeight.bold), + ), onPressed: groupsEnabled ? () { _pushAddContact(true); } : null, ))), + SizedBox( + height: 20, + ), ], ))), ))); From be8646e80531f49ef7e2c54343037019b2db42e5 Mon Sep 17 00:00:00 2001 From: Sarah Jamie Lewis Date: Thu, 9 Jun 2022 14:30:38 -0700 Subject: [PATCH 4/5] fix padding --- lib/views/contactsview.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/views/contactsview.dart b/lib/views/contactsview.dart index 7c389e02..719336cd 100644 --- a/lib/views/contactsview.dart +++ b/lib/views/contactsview.dart @@ -254,7 +254,7 @@ class _ContactsViewState extends State { height: 200, // bespoke value courtesy of the [TextField] docs child: Center( child: Padding( - padding: EdgeInsets.all(10.0), + padding: EdgeInsets.all(2.0), child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, From d1e8f71290cd6c8da92c719f94de9283ebd99a27 Mon Sep 17 00:00:00 2001 From: Sarah Jamie Lewis Date: Thu, 9 Jun 2022 14:54:48 -0700 Subject: [PATCH 5/5] fixes for profile buttons --- lib/views/addeditprofileview.dart | 118 ++++++++++++++++-------------- 1 file changed, 64 insertions(+), 54 deletions(-) diff --git a/lib/views/addeditprofileview.dart b/lib/views/addeditprofileview.dart index 7caa717f..e3c196d9 100644 --- a/lib/views/addeditprofileview.dart +++ b/lib/views/addeditprofileview.dart @@ -87,7 +87,7 @@ class _AddEditProfileViewState extends State { child: Container( margin: EdgeInsets.all(30), padding: EdgeInsets.all(20), - child: Column(mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.stretch, children: [ + child: Column(mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.center, children: [ Visibility( visible: Provider.of(context).onion.isNotEmpty, child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [ @@ -127,6 +127,9 @@ class _AddEditProfileViewState extends State { badgeEdit: Provider.of(context).isExperimentEnabled(ImagePreviewsExperiment)))) ])), Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ + SizedBox( + height: 20, + ), CwtchLabel(label: AppLocalizations.of(context)!.displayNameLabel), SizedBox( height: 20, @@ -273,64 +276,71 @@ class _AddEditProfileViewState extends State { SizedBox( height: 20, ), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Expanded( - child: ElevatedButton( - onPressed: _createPressed, - child: Text( - Provider.of(context).onion.isEmpty ? AppLocalizations.of(context)!.addNewProfileBtn : AppLocalizations.of(context)!.saveProfileBtn, - textAlign: TextAlign.center, - ), - ), - ), - ], + ElevatedButton( + onPressed: _createPressed, + style: ElevatedButton.styleFrom( + minimumSize: Size(400, 50), + maximumSize: Size(800, 50), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.horizontal(left: Radius.circular(180), right: Radius.circular(180))), + ), + child: Text( + Provider.of(context).onion.isEmpty ? AppLocalizations.of(context)!.addNewProfileBtn : AppLocalizations.of(context)!.saveProfileBtn, + textAlign: TextAlign.center, + ), + ), + SizedBox( + height: 20, ), Visibility( visible: Provider.of(context, listen: false).onion.isNotEmpty, - child: Column(mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.end, children: [ - SizedBox( - height: 20, - ), - Tooltip( - message: AppLocalizations.of(context)!.exportProfileTooltip, - child: ElevatedButton.icon( - onPressed: () { - if (Platform.isAndroid) { - Provider.of(context, listen: false).cwtch.ExportProfile(ctrlrOnion.value.text, ctrlrOnion.value.text + ".tar.gz"); - final snackBar = SnackBar(content: Text(AppLocalizations.of(context)!.fileSavedTo + " " + ctrlrOnion.value.text + ".tar.gz")); - ScaffoldMessenger.of(context).showSnackBar(snackBar); - } else { - showCreateFilePicker(context).then((name) { - if (name != null) { - Provider.of(context, listen: false).cwtch.ExportProfile(ctrlrOnion.value.text, name); - final snackBar = SnackBar(content: Text(AppLocalizations.of(context)!.fileSavedTo + " " + name)); - ScaffoldMessenger.of(context).showSnackBar(snackBar); - } - }); - } - }, - icon: Icon(Icons.import_export), - label: Text(AppLocalizations.of(context)!.exportProfile), - )) - ])), + child: Tooltip( + message: AppLocalizations.of(context)!.exportProfileTooltip, + child: ElevatedButton.icon( + style: ElevatedButton.styleFrom( + minimumSize: Size(400, 50), + maximumSize: Size(800, 50), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.horizontal(left: Radius.circular(180), right: Radius.circular(180))), + ), + onPressed: () { + if (Platform.isAndroid) { + Provider.of(context, listen: false).cwtch.ExportProfile(ctrlrOnion.value.text, ctrlrOnion.value.text + ".tar.gz"); + final snackBar = SnackBar(content: Text(AppLocalizations.of(context)!.fileSavedTo + " " + ctrlrOnion.value.text + ".tar.gz")); + ScaffoldMessenger.of(context).showSnackBar(snackBar); + } else { + showCreateFilePicker(context).then((name) { + if (name != null) { + Provider.of(context, listen: false).cwtch.ExportProfile(ctrlrOnion.value.text, name); + final snackBar = SnackBar(content: Text(AppLocalizations.of(context)!.fileSavedTo + " " + name)); + ScaffoldMessenger.of(context).showSnackBar(snackBar); + } + }); + } + }, + icon: Icon(Icons.import_export), + label: Text(AppLocalizations.of(context)!.exportProfile), + ))), + SizedBox( + height: 20, + ), Visibility( visible: Provider.of(context, listen: false).onion.isNotEmpty, - child: Column(mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.end, children: [ - SizedBox( - height: 20, - ), - Tooltip( - message: AppLocalizations.of(context)!.enterCurrentPasswordForDelete, - child: ElevatedButton.icon( - onPressed: () { - showAlertDialog(context); - }, - icon: Icon(Icons.delete_forever), - label: Text(AppLocalizations.of(context)!.deleteBtn), - )) - ])) + child: Tooltip( + message: AppLocalizations.of(context)!.enterCurrentPasswordForDelete, + child: ElevatedButton.icon( + style: ElevatedButton.styleFrom( + minimumSize: Size(400, 50), + maximumSize: Size(800, 50), + shape: RoundedRectangleBorder( + side: BorderSide(color: Provider.of(context).theme.defaultButtonActiveColor, width: 2.0), + borderRadius: BorderRadius.horizontal(left: Radius.circular(180), right: Radius.circular(180))), + primary: Provider.of(context).theme.backgroundMainColor, + ), + onPressed: () { + showAlertDialog(context); + }, + icon: Icon(Icons.delete_forever), + label: Text(AppLocalizations.of(context)!.deleteBtn), + ))) ])))))); }); });