cwtch-ui/lib/views/globalsettingsview.dart

97 lines
3.2 KiB
Dart
Raw Normal View History

import 'dart:collection';
2021-06-24 23:10:45 +00:00
import 'dart:convert';
import 'dart:io';
2021-06-24 23:10:45 +00:00
import 'package:cwtch/cwtch_icons_icons.dart';
2021-11-02 02:29:58 +00:00
import 'package:cwtch/models/servers.dart';
import 'package:cwtch/views/globalsettingsaboutview.dart';
import 'package:cwtch/views/globalsettingsappearanceview.dart';
import 'package:cwtch/views/globalsettingsbehaviourview.dart';
import 'package:cwtch/views/globalsettingsexperimentsview.dart';
2021-12-14 21:33:30 +00:00
import 'package:cwtch/widgets/folderpicker.dart';
2021-12-15 20:17:13 +00:00
import 'package:cwtch/themes/cwtch.dart';
import 'package:cwtch/themes/opaque.dart';
import 'package:flutter/services.dart';
2021-06-24 23:10:45 +00:00
import 'package:package_info_plus/package_info_plus.dart';
import 'package:flutter/material.dart';
import 'package:cwtch/settings.dart';
import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import '../main.dart';
import '../config.dart';
/// Global Settings View provides access to modify all the Globally Relevant Settings including Locale, Theme and Experiments.
class GlobalSettingsView extends StatefulWidget {
@override
_GlobalSettingsViewState createState() => _GlobalSettingsViewState();
}
class _GlobalSettingsViewState extends State<GlobalSettingsView> {
ScrollController settingsListScrollController = ScrollController();
2021-06-24 23:10:45 +00:00
@override
void dispose() {
super.dispose();
}
2021-06-24 23:10:45 +00:00
@override
Widget build(BuildContext context) {
2024-01-04 09:53:10 +00:00
return DefaultTabController(
length: 4,
child: Scaffold(
appBar: AppBar(
title: Text(AppLocalizations.of(context)!.cwtchSettingsTitle),
bottom: TabBar(
2024-01-04 09:59:51 +00:00
isScrollable: true,
2024-01-04 09:53:10 +00:00
tabs: [
Tab(
2024-01-04 09:59:51 +00:00
key: Key("OpenSettingsAppearance"),
2024-01-04 09:53:10 +00:00
icon: Icon(Icons.palette),
text: AppLocalizations.of(context)!
.settingsGroupAppearance),
Tab(
2024-01-04 09:59:51 +00:00
key: Key("OpenSettingsBehaviour"),
2024-01-04 09:53:10 +00:00
icon: Icon(Icons.settings),
text:
AppLocalizations.of(context)!.settingGroupBehaviour),
Tab(
2024-01-04 09:59:51 +00:00
key: Key("OpenSettingsExperiments"),
2024-01-04 09:53:10 +00:00
icon: Icon(CwtchIcons.enable_experiments),
text: AppLocalizations.of(context)!
.settingsGroupExperiments),
2024-01-04 09:59:51 +00:00
Tab(icon: Icon(Icons.info), text: AppLocalizations.of(context)!
.settingsGroupAbout),
2024-01-04 09:53:10 +00:00
],
)),
body: _buildSettingsList(),
));
2021-06-24 23:10:45 +00:00
}
Widget _buildSettingsList() {
return Consumer<Settings>(builder: (ccontext, settings, child) {
2024-01-04 09:53:10 +00:00
return LayoutBuilder(
builder: (BuildContext context, BoxConstraints viewportConstraints) {
return TabBarView(children: [
GlobalSettingsAppearanceView(),
2024-01-04 09:53:10 +00:00
GlobalSettingsBehaviourView(),
2024-01-04 09:53:10 +00:00
GlobalSettingsExperimentsView(),
2021-06-24 23:10:45 +00:00
GlobalSettingsAboutView(),
2024-01-04 09:53:10 +00:00
]);
2021-06-24 23:10:45 +00:00
});
});
}
2021-12-15 20:17:13 +00:00
}
2021-06-24 23:10:45 +00:00
/// Send an UpdateGlobalSettings to the Event Bus
saveSettings(context) {
var settings = Provider.of<Settings>(context, listen: false);
2024-01-04 09:53:10 +00:00
Provider.of<FlwtchState>(context, listen: false)
.cwtch
.UpdateSettings(jsonEncode(settings.asJson()));
2021-06-24 23:10:45 +00:00
}