diff --git a/icons/breeze/icons/actions/16/mail-mark-task-inverted.svg b/icons/breeze/icons/actions/16/mail-mark-task-inverted.svg new file mode 100644 index 00000000..c6017742 --- /dev/null +++ b/icons/breeze/icons/actions/16/mail-mark-task-inverted.svg @@ -0,0 +1,13 @@ + + + + + + diff --git a/icons/breeze/icons/actions/16/mail-mark-task.svg b/icons/breeze/icons/actions/16/mail-mark-task.svg new file mode 100644 index 00000000..5b4104a1 --- /dev/null +++ b/icons/breeze/icons/actions/16/mail-mark-task.svg @@ -0,0 +1,13 @@ + + + + + + diff --git a/icons/breeze/icons/actions/16/mail-task-inverted.svg b/icons/breeze/icons/actions/16/mail-task-inverted.svg new file mode 120000 index 00000000..a5be7a27 --- /dev/null +++ b/icons/breeze/icons/actions/16/mail-task-inverted.svg @@ -0,0 +1 @@ +mail-mark-task-inverted.svg \ No newline at end of file diff --git a/icons/breeze/icons/actions/16/mail-task.svg b/icons/breeze/icons/actions/16/mail-task.svg new file mode 120000 index 00000000..c516e4b6 --- /dev/null +++ b/icons/breeze/icons/actions/16/mail-task.svg @@ -0,0 +1 @@ +mail-mark-task.svg \ No newline at end of file diff --git a/icons/breeze/icons/actions/22/mail-mark-task-inverted.svg b/icons/breeze/icons/actions/22/mail-mark-task-inverted.svg new file mode 100644 index 00000000..0fc3b40b --- /dev/null +++ b/icons/breeze/icons/actions/22/mail-mark-task-inverted.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/icons/breeze/icons/actions/22/mail-mark-task.svg b/icons/breeze/icons/actions/22/mail-mark-task.svg new file mode 100644 index 00000000..53d2d2c2 --- /dev/null +++ b/icons/breeze/icons/actions/22/mail-mark-task.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/icons/breeze/icons/actions/22/mail-task-inverted.svg b/icons/breeze/icons/actions/22/mail-task-inverted.svg new file mode 120000 index 00000000..a5be7a27 --- /dev/null +++ b/icons/breeze/icons/actions/22/mail-task-inverted.svg @@ -0,0 +1 @@ +mail-mark-task-inverted.svg \ No newline at end of file diff --git a/icons/breeze/icons/actions/22/mail-task.svg b/icons/breeze/icons/actions/22/mail-task.svg new file mode 120000 index 00000000..c516e4b6 --- /dev/null +++ b/icons/breeze/icons/actions/22/mail-task.svg @@ -0,0 +1 @@ +mail-mark-task.svg \ No newline at end of file diff --git a/icons/copybreeze.sh b/icons/copybreeze.sh index 693a40c8..b7c85229 100755 --- a/icons/copybreeze.sh +++ b/icons/copybreeze.sh @@ -1,100 +1,101 @@ #!/usr/bin/env python2 import sh import subprocess import os from shutil import copyfile, copy2 from os import path wantedIcons = [ "application-menu.svg", "dialog-cancel.svg", "dialog-ok.svg", "document-decrypt.svg", "document-edit.svg", "document-encrypt.svg", "document-save.svg", "document-sign.svg", "edit-delete.svg", "edit-find.svg", "edit-undo.svg", "error.svg", "folder.svg", "im-user.svg", "mail-mark-important.svg", "mail-mark-unread-new.svg", "mail-reply-sender.svg", "mail-forward.svg", "mail-folder-outbox.svg", "network-disconnect.svg", "view-refresh.svg", "go-down.svg", "go-up.svg", "go-previous.svg", "mail-message.svg", "list-add.svg", "list-remove.svg", "checkbox.svg", "edit-copy.svg", "password-show-on.svg", "password-show-off.svg", "format-text-bold-symbolic.svg", "format-text-italic-symbolic.svg", "format-text-underline-symbolic.svg", "kdocumentinfo.svg", - "group.svg" + "group.svg", + "mail-task.svg" ] def ensure_dir(file_path): directory = os.path.dirname(file_path) if not os.path.exists(directory): os.makedirs(directory) def copyFile(rootDir, dir, file): print("Copy file " + root + ", " + dir + ", " + file) reldir = dir.replace(path.join(rootDir, "icons"), "") src = os.path.join(dir, file) if os.path.islink(src): # We're dealing with a symlink linkto = os.readlink(src) targetRelpath = path.join(os.path.dirname(src), linkto) targetReldir = os.path.dirname(targetRelpath) # First recursively copy target copyFile(rootDir, targetReldir, targetRelpath.replace(targetReldir + "/", "")) #Create symlinks for normal and dark version dst = "./breeze/icons" + path.join(reldir, file) if not os.path.exists(dst): ensure_dir(dst) os.symlink(linkto, dst) invertedDst = "./breeze/icons" + path.join(reldir, file.replace(".svg", "-inverted.svg")) if not os.path.exists(invertedDst): ensure_dir(invertedDst) os.symlink(linkto.replace(".svg", "-inverted.svg"), invertedDst) else: # A regular icon, just copy normal and dark version dst = "./breeze/icons" + path.join(reldir, file) if not os.path.exists(dst): print("Copying: " + path.join(dir, file) + " to " + dst) ensure_dir(dst) copy2(src, dst) invertedDst = "./breeze/icons" + path.join(reldir, file.replace(".svg", "-inverted.svg")) if not os.path.exists(invertedDst): print("Copying: " + src.replace("icons", "icons-dark") + " to " + invertedDst) ensure_dir(invertedDst) copy2(src.replace("icons", "icons-dark"), invertedDst) dir="upstreamBreeze" if not os.path.exists(dir): sh.git.clone("--depth", "1", "git://anongit.kde.org/breeze-icons.git", dir) dirToWalk = dir + "/icons" for root, dirs, files in os.walk(dirToWalk): for file in files: if any(file == s for s in wantedIcons): copyFile(dir, root, file) elif "mimetypes" in root: #Except the explicitly mentioned icons we'll also want all mimetypes copyFile(dir, root, file) diff --git a/views/todo/main.qml b/views/todo/main.qml new file mode 100644 index 00000000..4065b876 --- /dev/null +++ b/views/todo/main.qml @@ -0,0 +1,92 @@ +/* + * Copyright (C) 2018 Christian Mollekopf, + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Window 2.0 + +import org.kube.framework 1.0 as Kube +import org.kube.test 1.0 +import "qml" + +ApplicationWindow { + id: app + height: Screen.desktopAvailableHeight * 0.8 + width: Screen.desktopAvailableWidth * 0.8 + + Component.onCompleted: { + var initialState = { + accounts: [{ + id: "account1", + name: "Test Account" + }], + identities: [{ + account: "account1", + name: "Test Identity", + address: "identity@example.org" + }], + resources: [{ + id: "resource1", + account: "account1", + type: "dummy" + }, + { + id: "resource2", + account: "account1", + type: "mailtransport" + }], + folders: [{ + id: "folder1", + resource: "resource1", + name: "Folder 1", + specialpurpose: ["inbox"], + mails: [{ + resource: "resource1", + messageId: "", + date: "2017-07-24T15:46:29", + subject: "subject1", + body: "body", + to: ["to@example.org"], + cc: ["cc@example.org"], + bcc: ["bcc@example.org"], + }, + { + resource: "resource1", + inReplyTo: "", + date: "2017-07-24T16:46:29", + subject: "subject2", + body: "body2", + to: ["to@example.org"], + }, + { + resource: "resource1", + date: "2017-07-24T18:46:29", + subject: "subject4", + body: "body4", + to: ["to@example.org"], + }, + ] + }], + } + TestStore.setup(initialState) + } + + View { + anchors.fill: parent + } +} diff --git a/views/todo/metadata.json b/views/todo/metadata.json new file mode 100644 index 00000000..669f85a6 --- /dev/null +++ b/views/todo/metadata.json @@ -0,0 +1,4 @@ +{ + "icon": "mail-task", + "tooltip": "Get things done!" +} diff --git a/views/todo/qml/View.qml b/views/todo/qml/View.qml new file mode 100644 index 00000000..ef3cc0bd --- /dev/null +++ b/views/todo/qml/View.qml @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2017 Christian Mollekopf, + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +import QtQuick 2.4 +import QtQuick.Layouts 1.1 +import QtQuick.Controls 2.0 +import org.kube.framework 1.0 as Kube + +FocusScope { + id: root + + Kube.Label { + anchors { + centerIn: parent + } + text: "ToDo" + } +} diff --git a/views/todo/tests/tst_todo.qml b/views/todo/tests/tst_todo.qml new file mode 100644 index 00000000..46f7dba2 --- /dev/null +++ b/views/todo/tests/tst_todo.qml @@ -0,0 +1,36 @@ +/* + * Copyright 2017 Christian Mollekopf + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library General Public License as + * published by the Free Software Foundation; either version 2, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +import QtQuick 2.7 +import QtTest 1.0 +import "../qml" + +TestCase { + width: 400 + height: 400 + name: "Todo" + + View { + id: view + } + + function test_start() { + verify(view) + } +}