Files
moxxy/lib/ui/pages/settings/network.dart

116 lines
4.7 KiB
Dart

import "package:moxxyv2/ui/widgets/topbar.dart";
import "package:moxxyv2/ui/redux/state.dart";
import "package:moxxyv2/ui/redux/preferences/actions.dart";
import "package:flutter/material.dart";
import "package:flutter_settings_ui/flutter_settings_ui.dart";
import "package:flutter_redux/flutter_redux.dart";
import "package:redux/redux.dart";
import "package:drop_down_list/drop_down_list.dart";
class NetworkPage extends StatelessWidget {
const NetworkPage({ Key? key }): super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: BorderlessTopbar.simple(title: "Network"),
body: StoreConnector<MoxxyState, Store>(
converter: (store) => store,
builder: (context, store) => SettingsList(
darkBackgroundColor: const Color(0xff303030),
contentPadding: const EdgeInsets.all(16.0),
sections: [
SettingsSection(
title: "Automatic Downloads",
tiles: [
SettingsTile(title: "Moxxy will automatically download files on..."),
SettingsTile.switchTile(
title: "Wifi",
switchValue: store.state.preferencesState.autoDownloadWifi,
onToggle: (value) => store.dispatch(
SetPreferencesAction(
store.state.preferencesState.copyWith(
autoDownloadWifi: value
)
)
)
),
SettingsTile.switchTile(
title: "Mobile Internet",
switchValue: store.state.preferencesState.autoDownloadMobile,
onToggle: (value) => store.dispatch(
SetPreferencesAction(
store.state.preferencesState.copyWith(
autoDownloadMobile: value
)
)
)
),
SettingsTile(
title: "Maximum Download Size",
subtitle: "The maximum file size for a file to be automatically downloaded",
subtitleMaxLines: 2,
onPressed: (context) {
// TODO: This does not work on dark mode
DropDownState(
DropDown(
submitButtonText: "Okay",
submitButtonColor: const Color.fromRGBO(70, 76, 222, 1),
bottomSheetTitle: "Maximum File Size",
searchBackgroundColor: Colors.black12,
dataList: [
SelectedListItem(store.state.preferencesState.maximumAutoDownloadSize == 1, "1MB"),
SelectedListItem(store.state.preferencesState.maximumAutoDownloadSize == 5, "5MB"),
SelectedListItem(store.state.preferencesState.maximumAutoDownloadSize == 15, "15MB"),
SelectedListItem(store.state.preferencesState.maximumAutoDownloadSize == 100, "100MB"),
SelectedListItem(store.state.preferencesState.maximumAutoDownloadSize == -1, "Always")
],
selectedItem: (String selected) {
int value = -1;
switch (selected) {
case "1MB": {
value = 1;
}
break;
case "5MB": {
value = 5;
}
break;
case "15MB": {
value = 15;
}
break;
case "100MB": {
value = 100;
}
break;
default: {
value = -1;
}
break;
}
store.dispatch(
SetPreferencesAction(
store.state.preferencesState.copyWith(
maximumAutoDownloadSize: value
)
)
);
},
enableMultipleSelection: false,
searchController: TextEditingController()
),
).showModal(context);
}
),
]
)
]
)
)
);
}
}