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

180 lines
6.5 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 "humane.js" as HumaneDate
Container {
id: taskItem
Container {
layout: StackLayout {
}
Container {
layout: DockLayout {
}
horizontalAlignment: HorizontalAlignment.Fill
leftPadding: 10.0
rightPadding: 10.0
topPadding: 10.0
Container {
layout: StackLayout {
orientation: LayoutOrientation.LeftToRight
}
Container {
minWidth: 50.0
Label {
text: ListItemData.priority
textStyle.fontSize: FontSize.Large
//textStyle.color: Color.Blue
textStyle.color: getPriorityColor(ListItemData.priority)
}
}
}
Container {
layout: StackLayout {
}
leftPadding: 40.0
Container {
Label {
text: ListItemData.detail
multiline: true
textStyle.fontSize: FontSize.Medium
//textStyle.color: ListItemData.complete ? Color.Gray : Color.Black
textStyle.color: getDetailColor(ListItemData.complete)
}
}
Container {
layout: StackLayout {
orientation: LayoutOrientation.LeftToRight
}
topPadding: 5.0
Container {
rightPadding: ListItemData.dateDue.length > 0 ? 10.0 : 0
Label {
text: ListItemData.dateDue.length > 0 ? "Due " +
HumaneDate.humaneDate(ListItemData.dateDue) : ""
textStyle.fontSize: FontSize.XXSmall
textStyle.color: Color.Gray
textStyle.fontWeight: FontWeight.Bold
}
}
Container {
Label {
text: ListItemData.complete ? "Completed " +
HumaneDate.humaneDate(ListItemData.dateCompleted) :
ListItemData.dateCreated ? "Created " +
HumaneDate.humaneDate(ListItemData.dateCreated) : ""
textStyle.fontSize: FontSize.XXSmall
//textStyle.color: ListItemData.complete ? Color.LightGray : Color.Gray
textStyle.color: Color.Gray
}
}
}
}
}
Divider {
}
}
function getDetailColor(complete) {
if (complete) return Color.Gray;
switch (Application.themeSupport.theme.colorTheme.style) {
case VisualStyle.Bright:
return Color.Black;
case VisualStyle.Dark:
return Color.White;
}
return Color.Black;
}
function getPriorityColor(priority) {
// TODO make each priority a different color
switch (Application.themeSupport.theme.colorTheme.style) {
case VisualStyle.Bright:
return Color.Blue;
case VisualStyle.Dark:
return Color.Yellow;
}
return Color.Gray;
}
contextActions: [
ActionSet {
title: ListItemData.detail
ActionItem {
title: "Edit"
imageSource: "icons/Pencil.png"
onTriggered: {
editItem.open()
editItem.newtask = false;
editItem.text = ListItemData.text
// editItem.pri = ListItemData.priority
editItem.labels.removeAll();
for (var i = 0; i < taskItem.ListItem.view.dataModel.filters.length; i ++) {
var o = opt.createObject();
o.text = taskItem.ListItem.view.dataModel.filters[i].title;
o.value = taskItem.ListItem.view.dataModel.filters[i].title;
editItem.labels.add(o);
}
editItem.textfield.requestFocus();
}
}
ActionItem {
title: "Complete"
imageSource: "icons/Check.png"
enabled: ListItemData.complete ? false : true
onTriggered: {
taskItem.ListItem.view.dataModel.setValue(taskItem.ListItem.indexPath, "complete", true)
}
}
ActionItem {
title: "Undo Complete"
imageSource: "icons/Undo.png"
enabled: ListItemData.complete
onTriggered: {
taskItem.ListItem.view.dataModel.setValue(taskItem.ListItem.indexPath, "complete", false)
}
}
InvokeActionItem {
title: "Share"
query {
mimeType: "text/plain"
invokeActionId: "bb.action.SHARE"
}
data: ListItemData.text
}
DeleteActionItem {
title: "Delete"
onTriggered: {
taskItem.ListItem.view.dataModel.promptDelete(taskItem.ListItem.indexPath)
}
}
}
]
attachedObjects: [
EditSheet {
id: editItem
title: "Edit"
taskitem: true
onSaveTask: {
taskItem.ListItem.view.dataModel.updateTask(taskItem.ListItem.indexPath, text)
}
},
ComponentDefinition {
id: opt
Option {
}
}
]
}