Git commit 57aeac6278d8085b481850d62eb2f2ad8109a316 by Bernhard Friedreich. Committed on 07/04/2015 at 20:58. Pushed by friedreich into branch 'master'.
Timer: Added config ui (Appearance and command execution settings) Added configuration ui for "Appearance" and "Advanced" settings REVIEW: 123274 GUI: In the "Appearance" tab you can adjust whether to * show seconds (default: true) * show title (default: false, resizing is buggy: 304923) In the "Advanced" tab a command for execution can be configured M +19 -1 applets/timer/CMakeLists.txt A +35 -0 applets/timer/package/contents/config/config.qml [License: GPL (v2+)] M +2 -2 applets/timer/package/contents/config/main.xml A +58 -0 applets/timer/package/contents/ui/configAdvanced.qml [License: GPL (v2+)] A +42 -0 applets/timer/package/contents/ui/configAppearance.qml [License: GPL (v2+)] M +10 -5 applets/timer/package/contents/ui/timer.qml A +2 -0 applets/timer/plugin/qmldir A +33 -0 applets/timer/plugin/timer.cpp [License: GPL (v2+)] A +34 -0 applets/timer/plugin/timer.h [License: GPL (v2+)] A +37 -0 applets/timer/plugin/timerplugin.cpp [License: GPL (v2+)] A +34 -0 applets/timer/plugin/timerplugin.h [License: GPL (v2+)] http://commits.kde.org/kdeplasma-addons/57aeac6278d8085b481850d62eb2f2ad8109a316 diff --git a/applets/timer/CMakeLists.txt b/applets/timer/CMakeLists.txt index c7cba10..4bddb0f 100644 --- a/applets/timer/CMakeLists.txt +++ b/applets/timer/CMakeLists.txt @@ -1,4 +1,22 @@ +plasma_install_package(package org.kde.plasma.timer) + +add_definitions(-DTRANSLATION_DOMAIN="plasma_applet_org.kde.plasma.timer") + +set(timer_SRCS + plugin/timer.cpp + plugin/timerplugin.cpp +) + +install(FILES plugin/qmldir DESTINATION ${QML_INSTALL_DIR}/org/kde/plasma/private/timer) +add_library(timerplugin SHARED ${timer_SRCS}) + +target_link_libraries(timerplugin + Qt5::Core + Qt5::Qml +) + +install(TARGETS timerplugin DESTINATION ${QML_INSTALL_DIR}/org/kde/plasma/private/timer) + install(FILES timer.svgz DESTINATION ${PLASMA_DATA_INSTALL_DIR}/desktoptheme/default/widgets/) -plasma_install_package(package org.kde.plasma.timer) diff --git a/applets/timer/package/contents/config/config.qml b/applets/timer/package/contents/config/config.qml new file mode 100644 index 0000000..711959c --- /dev/null +++ b/applets/timer/package/contents/config/config.qml @@ -0,0 +1,35 @@ +/* + * Copyright 2015 Bernhard Friedreich <friesoft at gmail.com> + * + * 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 2.010-1301, USA. + */ + +import QtQuick 2.0 + +import org.kde.plasma.configuration 2.0 + +ConfigModel { + ConfigCategory { + name: i18n("Appearance") + icon: "preferences-desktop-color" + source: "configAppearance.qml" + } + + ConfigCategory { + name: i18n("Advanced") + icon: "preferences-other" + source: "configAdvanced.qml" + } +} diff --git a/applets/timer/package/contents/config/main.xml b/applets/timer/package/contents/config/main.xml index 6d4cdd3..886bcd4 100644 --- a/applets/timer/package/contents/config/main.xml +++ b/applets/timer/package/contents/config/main.xml @@ -26,8 +26,8 @@ <default>Timer</default> </entry> - <entry name="hideSeconds" type="Bool"> - <default>false</default> + <entry name="showSeconds" type="Bool"> + <default>true</default> </entry> <entry name="showMessage" type="Bool"> diff --git a/applets/timer/package/contents/ui/configAdvanced.qml b/applets/timer/package/contents/ui/configAdvanced.qml new file mode 100644 index 0000000..c315c89 --- /dev/null +++ b/applets/timer/package/contents/ui/configAdvanced.qml @@ -0,0 +1,58 @@ +/* + * Copyright 2015 Bernhard Friedrich <friesoft at gmail.com> + * + * 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 2.010-1301, USA. + */ + +import QtQuick 2.0 +import QtQuick.Controls 1.3 as QtControls +import QtQuick.Layouts 1.0 as QtLayouts + +QtLayouts.ColumnLayout { + id: generalPage + + property alias cfg_runCommand: runCommand.checked + property alias cfg_command: command.text + + QtControls.GroupBox { + id: runCommandGroup + title: i18n("Run command") + + QtLayouts.Layout.fillWidth: true + QtLayouts.Layout.fillHeight: true + flat: true + + QtLayouts.ColumnLayout { + QtLayouts.Layout.fillWidth: true + + QtControls.CheckBox { + id: runCommand + text: i18n("Execute command") + } + + QtLayouts.RowLayout { + QtControls.Label { + text: i18n("Command:") + } + QtControls.TextField { + id: command + width: runCommandGroup.width * 0.8 + enabled: runCommand.checked + } + } + } + } +} + diff --git a/applets/timer/package/contents/ui/configAppearance.qml b/applets/timer/package/contents/ui/configAppearance.qml new file mode 100644 index 0000000..ceb9732 --- /dev/null +++ b/applets/timer/package/contents/ui/configAppearance.qml @@ -0,0 +1,42 @@ + /* + * Copyright 2015 Bernhard Friedreich <friesoft at gmail.com> + * + * 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 2.010-1301, USA. + */ + +import QtQuick 2.0 +import QtQuick.Controls 1.0 as QtControls +import QtQuick.Layouts 1.0 as QtLayouts + +QtLayouts.ColumnLayout { + id: appearancePage + + property alias cfg_showTitle: showTitle.checked + property alias cfg_showSeconds: showSeconds.checked + + QtLayouts.ColumnLayout { + QtLayouts.Layout.alignment: Qt.AlignTop + + QtControls.CheckBox { + id: showTitle + text: i18n("Show title"); + } + QtControls.CheckBox { + id: showSeconds + text: i18n("Show seconds"); + } + } +} + diff --git a/applets/timer/package/contents/ui/timer.qml b/applets/timer/package/contents/ui/timer.qml index f675b93..82fee52 100644 --- a/applets/timer/package/contents/ui/timer.qml +++ b/applets/timer/package/contents/ui/timer.qml @@ -1,5 +1,6 @@ /*************************************************************************** * Copyright 2008,2014 by Davide Bettio <davide.bettio at kdemail.net> * + * Copyright 2015 by Bernhard Friedreich <friesoft at gmail.com> * * * * 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 * @@ -21,6 +22,7 @@ import QtQuick 2.2 import org.kde.plasma.core 2.0 as PlasmaCore import org.kde.plasma.components 2.0 as PlasmaComponents import org.kde.kquickcontrolsaddons 2.0 as QtExtra +import org.kde.plasma.private.timer 0.1 as TimerPlasmoid Item { id: root; @@ -31,12 +33,12 @@ Item { property date savedAt: plasmoid.configuration.savedAt; property bool showTitle: plasmoid.configuration.showTitle; property string title: plasmoid.configuration.title; - property bool hideSeconds: plasmoid.configuration.hideSeconds; + property bool showSeconds: plasmoid.configuration.showSeconds; property bool showMessage: plasmoid.configuration.showMessage; property string message: plasmoid.configuration.message; property bool runCommand: plasmoid.configuration.runCommand; property string command: plasmoid.configuration.command; - property real digits: (hideSeconds) ? 4.5 : 7; + property real digits: (showSeconds) ? 7 : 4.5; property int digitH: ((height / 2) * digits < width ? height : ((width - (digits - 1)) / digits) * 2); property int digitW: digitH / 2; property bool suspended: false; @@ -57,6 +59,9 @@ Item { parent.running = false; showNotification(); + if (runCommand) { + TimerPlasmoid.Timer.runCommand(command); + } saveTimer(); } } @@ -137,19 +142,19 @@ Item { width: digitW / 2; height: digitH; elementId: "separator" + ((running && seconds < 60) ? "_1" : ""); - visible: !hideSeconds; + visible: showSeconds; } TimerDigit { meaning: 10; num: ~~((seconds % 60) / 10); suffix: (running && seconds < 60) ? "_1" : ""; - visible: !hideSeconds; + visible: showSeconds; } TimerDigit { meaning: 1; num: (seconds % 60) % 10; suffix: (running && seconds < 60) ? "_1" : ""; - visible: !hideSeconds; + visible: showSeconds; } } } diff --git a/applets/timer/plugin/qmldir b/applets/timer/plugin/qmldir new file mode 100644 index 0000000..7c3eff4 --- /dev/null +++ b/applets/timer/plugin/qmldir @@ -0,0 +1,2 @@ +module org.kde.plasma.private.timer +plugin timerplugin diff --git a/applets/timer/plugin/timer.cpp b/applets/timer/plugin/timer.cpp new file mode 100644 index 0000000..ff0fac8 --- /dev/null +++ b/applets/timer/plugin/timer.cpp @@ -0,0 +1,33 @@ +/*************************************************************************** + * Copyright (C) 2015 by Bernhard Friedreich <friesoft at gmail.com> * + * * + * 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 . * + ***************************************************************************/ + +#include "timer.h" + +#include <QProcess> + +Timer::Timer(QObject *parent) : QObject(parent) +{ + +} + +void Timer::runCommand(const QString &command) +{ + QProcess::startDetached(command); +} + diff --git a/applets/timer/plugin/timer.h b/applets/timer/plugin/timer.h new file mode 100644 index 0000000..e831d38 --- /dev/null +++ b/applets/timer/plugin/timer.h @@ -0,0 +1,34 @@ +/*************************************************************************** + * Copyright (C) 2015 by Bernhard Friedreich <friesoft at gmail.com> * + * * + * 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 . * + ***************************************************************************/ + +#ifndef TIMER_H +#define TIMER_H + +#include <QObject> + +class Timer : public QObject +{ + Q_OBJECT + +public: + Timer(QObject *parent = nullptr); + Q_INVOKABLE void runCommand(const QString &command); +}; + +#endif // TIMER_H diff --git a/applets/timer/plugin/timerplugin.cpp b/applets/timer/plugin/timerplugin.cpp new file mode 100644 index 0000000..761b549 --- /dev/null +++ b/applets/timer/plugin/timerplugin.cpp @@ -0,0 +1,37 @@ +/* + Copyright (C) 2015 Bernhard Friedreich <friesoft at gmail.com> + + 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. +*/ + +#include "timerplugin.h" +#include "timer.h" + +#include <QtQml> + +static QObject *timer_singletontype_provider(QQmlEngine *engine, QJSEngine *scriptEngine) +{ + Q_UNUSED(engine) + Q_UNUSED(scriptEngine) + + return new Timer(); +} + +void TimerPlugin::registerTypes(const char *uri) +{ + Q_ASSERT(uri == QLatin1String("org.kde.plasma.private.timer")); + + qmlRegisterSingletonType<Timer>(uri, 0, 1, "Timer", timer_singletontype_provider); +} diff --git a/applets/timer/plugin/timerplugin.h b/applets/timer/plugin/timerplugin.h new file mode 100644 index 0000000..c55d33c --- /dev/null +++ b/applets/timer/plugin/timerplugin.h @@ -0,0 +1,34 @@ +/* + Copyright (C) 2015 Bernhard Friedreich <friesoft at gmail.com> + + 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. +*/ + +#ifndef TIMERPLUGIN_H +#define TIMERPLUGIN_H + +#include <QQmlExtensionPlugin> + +class QQmlEngine; +class TimerPlugin : public QQmlExtensionPlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface") + +public: + void registerTypes(const char *uri); +}; + +#endif // TIMERPLUGIN_H
