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), + ))) ])))))); }); }); diff --git a/lib/views/contactsview.dart b/lib/views/contactsview.dart index a6e51512..719336cd 100644 --- a/lib/views/contactsview.dart +++ b/lib/views/contactsview.dart @@ -254,61 +254,86 @@ 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, - 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() - ]), SizedBox( height: 20, ), - Row(mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ - Spacer(), - Expanded( + Expanded( child: Tooltip( - message: groupsEnabled ? AppLocalizations.of(context)!.addServerTooltip : AppLocalizations.of(context)!.thisFeatureRequiresGroupExpermientsToBeEnabled, + message: AppLocalizations.of(context)!.tooltipAddContact, 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)!.addContact, + semanticsLabel: AppLocalizations.of(context)!.addContact, + textAlign: TextAlign.center, + style: TextStyle(fontWeight: FontWeight.bold), + ), + onPressed: () { + _pushAddContact(false); + }, + ))), + SizedBox( + height: 20, + ), + 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, + style: TextStyle(fontWeight: FontWeight.bold), + ), + onPressed: groupsEnabled + ? () { + _pushAddContact(false); + } + : null, + )), + ), + SizedBox( + height: 20, + ), + Expanded( + child: Tooltip( + message: groupsEnabled ? AppLocalizations.of(context)!.createGroupTitle : 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)!.createGroupTitle, + semanticsLabel: AppLocalizations.of(context)!.createGroupTitle, + textAlign: TextAlign.center, + style: TextStyle(fontWeight: FontWeight.bold), + ), 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/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))); } 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, + ), ], ))), )));