Skip to content

Commit

Permalink
💾 Feat(Theme): Allow user to select whether delay before open page
Browse files Browse the repository at this point in the history
  • Loading branch information
Dynesshely committed Mar 31, 2024
1 parent a189b39 commit f375e41
Show file tree
Hide file tree
Showing 6 changed files with 207 additions and 100 deletions.
13 changes: 7 additions & 6 deletions kitx_mobile/lib/pages/controls/home_page_drawer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import 'package:get/get.dart';
import 'package:kitx_mobile/pages/pages.dart';
import 'package:kitx_mobile/pages/plugins_page.dart';
import 'package:kitx_mobile/utils/config.dart';
import 'package:kitx_mobile/utils/handlers/tasks/delayed_task.dart';

/// [HomePageDrawer] class
Expand Down Expand Up @@ -37,23 +38,23 @@ class HomePageDrawer extends StatelessWidget {
onTap: () {
Get.back();
Get.toNamed(DevicesPage.getRoute());
}.delay(milliseconds: pageOpenDelay).execute,
}.delay(milliseconds: config.delayOpenPageInHomePage.value ? pageOpenDelay : 0).execute,
),
ListTile(
leading: const Icon(Icons.layers),
title: Text('Drawer_Plugins'.tr),
onTap: () {
Get.back();
Get.toNamed(PluginsPage.getRoute());
}.delay(milliseconds: pageOpenDelay).execute,
}.delay(milliseconds: config.delayOpenPageInHomePage.value ? pageOpenDelay : 0).execute,
),
ListTile(
leading: const Icon(Icons.alternate_email),
title: Text('Drawer_Account'.tr),
onTap: () {
Get.back();
Get.toNamed(AccountPage.getRoute());
}.delay(milliseconds: pageOpenDelay).execute,
}.delay(milliseconds: config.delayOpenPageInHomePage.value ? pageOpenDelay : 0).execute,
),
const Divider(),
Row(
Expand All @@ -63,21 +64,21 @@ class HomePageDrawer extends StatelessWidget {
onPressed: () {
Get.back();
Get.toNamed(SettingsPage.getRoute());
}.delay(milliseconds: pageOpenDelay).execute,
}.delay(milliseconds: config.delayOpenPageInHomePage.value ? pageOpenDelay : 0).execute,
icon: const Icon(Icons.settings),
),
IconButton(
onPressed: () {
Get.back();
Get.toNamed(AboutPage.getRoute());
}.delay(milliseconds: pageOpenDelay).execute,
}.delay(milliseconds: config.delayOpenPageInHomePage.value ? pageOpenDelay : 0).execute,
icon: const Icon(Icons.info_outline_rounded),
),
IconButton(
onPressed: () {
Get.back();
Get.toNamed(TestPage.getRoute());
}.delay(milliseconds: pageOpenDelay).execute,
}.delay(milliseconds: config.delayOpenPageInHomePage.value ? pageOpenDelay : 0).execute,
icon: const Icon(Icons.bug_report),
),
],
Expand Down
11 changes: 6 additions & 5 deletions kitx_mobile/lib/pages/home_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import 'package:kitx_mobile/pages/controls/device_status_label.dart';
import 'package:kitx_mobile/pages/controls/home_page_drawer.dart';
import 'package:kitx_mobile/pages/pages.dart';
import 'package:kitx_mobile/pages/plugins_page.dart';
import 'package:kitx_mobile/utils/config.dart';
import 'package:kitx_mobile/utils/handlers/tasks/delayed_task.dart';

/// HomePage
Expand Down Expand Up @@ -77,7 +78,7 @@ class HomePage extends StatelessWidget implements ConstantPage {
),
trailing: const Icon(Icons.keyboard_arrow_right),
shape: tileRadius,
onTap: () => (() => Get.toNamed(DevicesPage.getRoute())).delay(milliseconds: pageOpenDelay).execute(),
onTap: () => (() => Get.toNamed(DevicesPage.getRoute())).delay(milliseconds: config.delayOpenPageInHomePage.value ? pageOpenDelay : 0).execute(),
onLongPress: () {
showMenu(
context: context,
Expand Down Expand Up @@ -106,7 +107,7 @@ class HomePage extends StatelessWidget implements ConstantPage {
subtitle: isLandscape ? const Text('developing ...') : null,
trailing: const Icon(Icons.keyboard_arrow_right),
shape: tileRadius,
onTap: () => (() => Get.toNamed(PluginsPage.getRoute())).delay(milliseconds: pageOpenDelay).execute(),
onTap: () => (() => Get.toNamed(PluginsPage.getRoute())).delay(milliseconds: config.delayOpenPageInHomePage.value ? pageOpenDelay : 0).execute(),
),
),
const SizedBox(height: tilesPadding),
Expand All @@ -118,7 +119,7 @@ class HomePage extends StatelessWidget implements ConstantPage {
subtitle: isLandscape ? const Text('developing ...') : null,
trailing: const Icon(Icons.keyboard_arrow_right),
shape: tileRadius,
onTap: () => (() => Get.toNamed(AccountPage.getRoute())).delay(milliseconds: pageOpenDelay).execute(),
onTap: () => (() => Get.toNamed(AccountPage.getRoute())).delay(milliseconds: config.delayOpenPageInHomePage.value ? pageOpenDelay : 0).execute(),
),
),
const SizedBox(height: tilesPadding),
Expand All @@ -130,7 +131,7 @@ class HomePage extends StatelessWidget implements ConstantPage {
subtitle: isLandscape ? const Text('no notifications') : null,
trailing: const Icon(Icons.keyboard_arrow_right),
shape: tileRadius,
onTap: () => (() => Get.toNamed(SettingsPage.getRoute())).delay(milliseconds: pageOpenDelay).execute(),
onTap: () => (() => Get.toNamed(SettingsPage.getRoute())).delay(milliseconds: config.delayOpenPageInHomePage.value ? pageOpenDelay : 0).execute(),
),
),
const SizedBox(height: tilesPadding),
Expand All @@ -143,7 +144,7 @@ class HomePage extends StatelessWidget implements ConstantPage {
subtitle: Text(instances.appInfo.versionString.value),
trailing: const Icon(Icons.keyboard_arrow_right),
shape: tileRadius,
onTap: () => (() => Get.toNamed(AboutPage.getRoute())).delay(milliseconds: pageOpenDelay).execute(),
onTap: () => (() => Get.toNamed(AboutPage.getRoute())).delay(milliseconds: config.delayOpenPageInHomePage.value ? pageOpenDelay : 0).execute(),
),
),
),
Expand Down
2 changes: 2 additions & 0 deletions kitx_mobile/lib/pages/pages.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import 'package:kitx_mobile/pages/home_page.dart';
import 'package:kitx_mobile/pages/not_found_page.dart';
import 'package:kitx_mobile/pages/plugins_page.dart';
import 'package:kitx_mobile/pages/settings_page.dart';
import 'package:kitx_mobile/pages/settings_pages/exterior_settings_page.dart';
import 'package:kitx_mobile/pages/sub_pages/device_chat_page.dart';
import 'package:kitx_mobile/pages/test_page.dart';
import 'package:kitx_mobile/pages/test_pages/device_info_test.dart';
Expand All @@ -33,6 +34,7 @@ List<GetPage<dynamic>> getPages() => [
GetPage(name: DeviceInfoTestPage.getRoute(), page: DeviceInfoTestPage.getPage()),
GetPage(name: DeviceSensorsPage.getRoute(), page: DeviceSensorsPage.getPage()),
GetPage(name: NetworkInfoTestPage.getRoute(), page: NetworkInfoTestPage.getPage()),
GetPage(name: ExteriorSettingsPage.getRoute(), page: ExteriorSettingsPage.getPage()),
];

/// Constant Page
Expand Down
103 changes: 14 additions & 89 deletions kitx_mobile/lib/pages/settings_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@ import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:kitx_mobile/instances.dart';
import 'package:kitx_mobile/pages/pages.dart';
import 'package:kitx_mobile/pages/settings_pages/exterior_settings_page.dart';
import 'package:kitx_mobile/pages/test_pages/device_info_test.dart';
import 'package:kitx_mobile/pages/test_pages/device_sensors.dart';
import 'package:kitx_mobile/pages/test_pages/network_info_test.dart';
import 'package:kitx_mobile/utils/composer.dart';
import 'package:kitx_mobile/utils/config.dart';
import 'package:kitx_mobile/utils/converters/size_converter.dart';
import 'package:kitx_mobile/utils/handlers/tasks/delayed_task.dart';
import 'package:kitx_mobile/utils/themes/themes.dart';

/// Settings Group Title
class SettingsGroupTitle extends StatelessWidget {
Expand Down Expand Up @@ -73,10 +73,10 @@ class SettingsPage extends StatefulWidget implements ConstantPage {
}

class _SettingsPageState extends State<SettingsPage> {
var selectedModes = <ThemeMode>{instances.appInfo.themeMode};
var tileRadius = ContinuousRectangleBorder(borderRadius: BorderRadius.circular(10.0));

var logFilePath = '/data/data/com.crequency.kitx.mobile/app_flutter/flog.db';

var useMaterial3 = lightThemeData.value.useMaterial3.obs;
var logFileSizeString = 'getting ...'.obs;
var logFileExists = false.obs;

Expand Down Expand Up @@ -145,94 +145,17 @@ class _SettingsPageState extends State<SettingsPage> {
),
body: ListView(
children: [
group(
SettingsGroupTitle(titleKey: 'SettingsPage_Theme'),
Column(
children: [
Container(
width: double.infinity,
margin: EdgeInsets.symmetric(horizontal: 30, vertical: 10),
child: SegmentedButton<ThemeMode>(
emptySelectionAllowed: false,
multiSelectionEnabled: false,
segments: <ButtonSegment<ThemeMode>>[
ButtonSegment<ThemeMode>(
value: ThemeMode.light,
label: Text('SettingsPage_Light'.tr),
icon: Icon(Icons.light_mode),
),
ButtonSegment<ThemeMode>(
value: ThemeMode.dark,
label: Text('SettingsPage_Dark'.tr),
icon: Icon(Icons.dark_mode),
),
ButtonSegment<ThemeMode>(
value: ThemeMode.system,
label: Text('SettingsPage_FollowSystem'.tr),
icon: Icon(Icons.settings),
),
],
selected: selectedModes,
// selectedIcon: Icon(Icons.check),
showSelectedIcon: false,
onSelectionChanged: (Set<ThemeMode> newSelection) => {
setState(() {
selectedModes = newSelection;
}),
instances.appInfo.themeModeProperty = newSelection.first,
// Global.themeMode = newSelection.first,
// Get.changeThemeMode(newSelection.first),
saveChanges(context),
},
),
),
const SizedBox(height: 30),
Container(
padding: EdgeInsets.symmetric(horizontal: 30),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text('${'Public_Enable'.tr} Material 3'),
Obx(
() => Switch.adaptive(
value: useMaterial3.value,
onChanged: (selection) {
instances.appInfo.updateTheme(useMaterial3: selection);
useMaterial3.value = selection;
saveChanges(context);
},
),
),
],
),
),
],
),
const SettingsGroupDivider(),
),
group(
SettingsGroupTitle(titleKey: 'Public_Animation'),
Container(
padding: EdgeInsets.symmetric(horizontal: 30),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text('${'Public_Enable'.tr} ${'Public_Additional'.tr} ${'Public_Animation'.tr}'),
Obx(
() => Switch.adaptive(
value: instances.appInfo.animationEnabled.value,
onChanged: (selection) {
instances.appInfo.animationEnabled.value = selection;
saveChanges(context);
},
),
),
],
),
Padding(
padding: EdgeInsets.symmetric(horizontal: 30, vertical: 30),
child: ListTile(
leading: const Icon(Icons.color_lens),
title: Text('SettingsPage_Theme'.tr),
trailing: const Icon(Icons.keyboard_arrow_right),
shape: tileRadius,
onTap: () => Get.toNamed(ExteriorSettingsPage.getRoute()),
),
const SettingsGroupDivider(),
spacer: null,
),
const Divider(),
group(
SettingsGroupTitle(titleKey: 'Public_Log'),
Column(
Expand Down Expand Up @@ -298,6 +221,8 @@ class _SettingsPageState extends State<SettingsPage> {
child: Text('SettingsPage_CleanLog'.tr),
),
),
const SizedBox(height: 30),
ElevatedButton(onPressed: () {}, child: const Text('...')),
],
),
const SettingsGroupDivider(),
Expand Down
Loading

0 comments on commit f375e41

Please sign in to comment.