Merge pull request #3844 from grummbeer/unify-dialog-tiles
Dialogs Mobile. Cleanup dialogs with radio/checkbox tiles.
This commit is contained in:
		
						commit
						623bd7cba5
					
				| @ -1154,25 +1154,32 @@ class AndroidPermissionManager { | |||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // TODO move this to mobile/widgets. | ||||||
|  | // Used only for mobile, pages remote, settings, dialog | ||||||
|  | // TODO remove argument contentPadding, it’s not used, getToggle() has not | ||||||
| RadioListTile<T> getRadio<T>( | RadioListTile<T> getRadio<T>( | ||||||
|     String name, T toValue, T curValue, void Function(T?) onChange, |     String name, T toValue, T curValue, void Function(T?) onChange, | ||||||
|     {EdgeInsetsGeometry? contentPadding}) { |     {EdgeInsetsGeometry? contentPadding}) { | ||||||
|   return RadioListTile<T>( |   return RadioListTile<T>( | ||||||
|     contentPadding: contentPadding, |     contentPadding: contentPadding ?? EdgeInsets.zero, | ||||||
|  |     visualDensity: VisualDensity.compact, | ||||||
|     controlAffinity: ListTileControlAffinity.trailing, |     controlAffinity: ListTileControlAffinity.trailing, | ||||||
|     title: Text(translate(name)), |     title: Text(translate(name)), | ||||||
|     value: toValue, |     value: toValue, | ||||||
|     groupValue: curValue, |     groupValue: curValue, | ||||||
|     onChanged: onChange, |     onChanged: onChange, | ||||||
|     dense: true, |  | ||||||
|   ); |   ); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // TODO move this to mobile/widgets. | ||||||
|  | // Used only for mobile, pages remote, settings, dialog | ||||||
| CheckboxListTile getToggle( | CheckboxListTile getToggle( | ||||||
|     String id, void Function(void Function()) setState, option, name, |     String id, void Function(void Function()) setState, option, name, | ||||||
|     {FFI? ffi}) { |     {FFI? ffi}) { | ||||||
|   final opt = bind.sessionGetToggleOptionSync(id: id, arg: option); |   final opt = bind.sessionGetToggleOptionSync(id: id, arg: option); | ||||||
|   return CheckboxListTile( |   return CheckboxListTile( | ||||||
|  |       contentPadding: EdgeInsets.zero, | ||||||
|  |       visualDensity: VisualDensity.compact, | ||||||
|       value: opt, |       value: opt, | ||||||
|       onChanged: (v) { |       onChanged: (v) { | ||||||
|         setState(() { |         setState(() { | ||||||
| @ -1182,7 +1189,6 @@ CheckboxListTile getToggle( | |||||||
|           (ffi ?? gFFI).qualityMonitorModel.checkShowQualityMonitor(id); |           (ffi ?? gFFI).qualityMonitorModel.checkShowQualityMonitor(id); | ||||||
|         } |         } | ||||||
|       }, |       }, | ||||||
|       dense: true, |  | ||||||
|       title: Text(translate(name))); |       title: Text(translate(name))); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -696,10 +696,8 @@ class _RemotePageState extends State<RemotePage> { | |||||||
|   //     return CustomAlertDialog( |   //     return CustomAlertDialog( | ||||||
|   //         title: Text(translate('Physical Keyboard Input Mode')), |   //         title: Text(translate('Physical Keyboard Input Mode')), | ||||||
|   //         content: Column(mainAxisSize: MainAxisSize.min, children: [ |   //         content: Column(mainAxisSize: MainAxisSize.min, children: [ | ||||||
|   //           getRadio('Legacy mode', 'legacy', current, setMode, |   //           getRadio('Legacy mode', 'legacy', current, setMode), | ||||||
|   //               contentPadding: EdgeInsets.zero), |   //           getRadio('Map mode', 'map', current, setMode), | ||||||
|   //           getRadio('Map mode', 'map', current, setMode, |  | ||||||
|   //               contentPadding: EdgeInsets.zero), |  | ||||||
|   //         ])); |   //         ])); | ||||||
|   //   }, clickMaskDismiss: true); |   //   }, clickMaskDismiss: true); | ||||||
|   // } |   // } | ||||||
| @ -1069,7 +1067,6 @@ void showOptions( | |||||||
|       content: Column( |       content: Column( | ||||||
|           mainAxisSize: MainAxisSize.min, |           mainAxisSize: MainAxisSize.min, | ||||||
|           children: displays + radios + toggles + more), |           children: displays + radios + toggles + more), | ||||||
|       contentPadding: 0, |  | ||||||
|     ); |     ); | ||||||
|   }, clickMaskDismiss: true, backDismiss: true); |   }, clickMaskDismiss: true, backDismiss: true); | ||||||
| } | } | ||||||
|  | |||||||
| @ -502,19 +502,18 @@ void showLanguageSettings(OverlayDialogManager dialogManager) async { | |||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
|       return CustomAlertDialog( |       return CustomAlertDialog( | ||||||
|           title: SizedBox.shrink(), |         content: Column( | ||||||
|           content: Column( |           children: [ | ||||||
|             children: [ |                 getRadio('Default', '', lang, setLang), | ||||||
|                   getRadio('Default', '', lang, setLang), |                 Divider(color: MyTheme.border), | ||||||
|                   Divider(color: MyTheme.border), |               ] + | ||||||
|                 ] + |               langs.map((e) { | ||||||
|                 langs.map((e) { |                 final key = e[0] as String; | ||||||
|                   final key = e[0] as String; |                 final name = e[1] as String; | ||||||
|                   final name = e[1] as String; |                 return getRadio(name, key, lang, setLang); | ||||||
|                   return getRadio(name, key, lang, setLang); |               }).toList(), | ||||||
|                 }).toList(), |         ), | ||||||
|           ), |       ); | ||||||
|           actions: []); |  | ||||||
|     }, backDismiss: true, clickMaskDismiss: true); |     }, backDismiss: true, clickMaskDismiss: true); | ||||||
|   } catch (e) { |   } catch (e) { | ||||||
|     // |     // | ||||||
| @ -536,14 +535,12 @@ void showThemeSettings(OverlayDialogManager dialogManager) async { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     return CustomAlertDialog( |     return CustomAlertDialog( | ||||||
|         title: SizedBox.shrink(), |       content: Column(children: [ | ||||||
|         contentPadding: 10, |         getRadio('Light', ThemeMode.light, themeMode, setTheme), | ||||||
|         content: Column(children: [ |         getRadio('Dark', ThemeMode.dark, themeMode, setTheme), | ||||||
|           getRadio('Light', ThemeMode.light, themeMode, setTheme), |         getRadio('Follow System', ThemeMode.system, themeMode, setTheme) | ||||||
|           getRadio('Dark', ThemeMode.dark, themeMode, setTheme), |       ]), | ||||||
|           getRadio('Follow System', ThemeMode.system, themeMode, setTheme) |     ); | ||||||
|         ]), |  | ||||||
|         actions: []); |  | ||||||
|   }, backDismiss: true, clickMaskDismiss: true); |   }, backDismiss: true, clickMaskDismiss: true); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -128,12 +128,19 @@ void setTemporaryPasswordLengthDialog( | |||||||
| 
 | 
 | ||||||
|     return CustomAlertDialog( |     return CustomAlertDialog( | ||||||
|       title: Text(translate("Set one-time password length")), |       title: Text(translate("Set one-time password length")), | ||||||
|       content: Column( |       content: Row( | ||||||
|           mainAxisSize: MainAxisSize.min, |           mainAxisAlignment: MainAxisAlignment.spaceEvenly, | ||||||
|           children: |           children: lengths | ||||||
|               lengths.map((e) => getRadio(e, e, length, setLength)).toList()), |               .map( | ||||||
|       actions: [], |                 (value) => Row( | ||||||
|       contentPadding: 14, |                   children: [ | ||||||
|  |                     Text(value), | ||||||
|  |                     Radio( | ||||||
|  |                         value: value, groupValue: length, onChanged: setLength), | ||||||
|  |                   ], | ||||||
|  |                 ), | ||||||
|  |               ) | ||||||
|  |               .toList()), | ||||||
|     ); |     ); | ||||||
|   }, backDismiss: true, clickMaskDismiss: true); |   }, backDismiss: true, clickMaskDismiss: true); | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user