/*************************************************************************** * This file is part of awesome-widgets * * * * awesome-widgets 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 3 of the * * License, or (at your option) any later version. * * * * awesome-widgets 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 awesome-widgets. If not, see http://www.gnu.org/licenses/ * ***************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.3 as QtControls import QtQuick.Dialogs 1.2 as QtDialogs import org.kde.plasma.private.awesomewidget 1.0 Item { id: widgetPage // backend AWKeys { id: awKeys } AWActions { id: awActions } AWFormatterConfigFactory { id: awFormatter } AWTelemetryHandler { id: awTelemetryHandler } width: childrenRect.width height: childrenRect.height implicitWidth: pageColumn.implicitWidth implicitHeight: pageColumn.implicitHeight property bool debug: awActions.isDebugEnabled() property alias cfg_text: textPattern.text property bool lock: true signal needTextUpdate(string newText) Column { id: pageColumn anchors.fill: parent QtControls.Label { width: parent.width horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter wrapMode: Text.WordWrap text: i18n("Detailed information may be found on project homepage") onLinkActivated: Qt.openUrlExternally(link) } HtmlDefaultFunctionsBar { textArea: textPattern } AWTagSelector { backend: awKeys notifyBackend: awActions textArea: textPattern groups: [ { 'label': i18n("AC"), 'regexp': "^(ac|bat).*" }, { 'label': i18n("Bars"), 'regexp': "^bar.*" }, { 'label': i18n("CPU"), 'regexp': "^(cpu|gpu|la|ps|temp(?!erature)).*" }, { 'label': i18n("Desktops"), 'regexp': "^(n|t)?desktop(s)?" }, { 'label': i18n("HDD"), 'regexp': "^hdd.*" }, { 'label': i18n("Memory"), 'regexp': "^(mem|swap).*" }, { 'label': i18n("Network"), 'regexp': "^(netdev|(down|up(?!time)).*)" }, { 'label': i18n("Music player"), 'regexp': "(^|d|s)(album|artist|duration|progress|title)" }, { 'label': i18n("Scripts"), 'regexp': "^custom.*" }, { 'label': i18n("Time"), 'regexp': ".*time$" }, { 'label': i18n("Quotes"), 'regexp': "^(perc)?(ask|bid|price)(chg)?.*" }, { 'label': i18n("Upgrades"), 'regexp': "^pkgcount.*" }, { 'label': i18n("Weathers"), 'regexp': "^(weather(Id)?|humidity|pressure|temperature|timestamp)" }, { 'label': i18n("Functions"), 'regexp': "functions" } ] } Row { height: implicitHeight width: parent.width QtControls.Button { width: parent.width * 3 / 10 text: i18n("Edit bars") onClicked: awKeys.editItem("graphicalitem") } QtControls.Button { width: parent.width * 3 / 10 text: i18n("Formatters") onClicked: awFormatter.showDialog(awKeys.dictKeys(true)) } QtControls.Button { width: parent.width * 5 / 15 text: i18n("Preview") onClicked: { lock = false awKeys.initKeys(textPattern.text, plasmoid.configuration.interval, plasmoid.configuration.queueLimit, false) } } QtControls.Button { width: parent.width / 15 iconName: "view-history" menu: QtControls.Menu { id: historyConfig Instantiator { model: awTelemetryHandler.get("awwidgetconfig") QtControls.MenuItem { text: modelData onTriggered: textPattern.text = modelData } onObjectAdded: historyConfig.insertItem(index, object) onObjectRemoved: historyConfig.removeItem(object) } } } } QtControls.TextArea { id: textPattern width: parent.width height: parent.height * 4 / 5 textFormat: TextEdit.PlainText text: plasmoid.configuration.text } } QtDialogs.MessageDialog { id: compiledText modality: Qt.NonModal title: i18n("Preview") } Component.onCompleted: { if (debug) console.debug() awKeys.needTextToBeUpdated.connect(needTextUpdate) // init submodule awKeys.initKeys(plasmoid.configuration.text, plasmoid.configuration.interval, plasmoid.configuration.queueLimit, false) awKeys.setAggregatorProperty("acOffline", plasmoid.configuration.acOffline) awKeys.setAggregatorProperty("acOnline", plasmoid.configuration.acOnline) awKeys.setAggregatorProperty("customTime", plasmoid.configuration.customTime) awKeys.setAggregatorProperty("customUptime", plasmoid.configuration.customUptime) awKeys.setAggregatorProperty("tempUnits", plasmoid.configuration.tempUnits) awKeys.setAggregatorProperty("translate", plasmoid.configuration.translateStrings) } onNeedTextUpdate: { if (lock) return if (debug) console.debug() compiledText.text = newText.replace(/ /g, " ") compiledText.open() lock = true } }