RenamedTodo/assets/SettingsPage.qml
2018-01-20 15:44:35 -08:00

273 lines
9.6 KiB
QML

/*
* Copyright 2012-2018 Morgan McMillian <gilag@monkeystew.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import bb.cascades 1.0
import bb.cascades.pickers 1.0
Page {
id: settingsPage
signal modifySetting(string setting, variant value)
property bool datenew
property bool windowsbreak
property bool autoarchive
property int sort
property string path
property string sync
property string dboxpath
titleBar: TitleBar {
title: " Settings"
}
ScrollView {
Container {
layout: StackLayout {}
Container {
topPadding: 15.0
}
Container {
layout: DockLayout {}
horizontalAlignment: HorizontalAlignment.Fill
verticalAlignment: VerticalAlignment.Fill
Container {
verticalAlignment: VerticalAlignment.Center
leftPadding: 30.0
Label {
text: "Date new tasks"
textStyle.fontWeight: FontWeight.Bold
}
}
Container {
rightPadding: 30.0
horizontalAlignment: HorizontalAlignment.Right
ToggleButton {
checked: datenew
onCheckedChanged: {
if (checked) {
modifySetting("datenew", true)
} else {
modifySetting("datenew", false)
}
}
}
}
}
Divider {}
Container {
layout: DockLayout {}
horizontalAlignment: HorizontalAlignment.Fill
verticalAlignment: VerticalAlignment.Fill
Container {
leftPadding: 30.0
verticalAlignment: VerticalAlignment.Center
Label {
text: "Windows line breaks"
textStyle.fontWeight: FontWeight.Bold
}
}
Container {
rightPadding: 30.0
horizontalAlignment: HorizontalAlignment.Right
ToggleButton {
checked: windowsbreak
onCheckedChanged: {
if (checked) {
modifySetting("windowsbreak", true)
} else {
modifySetting("windowsbreak", false)
}
}
}
}
}
Divider {}
Container {
layout: DockLayout {}
horizontalAlignment: HorizontalAlignment.Fill
verticalAlignment: VerticalAlignment.Fill
Container {
leftPadding: 30.0
verticalAlignment: VerticalAlignment.Center
Label {
text: "Auto archive"
textStyle.fontWeight: FontWeight.Bold
}
}
Container {
rightPadding: 30.0
horizontalAlignment: HorizontalAlignment.Right
ToggleButton {
checked: autoarchive
onCheckedChanged: {
if (checked) {
modifySetting("autoarchive", true)
} else {
modifySetting("autoarchive", false)
}
}
}
}
}
Divider {}
Container {
layout: DockLayout {}
horizontalAlignment: HorizontalAlignment.Fill
Container {
leftPadding: 30.0
rightPadding: 30.0
DropDown {
title: "Sort by:"
preferredWidth: 1440.0
onSelectedIndexChanged: {
modifySetting("sort", selectedValue)
}
Option {
text: "Priority"
value: 0
selected: sort == 0
}
Option {
text: "Due date"
value: 3
selected: sort == 3
}
Option {
text: "Line number"
value: 1
selected: sort == 1
}
Option {
text: "Text A>Z"
value: 2
selected: sort == 2
}
}
}
}
Divider {}
Container {
layout: DockLayout {}
horizontalAlignment: HorizontalAlignment.Fill
Container {
leftPadding: 30.0
rightPadding: 30.0
DropDown {
title: "File location:"
preferredWidth: 1440.0
onSelectedIndexChanged: {
modifySetting("path", selectedValue)
}
Option {
text: "Local sandbox"
value: "data/todo"
selected: path == "data/todo"
}
Option {
text: "Local shared"
value: "shared/misc/todo"
selected: path == "shared/misc/todo"
}
}
}
}
Divider {}
Container {
layout: DockLayout {}
horizontalAlignment: HorizontalAlignment.Fill
Container {
leftPadding: 30.0
rightPadding: 30.0
DropDown {
title: "Storage:"
preferredWidth: 1440.0
onSelectedIndexChanged: {
if (sync != selectedValue) {
modifySetting("sync", selectedValue)
}
}
Option {
text: "Local only"
value: "local"
selected: sync == "local"
}
}
}
}
Container {
layout: DockLayout {}
horizontalAlignment: HorizontalAlignment.Fill
Container {
leftPadding: 30.0
rightPadding: 30.0
topPadding: 10.0
TextField {
id: dboxPath
hintText: "Dropbox location"
text: dboxpath
visible: sync == "dropbox"
onTextChanged: {
if (dboxPath.text.length > 0) {
modifySetting("dbox_path", dboxPath.text)
}
}
}
}
}
Divider {}
Container {
layout: DockLayout {}
horizontalAlignment: HorizontalAlignment.Fill
leftPadding: 30.0
rightPadding: 30.0
Button {
preferredWidth: 1440.0
text: "Export sandbox files"
onClicked: {
exportPicker.open()
}
}
}
Divider {}
Container {
layout: DockLayout {}
horizontalAlignment: HorizontalAlignment.Fill
leftPadding: 30.0
rightPadding: 30.0
Button {
preferredWidth: 1440.0
text: "Purge local sandbox"
onClicked: {
taskModel.promptPurgeSandbox()
}
}
}
Divider {}
}
}
attachedObjects: [
FilePicker {
id: exportPicker
title: "Export"
mode: FilePicker.SaverMultiple
type: FileType.Document
viewMode: FilePickerViewMode.ListView
defaultSaveFileNames: ["todo.txt","done.txt"]
onFileSelected: {
console.log("FileSelected signal received : " + selectedFiles);
taskModel.exportFiles(selectedFiles)
}
}
]
}