Polished layout and icons
This commit is contained in:
		@@ -94,7 +94,7 @@ class _AppState extends State<App> {
 | 
				
			|||||||
        PersistentBottomNavBarItem(
 | 
					        PersistentBottomNavBarItem(
 | 
				
			||||||
          activeColorPrimary: Theme.of(context).primaryColor,
 | 
					          activeColorPrimary: Theme.of(context).primaryColor,
 | 
				
			||||||
          inactiveColorPrimary: Theme.of(context).colorScheme.secondary,
 | 
					          inactiveColorPrimary: Theme.of(context).colorScheme.secondary,
 | 
				
			||||||
          icon: const Icon(Icons.more_horiz),
 | 
					          icon: const Icon(Icons.apps),
 | 
				
			||||||
          title: "Mehr"
 | 
					          title: "Mehr"
 | 
				
			||||||
        ),
 | 
					        ),
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,7 +12,7 @@ class AppTheme extends ChangeNotifier {
 | 
				
			|||||||
  static ThemeModeDisplay getDisplayOptions(ThemeMode theme) {
 | 
					  static ThemeModeDisplay getDisplayOptions(ThemeMode theme) {
 | 
				
			||||||
    switch(theme) {
 | 
					    switch(theme) {
 | 
				
			||||||
      case ThemeMode.system:
 | 
					      case ThemeMode.system:
 | 
				
			||||||
        return ThemeModeDisplay(icon: Icons.auto_awesome, displayName: "Systemvorgabe");
 | 
					        return ThemeModeDisplay(icon: Icons.auto_fix_high_outlined, displayName: "Systemvorgabe");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      case ThemeMode.light:
 | 
					      case ThemeMode.light:
 | 
				
			||||||
        return ThemeModeDisplay(icon: Icons.dark_mode_outlined, displayName: "Hell");
 | 
					        return ThemeModeDisplay(icon: Icons.dark_mode_outlined, displayName: "Hell");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -78,10 +78,13 @@ class _FileElementState extends State<FileElement> {
 | 
				
			|||||||
  @override
 | 
					  @override
 | 
				
			||||||
  Widget build(BuildContext context) {
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
    return ListTile(
 | 
					    return ListTile(
 | 
				
			||||||
      leading: Icon(widget.file.isDirectory ? Icons.folder : Icons.file_open_outlined),
 | 
					      leading: Column(
 | 
				
			||||||
 | 
					        mainAxisAlignment: MainAxisAlignment.center,
 | 
				
			||||||
 | 
					        children: [Icon(widget.file.isDirectory ? Icons.folder_outlined : Icons.description_outlined)],
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
      title: Text(widget.file.name),
 | 
					      title: Text(widget.file.name),
 | 
				
			||||||
      subtitle: getSubtitle(),
 | 
					      subtitle: getSubtitle(),
 | 
				
			||||||
      trailing: Icon(widget.file.isDirectory ? Icons.arrow_right : Icons.open_in_browser),
 | 
					      trailing: Icon(widget.file.isDirectory ? Icons.arrow_right : null),
 | 
				
			||||||
      onTap: () {
 | 
					      onTap: () {
 | 
				
			||||||
        if(widget.file.isDirectory) {
 | 
					        if(widget.file.isDirectory) {
 | 
				
			||||||
          Navigator.of(context).push(MaterialPageRoute(
 | 
					          Navigator.of(context).push(MaterialPageRoute(
 | 
				
			||||||
@@ -150,11 +153,11 @@ class _FileElementState extends State<FileElement> {
 | 
				
			|||||||
            return ListView(
 | 
					            return ListView(
 | 
				
			||||||
              children: [
 | 
					              children: [
 | 
				
			||||||
                ListTile(
 | 
					                ListTile(
 | 
				
			||||||
                  leading: const Icon(Icons.delete),
 | 
					                  leading: const Icon(Icons.delete_outline),
 | 
				
			||||||
                  title: Text("'${widget.file.name}' Löschen"),
 | 
					                  title: Text("'${widget.file.name}' Löschen"),
 | 
				
			||||||
                ),
 | 
					                ),
 | 
				
			||||||
                const ListTile(
 | 
					                const ListTile(
 | 
				
			||||||
                  leading: Icon(Icons.share),
 | 
					                  leading: Icon(Icons.share_outlined),
 | 
				
			||||||
                  title: Text("Teilen"),
 | 
					                  title: Text("Teilen"),
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
              ],
 | 
					              ],
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -41,17 +41,17 @@ class SortOptions {
 | 
				
			|||||||
  static Map<SortOption, BetterSortOption> options = {
 | 
					  static Map<SortOption, BetterSortOption> options = {
 | 
				
			||||||
    SortOption.name: BetterSortOption(
 | 
					    SortOption.name: BetterSortOption(
 | 
				
			||||||
      displayName: "Name",
 | 
					      displayName: "Name",
 | 
				
			||||||
      icon: Icons.sort_by_alpha,
 | 
					      icon: Icons.sort_by_alpha_outlined,
 | 
				
			||||||
      compare: (CacheableFile a, CacheableFile b) => a.name.compareTo(b.name)
 | 
					      compare: (CacheableFile a, CacheableFile b) => a.name.compareTo(b.name)
 | 
				
			||||||
    ),
 | 
					    ),
 | 
				
			||||||
    SortOption.date: BetterSortOption(
 | 
					    SortOption.date: BetterSortOption(
 | 
				
			||||||
      displayName: "Datum",
 | 
					      displayName: "Datum",
 | 
				
			||||||
      icon: Icons.more_time_outlined,
 | 
					      icon: Icons.history_outlined,
 | 
				
			||||||
      compare: (CacheableFile a, CacheableFile b) => a.modifiedAt!.compareTo(b.modifiedAt!)
 | 
					      compare: (CacheableFile a, CacheableFile b) => a.modifiedAt!.compareTo(b.modifiedAt!)
 | 
				
			||||||
    ),
 | 
					    ),
 | 
				
			||||||
    SortOption.size: BetterSortOption(
 | 
					    SortOption.size: BetterSortOption(
 | 
				
			||||||
      displayName: "Größe",
 | 
					      displayName: "Größe",
 | 
				
			||||||
      icon: Icons.monitor_weight,
 | 
					      icon: Icons.sd_card_outlined,
 | 
				
			||||||
      compare: (CacheableFile a, CacheableFile b) {
 | 
					      compare: (CacheableFile a, CacheableFile b) {
 | 
				
			||||||
        if(a.isDirectory || b.isDirectory) return a.isDirectory ? 1 : 0;
 | 
					        if(a.isDirectory || b.isDirectory) return a.isDirectory ? 1 : 0;
 | 
				
			||||||
        if(a.size == null) return 0;
 | 
					        if(a.size == null) return 0;
 | 
				
			||||||
@@ -157,7 +157,7 @@ class _FilesState extends State<Files> {
 | 
				
			|||||||
            return SimpleDialog(
 | 
					            return SimpleDialog(
 | 
				
			||||||
              children: [
 | 
					              children: [
 | 
				
			||||||
                ListTile(
 | 
					                ListTile(
 | 
				
			||||||
                  leading: const Icon(Icons.folder),
 | 
					                  leading: const Icon(Icons.create_new_folder_outlined),
 | 
				
			||||||
                  title: const Text("Ordner erstellen"),
 | 
					                  title: const Text("Ordner erstellen"),
 | 
				
			||||||
                  onTap: () {
 | 
					                  onTap: () {
 | 
				
			||||||
                    Navigator.of(context).pop();
 | 
					                    Navigator.of(context).pop();
 | 
				
			||||||
@@ -187,7 +187,7 @@ class _FilesState extends State<Files> {
 | 
				
			|||||||
                  },
 | 
					                  },
 | 
				
			||||||
                ),
 | 
					                ),
 | 
				
			||||||
                ListTile(
 | 
					                ListTile(
 | 
				
			||||||
                  leading: const Icon(Icons.file_open),
 | 
					                  leading: const Icon(Icons.upload_file),
 | 
				
			||||||
                  title: const Text("Aus Dateien hochladen"),
 | 
					                  title: const Text("Aus Dateien hochladen"),
 | 
				
			||||||
                  onTap: () {
 | 
					                  onTap: () {
 | 
				
			||||||
                    context.loaderOverlay.show();
 | 
					                    context.loaderOverlay.show();
 | 
				
			||||||
@@ -199,7 +199,7 @@ class _FilesState extends State<Files> {
 | 
				
			|||||||
                  },
 | 
					                  },
 | 
				
			||||||
                ),
 | 
					                ),
 | 
				
			||||||
                ListTile(
 | 
					                ListTile(
 | 
				
			||||||
                  leading: const Icon(Icons.image),
 | 
					                  leading: const Icon(Icons.add_a_photo_outlined),
 | 
				
			||||||
                  title: const Text("Aus Gallerie hochladen"),
 | 
					                  title: const Text("Aus Gallerie hochladen"),
 | 
				
			||||||
                  onTap: () {
 | 
					                  onTap: () {
 | 
				
			||||||
                    context.loaderOverlay.show();
 | 
					                    context.loaderOverlay.show();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -53,7 +53,7 @@ class _GradeAverageState extends State<GradeAverage> {
 | 
				
			|||||||
          PopupMenuButton<bool>(
 | 
					          PopupMenuButton<bool>(
 | 
				
			||||||
            enableFeedback: true,
 | 
					            enableFeedback: true,
 | 
				
			||||||
            initialValue: gradeSystem,
 | 
					            initialValue: gradeSystem,
 | 
				
			||||||
            icon: const Icon(Icons.read_more),
 | 
					            icon: const Icon(Icons.more_horiz),
 | 
				
			||||||
            itemBuilder: (context) => [true, false].map((e) => PopupMenuItem<bool>(
 | 
					            itemBuilder: (context) => [true, false].map((e) => PopupMenuItem<bool>(
 | 
				
			||||||
              value: e,
 | 
					              value: e,
 | 
				
			||||||
              enabled: e != gradeSystem,
 | 
					              enabled: e != gradeSystem,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -185,7 +185,7 @@ class _ChatBubbleState extends State<ChatBubble> {
 | 
				
			|||||||
              Visibility(
 | 
					              Visibility(
 | 
				
			||||||
                visible: !widget.isSender && widget.chatData.type != GetRoomResponseObjectConversationType.oneToOne,
 | 
					                visible: !widget.isSender && widget.chatData.type != GetRoomResponseObjectConversationType.oneToOne,
 | 
				
			||||||
                child: ListTile(
 | 
					                child: ListTile(
 | 
				
			||||||
                  leading: const Icon(Icons.person),
 | 
					                  leading: const Icon(Icons.sms_outlined),
 | 
				
			||||||
                  title: Text("Private Nachricht an '${widget.bubbleData.actorDisplayName}'"),
 | 
					                  title: Text("Private Nachricht an '${widget.bubbleData.actorDisplayName}'"),
 | 
				
			||||||
                  onTap: () => {},
 | 
					                  onTap: () => {},
 | 
				
			||||||
                ),
 | 
					                ),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,7 +36,7 @@ class _SettingsState extends State<Settings> {
 | 
				
			|||||||
        children: [
 | 
					        children: [
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          ListTile(
 | 
					          ListTile(
 | 
				
			||||||
            leading: const Icon(Icons.logout),
 | 
					            leading: const Icon(Icons.logout_outlined),
 | 
				
			||||||
            title: const Text("Konto abmelden"),
 | 
					            title: const Text("Konto abmelden"),
 | 
				
			||||||
            onTap: () {
 | 
					            onTap: () {
 | 
				
			||||||
              showDialog(
 | 
					              showDialog(
 | 
				
			||||||
@@ -76,7 +76,7 @@ class _SettingsState extends State<Settings> {
 | 
				
			|||||||
          Consumer<AppTheme>(
 | 
					          Consumer<AppTheme>(
 | 
				
			||||||
            builder: (context, value, child) {
 | 
					            builder: (context, value, child) {
 | 
				
			||||||
              return ListTile(
 | 
					              return ListTile(
 | 
				
			||||||
                leading: const Icon(Icons.dark_mode),
 | 
					                leading: const Icon(Icons.dark_mode_outlined),
 | 
				
			||||||
                title: const Text("Farbgebung"),
 | 
					                title: const Text("Farbgebung"),
 | 
				
			||||||
                trailing: DropdownButton<ThemeMode>(
 | 
					                trailing: DropdownButton<ThemeMode>(
 | 
				
			||||||
                  value: value.getMode,
 | 
					                  value: value.getMode,
 | 
				
			||||||
@@ -103,7 +103,7 @@ class _SettingsState extends State<Settings> {
 | 
				
			|||||||
          const Divider(),
 | 
					          const Divider(),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          ListTile(
 | 
					          ListTile(
 | 
				
			||||||
            leading: const Icon(Icons.info),
 | 
					            leading: const Icon(Icons.live_help_outlined),
 | 
				
			||||||
            title: const Text("Informationen und Lizenzen"),
 | 
					            title: const Text("Informationen und Lizenzen"),
 | 
				
			||||||
            onTap: () async {
 | 
					            onTap: () async {
 | 
				
			||||||
              final appInfo = await PackageInfo.fromPlatform();
 | 
					              final appInfo = await PackageInfo.fromPlatform();
 | 
				
			||||||
@@ -124,7 +124,7 @@ class _SettingsState extends State<Settings> {
 | 
				
			|||||||
          ),
 | 
					          ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          ListTile(
 | 
					          ListTile(
 | 
				
			||||||
            leading: const Icon(Icons.privacy_tip),
 | 
					            leading: const Icon(Icons.policy_outlined),
 | 
				
			||||||
            title: const Text("Datenschutz"),
 | 
					            title: const Text("Datenschutz"),
 | 
				
			||||||
            onTap: () {
 | 
					            onTap: () {
 | 
				
			||||||
              launchUrl(Uri.parse("https://mhsl.eu/datenschutz.html"));
 | 
					              launchUrl(Uri.parse("https://mhsl.eu/datenschutz.html"));
 | 
				
			||||||
@@ -133,7 +133,7 @@ class _SettingsState extends State<Settings> {
 | 
				
			|||||||
          ),
 | 
					          ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          ListTile(
 | 
					          ListTile(
 | 
				
			||||||
            leading: const Icon(Icons.person_pin_rounded),
 | 
					            leading: const Icon(Icons.badge_outlined),
 | 
				
			||||||
            title: const Text("Impressum"),
 | 
					            title: const Text("Impressum"),
 | 
				
			||||||
            onTap: () {
 | 
					            onTap: () {
 | 
				
			||||||
              launchUrl(Uri.parse("https://mhsl.eu/id.html"));
 | 
					              launchUrl(Uri.parse("https://mhsl.eu/id.html"));
 | 
				
			||||||
@@ -144,9 +144,10 @@ class _SettingsState extends State<Settings> {
 | 
				
			|||||||
          const Divider(),
 | 
					          const Divider(),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          ListTile(
 | 
					          ListTile(
 | 
				
			||||||
            leading: const Icon(Icons.developer_mode),
 | 
					            leading: const Icon(Icons.developer_mode_outlined),
 | 
				
			||||||
            title: const Text("Entwicklermodus"),
 | 
					            title: const Text("Entwicklermodus"),
 | 
				
			||||||
            trailing: Checkbox(
 | 
					            trailing: Checkbox(
 | 
				
			||||||
 | 
					              visualDensity: const VisualDensity(horizontal: VisualDensity.minimumDensity),
 | 
				
			||||||
              value: developerMode,
 | 
					              value: developerMode,
 | 
				
			||||||
              onChanged: (state) {
 | 
					              onChanged: (state) {
 | 
				
			||||||
                setState(() {
 | 
					                setState(() {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user