Debian

Available patches from Ubuntu

To see Ubuntu differences wrt. to Debian, write down a grep-dctrl query identifying the packages you're interested in:
grep-dctrl -n -sPackage Sources.Debian
(e.g. -FPackage linux-ntfs or linux-ntfs)

Modified packages are listed below:

Debian ( Changelog | PTS | Bugs ) Ubuntu ( Changelog | txt | LP | Bugs ) | Diff from Ubuntu

Source: plasma-workspace

plasma-workspace (4:5.16.4-0ubuntu1) eoan; urgency=medium * New upstream release (5.16.4) -- Rik Mills <rikmills@kubuntu.org> Tue, 30 Jul 2019 18:46:21 +0100 plasma-workspace (4:5.16.3-0ubuntu1) eoan; urgency=medium * New upstream release (5.16.3) -- Rik Mills <rikmills@kubuntu.org> Tue, 09 Jul 2019 22:23:38 +0100 plasma-workspace (4:5.16.2-0ubuntu1) eoan; urgency=medium * Tweak appstream dependencies as latest is not required. * New upstream release (5.16.2) -- Rik Mills <rikmills@kubuntu.org> Tue, 25 Jun 2019 18:24:34 +0100 plasma-workspace (4:5.16.1-0ubuntu1) eoan; urgency=medium * New upstream release (5.16.1) -- Rik Mills <rikmills@kubuntu.org> Tue, 18 Jun 2019 22:25:33 +0100 plasma-workspace (4:5.16.0-0ubuntu1) eoan; urgency=medium * New upstream release (5.16.0) -- Rik Mills <rikmills@kubuntu.org> Tue, 11 Jun 2019 11:37:17 +0100 plasma-workspace (4:5.15.90-0ubuntu1) eoan; urgency=medium * New library package for libnotificationmanager. * Update install files. * Update lintian-overrides. * New upstream (beta) release (5.15.90) -- Rik Mills <rikmills@kubuntu.org> Sat, 18 May 2019 08:50:24 +0100 plasma-workspace (4:5.15.5-0ubuntu1) eoan; urgency=medium * New upstream release (5.15.5) -- Rik Mills <rikmills@kubuntu.org> Fri, 10 May 2019 13:49:13 +0100 plasma-workspace (4:5.15.4-0ubuntu1) disco; urgency=medium * New upstream bugfix release (5.15.4) -- Rik Mills <rikmills@kubuntu.org> Thu, 04 Apr 2019 17:10:56 +0100 plasma-workspace (4:5.15.3-0ubuntu1) disco; urgency=medium * New upstream release (5.15.3) -- Rik Mills <rikmills@kubuntu.org> Wed, 13 Mar 2019 09:10:18 +0000 plasma-workspace (4:5.15.2-0ubuntu1) disco; urgency=medium * New upstream release (5.15.2) -- Rik Mills <rikmills@kubuntu.org> Tue, 26 Feb 2019 19:15:26 +0000 plasma-workspace (4:5.15.1-0ubuntu1) disco; urgency=medium * New upstream release (5.15.1) -- Rik Mills <rikmills@kubuntu.org> Tue, 19 Feb 2019 21:34:49 +0000 plasma-workspace (4:5.15.0-0ubuntu1) disco; urgency=medium * Add qml-module-org-kde-kirigami2 runtime dep. * New upstream release (5.15.0) -- Rik Mills <rikmills@kubuntu.org> Tue, 12 Feb 2019 09:54:21 +0000 plasma-workspace (4:5.14.90-0ubuntu1) disco; urgency=medium * Update install files. * New build depend on kded5-dev. * Update symbols. * Breaks/Replaces on plasma-desktop and plasma-desktop-data, where kcm_translations moved to plasma-workspace. * New upstream (beta) release (5.14.90) -- Rik Mills <rikmills@kubuntu.org> Sat, 19 Jan 2019 08:25:45 +0000 plasma-workspace (4:5.14.5-0ubuntu1) disco; urgency=medium * New upstream release (5.14.5) -- Rik Mills <rikmills@kubuntu.org> Tue, 08 Jan 2019 23:49:06 +0000 plasma-workspace (4:5.14.4-0ubuntu2) disco; urgency=medium * Remove not required or obsolete lm-sensors build dep. -- Rik Mills <rikmills@kubuntu.org> Wed, 02 Jan 2019 03:08:41 +0000 plasma-workspace (4:5.14.4-0ubuntu1) disco; urgency=medium * Update install files * New upstream release (5.13.90) * Update symbols from build logs. * Runtime recommends on appmenu-gtk3-module. * New upstream release (5.14.0) * New upstream release (5.14.1) * New upstream release (5.14.2) * New upstream release (5.14.3) * New upstream release (5.14.4) -- Rik Mills <rikmills@kubuntu.org> Tue, 27 Nov 2018 23:16:10 +0000 plasma-workspace (4:5.13.5-1ubuntu2) disco; urgency=medium * No-change rebuild against latest libqalculate -- Jeremy Bicha <jbicha@ubuntu.com> Fri, 23 Nov 2018 09:24:25 -0500 plasma-workspace (4:5.13.5-1ubuntu1) cosmic; urgency=medium * Merge from Debian unstable. Remaining changes: - d/patches: Exclude add_sddm_debian_breeze.patch - d/patches: Add upstream_fix-media-player-seeking.patch - d/patches: Add kubuntu_disable_hanging_test.diff - d/meta/cmake-ignore: Ignores for Kubuntu CI builds. - d/source/lintian-overrides: Ignore erroneous spelling errors in patches. - d/tests/*: Keep Kubuntu test setup. - d/plasma-workspace-dev.acc.in: Pass -fno-keep-inline-functions to GCC for acc test. - d/control: Kubuntu packaging Vcs fields - d/control: Build deps and breaks/replaces for Kubuntu. - d/control: No sddm-theme-debian-breeze package. - d/*.symbols: Keep Kubuntu versions. - d/plasma-workspace.lintian-overrides: Extra override. - d/sddm-theme-debian-breeze.*: Exclude files. We do not ship debian theme. -- Rik Mills <rikmills@kubuntu.org> Sun, 09 Sep 2018 12:21:05 +0100

Modifications :
  1. Download patch applets/systemmonitor/common/contents/ui/SinglePlotter.qml

    --- 4:5.14.5.1-1/applets/systemmonitor/common/contents/ui/SinglePlotter.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/systemmonitor/common/contents/ui/SinglePlotter.qml 2019-07-30 10:35:48.000000000 +0000 @@ -52,7 +52,7 @@ KQuickAddons.Plotter { PlasmaComponents.Label { id: speedLabel wrapMode: Text.WordWrap - visible: plasmoid.formFactor != PlasmaCore.Types.Vertical + visible: plasmoid.formFactor !== PlasmaCore.Types.Vertical anchors { right: parent.right } @@ -61,7 +61,7 @@ KQuickAddons.Plotter { Connections { target: model.dataSource onNewData: { - if (sourceName.indexOf(decodeURIComponent(model.source1)) != 0) { + if (sourceName.indexOf(decodeURIComponent(model.source1)) !== 0) { return; } @@ -73,7 +73,7 @@ KQuickAddons.Plotter { plotter.addSample([data1.value]); - if (plasmoid.formFactor != PlasmaCore.Types.Vertical) { + if (plasmoid.formFactor !== PlasmaCore.Types.Vertical) { nameLabel.text = plotter.sensorName speedLabel.text = formatData(data1) } else {
  2. Download patch applets/devicenotifier/package/contents/ui/DeviceItem.qml

    --- 4:5.14.5.1-1/applets/devicenotifier/package/contents/ui/DeviceItem.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/devicenotifier/package/contents/ui/DeviceItem.qml 2019-07-30 10:35:48.000000000 +0000 @@ -36,6 +36,7 @@ MouseArea { property int state property bool mounted + property bool isRoot property bool expanded: devicenotifier.expandedDevice == udi property alias percentUsage: freeSpaceBar.value property string freeSpaceText @@ -87,6 +88,15 @@ MouseArea { } } + Connections { + target: unmountAll + onClicked: { + if (model["Removable"] && mounted) { + actionTriggered(); + } + } + } + // this keeps the delegate around for 5 seconds after the device has been // removed in case there was a message, such as "you can now safely remove this" ListView.onRemove: { @@ -118,6 +128,19 @@ MouseArea { } } + Timer { + id: updateStorageSpaceTimer + interval: 5000 + repeat: true + running: mounted && plasmoid.expanded + triggeredOnStart: true // Update the storage space as soon as we open the plasmoid + onTriggered: { + var service = sdSource.serviceForSource(udi); + var operation = service.operationDescription("updateFreespace"); + service.startOperationCall(operation); + } + } + RowLayout { id: row anchors.horizontalCenter: parent.horizontalCenter @@ -162,7 +185,7 @@ MouseArea { id: iconToolTip anchors.fill: parent subText: { - if ((mounted || deviceItem.state != 0) && model["Available Content"] != "Audio") { + if ((mounted || deviceItem.state != 0) && model["Available Content"] !== "Audio") { if (model["Removable"]) { return i18n("It is currently <b>not safe</b> to remove this device: applications may be accessing it. Click the eject button to safely remove this device.") } else { @@ -188,6 +211,8 @@ MouseArea { move: Transition { NumberAnimation { property: "y"; duration: units.longDuration; easing.type: Easing.InOutQuad } + // ensure opacity values return to 1.0 if the add transition animation has been interrupted + NumberAnimation { property: "opacity"; to: 1.0 } } add: Transition { @@ -229,14 +254,13 @@ MouseArea { } PlasmaComponents.Label { + id: actionMessage width: parent.width height: undefined opacity: 0.6 font.pointSize: theme.smallestFont.pointSize visible: deviceItem.state != 0 || (!actionsList.visible && !deviceItem.hasMessage) text: { - // FIXME: state changes do not reach the plasmoid if the - // device was already attached when the plasmoid was initialized if (deviceItem.state == 0) { if (!hpSource.data[udi]) { return "" @@ -301,7 +325,9 @@ MouseArea { PlasmaComponents.ToolButton { id: actionButton visible: !busyIndicator.visible && deviceItem.actionVisible + enabled: !isRoot onClicked: actionTriggered() + y: mounted ? deviceLabel.height + (freeSpaceBar.height - height - units.smallSpacing) / 2 : (deviceLabel.height + actionMessage.height - height) / 2 } PlasmaComponents.BusyIndicator {
  3. Download patch applets/clipboard/contents/ui/ClipboardPage.qml

    --- 4:5.14.5.1-1/applets/clipboard/contents/ui/ClipboardPage.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/clipboard/contents/ui/ClipboardPage.qml 2019-07-30 10:35:48.000000000 +0000 @@ -58,10 +58,10 @@ ColumnLayout { } default: { // forward key to filter // filter.text += event.text wil break if the key is backspace - if (event.key == Qt.Key_Backspace && filter.text == "") { + if (event.key === Qt.Key_Backspace && filter.text == "") { return; } - if (event.text != "" && !filter.activeFocus) { + if (event.text !== "" && !filter.activeFocus) { clipboardMenu.view.currentIndex = -1 if (event.matches(StandardKey.Paste)) { filter.paste(); @@ -91,7 +91,7 @@ ColumnLayout { PlasmaComponents.TextField { id: filter - placeholderText: i18n("Search") + placeholderText: i18n("Search...") clearButtonShown: true Layout.fillWidth: true }
  4. Download patch applets/appmenu/plugin/appmenumodel.cpp

    --- 4:5.14.5.1-1/applets/appmenu/plugin/appmenumodel.cpp 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/appmenu/plugin/appmenumodel.cpp 2019-07-30 10:35:48.000000000 +0000 @@ -69,12 +69,22 @@ AppMenuModel::AppMenuModel(QObject *pare m_serviceWatcher(new QDBusServiceWatcher(this)) { connect(KWindowSystem::self(), &KWindowSystem::activeWindowChanged, this, &AppMenuModel::onActiveWindowChanged); + connect(KWindowSystem::self() + , static_cast<void (KWindowSystem::*)(WId)>(&KWindowSystem::windowChanged) + , this + , &AppMenuModel::onWindowChanged); + connect(this, &AppMenuModel::modelNeedsUpdate, this, [this] { if (!m_updatePending) { m_updatePending = true; QMetaObject::invokeMethod(this, "update", Qt::QueuedConnection); } }); + + connect(this, &AppMenuModel::screenGeometryChanged, this, [this] { + onWindowChanged(m_currentWindowId); + }); + onActiveWindowChanged(KWindowSystem::activeWindow()); m_serviceWatcher->setConnection(QDBusConnection::sessionBus()); @@ -100,10 +110,39 @@ void AppMenuModel::setMenuAvailable(bool { if (m_menuAvailable != set) { m_menuAvailable = set; + setVisible(true); emit menuAvailableChanged(); } } +bool AppMenuModel::visible() const +{ + return m_visible; +} + +void AppMenuModel::setVisible(bool visible) +{ + if (m_visible != visible) { + m_visible = visible; + emit visibleChanged(); + } +} + +QRect AppMenuModel::screenGeometry() const +{ + return m_screenGeometry; +} + +void AppMenuModel::setScreenGeometry(QRect geometry) +{ + if (m_screenGeometry == geometry) { + return; + } + + m_screenGeometry = geometry; + emit screenGeometryChanged(); +} + int AppMenuModel::rowCount(const QModelIndex &parent) const { Q_UNUSED(parent); @@ -187,23 +226,27 @@ void AppMenuModel::onActiveWindowChanged return; } + m_currentWindowId = id; + WId transientId = info.transientFor(); // lok at transient windows first while (transientId) { if (updateMenuFromWindowIfHasMenu(transientId)) { + setVisible(true); return; } transientId = KWindowInfo(transientId, nullptr, NET::WM2TransientFor).transientFor(); } if (updateMenuFromWindowIfHasMenu(id)) { + setVisible(true); return; } // monitor whether an app menu becomes available later // this can happen when an app starts, shows its window, and only later announces global menu (e.g. Firefox) qApp->installNativeEventFilter(this); - m_currentWindowId = id; + m_delayedMenuWindowId = id; //no menu found, set it to unavailable setMenuAvailable(false); @@ -213,6 +256,25 @@ void AppMenuModel::onActiveWindowChanged } +void AppMenuModel::onWindowChanged(WId id) +{ + if (m_currentWindowId == id) { + KWindowInfo info(id, NET::WMState | NET::WMGeometry); + + //! HACK: if the user has enabled screen scaling under X11 environment + //! then the window and screen geometries can not be trusted for comparison + //! before windows coordinates be adjusted properly. + //! BUG: 404500 + QPoint windowCenter = info.geometry().center(); + if (KWindowSystem::isPlatformX11()) { + windowCenter /= qApp->devicePixelRatio(); + } + + const bool contained = m_screenGeometry.isNull() || m_screenGeometry.contains(windowCenter); + + setVisible(contained && !info.isMinimized()); + } +} QHash<int, QByteArray> AppMenuModel::roleNames() const { @@ -321,7 +383,7 @@ bool AppMenuModel::nativeEventFilter(con const uint8_t type = e->response_type & ~0x80; if (type == XCB_PROPERTY_NOTIFY) { auto *event = reinterpret_cast<xcb_property_notify_event_t *>(e); - if (event->window == m_currentWindowId) { + if (event->window == m_delayedMenuWindowId) { auto serviceNameAtom = s_atoms.value(s_x11AppMenuServiceNamePropertyName); auto objectPathAtom = s_atoms.value(s_x11AppMenuObjectPathPropertyName);
  5. Download patch applets/notifications/plugin/draghelper.h

    --- 4:5.14.5.1-1/applets/notifications/plugin/draghelper.h 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/plugin/draghelper.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,53 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2013 by Eike Hein <hein@kde.org> * - * * - * 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 DRAGHELPER_H -#define DRAGHELPER_H - -#include <QObject> -#include <QPixmap> -#include <QUrl> - -class QQuickItem; - -class DragHelper : public QObject -{ -Q_OBJECT - -Q_PROPERTY(bool dragActive READ dragActive NOTIFY dragActiveChanged) - -public: - explicit DragHelper(QObject *parent = nullptr); - ~DragHelper() override; - - bool dragActive() const; - - Q_INVOKABLE bool isDrag(int oldX, int oldY, int newX, int newY) const; - Q_INVOKABLE void startDrag(QQuickItem* item, const QUrl &url = QUrl(), const QPixmap &pixmap = QPixmap()); - -Q_SIGNALS: - void dragActiveChanged(); - -private: - Q_INVOKABLE void doDrag(QQuickItem* item, const QUrl &url = QUrl(), const QPixmap &pixmap = QPixmap()); - - bool m_dragActive = false; -}; - -#endif
  6. Download patch applets/digital-clock/package/metadata.desktop

    --- 4:5.14.5.1-1/applets/digital-clock/package/metadata.desktop 2019-02-13 13:39:58.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/digital-clock/package/metadata.desktop 2019-07-30 10:35:48.000000000 +0000 @@ -33,7 +33,7 @@ Name[hr]=Digitalni sat Name[hsb]=Digitalny časnik Name[hu]=Digitális óra Name[ia]=Horologio digital -Name[id]=Digital Clock +Name[id]=Jam Digital Name[is]=Stafræn klukka Name[it]=Orologio digitale Name[ja]=デジタル時計 @@ -82,7 +82,7 @@ Name[uz@cyrillic]=Рақамли соа Name[vi]=Đồng hồ số Name[wa]=Ôrlodje didjitåle Name[x-test]=xxDigital Clockxx -Name[zh_CN]=数字钟 +Name[zh_CN]=数字时钟 Name[zh_TW]=數位時鐘 Comment=Time displayed in a digital format @@ -128,7 +128,7 @@ Comment[sv]=Tid visad med digitalformat Comment[tr]=Dijital biçimde gösterilen saat Comment[uk]=Час, показаний у цифровому форматі Comment[x-test]=xxTime displayed in a digital formatxx -Comment[zh_CN]=已数字格式显示时间 +Comment[zh_CN]=以数字格式显示时间 Comment[zh_TW]=以數位格式顯示時間 Icon=preferences-system-time
  7. Download patch applets/batterymonitor/package/contents/ui/ConfigGeneral.qml

    --- 4:5.14.5.1-1/applets/batterymonitor/package/contents/ui/ConfigGeneral.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/batterymonitor/package/contents/ui/ConfigGeneral.qml 2019-07-30 10:35:48.000000000 +0000 @@ -17,24 +17,23 @@ */ import QtQuick 2.0 -import QtQuick.Controls 1.0 as QtControls -import QtQuick.Layouts 1.0 as QtLayouts - -import org.kde.plasma.core 2.0 as PlasmaCore +import QtQuick.Controls 2.5 +import org.kde.kirigami 2.4 as Kirigami Item { id: root - implicitWidth: pageColumn.implicitWidth - implicitHeight: pageColumn.implicitHeight + width: pageColumn.width + height: pageColumn.height property alias cfg_showPercentage: showPercentage.checked - QtLayouts.ColumnLayout { + Kirigami.FormLayout { id: pageColumn anchors.left: parent.left + anchors.right: parent.right - QtControls.CheckBox { + CheckBox { id: showPercentage text: i18n("Show percentage") }
  8. Download patch applets/notifications/package/Messages.sh

    --- 4:5.14.5.1-1/applets/notifications/package/Messages.sh 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/package/Messages.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -#! /usr/bin/env bash -$EXTRACTRC `find . -name \*.rc -o -name \*.ui -o -name \*.kcfg` >> rc.cpp -$XGETTEXT `find . -name \*.qml` -L Java -o $podir/plasma_applet_org.kde.plasma.notifications.pot -$XGETTEXT rc.cpp -jo $podir/plasma_applet_org.kde.plasma.notifications.pot -rm -f rc.cpp
  9. Download patch applets/calendar/package/metadata.desktop

    --- 4:5.14.5.1-1/applets/calendar/package/metadata.desktop 2019-02-13 13:39:58.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/calendar/package/metadata.desktop 2019-07-30 10:35:48.000000000 +0000 @@ -32,7 +32,7 @@ Name[hr]=Kalendar Name[hsb]=Protyka Name[hu]=Naptár Name[ia]=Calendario -Name[id]=Calendar +Name[id]=Kalender Name[is]=Dagatal Name[it]=Calendario Name[ja]=カレンダー
  10. Download patch applets/notifications/package/contents/ui/ScreenPositionSelector.qml
  11. Download patch applets/notifications/package/contents/ui/main.qml
  12. Download patch applets/notifications/package/contents/ui/JobDetailsItem.qml

    --- 4:5.14.5.1-1/applets/notifications/package/contents/ui/JobDetailsItem.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/package/contents/ui/JobDetailsItem.qml 1970-01-01 00:00:00.000000000 +0000 @@ -1,152 +0,0 @@ -/* - * Copyright 2011 Marco Martin <notmart@gmail.com> - * Copyright 2014 Kai Uwe Broulik <kde@privat.broulik.de> - * - * 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.0 -import QtQuick.Layouts 1.1 - -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.components 2.0 as PlasmaComponents -import org.kde.kcoreaddons 1.0 as KCoreAddons -import org.kde.kquickcontrolsaddons 2.0 - -// Unfortunately ColumnLayout was a pain to use, so it's a Column with Rows inside -Column { - id: detailsItem - - spacing: jobItem.layoutSpacing - - readonly property int eta: jobItem.getData(jobsSource.data, "eta", 0) - readonly property string speed: jobItem.getData(jobsSource.data, "speed", '') - - property int leftColumnWidth - - function localizeProcessedAmount(id) { - var data = jobsSource.data[modelData] - - if (!data) { - return "" - } - - var unit = data["processedUnit" + id] - var processed = data["processedAmount" + id] - var total = data["totalAmount" + id] - - //if bytes localise the unit - if (unit === "bytes") { - return i18nc("How much many bytes (or whether unit in the locale has been copied over total", "%1 of %2", - KCoreAddons.Format.formatByteSize(processed), - KCoreAddons.Format.formatByteSize(total)) - //else print something only if is interesting data (ie more than one file/directory etc to copy - } else if (total > 1) { - // HACK Actually the owner of the job is responsible for sending the unit in a user-displayable - // way but this has been broken for years and every other unit (other than files and dirs) is correct - if (unit === "files") { - return i18ncp("Either just 1 file or m of n files are being processed", "1 file", "%2 of %1 files", total, processed) - } else if (unit === "dirs") { - return i18ncp("Either just 1 dir or m of n dirs are being processed", "1 dir", "%2 of %1 dirs", total, processed) - } - - return i18n("%1 of %2 %3", processed, total, unit) - } else { - return "" - } - } - - // The 2 main labels (eg. Source and Destination) - Repeater { - model: 2 - - RowLayout { - width: parent.width - spacing: jobItem.layoutSpacing - visible: labelNameText.text !== "" || labelText.text !== "" - - PlasmaComponents.Label { - id: labelNameText - Layout.minimumWidth: leftColumnWidth - Layout.maximumWidth: leftColumnWidth - height: paintedHeight - onPaintedWidthChanged: { - if (paintedWidth > leftColumnWidth) { - leftColumnWidth = paintedWidth - } - } - - font: theme.smallestFont - text: jobItem["labelName" + index] ? i18nc("placeholder is row description, such as Source or Destination", "%1:", jobItem["labelName" + index]) : "" - horizontalAlignment: Text.AlignRight - textFormat: Text.PlainText - } - - PlasmaComponents.Label { - id: labelText - Layout.fillWidth: true - height: paintedHeight - - font: theme.smallestFont - text: jobItem["label" + index] || "" - textFormat: Text.PlainText - elide: Text.ElideMiddle - - PlasmaCore.ToolTipArea { - anchors.fill: parent - subText: labelText.truncated ? labelText.text : "" - textFormat: Text.PlainText - } - } - } - } - - // The three details rows (eg. how many files and folders have been copied and the total amount etc) - Repeater { - model: 3 - - PlasmaComponents.Label { - id: detailsLabel - anchors { - left: parent.left - leftMargin: leftColumnWidth + jobItem.layoutSpacing - right: parent.right - } - height: paintedHeight - - text: localizeProcessedAmount(index) - textFormat: Text.PlainText - font: theme.smallestFont - visible: text !== "" - } - } - - PlasmaComponents.Label { - id: speedLabel - anchors { - left: parent.left - leftMargin: leftColumnWidth + jobItem.layoutSpacing - right: parent.right - } - height: paintedHeight - - font: theme.smallestFont - text: eta > 0 ? i18nc("Speed and estimated time to completion", "%1 (%2 remaining)", speed, KCoreAddons.Format.formatSpelloutDuration(eta)) : speed - textFormat: Text.PlainText - visible: eta > 0 || parseInt(speed) > 0 - } - -}
  13. Download patch applets/icon/package/metadata.desktop

    --- 4:5.14.5.1-1/applets/icon/package/metadata.desktop 2019-02-13 13:39:58.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/icon/package/metadata.desktop 2019-07-30 10:35:48.000000000 +0000 @@ -3,7 +3,6 @@ Name=Icon Name[af]=Ikoon Name[ar]=أيقونة Name[as]=আইকন -Name[ast]=Iconu Name[be@latin]=Ikona Name[bg]=Икона Name[bn]=আইকন @@ -35,7 +34,7 @@ Name[hr]=Ikona Name[hsb]=Piktogram Name[hu]=Ikon Name[ia]=Icone -Name[id]=Icon +Name[id]=Ikon Name[is]=Táknmynd Name[it]=Icona Name[ja]=アイコン @@ -116,7 +115,7 @@ Comment[hr]=Opća ikona Comment[hsb]=Generiski piktogram Comment[hu]=Általános ikon Comment[ia]=Un icone generic -Comment[id]=Ikon Generik +Comment[id]=Sebuah ikon generik Comment[is]=Almenn táknmynd Comment[it]=Un'icona generica Comment[ja]=一般アイコン @@ -172,7 +171,7 @@ X-KDE-PluginInfo-Author=The Plasma Team X-KDE-PluginInfo-Email=plasma-devel@kde.org X-KDE-PluginInfo-Name=org.kde.plasma.icon X-KDE-PluginInfo-Version=1.0 -X-KDE-PluginInfo-Website=http://plasma.kde.org/ +X-KDE-PluginInfo-Website=https://www.kde.org/plasma-desktop X-KDE-PluginInfo-Category=File System X-KDE-PluginInfo-Depends= X-KDE-PluginInfo-License=GPL
  14. Download patch applets/notifications/package/contents/ui/global/qmldir

    --- 4:5.14.5.1-1/applets/notifications/package/contents/ui/global/qmldir 1970-01-01 00:00:00.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/package/contents/ui/global/qmldir 2019-07-30 10:35:48.000000000 +0000 @@ -0,0 +1 @@ +singleton Globals 1.0 Globals.qml
  15. Download patch applets/systemmonitor/common/contents/ui/ConfigGeneral.qml

    --- 4:5.14.5.1-1/applets/systemmonitor/common/contents/ui/ConfigGeneral.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/systemmonitor/common/contents/ui/ConfigGeneral.qml 2019-07-30 10:35:48.000000000 +0000 @@ -16,10 +16,12 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 2.010-1301, USA. */ -import QtQuick 2.0 -import QtQuick.Controls 1.1 as Controls -import QtQuick.Layouts 1.1 as Layouts +import QtQuick 2.5 +import QtQuick.Controls 1.4 as QQC1 +import QtQuick.Controls 2.5 as QQC2 +import QtQuick.Layouts 1.3 +import org.kde.kirigami 2.5 as Kirigami import org.kde.plasma.core 2.0 as PlasmaCore @@ -27,28 +29,34 @@ Item { id: iconsPage width: childrenRect.width height: childrenRect.height - implicitWidth: mainColumn.implicitWidth - implicitHeight: mainColumn.implicitHeight + implicitWidth: formLayout.implicitWidth + implicitHeight: formLayout.implicitHeight property var cfg_sources: [] - onCfg_sourcesChanged: { + + function sourcesChanged() { if (! cfg_sources) { cfg_sources = [] } if (cfg_sources.length == 0) { - for (var i in mainColumn.children) { - var child = mainColumn.children[i]; + for (var i in dataSourcesColumn.children) { + var child = dataSourcesColumn.children[i]; if (child.checked !== undefined) { child.checked = true; } } } else { - for (var i in mainColumn.children) { - var child = mainColumn.children[i]; + for (var i in dataSourcesColumn.children) { + var child = dataSourcesColumn.children[i]; if (child.checked !== undefined) { child.checked = cfg_sources.indexOf(child.source) !== -1; } } } } + + onCfg_sourcesChanged: { + sourcesChanged(); + } + property int cfg_updateInterval signal sourceAdded(string source) @@ -57,7 +65,7 @@ Item { var found = false; for (var i = 0; i < sourcesModel.count; ++i) { var obj = sourcesModel.get(i); - if (obj.source == source) { + if (obj.source === source) { found = true; break; } @@ -82,7 +90,7 @@ Item { onSourceRemoved: { for (var i = sourcesModel.count - 1; i >= 0; --i) { var obj = sourcesModel.get(i); - if (obj.source == source) { + if (obj.source === source) { sourcesModel.remove(i); } } @@ -94,51 +102,66 @@ Item { var source = smSource.sources[i]; iconsPage.sourceAdded(source); } + sourcesChanged(); } ListModel { id: sourcesModel } - Layouts.ColumnLayout { - id: mainColumn + Kirigami.FormLayout { + id: formLayout + anchors.left: parent.left + anchors.right: parent.right - Layouts.RowLayout { - Controls.Label { - text: i18n("Update Interval:") - } + // QQC2 SpinBox doesn't cleanly support non-integer values, which can be + // worked around, but the code is messy and the user experience is + // somewhat poor. So for now, we stick with the QQC1 SpinBox + QQC1.SpinBox { + id: updateIntervalSpinBox + + Kirigami.FormData.label: i18n("Update interval:") + decimals: 1 + suffix: i18ncp("Suffix for spinbox (seconds)", " second", + " seconds") + maximumValue: 1000 + stepSize: 0.1 + onValueChanged: cfg_updateInterval = value * 1000 + Component.onCompleted: value = cfg_updateInterval / 1000 + } - Controls.SpinBox { - id: updateIntervalSpinBox - decimals: 2 - suffix: i18nc("Suffix for spinbox (seconds)", " sec") - maximumValue: 1000 - stepSize: 0.5 - onValueChanged: cfg_updateInterval = value * 1000 - Component.onCompleted: value = cfg_updateInterval / 1000 - } + + Item { + Kirigami.FormData.isSection: true } - Repeater { - id: repeater - model: sourcesModel - Controls.CheckBox { - id: checkBox - text: model.friendlyName - property string source: model.source - onCheckedChanged: { - if (checked) { - if (cfg_sources.indexOf(model.source) == -1) { - cfg_sources.push(model.source); - } - } else { - var idx = cfg_sources.indexOf(model.source); - if (idx !== -1) { - cfg_sources.splice(idx, 1); + + ColumnLayout { + id: dataSourcesColumn + Kirigami.FormData.label: i18n("Show:") + Kirigami.FormData.buddyFor: children[1] // 0 is the Repeater + + Repeater { + id: repeater + model: sourcesModel + QQC2.CheckBox { + id: checkBox + text: model.friendlyName + property string source: model.source + onCheckedChanged: { + if (checked) { + if (cfg_sources.indexOf(model.source) == -1) { + cfg_sources.push(model.source); + } + } else { + var idx = cfg_sources.indexOf(model.source); + if (idx !== -1) { + cfg_sources.splice(idx, 1); + } } + cfg_sourcesChanged(); } - cfg_sourcesChanged(); } } }
  16. Download patch applets/notifications/package/contents/ui/JobItem.qml
  17. Download patch applets/notifications/notificationapplet.h

    --- 4:5.14.5.1-1/applets/notifications/notificationapplet.h 1970-01-01 00:00:00.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/notificationapplet.h 2019-07-30 10:35:48.000000000 +0000 @@ -0,0 +1,60 @@ +/* + * Copyright 2018 Kai Uwe Broulik <kde@privat.broulik.de> + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see <http://www.gnu.org/licenses/>. + * + */ + +#pragma once + +#include <Plasma/Applet> + +class QQuickItem; +class QString; +class QRect; + +class NotificationApplet : public Plasma::Applet +{ + Q_OBJECT + + Q_PROPERTY(bool dragActive READ dragActive NOTIFY dragActiveChanged) + +public: + explicit NotificationApplet(QObject *parent, const QVariantList &data); + ~NotificationApplet() override; + + void init() override; + void configChanged() override; + + bool dragActive() const; + Q_INVOKABLE bool isDrag(int oldX, int oldY, int newX, int newY) const; + Q_INVOKABLE void startDrag(QQuickItem *item, const QUrl &url, const QPixmap &pixmap); + + Q_INVOKABLE void setSelectionClipboardText(const QString &text); + + Q_INVOKABLE bool isPrimaryScreen(const QRect &rect) const; + +signals: + void dragActiveChanged(); + +private slots: + void doDrag(QQuickItem *item, const QUrl &url, const QPixmap &pixmap); + +private: + bool m_dragActive = false; + +};
  18. Download patch applets/digital-clock/package/contents/ui/DigitalClock.qml

    --- 4:5.14.5.1-1/applets/digital-clock/package/contents/ui/DigitalClock.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/digital-clock/package/contents/ui/DigitalClock.qml 2019-07-30 10:35:48.000000000 +0000 @@ -33,14 +33,16 @@ Item { property bool showSeconds: plasmoid.configuration.showSeconds property bool showLocalTimezone: plasmoid.configuration.showLocalTimezone property bool showDate: plasmoid.configuration.showDate - property int dateFormat: { - if (plasmoid.configuration.dateFormat === "longDate") { - return Qt.SystemLocaleLongDate; + property var dateFormat: { + if (plasmoid.configuration.dateFormat === "custom") { + return plasmoid.configuration.customDateFormat; // str + } else if (plasmoid.configuration.dateFormat === "longDate") { + return Qt.SystemLocaleLongDate; // int } else if (plasmoid.configuration.dateFormat === "isoDate") { - return Qt.ISODate; + return Qt.ISODate; // int + } else { // "shortDate" + return Qt.SystemLocaleShortDate; // int } - - return Qt.SystemLocaleShortDate; } property string lastSelectedTimezone: plasmoid.configuration.lastSelectedTimezone @@ -54,7 +56,7 @@ Item { property int tzIndex: 0 // if the date/timezone cannot be fit with the smallest font to its designated space - readonly property bool oneLineMode: plasmoid.formFactor == PlasmaCore.Types.Horizontal && + readonly property bool oneLineMode: plasmoid.formFactor === PlasmaCore.Types.Horizontal && main.height <= 2 * theme.smallestFont.pixelSize && (main.showDate || timezoneLabel.visible) @@ -85,7 +87,7 @@ Item { // If the currently selected timezone was removed, // default to the first one in the list var lastSelectedTimezone = plasmoid.configuration.lastSelectedTimezone; - if (plasmoid.configuration.selectedTimeZones.indexOf(lastSelectedTimezone) == -1) { + if (plasmoid.configuration.selectedTimeZones.indexOf(lastSelectedTimezone) === -1) { plasmoid.configuration.lastSelectedTimezone = plasmoid.configuration.selectedTimeZones[0]; } @@ -97,7 +99,7 @@ Item { states: [ State { name: "horizontalPanel" - when: plasmoid.formFactor == PlasmaCore.Types.Horizontal && !main.oneLineMode + when: plasmoid.formFactor === PlasmaCore.Types.Horizontal && !main.oneLineMode PropertyChanges { target: main @@ -179,7 +181,7 @@ Item { State { name: "horizontalPanelSmall" - when: plasmoid.formFactor == PlasmaCore.Types.Horizontal && main.oneLineMode + when: plasmoid.formFactor === PlasmaCore.Types.Horizontal && main.oneLineMode PropertyChanges { target: main @@ -252,7 +254,7 @@ Item { State { name: "verticalPanel" - when: plasmoid.formFactor == PlasmaCore.Types.Vertical + when: plasmoid.formFactor === PlasmaCore.Types.Vertical PropertyChanges { target: main @@ -300,7 +302,7 @@ Item { target: dateLabel // this can be marginal bigger than contentHeight because of the horizontal fit - height: Math.max(0.8 * timeLabel.height, minimumPixelSize) + height: sizehelper.contentHeight width: main.width fontSizeMode: Text.Fit @@ -327,7 +329,7 @@ Item { State { name: "other" - when: plasmoid.formFactor != PlasmaCore.Types.Vertical && plasmoid.formFactor != PlasmaCore.Types.Horizontal + when: plasmoid.formFactor !== PlasmaCore.Types.Vertical && plasmoid.formFactor !== PlasmaCore.Types.Horizontal PropertyChanges { target: main @@ -441,7 +443,7 @@ Item { newIndex = plasmoid.configuration.selectedTimeZones.length - 1; } - if (newIndex != main.tzIndex) { + if (newIndex !== main.tzIndex) { plasmoid.configuration.lastSelectedTimezone = plasmoid.configuration.selectedTimeZones[newIndex]; main.tzIndex = newIndex; @@ -574,7 +576,7 @@ Item { var minutes = match[3] var seconds = "ss"; var amPm = "AP"; - var uses24hFormatByDefault = timeFormatString.toLowerCase().indexOf("ap") == -1; + var uses24hFormatByDefault = timeFormatString.toLowerCase().indexOf("ap") === -1; // because QLocale is incredibly stupid and does not convert 12h/24h clock format // when uppercase H is used for hours, needs to be h or hh, so toLowerCase() @@ -594,15 +596,15 @@ Item { } function setupLabels() { - var showTimezone = main.showLocalTimezone || (plasmoid.configuration.lastSelectedTimezone != "Local" - && dataSource.data["Local"]["Timezone City"] != dataSource.data[plasmoid.configuration.lastSelectedTimezone]["Timezone City"]); + var showTimezone = main.showLocalTimezone || (plasmoid.configuration.lastSelectedTimezone !== "Local" + && dataSource.data["Local"]["Timezone City"] !== dataSource.data[plasmoid.configuration.lastSelectedTimezone]["Timezone City"]); var timezoneString = ""; if (showTimezone) { timezoneString = plasmoid.configuration.displayTimezoneAsCode ? dataSource.data[plasmoid.configuration.lastSelectedTimezone]["Timezone Abbreviation"] : TimezonesI18n.i18nCity(dataSource.data[plasmoid.configuration.lastSelectedTimezone]["Timezone City"]); - timezoneLabel.text = (main.showDate || main.oneLineMode) && plasmoid.formFactor == PlasmaCore.Types.Horizontal ? "(" + timezoneString + ")" : timezoneString; + timezoneLabel.text = (main.showDate || main.oneLineMode) && plasmoid.formFactor === PlasmaCore.Types.Horizontal ? "(" + timezoneString + ")" : timezoneString; } else { // this clears the label and that makes it hidden timezoneLabel.text = timezoneString; @@ -651,14 +653,14 @@ Item { // If the date has changed, force size recalculation, because the day name // or the month name can now be longer/shorter, so we need to adjust applet size var currentDate = Qt.formatDateTime(dataSource.data["Local"]["DateTime"], "yyyy-mm-dd"); - if (main.lastDate != currentDate) { + if (main.lastDate !== currentDate) { doCorrections = true; main.lastDate = currentDate } } var currentTZOffset = dataSource.data["Local"]["Offset"] / 60; - if (currentTZOffset != tzOffset) { + if (currentTZOffset !== tzOffset) { doCorrections = true; tzOffset = currentTZOffset; Date.timeZoneUpdated(); // inform the QML JS engine about TZ change @@ -671,7 +673,7 @@ Item { function setTimezoneIndex() { for (var i = 0; i < plasmoid.configuration.selectedTimeZones.length; i++) { - if (plasmoid.configuration.selectedTimeZones[i] == plasmoid.configuration.lastSelectedTimezone) { + if (plasmoid.configuration.selectedTimeZones[i] === plasmoid.configuration.lastSelectedTimezone) { main.tzIndex = i; break; }
  19. Download patch applets/devicenotifier/package/metadata.desktop

    --- 4:5.14.5.1-1/applets/devicenotifier/package/metadata.desktop 2019-02-13 13:39:58.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/devicenotifier/package/metadata.desktop 2019-07-30 10:35:48.000000000 +0000 @@ -32,7 +32,7 @@ Name[hr]=Glasnik uređaja Name[hsb]=Zdźělenki wo gratach Name[hu]=Eszközértesítő Name[ia]=Notificator de dispositivo -Name[id]=Device Notifier +Name[id]=Penotifikasi Perangkat Name[is]=Tilkynningar um ný tæki Name[it]=Notificatore dei dispositivi Name[ja]=デバイスの通知
  20. Download patch applets/devicenotifier/package/contents/ui/FullRepresentation.qml

    --- 4:5.14.5.1-1/applets/devicenotifier/package/contents/ui/FullRepresentation.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/devicenotifier/package/contents/ui/FullRepresentation.qml 2019-07-30 10:35:48.000000000 +0000 @@ -110,12 +110,22 @@ MouseArea { } } - ColumnLayout { + Item { anchors.fill: parent + PlasmaComponents.ToolButton { + id: unmountAll + visible: devicenotifier.mountedRemovables > 1; + anchors.right: parent.right + iconSource: "media-eject" + tooltip: i18n("Click to safely remove all devices") + text: i18n("Remove all") + implicitWidth: minimumWidth + } + PlasmaExtras.ScrollArea { - Layout.fillWidth: true - Layout.fillHeight: true + anchors.fill: parent + anchors.top: unmountAll.top ListView { id: notifierDialog @@ -158,10 +168,17 @@ MouseArea { DeviceItem { width: notifierDialog.width udi: DataEngineSource - icon: sdSource.data[udi].Icon - deviceName: sdSource.data[udi].Description - emblemIcon: Emblems[0] - state: sdSource.data[udi].State + Binding on icon { + when: sdSource.data[udi] !== undefined + value: sdSource.data[udi].Icon + } + Binding on deviceName { + when: sdSource.data[udi] !== undefined + value: sdSource.data[udi].Description + } + emblemIcon: Emblems && Emblems[0] ? Emblems[0] : "" + state: sdSource.data[udi] ? sdSource.data[udi].State : 0 + isRoot: sdSource.data[udi]["File Path"] === "/" percentUsage: { if (!sdSource.data[udi]) { @@ -175,11 +192,12 @@ MouseArea { freeSpaceText: sdSource.data[udi] && sdSource.data[udi]["Free Space Text"] ? sdSource.data[udi]["Free Space Text"] : "" actionIcon: mounted ? "media-eject" : "media-mount" - actionVisible: model["Device Types"].indexOf("Portable Media Player") == -1 + actionVisible: model["Device Types"].indexOf("Portable Media Player") === -1 actionToolTip: { + var types = model["Device Types"]; if (!mounted) { return i18n("Click to access this device from other applications.") - } else if (model["Device Types"].indexOf("OpticalDisc") != -1) { + } else if (types && types.indexOf("OpticalDisc") !== -1) { return i18n("Click to eject this disc.") } else { return i18n("Click to safely remove this device.")
  21. Download patch applets/digital-clock/package/contents/ui/Tooltip.qml

    --- 4:5.14.5.1-1/applets/digital-clock/package/contents/ui/Tooltip.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/digital-clock/package/contents/ui/Tooltip.qml 2019-07-30 10:35:48.000000000 +0000 @@ -50,7 +50,7 @@ Item { var formattedTime = Qt.formatTime(dateTime, compactRepresentationItem.timeFormat); - if (dateTime.getDay() != dataSource.data["Local"]["DateTime"].getDay()) { + if (dateTime.getDay() !== dataSource.data["Local"]["DateTime"].getDay()) { formattedTime += " (" + Qt.formatDate(dateTime, compactRepresentationItem.dateFormat) + ")"; }
  22. Download patch applets/appmenu/plugin/appmenumodel.h

    --- 4:5.14.5.1-1/applets/appmenu/plugin/appmenumodel.h 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/appmenu/plugin/appmenumodel.h 2019-07-30 10:35:48.000000000 +0000 @@ -27,6 +27,7 @@ #include <QStringList> #include <KWindowSystem> #include <QPointer> +#include <QRect> class QMenu; class QAction; @@ -39,6 +40,9 @@ class AppMenuModel : public QAbstractLis Q_OBJECT Q_PROPERTY(bool menuAvailable READ menuAvailable WRITE setMenuAvailable NOTIFY menuAvailableChanged) + Q_PROPERTY(bool visible READ visible NOTIFY visibleChanged) + + Q_PROPERTY(QRect screenGeometry READ screenGeometry WRITE setScreenGeometry NOTIFY screenGeometryChanged) public: explicit AppMenuModel(QObject *parent = nullptr); @@ -58,6 +62,11 @@ public: bool menuAvailable() const; void setMenuAvailable(bool set); + bool visible() const; + + QRect screenGeometry() const; + void setScreenGeometry(QRect geometry); + signals: void requestActivateIndex(int index); @@ -66,17 +75,27 @@ protected: private Q_SLOTS: void onActiveWindowChanged(WId id); + void onWindowChanged(WId id); + void setVisible(bool visible); void update(); signals: void menuAvailableChanged(); void modelNeedsUpdate(); + void screenGeometryChanged(); + void visibleChanged(); private: bool m_menuAvailable; bool m_updatePending = false; + bool m_visible = true; + + QRect m_screenGeometry; + //! current active window used WId m_currentWindowId = 0; + //! window that its menu initialization may be delayed + WId m_delayedMenuWindowId = 0; QPointer<QMenu> m_menu;
  23. Download patch applets/notifications/package/contents/ui/CompactRepresentation.qml

    --- 4:5.14.5.1-1/applets/notifications/package/contents/ui/CompactRepresentation.qml 1970-01-01 00:00:00.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/package/contents/ui/CompactRepresentation.qml 2019-07-30 10:35:48.000000000 +0000 @@ -0,0 +1,184 @@ +/* + * Copyright 2018-2019 Kai Uwe Broulik <kde@privat.broulik.de> + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see <http://www.gnu.org/licenses/> + */ + +import QtQuick 2.8 +import QtQuick.Layouts 1.1 + +import org.kde.plasma.core 2.0 as PlasmaCore +import org.kde.plasma.components 2.0 as PlasmaComponents + +MouseArea { + id: compactRoot + + readonly property bool inPanel: (plasmoid.location === PlasmaCore.Types.TopEdge + || plasmoid.location === PlasmaCore.Types.RightEdge + || plasmoid.location === PlasmaCore.Types.BottomEdge + || plasmoid.location === PlasmaCore.Types.LeftEdge) + + Layout.minimumWidth: plasmoid.formFactor === PlasmaCore.Types.Horizontal ? height : units.iconSizes.small + Layout.minimumHeight: plasmoid.formFactor === PlasmaCore.Types.Vertical ? width : (units.iconSizes.small + 2 * theme.mSize(theme.defaultFont).height) + + Layout.maximumWidth: inPanel ? units.iconSizeHints.panel : -1 + Layout.maximumHeight: inPanel ? units.iconSizeHints.panel : -1 + + property int activeCount: 0 + property int unreadCount: 0 + + property int jobsCount: 0 + property int jobsPercentage: 0 + + property bool inhibited: false + + property bool wasExpanded: false + onPressed: wasExpanded = plasmoid.expanded + onClicked: plasmoid.expanded = !wasExpanded + + PlasmaCore.Svg { + id: notificationSvg + imagePath: "icons/notification" + colorGroup: PlasmaCore.ColorScope.colorGroup + } + + PlasmaCore.SvgItem { + id: notificationIcon + anchors.centerIn: parent + width: units.roundToIconSize(Math.min(parent.width, parent.height)) + height: width + svg: notificationSvg + visible: opacity > 0 + + elementId: "notification-disabled" + + Item { + id: jobProgressItem + anchors { + left: parent.left + top: parent.top + bottom: parent.bottom + } + width: notificationIcon.width * (jobsPercentage / 100) + + clip: true + visible: false + + PlasmaCore.SvgItem { + anchors { + left: parent.left + top: parent.top + bottom: parent.bottom + } + width: notificationIcon.width + + svg: notificationSvg + elementId: "notification-progress-active" + } + } + + PlasmaComponents.Label { + id: countLabel + anchors.centerIn: parent + width: Math.round(Math.min(parent.width, parent.height) * 0.75) + height: width + fontSizeMode: Text.Fit + font.pointSize: 1024 + font.pixelSize: -1 + minimumPointSize: 5//theme.smallestFont.pointSize + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + text: compactRoot.unreadCount || "" + renderType: Text.QtRendering + } + + PlasmaComponents.BusyIndicator { + id: busyIndicator + anchors.fill: parent + visible: false + running: visible + } + } + + PlasmaCore.IconItem { + id: dndIcon + anchors.fill: parent + source: "notifications-disabled" + opacity: 0 + scale: 2 + visible: opacity > 0 + } + + states: [ + State { // active process + when: compactRoot.jobsCount > 0 + PropertyChanges { + target: notificationIcon + elementId: "notification-progress-inactive" + } + PropertyChanges { + target: countLabel + text: compactRoot.jobsCount + } + PropertyChanges { + target: busyIndicator + visible: true + } + PropertyChanges { + target: jobProgressItem + visible: true + } + }, + State { // do not disturb + when: compactRoot.inhibited + PropertyChanges { + target: dndIcon + scale: 1 + opacity: 1 + } + PropertyChanges { + target: notificationIcon + scale: 0 + opacity: 0 + } + }, + State { // unread notifications + when: compactRoot.unreadCount > 0 + PropertyChanges { + target: notificationIcon + elementId: "notification-empty" + } + PropertyChanges { + target: countLabel + text: compactRoot.unreadCount + } + } + ] + + transitions: [ + Transition { + to: "*" // any state + NumberAnimation { + targets: [notificationIcon, dndIcon] + properties: "opacity,scale" + duration: units.longDuration + easing.type: Easing.InOutQuad + } + } + ] + +}
  24. Download patch applets/batterymonitor/package/contents/ui/CompactRepresentation.qml

    --- 4:5.14.5.1-1/applets/batterymonitor/package/contents/ui/CompactRepresentation.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/batterymonitor/package/contents/ui/CompactRepresentation.qml 2019-07-30 10:35:48.000000000 +0000 @@ -33,7 +33,7 @@ MouseArea { onClicked: plasmoid.expanded = !plasmoid.expanded - readonly property bool isConstrained: plasmoid.formFactor == PlasmaCore.Types.Vertical || plasmoid.formFactor == PlasmaCore.Types.Horizontal + readonly property bool isConstrained: plasmoid.formFactor === PlasmaCore.Types.Vertical || plasmoid.formFactor === PlasmaCore.Types.Horizontal //Should we consider turning this into a Flow item? Row {
  25. Download patch applets/notifications/lib/notificationsapplet.h

    --- 4:5.14.5.1-1/applets/notifications/lib/notificationsapplet.h 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/lib/notificationsapplet.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,66 +0,0 @@ -/* - * Copyright 2014 (c) Martin Klapetek <mklapetek@kde.org> - * - * 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) version 3 or any later version - * accepted by the membership of KDE e.V. (or its successor approved - * by the membership of KDE e.V.), which shall act as a proxy - * defined in Section 14 of version 3 of the license. - * - * 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, see <http://www.gnu.org/licenses/>. - * - */ - -#ifndef NOTIFICATIONS_APPLET_H -#define NOTIFICATIONS_APPLET_H - -#include <Plasma/Applet> - -#include "../plugin/notificationshelper.h" - -class NotificationsApplet : public Plasma::Applet -{ - Q_OBJECT - Q_PROPERTY(uint screenPosition READ screenPosition WRITE onScreenPositionChanged NOTIFY screenPositionChanged) - Q_PROPERTY(QRect availableScreenRect READ availableScreenRect NOTIFY availableScreenRectChanged) - -public: - NotificationsApplet(QObject *parent, const QVariantList &data); - ~NotificationsApplet() override; - - uint screenPosition() const; - - // This is the screen position that is stored - // in the config file, used to initialize the - // applet settings dialog - Q_INVOKABLE uint configScreenPosition() const; - - QRect availableScreenRect() const; - -public Q_SLOTS: - void init() override; - void onScreenPositionChanged(uint position); - void onAppletLocationChanged(); - -Q_SIGNALS: - void screenPositionChanged(uint position); - void availableScreenRectChanged(const QRect &availableScreenRect); - -private: - void setScreenPositionFromAppletLocation(); - void onScreenChanges(); - - NotificationsHelper::PositionOnScreen m_popupPosition; - QRect m_availableScreenRect; -}; - - -#endif // NOTIFICATIONS_APPLET
  26. Download patch applets/notifications/plugin/notificationshelperplugin.h

    --- 4:5.14.5.1-1/applets/notifications/plugin/notificationshelperplugin.h 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/plugin/notificationshelperplugin.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,35 +0,0 @@ -/* - Copyright (C) 2014 Martin Klapetek <mklapetek@kde.org> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ - - -#ifndef NOTIFICATIONSHELPERPLUGIN_H -#define NOTIFICATIONSHELPERPLUGIN_H - -#include <QQmlExtensionPlugin> - -class NotificationsHelperPlugin : public QQmlExtensionPlugin -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface") - -public: - void registerTypes(const char *uri) override; - -}; - -#endif // NOTIFICATIONSHELPERPLUGIN_H
  27. Download patch applets/notifications/plugin/draghelper.cpp

    --- 4:5.14.5.1-1/applets/notifications/plugin/draghelper.cpp 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/plugin/draghelper.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,84 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2013 by Eike Hein <hein@kde.org> * - * * - * 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 "draghelper.h" - -#include <QDrag> -#include <QGuiApplication> -#include <QMimeData> -#include <QQuickItem> -#include <QQuickWindow> -#include <QStyleHints> - -DragHelper::DragHelper(QObject* parent) : QObject(parent) -{ -} - -DragHelper::~DragHelper() -{ -} - -bool DragHelper::dragActive() const -{ - return m_dragActive; -} - -bool DragHelper::isDrag(int oldX, int oldY, int newX, int newY) const -{ - return ((QPoint(oldX, oldY) - QPoint(newX, newY)).manhattanLength() >= qApp->styleHints()->startDragDistance()); -} - -void DragHelper::startDrag(QQuickItem *item, const QUrl &url, const QPixmap &pixmap) -{ - // This allows the caller to return, making sure we don't crash if - // the caller is destroyed mid-drag - - QMetaObject::invokeMethod(this, "doDrag", Qt::QueuedConnection, - Q_ARG(QQuickItem*, item), Q_ARG(QUrl, url), Q_ARG(QPixmap, pixmap)); -} - -void DragHelper::doDrag(QQuickItem *item, const QUrl &url, const QPixmap &pixmap) -{ - if (item && item->window() && item->window()->mouseGrabberItem()) { - item->window()->mouseGrabberItem()->ungrabMouse(); - } - - QDrag *drag = new QDrag(item); - - QMimeData *mimeData = new QMimeData(); - - if (!url.isEmpty()) { - mimeData->setUrls(QList<QUrl>() << url); - } - - drag->setMimeData(mimeData); - - if (!pixmap.isNull()) { - drag->setPixmap(pixmap); - } - - m_dragActive = true; - emit dragActiveChanged(); - - drag->exec(); - - m_dragActive = false; - emit dragActiveChanged(); -} -
  28. Download patch applets/notifications/plugin/thumbnailer.h

    --- 4:5.14.5.1-1/applets/notifications/plugin/thumbnailer.h 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/plugin/thumbnailer.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ -/* - Copyright (C) 2016 Kai Uwe Broulik <kde@privat.broulik.de> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#pragma once - -#include <QObject> -#include <QQmlParserStatus> - -#include <QPixmap> -#include <QSize> -#include <QUrl> - -class QQuickItem; - -class Thumbnailer : public QObject, public QQmlParserStatus -{ - Q_OBJECT - Q_INTERFACES(QQmlParserStatus) - - Q_PROPERTY(QUrl url READ url WRITE setUrl NOTIFY urlChanged) - Q_PROPERTY(QSize size READ size WRITE setSize NOTIFY sizeChanged) - - Q_PROPERTY(bool hasPreview READ hasPreview NOTIFY pixmapChanged) - Q_PROPERTY(QPixmap pixmap READ pixmap NOTIFY pixmapChanged) - Q_PROPERTY(QSize pixmapSize READ pixmapSize NOTIFY pixmapChanged) - - Q_PROPERTY(QString iconName READ iconName NOTIFY iconNameChanged) - - Q_PROPERTY(bool menuVisible READ menuVisible NOTIFY menuVisibleChanged) - -public: - explicit Thumbnailer(QObject *parent = nullptr); - ~Thumbnailer() override; - - QUrl url() const; - void setUrl(const QUrl &url); - - QSize size() const; - void setSize(const QSize &size); - - bool hasPreview() const; - QPixmap pixmap() const; - QSize pixmapSize() const; - - QString iconName() const; - - bool menuVisible() const; - - Q_INVOKABLE void showContextMenu(int x, int y, const QString &path, QQuickItem *ctx); - - void classBegin() override; - void componentComplete() override; - -signals: - void menuVisibleChanged(); - - void urlChanged(); - void sizeChanged(); - void pixmapChanged(); - void iconNameChanged(); - -private: - void generatePreview(); - - bool m_inited = false; - - bool m_menuVisible = false; - - QUrl m_url; - QSize m_size; - - QPixmap m_pixmap; - - QString m_iconName; - -};
  29. Download patch applets/notifications/filemenu.h

    --- 4:5.14.5.1-1/applets/notifications/filemenu.h 1970-01-01 00:00:00.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/filemenu.h 2019-07-30 10:35:48.000000000 +0000 @@ -0,0 +1,62 @@ +/* + Copyright (C) 2016,2019 Kai Uwe Broulik <kde@privat.broulik.de> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#pragma once + +#include <QObject> +#include <QPointer> +#include <QUrl> + +class QAction; +class QQuickItem; + +class FileMenu : public QObject +{ + Q_OBJECT + Q_PROPERTY(QUrl url READ url WRITE setUrl NOTIFY urlChanged) + Q_PROPERTY(QQuickItem *visualParent READ visualParent WRITE setVisualParent NOTIFY visualParentChanged) + Q_PROPERTY(bool visible READ visible WRITE setVisible NOTIFY visibleChanged) + +public: + explicit FileMenu(QObject *parent = nullptr); + ~FileMenu() override; + + QUrl url() const; + void setUrl(const QUrl &url); + + QQuickItem *visualParent() const; + void setVisualParent(QQuickItem *visualParent); + + bool visible() const; + void setVisible(bool visible); + + Q_INVOKABLE void open(int x, int y); + +signals: + void actionTriggered(QAction *action); + + void urlChanged(); + void visualParentChanged(); + void visibleChanged(); + +private: + QUrl m_url; + QPointer<QQuickItem> m_visualParent; + bool m_visible = false; + +};
  30. Download patch applets/digital-clock/package/contents/config/main.xml

    --- 4:5.14.5.1-1/applets/digital-clock/package/contents/config/main.xml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/digital-clock/package/contents/config/main.xml 2019-07-30 10:35:48.000000000 +0000 @@ -19,9 +19,13 @@ <default>false</default> </entry> <entry name="dateFormat" type="string"> - <label>The date format to display. Options are: shortDate, longDate or isoDate.</label> + <label>The date format to display. Options are: shortDate, longDate, isoDate or custom.</label> <default>shortDate</default> </entry> + <entry name="customDateFormat" type="string"> + <label>Custom date format string.</label> + <default>ddd d</default> + </entry> <entry name="fontFamily" type="string"> <label>Font family. e.g "arial". The system font is used if this is not set.</label> <default></default>
  31. Download patch applets/notifications/package/contents/ui/NotificationDelegate.qml

    --- 4:5.14.5.1-1/applets/notifications/package/contents/ui/NotificationDelegate.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/package/contents/ui/NotificationDelegate.qml 1970-01-01 00:00:00.000000000 +0000 @@ -1,167 +0,0 @@ -/* - * Copyright 2011 Marco Martin <notmart@gmail.com> - * - * 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.0 -import QtQuick.Controls.Private 1.0 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.components 2.0 as PlasmaComponents -import org.kde.plasma.extras 2.0 as PlasmaExtras -import org.kde.kquickcontrolsaddons 2.0 - -PlasmaComponents.ListItem { - id: notificationItem - width: historyList.width - - property ListModel listModel; - - opacity: 1-Math.abs(x)/width - - enabled: model.hasDefaultAction - checked: notificationItem.containsMouse - - Timer { - interval: 10*60*1000 - repeat: false - running: !idleTimeSource.idle - onTriggered: { - if (!listModel.inserting) - listModel.remove(index) - } - } - - MouseArea { - width: parent.width - height: childrenRect.height - acceptedButtons: Qt.NoButton - - drag { - target: notificationItem - axis: Drag.XAxis - //kind of an hack over Column being too smart - minimumX: -parent.width + 1 - maximumX: parent.width - 1 - } - onReleased: { - if (notificationItem.x < -notificationItem.width/2) { - removeAnimation.exitFromRight = false - removeAnimation.running = true - } else if (notificationItem.x > notificationItem.width/2 ) { - removeAnimation.exitFromRight = true - removeAnimation.running = true - } else { - resetAnimation.running = true - } - } - - SequentialAnimation { - id: removeAnimation - property bool exitFromRight: true - NumberAnimation { - target: notificationItem - properties: "x" - to: removeAnimation.exitFromRight ? notificationItem.width-1 : 1-notificationItem.width - duration: units.longDuration - easing.type: Easing.InOutQuad - } - NumberAnimation { - target: notificationItem - properties: "height" - to: 0 - duration: units.longDuration - easing.type: Easing.InOutQuad - } - ScriptAction { - script: { - closeNotification(model.source); - listModel.remove(index); - } - } - } - - SequentialAnimation { - id: resetAnimation - NumberAnimation { - target: notificationItem - properties: "x" - to: 0 - duration: units.longDuration - easing.type: Easing.InOutQuad - } - } - - NotificationItem { - id: notification - width: parent.width - - compact: true - icon: appIcon - image: model.image - summary: model.summary - body: model.body - configurable: model.configurable && !Settings.isMobile - // model.actions JS array is implicitly turned into a ListModel which we can assign directly - actions: model.actions - created: model.created - hasDefaultAction: model.hasDefaultAction - hasConfigureAction: model.hasConfigureAction - urls: { - // QML ListModel tries to be smart and turns our urls Array into a dict with index as key... - var urls = [] - - var modelUrls = model.urls - if (modelUrls) { - for (var key in modelUrls) { - urls.push(modelUrls[key]) - } - } - - return urls - } - - onClose: { - if (listModel.count > 1) { - removeAnimation.running = true - } else { - closeNotification(model.source) - listModel.remove(index) - } - } - onConfigure: { - plasmoid.expanded = false - configureNotification(model.appRealName, model.eventId) - } - onAction: { - executeAction(model.source, actionId) - actions.clear() - } - onOpenUrl: { - plasmoid.expanded = false - Qt.openUrlExternally(url) - } - } - - } //MouseArea - - Component.onCompleted: { - mainScrollArea.height = mainScrollArea.implicitHeight - } - Component.onDestruction: { - mainScrollArea.height = mainScrollArea.implicitHeight - } -}
  32. Download patch applets/activitybar/metadata.desktop

    --- 4:5.14.5.1-1/applets/activitybar/metadata.desktop 2019-02-13 13:39:58.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/activitybar/metadata.desktop 2019-07-30 10:35:48.000000000 +0000 @@ -28,7 +28,7 @@ Name[hr]=Traka aktivnosti Name[hsb]=Pas aktiwitow Name[hu]=Aktivitásjelző Name[ia]=Barra de activitate -Name[id]=Activity Bar +Name[id]=Bilah Aktivitas Name[is]=Virknislá Name[it]=Barra delle attività Name[ja]=アクティビティバー @@ -44,7 +44,7 @@ Name[ml]=ആക്ടിവിറ്റ Name[mr]=कार्यपध्दती पट्टी Name[nb]=Aktivitetsstolpe Name[nds]=Aktivitetenbalken -Name[nl]=Activiteitsbalk +Name[nl]=Activiteitenbalk Name[nn]=Aktivitetslinje Name[pa]=ਸਰਗਰਮੀ ਪੱਟੀ Name[pl]=Pasek aktywności @@ -113,7 +113,7 @@ Comment[ml]=പ്രവര്‍ത് Comment[mr]=कार्यपध्दती बदलण्याकरिता टॅब बार Comment[nb]=Fanelinje for å bytte mellom aktiviteter Comment[nds]=Paneelbalken, mit den sik Aktiviteten wesseln laat -Comment[nl]=Tabbalk om van activiteit te wisselen +Comment[nl]=Tabbladbalk om van activiteit te wisselen Comment[nn]=Fanelinje for å byta mellom aktivitetar Comment[pa]=ਸਰਗਰਮੀਆਂ ਨੂੰ ਬਦਲਣ ਲਈ ਟੈਬ ਪੱਟੀ Comment[pl]=Pasek kart do przełączania aktywności @@ -149,7 +149,7 @@ X-KDE-PluginInfo-Author=Bhushan Shah X-KDE-PluginInfo-Email=bhush94@gmail.com X-KDE-PluginInfo-Name=org.kde.plasma.activitybar X-KDE-PluginInfo-Version=1.0 -X-KDE-PluginInfo-Website=http://plasma.kde.org/ +X-KDE-PluginInfo-Website=https://www.kde.org/plasma-desktop X-KDE-PluginInfo-Category=Windows and Tasks X-KDE-PluginInfo-Depends= X-KDE-PluginInfo-License=GPL-2.0+
  33. Download patch applets/notifications/plugin/notificationshelper.h

    --- 4:5.14.5.1-1/applets/notifications/plugin/notificationshelper.h 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/plugin/notificationshelper.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,95 +0,0 @@ -/* - Copyright (C) 2014 Martin Klapetek <mklapetek@kde.org> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef NOTIFICATIONSHELPER_H -#define NOTIFICATIONSHELPER_H - -#include <QObject> -#include <QRect> -#include <QHash> -#include <QVariantMap> - -class QQuickWindow; -class QTimer; -class QReadWriteLock; - -class NotificationsHelper : public QObject -{ - Q_OBJECT - Q_PROPERTY(PositionOnScreen popupLocation MEMBER m_popupLocation WRITE setPopupLocation NOTIFY popupLocationChanged) - -public: - enum PositionOnScreen { - Default, // Follows the panel - TopLeft, - TopCenter, - TopRight, - Left, - Center, - Right, - BottomLeft, - BottomCenter, - BottomRight - }; - Q_ENUM(PositionOnScreen) - - explicit NotificationsHelper(QObject *parent = nullptr); - ~NotificationsHelper() override; - Q_INVOKABLE void addNotificationPopup(QObject *win); - Q_INVOKABLE void closePopup(const QString &sourceName); - - Q_INVOKABLE void setPlasmoidScreenGeometry(const QRect &geometry); - - void setPopupLocation(PositionOnScreen popupLocation); - - /** - * Fills the popup with data from notificationData - * and puts the popup on proper place on screen. - * If there's no space on screen for the notification, - * it's queued and displayed as soon as there's space for it - */ - Q_INVOKABLE void displayNotification(const QVariantMap &notificationData); - -Q_SIGNALS: - void popupLocationChanged(); - void popupShown(QQuickWindow* popup); -// void plasmoidScreenChanged(); - -private Q_SLOTS: - void onPopupClosed(); - void processQueues(); - void processShow(); - void processHide(); - -private: - void repositionPopups(); - - QList<QQuickWindow*> m_popupsOnScreen; - QList<QQuickWindow*> m_availablePopups; - QHash<QString, QQuickWindow*> m_sourceMap; - QRect m_plasmoidScreen; - PositionOnScreen m_popupLocation; - int m_offset; - bool m_busy; - QList<QQuickWindow*> m_hideQueue; - QList<QVariantMap> m_showQueue; - QReadWriteLock *m_mutex; - QTimer *m_dispatchTimer; -}; - -#endif // NOTIFICATIONSHELPER_H
  34. Download patch applets/mediacontroller/metadata.desktop

    --- 4:5.14.5.1-1/applets/mediacontroller/metadata.desktop 2019-02-13 13:39:58.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/mediacontroller/metadata.desktop 2019-07-30 10:35:48.000000000 +0000 @@ -18,7 +18,6 @@ Name[gl]=Reprodutor multimedia Name[he]=נגן מדיה Name[hu]=Médialejátszó Name[ia]=Media Player (Reproductor de Media) -Name[id]=Media Player Name[is]=Margmiðlunarspilari Name[it]=Lettore multimediale Name[ja]=メディアプレーヤー @@ -89,7 +88,7 @@ Comment[sv]=Kontroller för mediaspelare Comment[tr]=Ortam Yürütücüsü Denetimleri Comment[uk]=Керування мультимедійним програвачем Comment[x-test]=xxMedia Player Controlsxx -Comment[zh_CN]=控制媒体播放器 +Comment[zh_CN]=媒体播放器控件 Comment[zh_TW]=媒體播放器控制 Icon=applications-multimedia @@ -103,7 +102,7 @@ X-KDE-PluginInfo-EnabledByDefault=true X-KDE-PluginInfo-License=GPL-2.0+ X-KDE-PluginInfo-Name=org.kde.plasma.mediacontroller X-KDE-PluginInfo-Version=1.0 -X-KDE-PluginInfo-Website=http://plasma.kde.org/ +X-KDE-PluginInfo-Website=https://www.kde.org/plasma-desktop X-Plasma-StandAloneApp=true X-Plasma-API=declarativeappletscript X-Plasma-MainScript=ui/main.qml
  35. Download patch applets/icon/CMakeLists.txt

    --- 4:5.14.5.1-1/applets/icon/CMakeLists.txt 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/icon/CMakeLists.txt 2019-07-30 10:35:48.000000000 +0000 @@ -13,7 +13,8 @@ target_link_libraries(plasma_applet_icon KF5::KIOCore # for OpenFileManagerWindowJob KF5::KIOGui # for FavIconRequestJob KF5::KIOWidgets # for KRun - KF5::Plasma) + KF5::Plasma + PW::LibTaskManager) install(TARGETS plasma_applet_icon DESTINATION ${KDE_INSTALL_PLUGINDIR}/plasma/applets)
  36. Download patch applets/notifications/thumbnailer.h

    --- 4:5.14.5.1-1/applets/notifications/thumbnailer.h 1970-01-01 00:00:00.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/thumbnailer.h 2019-07-30 10:35:48.000000000 +0000 @@ -0,0 +1,94 @@ +/* + Copyright (C) 2016 Kai Uwe Broulik <kde@privat.broulik.de> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#pragma once + +#include <QObject> +#include <QQmlParserStatus> + +#include <QPixmap> +#include <QSize> +#include <QUrl> + +class QQuickItem; + +class Thumbnailer : public QObject, public QQmlParserStatus +{ + Q_OBJECT + Q_INTERFACES(QQmlParserStatus) + + Q_PROPERTY(QUrl url READ url WRITE setUrl NOTIFY urlChanged) + Q_PROPERTY(QSize size READ size WRITE setSize NOTIFY sizeChanged) + + Q_PROPERTY(bool busy READ busy NOTIFY busyChanged) + Q_PROPERTY(bool hasPreview READ hasPreview NOTIFY pixmapChanged) + Q_PROPERTY(QPixmap pixmap READ pixmap NOTIFY pixmapChanged) + Q_PROPERTY(QSize pixmapSize READ pixmapSize NOTIFY pixmapChanged) + + Q_PROPERTY(QString iconName READ iconName NOTIFY iconNameChanged) + + Q_PROPERTY(bool menuVisible READ menuVisible NOTIFY menuVisibleChanged) + +public: + explicit Thumbnailer(QObject *parent = nullptr); + ~Thumbnailer() override; + + QUrl url() const; + void setUrl(const QUrl &url); + + QSize size() const; + void setSize(const QSize &size); + + bool busy() const; + bool hasPreview() const; + QPixmap pixmap() const; + QSize pixmapSize() const; + + QString iconName() const; + + bool menuVisible() const; + + void classBegin() override; + void componentComplete() override; + +signals: + void menuVisibleChanged(); + + void urlChanged(); + void sizeChanged(); + void busyChanged(); + void pixmapChanged(); + void iconNameChanged(); + +private: + void generatePreview(); + + bool m_inited = false; + + bool m_menuVisible = false; + + QUrl m_url; + QSize m_size; + + bool m_busy = false; + + QPixmap m_pixmap; + + QString m_iconName; + +};
  37. Download patch applets/notifications/plugin/CMakeLists.txt

    --- 4:5.14.5.1-1/applets/notifications/plugin/CMakeLists.txt 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/plugin/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -set(notificationshelper_SRCS - notificationshelper.cpp - notificationshelperplugin.cpp - thumbnailer.cpp - draghelper.cpp - ) - -add_library(notificationshelperplugin SHARED ${notificationshelper_SRCS}) -target_link_libraries(notificationshelperplugin Qt5::Core - Qt5::Gui - Qt5::Qml - Qt5::Quick - KF5::KIOWidgets - KF5::I18n - ) - -install(TARGETS notificationshelperplugin DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/plasma/private/notifications) - -install(FILES qmldir DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/plasma/private/notifications)
  38. Download patch applets/digital-clock/package/contents/ui/configCalendar.qml

    --- 4:5.14.5.1-1/applets/digital-clock/package/contents/ui/configCalendar.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/digital-clock/package/contents/ui/configCalendar.qml 2019-07-30 10:35:48.000000000 +0000 @@ -19,9 +19,10 @@ */ import QtQuick 2.0 -import QtQuick.Controls 1.0 as QtControls +import QtQuick.Controls 2.4 as QtControls import QtQuick.Layouts 1.0 as QtLayouts import org.kde.plasma.calendar 2.0 as PlasmaCalendar +import org.kde.kirigami 2.5 as Kirigami Item { id: calendarPage @@ -37,31 +38,37 @@ Item { plasmoid.configuration.enabledCalendarPlugins = PlasmaCalendar.EventPluginsManager.enabledPlugins; } - QtLayouts.ColumnLayout { - anchors.left: parent.left + Kirigami.FormLayout { + anchors { + left: parent.left + right: parent.right + } + QtControls.CheckBox { id: showWeekNumbers - text: i18n("Show week numbers in Calendar") + Kirigami.FormData.label: i18n("General:") + text: i18n("Show week numbers") + } + + Item { + Kirigami.FormData.isSection: true } - QtControls.GroupBox { - QtLayouts.Layout.fillWidth: true - title: i18n("Available Calendar Plugins") - flat: true - - QtLayouts.ColumnLayout { - Repeater { - id: calendarPluginsRepeater - model: PlasmaCalendar.EventPluginsManager.model - delegate: QtLayouts.RowLayout { - QtControls.CheckBox { - text: model.display - checked: model.checked - onClicked: { - //needed for model's setData to be called - model.checked = checked; - calendarPage.configurationChanged(); - } + QtLayouts.ColumnLayout { + Kirigami.FormData.label: i18n("Available Plugins:") + Kirigami.FormData.buddyFor: children[1] // 0 is the Repeater + + Repeater { + id: calendarPluginsRepeater + model: PlasmaCalendar.EventPluginsManager.model + delegate: QtLayouts.RowLayout { + QtControls.CheckBox { + text: model.display + checked: model.checked + onClicked: { + //needed for model's setData to be called + model.checked = checked; + calendarPage.configurationChanged(); } } }
  39. Download patch applets/appmenu/package/contents/ui/main.qml

    --- 4:5.14.5.1-1/applets/appmenu/package/contents/ui/main.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/appmenu/package/contents/ui/main.qml 2019-07-30 10:35:48.000000000 +0000 @@ -50,7 +50,7 @@ Item { enabled: menuAvailable checkable: menuAvailable && plasmoid.nativeInterface.currentIndex === fakeIndex checked: checkable - iconSource: i18n("application-menu") + iconSource: "application-menu" onClicked: plasmoid.nativeInterface.trigger(this, 0); } @@ -60,11 +60,9 @@ Item { Plasmoid.status: { if (menuAvailable && plasmoid.nativeInterface.currentIndex > -1 && buttonRepeater.count > 0) { return PlasmaCore.Types.NeedsAttentionStatus; - } else if (menuAvailable){ + } else { //when we're not enabled set to active to show the configure button return buttonRepeater.count > 0 ? PlasmaCore.Types.ActiveStatus : PlasmaCore.Types.HiddenStatus; - } else { - return PlasmaCore.Types.PassiveStatus; } } @@ -102,9 +100,18 @@ Item { connectedSources: ["Alt"] } + PlasmaComponents.ToolButton { + id: noMenuPlaceholder + visible: buttonRepeater.count == 0 + text: plasmoid.title + Layout.preferredWidth: minimumWidth + Layout.fillWidth: root.vertical + Layout.fillHeight: !root.vertical + } + Repeater { id: buttonRepeater - model: appMenuModel + model: appMenuModel.visible ? appMenuModel : null PlasmaComponents.ToolButton { readonly property int buttonIndex: index @@ -148,6 +155,7 @@ Item { AppMenuPrivate.AppMenuModel { id: appMenuModel + screenGeometry: plasmoid.screenGeometry onRequestActivateIndex: plasmoid.nativeInterface.requestActivateIndex(index) Component.onCompleted: { plasmoid.nativeInterface.model = appMenuModel
  40. Download patch applets/notifications/plugin/notificationshelper.cpp
  41. Download patch applets/devicenotifier/test-predicate-openinwindow.desktop

    --- 4:5.14.5.1-1/applets/devicenotifier/test-predicate-openinwindow.desktop 2019-02-13 13:39:58.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/devicenotifier/test-predicate-openinwindow.desktop 2019-07-30 10:35:48.000000000 +0000 @@ -30,7 +30,7 @@ Name[hi]=फ़ाइल प्रबं Name[hr]=Otvori pomoću upravitelja datoteka Name[hu]=Megnyitás a fájlkezelővel Name[ia]=Aperi con le gerente de files -Name[id]=Open with File Manager +Name[id]=Buka dengan Pengelola File Name[is]=Opna með skráastjóra Name[it]=Apri con il gestore dei file Name[ja]=ファイルマネージャで開く
  42. Download patch applets/appmenu/package/contents/config/config.qml

    --- 4:5.14.5.1-1/applets/appmenu/package/contents/config/config.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/appmenu/package/contents/config/config.qml 2019-07-30 10:35:48.000000000 +0000 @@ -26,7 +26,7 @@ import org.kde.plasma.configuration 2.0 ConfigModel { ConfigCategory { name: i18n("Appearance") - icon: "plasma" + icon: "preferences-desktop-color" source: "configGeneral.qml" } }
  43. Download patch applets/notifications/package/contents/ui/NotificationPopup.qml
  44. Download patch applets/notifications/package/contents/config/config.qml

    --- 4:5.14.5.1-1/applets/notifications/package/contents/config/config.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/package/contents/config/config.qml 1970-01-01 00:00:00.000000000 +0000 @@ -1,31 +0,0 @@ -/* - * Copyright 2014 Kai Uwe Broulik <kde@privat.broulik.de> - * - * 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) version 3 or any later version - * accepted by the membership of KDE e.V. (or its successor approved - * by the membership of KDE e.V.), which shall act as a proxy - * defined in Section 14 of version 3 of the license. - * - * 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, see <http://www.gnu.org/licenses/> - */ - -import QtQuick 2.0 - -import org.kde.plasma.configuration 2.0 - -ConfigModel { - ConfigCategory { - name: i18n("Information") - icon: "preferences-desktop-notification" - source: "configNotifications.qml" - } -}
  45. Download patch applets/lock_logout/contents/ui/ConfigGeneral.qml

    --- 4:5.14.5.1-1/applets/lock_logout/contents/ui/ConfigGeneral.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/lock_logout/contents/ui/ConfigGeneral.qml 2019-07-30 10:35:48.000000000 +0000 @@ -18,18 +18,14 @@ */ import QtQuick 2.0 -import QtQuick.Layouts 1.1 as QtLayouts -import QtQuick.Controls 1.0 as QtControls - +import QtQuick.Controls 2.5 as QtControls +import org.kde.kirigami 2.5 as Kirigami import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.extras 2.0 as PlasmaExtras -Item { +Kirigami.FormLayout { id: iconsPage - width: childrenRect.width - height: childrenRect.height - implicitWidth: pageColumn.implicitWidth - implicitHeight: pageColumn.implicitHeight + anchors.left: parent.left + anchors.right: parent.right readonly property int checkedOptions: leave.checked + lock.checked + switchUser.checked + hibernate.checked + sleep.checked @@ -43,51 +39,37 @@ Item { readonly property bool canSuspend: dataEngine.data["Sleep States"].Suspend readonly property bool canHibernate: dataEngine.data["Sleep States"].Hibernate - SystemPalette { - id: sypal - } - PlasmaCore.DataSource { id: dataEngine engine: "powermanagement" connectedSources: ["Sleep States"] } - QtLayouts.ColumnLayout { - id: pageColumn - - anchors.left: parent.left - PlasmaExtras.Heading { - text: i18nc("Heading for list of actions (leave, lock, shutdown, ...)", "Actions") - color: syspal.text - level: 2 - } - - QtControls.CheckBox { - id: leave - text: i18n("Leave") - // ensure user cannot have all options unchecked - enabled: checkedOptions > 1 || !checked - } - QtControls.CheckBox { - id: lock - text: i18n("Lock") - enabled: iconsPage.canLockScreen && (checkedOptions > 1 || !checked) - } - QtControls.CheckBox { - id: switchUser - text: i18n("Switch User") - enabled: checkedOptions > 1 || !checked - } - QtControls.CheckBox { - id: hibernate - text: i18n("Hibernate") - enabled: iconsPage.canHibernate && (checkedOptions > 1 || !checked) - } - QtControls.CheckBox { - id: sleep - text: i18n("Suspend") - enabled: iconsPage.canSuspend && (checkedOptions > 1 || !checked) - } + QtControls.CheckBox { + id: leave + Kirigami.FormData.label: i18nc("Heading for a list of actions (leave, lock, switch user, hibernate, suspend)", "Show actions:") + text: i18n("Leave") + // ensure user cannot have all options unchecked + enabled: checkedOptions > 1 || !checked + } + QtControls.CheckBox { + id: lock + text: i18n("Lock") + enabled: iconsPage.canLockScreen && (checkedOptions > 1 || !checked) + } + QtControls.CheckBox { + id: switchUser + text: i18n("Switch User") + enabled: checkedOptions > 1 || !checked + } + QtControls.CheckBox { + id: hibernate + text: i18n("Hibernate") + enabled: iconsPage.canHibernate && (checkedOptions > 1 || !checked) + } + QtControls.CheckBox { + id: sleep + text: i18nc("Suspend to RAM", "Sleep") + enabled: iconsPage.canSuspend && (checkedOptions > 1 || !checked) } }
  46. Download patch applets/lock_logout/contents/ui/lockout.qml

    --- 4:5.14.5.1-1/applets/lock_logout/contents/ui/lockout.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/lock_logout/contents/ui/lockout.qml 2019-07-30 10:35:48.000000000 +0000 @@ -138,7 +138,7 @@ Flow { id: sleepDialogComponent QueryDialog { titleIcon: "system-suspend" - titleText: i18n("Suspend") + titleText: i18nc("Suspend to RAM", "Sleep") message: i18n("Do you want to suspend to RAM (sleep)?") location: plasmoid.location @@ -151,14 +151,14 @@ Flow { property QueryDialog sleepDialog function clickHandler(what, button) { - if (what == "suspendToDisk") { + if (what === "suspendToDisk") { if (!hibernateDialog) { hibernateDialog = hibernateDialogComponent.createObject(lockout); } hibernateDialog.visualParent = button hibernateDialog.open(); - } else if (what == "suspendToRam") { + } else if (what === "suspendToRam") { if (!sleepDialog) { sleepDialog = sleepDialogComponent.createObject(lockout); }
  47. Download patch applets/calendar/package/contents/ui/configGeneral.qml

    --- 4:5.14.5.1-1/applets/calendar/package/contents/ui/configGeneral.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/calendar/package/contents/ui/configGeneral.qml 2019-07-30 10:35:48.000000000 +0000 @@ -18,54 +18,46 @@ * along with this program. If not, see <http://www.gnu.org/licenses/> */ -import QtQuick 2.0 -import QtQuick.Controls 1.0 as QtControls -import QtQuick.Layouts 1.0 as QtLayouts +import QtQuick 2.5 +import QtQuick.Controls 2.5 as QtControls +import org.kde.kirigami 2.5 as Kirigami -Item { +Kirigami.FormLayout { id: generalPage - - width: childrenRect.width - height: childrenRect.height + + anchors.left: parent.left + anchors.right: parent.right property alias cfg_showWeekNumbers: showWeekNumbers.checked property string cfg_compactDisplay - QtLayouts.ColumnLayout { - anchors.left: parent.left - QtControls.CheckBox { - id: showWeekNumbers - text: i18n("Show week numbers in Calendar") - } - - QtLayouts.RowLayout { - QtControls.Label { - text: i18nc("What information is shown in the calendar icon", "Icon:") - } - - QtControls.ComboBox { - id: compactDisplayCombo - QtLayouts.Layout.minimumWidth: units.gridUnit * 7 // horrible default sizing in ComboBox - model: [{ - text: i18nc("Show the number of the day (eg. 31) in the icon", "Day in month"), - value: "d" - }, { - text: i18nc("Show the week number (eg. 50) in the icon", "Week number"), - value: "w" - }] - onActivated: { - cfg_compactDisplay = compactDisplayCombo.model[index].value - } - - Component.onCompleted: { - for (var i = 0, length = model.length; i < length; ++i) { - if (model[i].value === cfg_compactDisplay) { - currentIndex = i - return - } - } - } - } - } + + QtControls.CheckBox { + id: showWeekNumbers + + Kirigami.FormData.label: i18n("Calendar version:") + + text: i18n("Show week numbers") + } + + + Item { + Kirigami.FormData.isSection: true + } + + + QtControls.RadioButton { + Kirigami.FormData.label: i18nc("What information is shown in the calendar icon", "Compact version:") + + text: i18nc("Show the number of the day (eg. 31) in the icon", "Show day of the month") + + checked: cfg_compactDisplay == "d" + onCheckedChanged: if (checked) cfg_compactDisplay = "d" + } + QtControls.RadioButton { + text: i18nc("Show the week number (eg. 50) in the icon", "Show week number") + + checked: cfg_compactDisplay == "w" + onCheckedChanged: if (checked) cfg_compactDisplay = "w" } }
  48. Download patch applets/notifications/notificationapplet.cpp

    --- 4:5.14.5.1-1/applets/notifications/notificationapplet.cpp 1970-01-01 00:00:00.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/notificationapplet.cpp 2019-07-30 10:35:48.000000000 +0000 @@ -0,0 +1,128 @@ +/* + * Copyright 2018 Kai Uwe Broulik <kde@privat.broulik.de> + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see <http://www.gnu.org/licenses/>. + * + */ + +#include "notificationapplet.h" + +#include <QClipboard> +#include <QDrag> +#include <QMimeData> +#include <QQuickItem> +#include <QQuickWindow> +#include <QScreen> +#include <QStyleHints> + +#include "filemenu.h" +#include "thumbnailer.h" + +NotificationApplet::NotificationApplet(QObject *parent, const QVariantList &data) + : Plasma::Applet(parent, data) +{ + static bool s_typesRegistered = false; + if (!s_typesRegistered) { + const char uri[] = "org.kde.plasma.private.notifications"; + qmlRegisterType<FileMenu>(uri, 2, 0, "FileMenu"); + qmlRegisterType<Thumbnailer>(uri, 2, 0, "Thumbnailer"); + qmlProtectModule(uri, 2); + s_typesRegistered = true; + } +} + +NotificationApplet::~NotificationApplet() = default; + +void NotificationApplet::init() +{ + +} + +void NotificationApplet::configChanged() +{ + +} + +bool NotificationApplet::dragActive() const +{ + return m_dragActive; +} + +bool NotificationApplet::isDrag(int oldX, int oldY, int newX, int newY) const +{ + return ((QPoint(oldX, oldY) - QPoint(newX, newY)).manhattanLength() >= qApp->styleHints()->startDragDistance()); +} + +void NotificationApplet::startDrag(QQuickItem *item, const QUrl &url, const QPixmap &pixmap) +{ + // This allows the caller to return, making sure we don't crash if + // the caller is destroyed mid-drag + + QMetaObject::invokeMethod(this, "doDrag", Qt::QueuedConnection, + Q_ARG(QQuickItem*, item), Q_ARG(QUrl, url), Q_ARG(QPixmap, pixmap)); +} + +void NotificationApplet::doDrag(QQuickItem *item, const QUrl &url, const QPixmap &pixmap) +{ + if (item && item->window() && item->window()->mouseGrabberItem()) { + item->window()->mouseGrabberItem()->ungrabMouse(); + } + + QDrag *drag = new QDrag(item); + + QMimeData *mimeData = new QMimeData(); + + if (!url.isEmpty()) { + mimeData->setUrls(QList<QUrl>() << url); + } + + drag->setMimeData(mimeData); + + if (!pixmap.isNull()) { + drag->setPixmap(pixmap); + } + + m_dragActive = true; + emit dragActiveChanged(); + + drag->exec(); + + m_dragActive = false; + emit dragActiveChanged(); +} + +void NotificationApplet::setSelectionClipboardText(const QString &text) +{ + // FIXME KDeclarative Clipboard item uses QClipboard::Mode for "mode" + // which is an enum inaccessible from QML + QGuiApplication::clipboard()->setText(text, QClipboard::Selection); +} + +bool NotificationApplet::isPrimaryScreen(const QRect &rect) const +{ + QScreen *screen = QGuiApplication::primaryScreen(); + if (!screen) { + return false; + } + + // HACK + return rect == screen->geometry(); +} + +K_EXPORT_PLASMA_APPLET_WITH_JSON(icon, NotificationApplet, "metadata.json") + +#include "notificationapplet.moc"
  49. Download patch applets/panelspacer/contents/ui/main.qml

    --- 4:5.14.5.1-1/applets/panelspacer/contents/ui/main.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/panelspacer/contents/ui/main.qml 2019-07-30 10:35:48.000000000 +0000 @@ -28,7 +28,7 @@ Item { id: root z: 9999 - property bool horizontal: plasmoid.formFactor != PlasmaCore.Types.Vertical + property bool horizontal: plasmoid.formFactor !== PlasmaCore.Types.Vertical Layout.fillWidth: plasmoid.configuration.expanding Layout.fillHeight: plasmoid.configuration.expanding
  50. Download patch applets/lock_logout/metadata.desktop

    --- 4:5.14.5.1-1/applets/lock_logout/metadata.desktop 2019-02-13 13:39:58.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/lock_logout/metadata.desktop 2019-07-30 10:35:48.000000000 +0000 @@ -32,7 +32,7 @@ Name[hr]=Zaključavanje/odjavljivanje Name[hsb]=Zamknjenje/Wotzjewjenje Name[hu]=Zárolás/kijelentkezés Name[ia]=Bloca/Claude session -Name[id]=Lock/Logout +Name[id]=Kunci/Logout Name[is]=Læsa/stimpla út Name[it]=Blocca/Esci Name[ja]=ロック/ログアウト @@ -172,7 +172,7 @@ Keywords[gl]=Trancar;saír;durmir;hibern Keywords[he]=Lock;Logout;Sleep;Hibernate;Switch User;נעילה;יציא;שינה;מצב שינה;החלפת משתמש Keywords[hu]=Zárolás;Kijelentkezés;Alvó állapot;Hibernálás;Felhasználóváltás; Keywords[ia]=Bloca;Claude session;Dormi; Hiberna;Cambia Usator; -Keywords[id]=Kunci;Logout;Tidur;Hibernasi;Alih Pengguna; +Keywords[id]=Kunci;Logout;Tidur;Hibernasi;Alihkan Pengguna; Keywords[is]=Læsa;útskrá;svæfa:leggja í dvala;Skipta um notanda; Keywords[it]=Blocca;Esci;Sospendi;Iberna;Cambia utente; Keywords[ja]=ロック;ログアウト;スリープ;ハイバネート;ユーザの切り替え; @@ -189,7 +189,7 @@ Keywords[pl]=Zablokuj;Wyloguj;Uśpij;Hib Keywords[pt]=Bloquear;Encerrar;Suspender;Hibernar;Mudar de Utilizador; Keywords[pt_BR]=Bloquear;Encerrar;Suspender;Hibernar;Trocar usuário; Keywords[ro]=blochează;ieși;adormire;dormi;hibernare;schimbă utilizatorul;comutare utilizatori; -Keywords[ru]=Lock;Logout;Sleep;Hibernate;Switch User;блокировать;блокировка;выход;выход из системы;спящий режим;сон;режим гибернации;гибернация;сменить пользователя;смена пользователя; +Keywords[ru]=Lock;Logout;Sleep;Hibernate;Switch User;блокировать;блокировка;выход;выход из системы;ждущий режим;спящий режим;сон;режим гибернации;гибернация;сменить пользователя;смена пользователя; Keywords[sk]=Zamknúť;Odhlásiť;Uspať;Hibernovať;Prepnúť používateľa; Keywords[sl]=zaklep;odjava;pripravljenost;mirovanje;zamenjava uporabnika; Keywords[sr]=Lock;Logout;Sleep;Hibernate;Switch User;закључавање;одјављивање;спавање;хибернација;пребацивање; @@ -200,7 +200,7 @@ Keywords[sv]=Lås;Utloggning;Viloläge;D Keywords[tr]=Kilitle;Oturumu Kapat;Uyku;Askıya Al;Kullanıcı Değiştir; Keywords[uk]=Lock;Logout;Sleep;Hibernate;Switch User;блокування;вихід;присипляння;сон;перемикання;користувач; Keywords[x-test]=xxLockxx;xxLogoutxx;xxSleepxx;xxHibernatexx;xxSwitch Userxx; -Keywords[zh_CN]=Lock;Logout;Sleep;Hibernate;Switch User;锁定;注销;待机;休眠;切换用户; +Keywords[zh_CN]=锁定;注销;待机;睡眠;休眠;切换用户; Keywords[zh_TW]=Lock;Logout;Sleep;Hibernate;Switch User; Type=Service @@ -215,7 +215,7 @@ X-KDE-PluginInfo-Author=Viranch Mehta X-KDE-PluginInfo-Email=viranch.mehta@gmail.com X-KDE-PluginInfo-Name=org.kde.plasma.lock_logout X-KDE-PluginInfo-Version=1.0 -X-KDE-PluginInfo-Website=http://plasma.kde.org/ +X-KDE-PluginInfo-Website=https://www.kde.org/plasma-desktop X-KDE-PluginInfo-Category=System Information X-KDE-PluginInfo-Depends= X-KDE-PluginInfo-License=LGPL
  51. Download patch applets/notifications/package/metadata.desktop

    --- 4:5.14.5.1-1/applets/notifications/package/metadata.desktop 2019-02-13 13:39:58.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/package/metadata.desktop 2019-07-30 10:35:48.000000000 +0000 @@ -33,7 +33,7 @@ Name[hne]=सूचना मन ल Name[hr]=Obavijesti Name[hu]=Rendszerüzenetek Name[ia]=Notificationes -Name[id]=Notifications +Name[id]=Notifikasi Name[is]=Kerfistilkynningar Name[it]=Notifiche Name[ja]=通知 @@ -147,15 +147,15 @@ Comment[zh_CN]=显示通知和任务 Comment[zh_TW]=顯示通知與工作 Type=Service -Icon=preferences-desktop-notification +Icon=preferences-desktop-notification-bell X-KDE-ParentApp= -X-KDE-PluginInfo-Author=Martin Klapetek +X-KDE-PluginInfo-Author=Kai Uwe Broulik X-KDE-PluginInfo-Category=Tasks -X-KDE-PluginInfo-Email=mklapetek@kde.org +X-KDE-PluginInfo-Email=kde@privat.broulik.de X-KDE-PluginInfo-License=GPL-2.0+ X-KDE-PluginInfo-Name=org.kde.plasma.notifications -X-KDE-PluginInfo-Version=3.0 -X-KDE-PluginInfo-Website=http://plasma.kde.org/ +X-KDE-PluginInfo-Version=4.0 +X-KDE-PluginInfo-Website=https://plasma.kde.org/ X-KDE-ServiceTypes=Plasma/Applet X-Plasma-API=declarativeappletscript X-Plasma-Provides=org.kde.plasma.notifications @@ -163,6 +163,7 @@ X-KDE-PluginInfo-EnabledByDefault=true X-KDE-Library=plasma_applet_notifications X-Plasma-MainScript=ui/main.qml -X-Plasma-RequiredExtensions=LaunchApp X-Plasma-NotificationArea=true X-Plasma-NotificationAreaCategory=ApplicationStatus +# FIXME doesn't work with multi-page KCMs +#X-Plasma-ConfigPlugins=kcm_notifications
  52. Download patch applets/lock_logout/contents/ui/data.js

    --- 4:5.14.5.1-1/applets/lock_logout/contents/ui/data.js 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/lock_logout/contents/ui/data.js 2019-07-30 10:35:48.000000000 +0000 @@ -13,11 +13,11 @@ var data = [{ icon: "system-shutdown", operation: "requestShutDown", tooltip_mainText: i18n("Leave..."), - tooltip_subText: i18n("Logout, turn off or restart the computer") + tooltip_subText: i18n("Log out, turn off or restart the computer") }, { icon: "system-suspend", operation: "suspendToRam", - tooltip_mainText: i18n("Suspend"), + tooltip_mainText: i18nc("Suspend to RAM", "Sleep"), tooltip_subText: i18n("Sleep (suspend to RAM)"), requires: "Suspend" }, {
  53. Download patch applets/notifications/package/contents/ui/Jobs.qml

    --- 4:5.14.5.1-1/applets/notifications/package/contents/ui/Jobs.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/package/contents/ui/Jobs.qml 1970-01-01 00:00:00.000000000 +0000 @@ -1,167 +0,0 @@ -/* - * Copyright 2012 Marco Martin <notmart@gmail.com> - * - * 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.0 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.components 2.0 as PlasmaComponents -import org.kde.plasma.extras 2.0 as PlasmaExtras - -import org.kde.plasma.private.notifications 1.0 - -Column { - id: jobsRoot - width: parent.width - - property alias count: jobs.count - - ListModel { - id: jobs - } - - PlasmaCore.DataSource { - id: jobsSource - - property var runningJobs: ({}) - - engine: "applicationjobs" - interval: 0 - - onSourceAdded: { - connectSource(source) - jobs.append({name: source}) - } - - onSourceRemoved: { - // remove source from jobs model - for (var i = 0, len = jobs.count; i < len; ++i) { - if (jobs.get(i).name === source) { - jobs.remove(i) - break - } - } - - if (!notifications) { - return - } - - var error = runningJobs[source]["error"] - var errorText = runningJobs[source]["errorText"] - - // 1 = ERR_USER_CANCELED - don't show any notification at all - if (error == 1) { - return - } - - var message = runningJobs[source]["label1"] ? runningJobs[source]["label1"] : runningJobs[source]["label0"] - var infoMessage = runningJobs[source]["infoMessage"] - if (!message && !infoMessage) { - return - } - - var summary = infoMessage ? i18nc("the job, which can be anything, has finished", "%1: Finished", infoMessage) : i18n("Job Finished") - - if (error) { - summary = infoMessage ? i18nc("the job, which can be anything, failed to complete", "%1: Failed", infoMessage) : i18n("Job Failed") - } - - // notification body interprets HTML, so we need to manually escape the name - var body = (errorText || message || "").replace(/[&<>]/g, function (tag) { - return { - '&': '&amp;', - '<': '&lt;', - '>': '&gt;' - }[tag] || tag - }); - - var op = { - appIcon: runningJobs[source].appIconName, - appName: runningJobs[source].appName, - summary: summary, - body: body, - isPersistent: !!error, // we'll assume success to be the note-unworthy default, only be persistent in error case - urgency: 0, - configurable: false, - skipGrouping: true, // Bug 360156 - actions: !error && UrlHelper.isUrlValid(message) ? ["jobUrl#" + message, i18n("Open...")] : [] - }; // If the actionId contains "jobUrl#", it tries to open the "id" value (which is "message") - - notifications.createNotification(op); - - delete runningJobs[source] - } - - onNewData: { - runningJobs[sourceName] = data - } - - onDataChanged: { - var total = 0 - for (var i = 0; i < sources.length; ++i) { - if (jobsSource.data[sources[i]] && jobsSource.data[sources[i]]["percentage"]) { - total += jobsSource.data[sources[i]]["percentage"] - } - } - - total /= sources.length - notificationsApplet.globalProgress = total/100 - } - - Component.onCompleted: { - connectedSources = sources - } - } - - Item { - visible: jobs.count > 3 - - PlasmaComponents.ProgressBar { - anchors { - verticalCenter: parent.verticalCenter - left: parent.left - right: parent.right - } - - minimumValue: 0 - maximumValue: 100 - value: notificationsApplet.globalProgress * 100 - } - } - - Repeater { - id: jobsRepeater - model: jobs - delegate: JobDelegate { - infoMessageVisible: { - if (!infoMessage) { - return false; - } - - // hide info message if it's the same as the previous job, while we don't - // actively group those jobs, it still improves the situation where you - // started copying a couple of different things simultaneously - var previousItem = jobsRepeater.itemAt(index - 1); - if (!previousItem) { - return true; - } - - return previousItem.infoMessage !== infoMessage; - } - } - } -}
  54. Download patch applets/analog-clock/contents/ui/Hand.qml

    --- 4:5.14.5.1-1/applets/analog-clock/contents/ui/Hand.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/analog-clock/contents/ui/Hand.qml 2019-07-30 10:35:48.000000000 +0000 @@ -24,27 +24,48 @@ import QtQuick 2.0 import org.kde.plasma.core 2.0 as PlasmaCore PlasmaCore.SvgItem { - id: secondHand + id: handRoot property alias rotation: rotation.angle property double svgScale + property double horizontalRotationOffset: 0 + property double verticalRotationOffset: 0 + property string rotationCenterHintId + readonly property double horizontalRotationCenter: { + if (svg.hasElement(rotationCenterHintId)) { + var hintedCenterRect = svg.elementRect(rotationCenterHintId), + handRect = svg.elementRect(elementId), + hintedX = hintedCenterRect.x - handRect.x + hintedCenterRect.width/2; + return Math.round(hintedX * svgScale) + Math.round(hintedX * svgScale) % 2; + } + return width/2; + } + readonly property double verticalRotationCenter: { + if (svg.hasElement(rotationCenterHintId)) { + var hintedCenterRect = svg.elementRect(rotationCenterHintId), + handRect = svg.elementRect(elementId), + hintedY = hintedCenterRect.y - handRect.y + hintedCenterRect.height/2; + return Math.round(hintedY * svgScale) + width % 2; + } + return width/2; + } width: Math.round(naturalSize.width * svgScale) + Math.round(naturalSize.width * svgScale) % 2 height: Math.round(naturalSize.height * svgScale) + width % 2 anchors { top: clock.verticalCenter - topMargin: -width/2 - horizontalCenter: clock.horizontalCenter + topMargin: -verticalRotationCenter + verticalRotationOffset + left: clock.horizontalCenter + leftMargin: -horizontalRotationCenter + horizontalRotationOffset } svg: clockSvg - smooth: !anim.running transform: Rotation { id: rotation angle: 0 origin { - x: secondHand.width/2 - y: secondHand.width/2 + x: handRoot.horizontalRotationCenter + y: handRoot.verticalRotationCenter } Behavior on angle { RotationAnimation {
  55. Download patch applets/notifications/plugin/notificationshelperplugin.cpp

    --- 4:5.14.5.1-1/applets/notifications/plugin/notificationshelperplugin.cpp 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/plugin/notificationshelperplugin.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,62 +0,0 @@ -/* - Copyright (C) 2014 Martin Klapetek <mklapetek@kde.org> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#include "notificationshelperplugin.h" -#include "notificationshelper.h" -#include "thumbnailer.h" -#include "draghelper.h" - -#include <QUrl> -#include <QQmlEngine> - -class UrlHelper : public QObject { - Q_OBJECT - public: - Q_INVOKABLE bool isUrlValid(const QString &url) const { - return QUrl::fromUserInput(url).isValid(); - } -}; - -static QObject *urlcheck_singletontype_provider(QQmlEngine *engine, QJSEngine *scriptEngine) -{ - Q_UNUSED(engine) - Q_UNUSED(scriptEngine) - - return new UrlHelper(); -} - -static QObject *draghelper_singletontype_provider(QQmlEngine *engine, QJSEngine *scriptEngine) -{ - Q_UNUSED(engine) - Q_UNUSED(scriptEngine) - - return new DragHelper(); -} - -void NotificationsHelperPlugin::registerTypes(const char *uri) -{ - Q_ASSERT(uri == QLatin1String("org.kde.plasma.private.notifications")); - - qmlRegisterType<NotificationsHelper>(uri, 1, 0, "NotificationsHelper"); - qmlRegisterType<Thumbnailer>(uri, 1, 0, "Thumbnailer"); - - qmlRegisterSingletonType<UrlHelper>(uri, 1, 0, "UrlHelper", urlcheck_singletontype_provider); - qmlRegisterSingletonType<DragHelper>(uri, 1, 0, "DragHelper", draghelper_singletontype_provider); -} - -#include "notificationshelperplugin.moc"
  56. Download patch applets/icon/iconapplet.cpp

    --- 4:5.14.5.1-1/applets/icon/iconapplet.cpp 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/icon/iconapplet.cpp 2019-07-30 10:35:48.000000000 +0000 @@ -48,6 +48,8 @@ #include <KIO/OpenFileManagerWindowJob> #include <KIO/StatJob> +#include <startuptasksmodel.h> + IconApplet::IconApplet(QObject *parent, const QVariantList &data) : Plasma::Applet(parent, data) { @@ -272,56 +274,7 @@ void IconApplet::populateFromDesktopFile delete m_openContainingFolderAction; m_openContainingFolderAction = nullptr; m_openWithActions.clear(); - - if (desktopFile.hasLinkType()) { - const QUrl &linkUrl = QUrl(desktopFile.readUrl()); - - if (!m_fileItemActions) { - m_fileItemActions = new KFileItemActions(this); - } - KFileItemListProperties itemProperties(KFileItemList({KFileItem(linkUrl)})); - m_fileItemActions->setItemListProperties(itemProperties); - - if (!m_openWithMenu) { - m_openWithMenu.reset(new QMenu()); - } - m_openWithMenu->clear(); - m_fileItemActions->addOpenWithActionsTo(m_openWithMenu.data()); - - m_openWithActions = m_openWithMenu->actions(); - - if (KProtocolManager::supportsListing(linkUrl)) { - if (!m_openContainingFolderAction) { - m_openContainingFolderAction = new QAction(QIcon::fromTheme(QStringLiteral("document-open-folder")), i18n("Open Containing Folder"), this); - connect(m_openContainingFolderAction, &QAction::triggered, this, [this] { - KIO::highlightInFileManager({m_openContainingFolderAction->property("linkUrl").toUrl()}); - }); - } - m_openContainingFolderAction->setProperty("linkUrl", linkUrl); - } - } - m_jumpListActions.clear(); - foreach (const QString &actionName, desktopFile.readActions()) { - const KConfigGroup &actionGroup = desktopFile.actionGroup(actionName); - - if (!actionGroup.isValid() || !actionGroup.exists()) { - continue; - } - - const QString &name = actionGroup.readEntry(QStringLiteral("Name")); - const QString &exec = actionGroup.readEntry(QStringLiteral("Exec")); - if (name.isEmpty() || exec.isEmpty()) { - continue; - } - - QAction *action = new QAction(QIcon::fromTheme(actionGroup.readEntry("Icon")), name, this); - connect(action, &QAction::triggered, this, [this, exec] { - KRun::run(exec, {}, nullptr, m_name, m_iconName); - }); - - m_jumpListActions << action; - } m_localPath = path; @@ -372,6 +325,36 @@ QString IconApplet::genericName() const QList<QAction *> IconApplet::contextualActions() { QList<QAction *> actions; + if (m_localPath.isEmpty()) { + return actions; + } + + KDesktopFile desktopFile(m_localPath); + + if (m_jumpListActions.isEmpty()) { + const QStringList actions = desktopFile.readActions(); + for (const QString &actionName : actions) { + const KConfigGroup &actionGroup = desktopFile.actionGroup(actionName); + + if (!actionGroup.isValid() || !actionGroup.exists()) { + continue; + } + + const QString name = actionGroup.readEntry(QStringLiteral("Name")); + const QString exec = actionGroup.readEntry(QStringLiteral("Exec")); + if (name.isEmpty() || exec.isEmpty()) { + continue; + } + + QAction *action = new QAction(QIcon::fromTheme(actionGroup.readEntry("Icon")), name, this); + connect(action, &QAction::triggered, this, [this, exec] { + KRun::run(exec, {}, nullptr, m_name, m_iconName); + }); + + m_jumpListActions << action; + } + } + actions << m_jumpListActions; if (!actions.isEmpty()) { @@ -382,6 +365,35 @@ QList<QAction *> IconApplet::contextualA actions << m_separatorAction; } + if (desktopFile.hasLinkType()) { + const QUrl linkUrl = QUrl(desktopFile.readUrl()); + + if (m_openWithActions.isEmpty()) { + if (!m_fileItemActions) { + m_fileItemActions = new KFileItemActions(this); + } + KFileItemListProperties itemProperties(KFileItemList({KFileItem(linkUrl)})); + m_fileItemActions->setItemListProperties(itemProperties); + + if (!m_openWithMenu) { + m_openWithMenu.reset(new QMenu()); + } + m_openWithMenu->clear(); + m_fileItemActions->addOpenWithActionsTo(m_openWithMenu.data()); + + m_openWithActions = m_openWithMenu->actions(); + } + + if (!m_openContainingFolderAction) { + if (KProtocolManager::supportsListing(linkUrl)) { + m_openContainingFolderAction = new QAction(QIcon::fromTheme(QStringLiteral("document-open-folder")), i18n("Open Containing Folder"), this); + connect(m_openContainingFolderAction, &QAction::triggered, this, [this, linkUrl] { + KIO::highlightInFileManager({linkUrl}); + }); + } + } + } + actions << m_openWithActions; if (m_openContainingFolderAction) { @@ -393,6 +405,25 @@ QList<QAction *> IconApplet::contextualA void IconApplet::run() { + if (!m_startupTasksModel) { + m_startupTasksModel = new TaskManager::StartupTasksModel(this); + + auto handleRow = [this](bool busy, const QModelIndex &parent, int first, int last) { + Q_UNUSED(parent); + for (int i = first; i <= last; ++i) { + const QModelIndex idx = m_startupTasksModel->index(i, 0); + if (idx.data(TaskManager::AbstractTasksModel::LauncherUrlWithoutIcon).toUrl() == QUrl::fromLocalFile(m_localPath)) { + setBusy(busy); + break; + } + } + }; + + using namespace std::placeholders; + connect(m_startupTasksModel, &QAbstractItemModel::rowsInserted, this, std::bind(handleRow, true /*busy*/, _1, _2, _3)); + connect(m_startupTasksModel, &QAbstractItemModel::rowsAboutToBeRemoved, this, std::bind(handleRow, false /*busy*/, _1, _2, _3)); + } + new KRun(QUrl::fromLocalFile(m_localPath), QApplication::desktop()); }
  57. Download patch applets/notifications/package/contents/ui/JobDetails.qml

    --- 4:5.14.5.1-1/applets/notifications/package/contents/ui/JobDetails.qml 1970-01-01 00:00:00.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/package/contents/ui/JobDetails.qml 2019-07-30 10:35:48.000000000 +0000 @@ -0,0 +1,153 @@ +/* + * Copyright 2019 Kai Uwe Broulik <kde@privat.broulik.de> + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see <http://www.gnu.org/licenses/> + */ + +import QtQuick 2.8 +import QtQuick.Layouts 1.1 + +import org.kde.plasma.core 2.0 as PlasmaCore +import org.kde.plasma.extras 2.0 as PlasmaExtras + +import org.kde.kcoreaddons 1.0 as KCoreAddons + +import org.kde.notificationmanager 1.0 as NotificationManager + +GridLayout { + id: detailsGrid + + property QtObject jobDetails + + columns: 2 + rowSpacing: Math.round(units.smallSpacing / 2) + columnSpacing: units.smallSpacing + + // once you use Layout.column/Layout.row *all* of the items in the Layout have to use them + Repeater { + model: [1, 2] + + PlasmaExtras.DescriptiveLabel { + Layout.column: 0 + Layout.row: index + Layout.alignment: Qt.AlignTop | Qt.AlignRight + text: jobDetails["descriptionLabel" + modelData] && jobDetails["descriptionValue" + modelData] + ? i18ndc("plasma_applet_org.kde.plasma.notifications", "Row description, e.g. Source", "%1:", jobDetails["descriptionLabel" + modelData]) : "" + font: theme.smallestFont + textFormat: Text.PlainText + visible: text !== "" + } + } + + Repeater { + model: [1, 2] + + PlasmaExtras.DescriptiveLabel { + id: descriptionValueLabel + Layout.column: 1 + Layout.row: index + Layout.fillWidth: true + font: theme.smallestFont + elide: Text.ElideMiddle + textFormat: Text.PlainText + wrapMode: Text.WrapAtWordBoundaryOrAnywhere + maximumLineCount: 5 + visible: text !== "" + + Component.onCompleted: bindText() + function bindText() { + text = Qt.binding(function() { + return jobDetails["descriptionLabel" + modelData] && jobDetails["descriptionValue" + modelData] + ? jobDetails["descriptionValue" + modelData] : ""; + }); + } + + MouseArea { + anchors.fill: parent + acceptedButtons: Qt.RightButton + onPressed: { + // break binding so it doesn't update while the menu is opened + descriptionValueLabel.text = descriptionValueLabel.text; + descriptionValueMenu.open(mouse.x, mouse.y) + } + } + + EditContextMenu { + id: descriptionValueMenu + target: descriptionValueLabel + // defer re-binding until after the "Copy" action in the menu has triggered + onClosed: Qt.callLater(descriptionValueLabel.bindText) + } + } + } + + Repeater { + model: ["Bytes", "Files", "Directories"] + + PlasmaExtras.DescriptiveLabel { + Layout.column: 1 + Layout.row: 2 + index + Layout.fillWidth: true + text: { + var processed = jobDetails["processed" + modelData]; + var total = jobDetails["total" + modelData]; + + if (processed > 0 || total > 1) { + if (processed > 0 && total > 0 && processed <= total) { + switch(modelData) { + case "Bytes": + return i18ndc("plasma_applet_org.kde.plasma.notifications", "How many bytes have been copied", "%2 of %1", + KCoreAddons.Format.formatByteSize(total), + KCoreAddons.Format.formatByteSize(processed)) + case "Files": + return i18ndcp("plasma_applet_org.kde.plasma.notifications", "How many files have been copied", "%2 of %1 file", "%2 of %1 files", + total, processed); + case "Directories": + return i18ndcp("plasma_applet_org.kde.plasma.notifications", "How many dirs have been copied", "%2 of %1 folder", "%2 of %1 folders", + total, processed); + } + } else { + switch(modelData) { + case "Bytes": + return KCoreAddons.Format.formatByteSize(processed || total) + case "Files": + return i18ndp("plasma_applet_org.kde.plasma.notifications", "%1 file", "%1 files", (processed || total)); + case "Directories": + return i18ndp("plasma_applet_org.kde.plasma.notifications", "%1 folder", "%1 folders", (processed || total)); + } + } + } + + return ""; + } + font: theme.smallestFont + textFormat: Text.PlainText + visible: text !== "" + } + } + + PlasmaExtras.DescriptiveLabel { + Layout.column: 1 + Layout.row: 2 + 3 + Layout.fillWidth: true + text: jobDetails.speed > 0 ? i18ndc("plasma_applet_org.kde.plasma.notifications", "Bytes per second", "%1/s", + KCoreAddons.Format.formatByteSize(jobDetails.speed)) : "" + font: theme.smallestFont + textFormat: Text.PlainText + visible: text !== "" + } +}
  58. Download patch applets/icon/iconapplet.h

    --- 4:5.14.5.1-1/applets/icon/iconapplet.h 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/icon/iconapplet.h 2019-07-30 10:35:48.000000000 +0000 @@ -28,8 +28,15 @@ #include <KPropertiesDialog> class KFileItemActions; +class KStartupInfo; + class QMenu; +namespace TaskManager +{ +class StartupTasksModel; +} + class IconApplet : public Plasma::Applet { Q_OBJECT @@ -100,4 +107,6 @@ private: QPointer<KPropertiesDialog> m_configDialog; + TaskManager::StartupTasksModel *m_startupTasksModel = nullptr; + };
  59. Download patch applets/notifications/package/contents/ui/EditContextMenu.qml

    --- 4:5.14.5.1-1/applets/notifications/package/contents/ui/EditContextMenu.qml 1970-01-01 00:00:00.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/package/contents/ui/EditContextMenu.qml 2019-07-30 10:35:48.000000000 +0000 @@ -0,0 +1,78 @@ +/* + * Copyright 2019 Kai Uwe Broulik <kde@privat.broulik.de> + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see <http://www.gnu.org/licenses/> + */ + +import QtQuick 2.8 + +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 KQCAddons + +PlasmaComponents.ContextMenu { + id: contextMenu + + signal closed + + property QtObject __clipboard: KQCAddons.Clipboard { } + + // can be a Text or TextEdit + property Item target + + property string link + + onStatusChanged: { + if (status === PlasmaComponents.DialogStatus.Closed) { + closed(); + } + } + + PlasmaComponents.MenuItem { + text: i18nd("plasma_applet_org.kde.plasma.notifications", "Copy Link Address") + onClicked: __clipboard.content = contextMenu.link + visible: contextMenu.link !== "" + } + + PlasmaComponents.MenuItem { + separator: true + visible: contextMenu.link !== "" + } + + PlasmaComponents.MenuItem { + text: i18nd("plasma_applet_org.kde.plasma.notifications", "Copy") + icon: "edit-copy" + enabled: typeof target.selectionStart !== "undefined" + ? target.selectionStart !== target.selectionEnd + : (target.text || "").length > 0 + onClicked: { + if (typeof target.copy === "function") { + target.copy(); + } else { + __clipboard.content = target.text; + } + } + } + + PlasmaComponents.MenuItem { + id: selectAllAction + text: i18nd("plasma_applet_org.kde.plasma.notifications", "Select All") + onClicked: target.selectAll() + visible: typeof target.selectAll === "function" + } +}
  60. Download patch applets/batterymonitor/package/metadata.desktop

    --- 4:5.14.5.1-1/applets/batterymonitor/package/metadata.desktop 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/batterymonitor/package/metadata.desktop 2019-07-30 10:35:48.000000000 +0000 @@ -111,7 +111,7 @@ Comment[ug]=توكدانىڭىزنىڭ Comment[uk]=Перегляньте стан заряду акумулятора Comment[wa]=Vey li tchedje di vosse batreye Comment[x-test]=xxSee the power status of your batteryxx -Comment[zh_CN]=查看电池电源的状态 +Comment[zh_CN]=查看电池的电量状态 Comment[zh_TW]=查看您的電池的電力狀態 Keywords=Power Management;Battery;System;Energy; Keywords[ar]=إدارة الطاقة;بطارية;نظام;طاقة; @@ -160,7 +160,7 @@ Keywords[sv]=Strömhantering;Batteri;Sys Keywords[tr]=Güç Yönetimi;Pil;Sistem;Enerji; Keywords[uk]=Power Management;Battery;System;Energy;керування живленням;акумулятор;система;енергія;батарея;батарейка;живлення; Keywords[x-test]=xxPower Managementxx;xxBatteryxx;xxSystemxx;xxEnergyxx; -Keywords[zh_CN]=Power Management;Battery;System;Energy;电源管理;电池;系统;能源; +Keywords[zh_CN]=电源管理;电池;系统;能源; Keywords[zh_TW]=Power Management;Battery;System;Energy; Icon=battery
  61. Download patch applets/notifications/package/contents/ui/JobDelegate.qml
  62. Download patch applets/notifications/CMakeLists.txt

    --- 4:5.14.5.1-1/applets/notifications/CMakeLists.txt 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/CMakeLists.txt 2019-07-30 10:35:48.000000000 +0000 @@ -1,4 +1,23 @@ -add_subdirectory(lib) -add_subdirectory(plugin) +add_definitions(-DTRANSLATION_DOMAIN=\"plasma_applet_org.kde.plasma.notifications\") + +set(notificationapplet_SRCS + notificationapplet.cpp + filemenu.cpp + thumbnailer.cpp +) + +add_library(plasma_applet_notifications MODULE ${notificationapplet_SRCS}) + +kcoreaddons_desktop_to_json(plasma_applet_notifications package/metadata.desktop) + +target_link_libraries(plasma_applet_notifications + Qt5::Gui + Qt5::Quick # for QQmlParserStatus + KF5::I18n + KF5::Plasma + KF5::KIOWidgets # for PreviewJob + ) + +install(TARGETS plasma_applet_notifications DESTINATION ${KDE_INSTALL_PLUGINDIR}/plasma/applets) plasma_install_package(package org.kde.plasma.notifications)
  63. Download patch applets/calendar/package/contents/config/config.qml

    --- 4:5.14.5.1-1/applets/calendar/package/contents/config/config.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/calendar/package/contents/config/config.qml 2019-07-30 10:35:48.000000000 +0000 @@ -25,7 +25,7 @@ import org.kde.plasma.configuration 2.0 ConfigModel { ConfigCategory { name: i18n("General") - icon: "preferences-system-time" + icon: "preferences-desktop-plasma" source: "configGeneral.qml" } // ConfigCategory {
  64. Download patch applets/systemmonitor/common/contents/ui/DoublePlotter.qml

    --- 4:5.14.5.1-1/applets/systemmonitor/common/contents/ui/DoublePlotter.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/systemmonitor/common/contents/ui/DoublePlotter.qml 2019-07-30 10:35:48.000000000 +0000 @@ -38,13 +38,13 @@ KQuickAddons.Plotter { var c = max - min; var h; - if (c == 0) { + if (c === 0) { h = 0 - } else if (max == color.r) { + } else if (max === color.r) { h = ((color.g - color.b) / c) % 6; - } else if (max == color.g) { + } else if (max === color.g) { h = ((color.b - color.r) / c) + 2; - } else if (max == color.b) { + } else if (max === color.b) { h = ((color.r - color.g) / c) + 4; } var hue = (1/6) * h + (degrees/360); @@ -54,12 +54,15 @@ KQuickAddons.Plotter { return Qt.hsla(hue, saturation, lightness, 1.0); } + property string downloadColor: theme.highlightColor + property string uploadColor: cycle(theme.highlightColor, -90) + dataSets: [ KQuickAddons.PlotData { - color: theme.highlightColor + color: downloadColor }, KQuickAddons.PlotData { - color: cycle(theme.highlightColor, -90) + color: uploadColor } ] @@ -74,7 +77,7 @@ KQuickAddons.Plotter { PlasmaComponents.Label { id: speedLabel wrapMode: Text.WordWrap - visible: plasmoid.formFactor != PlasmaCore.Types.Vertical + visible: plasmoid.formFactor !== PlasmaCore.Types.Vertical anchors { right: parent.right } @@ -83,7 +86,7 @@ KQuickAddons.Plotter { Connections { target: model.dataSource onNewData: { - if (sourceName.indexOf(decodeURIComponent(model.source1)) != 0 && sourceName.indexOf(decodeURIComponent(model.source2)) != 0) { + if (sourceName.indexOf(decodeURIComponent(model.source1)) !== 0 && sourceName.indexOf(decodeURIComponent(model.source2)) !== 0) { return; } @@ -97,9 +100,13 @@ KQuickAddons.Plotter { plotter.addSample([data1.value, data2.value]); - if (plasmoid.formFactor != PlasmaCore.Types.Vertical) { + if (plasmoid.formFactor !== PlasmaCore.Types.Vertical) { nameLabel.text = plotter.sensorName - speedLabel.text = formatData(data1) + " | " + formatData(data2) + speedLabel.text = i18n("<font color='%1'>⬇</font> %2 | <font color='%3'>⬆</font> %4", + downloadColor, + formatData(data1), + uploadColor, + formatData(data2)) } else { nameLabel.text = plotter.sensorName+ "\n" + formatData(data1) + "\n" + formatData(data2) speedLabel.text = ""
  65. Download patch applets/notifications/package/contents/ui/ThumbnailStrip.qml
  66. Download patch applets/notifications/package/contents/ui/SelectableLabel.qml

    --- 4:5.14.5.1-1/applets/notifications/package/contents/ui/SelectableLabel.qml 1970-01-01 00:00:00.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/package/contents/ui/SelectableLabel.qml 2019-07-30 10:35:48.000000000 +0000 @@ -0,0 +1,172 @@ +/* + * Copyright 2011 Marco Martin <notmart@gmail.com> + * Copyright 2014, 2019 Kai Uwe Broulik <kde@privat.broulik.de> + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see <http://www.gnu.org/licenses/> + */ + +import QtQuick 2.8 +import QtQuick.Layouts 1.1 + +import org.kde.plasma.core 2.0 as PlasmaCore +import org.kde.plasma.components 2.0 as PlasmaComponents +import org.kde.plasma.extras 2.0 as PlasmaExtras + +// NOTE This wrapper item is needed for QQC ScrollView to work +// In NotificationItem we just do SelectableLabel {} and then it gets confused +// as to which is the "contentItem" +Item { + id: bodyTextContainer + + property alias text: bodyText.text + property alias font: bodyText.font + + property int cursorShape + + property QtObject contextMenu: null + + signal clicked(var mouse) + signal linkActivated(string link) + + implicitWidth: bodyText.paintedWidth + implicitHeight: bodyText.paintedHeight + + PlasmaExtras.ScrollArea { + id: bodyTextScrollArea + + anchors.fill: parent + + flickableItem.boundsBehavior: Flickable.StopAtBounds + flickableItem.flickableDirection: Flickable.VerticalFlick + horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff + + TextEdit { + id: bodyText + width: bodyTextScrollArea.width + // TODO check that this doesn't causes infinite loops when it starts adding and removing the scrollbar + //width: bodyTextScrollArea.viewport.width + //enabled: !Settings.isMobile + + color: PlasmaCore.ColorScope.textColor + selectedTextColor: theme.viewBackgroundColor + selectionColor: theme.viewFocusColor + font.capitalization: theme.defaultFont.capitalization + font.family: theme.defaultFont.family + font.italic: theme.defaultFont.italic + font.letterSpacing: theme.defaultFont.letterSpacing + font.pointSize: theme.defaultFont.pointSize + font.strikeout: theme.defaultFont.strikeout + font.underline: theme.defaultFont.underline + font.weight: theme.defaultFont.weight + font.wordSpacing: theme.defaultFont.wordSpacing + renderType: Text.NativeRendering + selectByMouse: true + readOnly: true + wrapMode: Text.Wrap + textFormat: TextEdit.RichText + + onLinkActivated: bodyTextContainer.linkActivated(link) + + // ensure selecting text scrolls the view as needed... + onCursorRectangleChanged: { + var flick = bodyTextScrollArea.flickableItem + if (flick.contentY >= cursorRectangle.y) { + flick.contentY = cursorRectangle.y + } else if (flick.contentY + flick.height <= cursorRectangle.y + cursorRectangle.height) { + flick.contentY = cursorRectangle.y + cursorRectangle.height - flick.height + } + } + MouseArea { + property int selectionStart + property point mouseDownPos: Qt.point(-999, -999); + + anchors.fill: parent + acceptedButtons: Qt.RightButton | Qt.LeftButton + cursorShape: { + if (bodyText.hoveredLink) { + return Qt.PointingHandCursor; + } else if (bodyText.selectionStart !== bodyText.selectionEnd) { + return Qt.IBeamCursor; + } else { + return bodyTextContainer.cursorShape || Qt.IBeamCursor; + } + } + preventStealing: true // don't let us accidentally drag the Flickable + + onPressed: { + if (mouse.button === Qt.RightButton) { + contextMenu = contextMenuComponent.createObject(bodyText); + contextMenu.link = bodyText.linkAt(mouse.x, mouse.y); + + contextMenu.closed.connect(function() { + contextMenu.destroy(); + contextMenu = null; + }); + contextMenu.open(mouse.x, mouse.y); + return; + } + + mouseDownPos = Qt.point(mouse.x, mouse.y); + selectionStart = bodyText.positionAt(mouse.x, mouse.y); + var pos = bodyText.positionAt(mouse.x, mouse.y); + // deselect() would scroll to the end which we don't want + bodyText.select(pos, pos); + } + + onReleased: { + // emulate "onClicked" + var manhattanLength = Math.abs(mouseDownPos.x - mouse.x) + Math.abs(mouseDownPos.y - mouse.y); + if (manhattanLength <= Qt.styleHints.startDragDistance) { + var link = bodyText.linkAt(mouse.x, mouse.y); + if (link) { + Qt.openUrlExternally(link); + } else { + bodyTextContainer.clicked(mouse); + } + } + + // emulate selection clipboard + if (bodyText.selectedText) { + plasmoid.nativeInterface.setSelectionClipboardText(bodyText.selectedText); + } + + mouseDownPos = Qt.point(-999, -999); + } + + // HACK to be able to select text whilst still getting all mouse events to the MouseArea + onPositionChanged: { + if (pressed) { + var pos = bodyText.positionAt(mouseX, mouseY); + if (selectionStart < pos) { + bodyText.select(selectionStart, pos); + } else { + bodyText.select(pos, selectionStart); + } + } + } + } + } + } + + Component { + id: contextMenuComponent + + EditContextMenu { + target: bodyText + } + } +}
  67. Download patch applets/icon/package/contents/ui/main.qml

    --- 4:5.14.5.1-1/applets/icon/package/contents/ui/main.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/icon/package/contents/ui/main.qml 2019-07-30 10:35:48.000000000 +0000 @@ -32,10 +32,10 @@ import org.kde.draganddrop 2.0 as DragDr MouseArea { id: root - readonly property bool inPanel: (plasmoid.location == PlasmaCore.Types.TopEdge - || plasmoid.location == PlasmaCore.Types.RightEdge - || plasmoid.location == PlasmaCore.Types.BottomEdge - || plasmoid.location == PlasmaCore.Types.LeftEdge) + readonly property bool inPanel: (plasmoid.location === PlasmaCore.Types.TopEdge + || plasmoid.location === PlasmaCore.Types.RightEdge + || plasmoid.location === PlasmaCore.Types.BottomEdge + || plasmoid.location === PlasmaCore.Types.LeftEdge) readonly property bool constrained: plasmoid.formFactor === PlasmaCore.Types.Vertical || plasmoid.formFactor === PlasmaCore.Types.Horizontal property bool containsAcceptableDrag: false @@ -128,12 +128,12 @@ MouseArea { visible: !constrained - horizontalOffset: units.devicePixelRatio * 2 - verticalOffset: horizontalOffset + horizontalOffset: 1 + verticalOffset: 1 - radius: 9.0 - samples: 18 - spread: 0.15 + radius: 4 + samples: 9 + spread: 0.35 color: "black"
  68. Download patch applets/notifications/package/contents/tests/test.qml

    --- 4:5.14.5.1-1/applets/notifications/package/contents/tests/test.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/package/contents/tests/test.qml 1970-01-01 00:00:00.000000000 +0000 @@ -1,74 +0,0 @@ -import QtQuick 2.0 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 - -Item { - id: root - property QtObject plasmoidItem: null - onPlasmoidItemChanged: { - if (plasmoidItem && !root.plasmoidItem.rootItem) { - discardTimer.running = true - return - } - - showNotification("testing test") - console.log("sent notification", root.plasmoidItem, root.plasmoidItem.rootItem) - } - Timer { - id: discardTimer - interval: 0 - running: false - onTriggered: { - notificationShown = notificationClosed = true - root.done(); - } - } - - PlasmaCore.DataSource { - id: notificationSource - engine: "notifications" - connectedSources: "org.freedesktop.Notifications" - } - - function showNotification(summary, icon, appname, body, timeout) { - if(!icon) icon = "debug-run" - if(!appname) appname="test" - if(!body) body="" - if(!timeout) timeout=2000 - - var service = notificationSource.serviceForSource("notification"); - var operation = service.operationDescription("createNotification"); - operation["appName"] = appname; - operation["appIcon"] = icon; - operation["summary"] = summary; - operation["body"] = body; - operation["timeout"] = timeout; - - service.startOperationCall(operation); - } - - Connections { - target: root.plasmoidItem.rootItem ? root.plasmoidItem.rootItem.notifications : null - onPopupShown: { - root.notificationShown = true - popupConnections.target = popup - } - } - - Connections { - id: popupConnections - onVisibleChanged: { - if (target.visible) { - popupConnections.target.mainItem.close() - } else { - root.notificationClosed = true - root.done() - } - } - } - - property bool notificationShown: false - property bool notificationClosed: false - signal done() - readonly property bool failed: !notificationShown || !notificationClosed -}
  69. Download patch applets/notifications/package/contents/ui/NotificationHeader.qml
  70. Download patch applets/notifications/lib/notificationsapplet.cpp

    --- 4:5.14.5.1-1/applets/notifications/lib/notificationsapplet.cpp 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/lib/notificationsapplet.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,142 +0,0 @@ -/* - * Copyright 2014 (c) Martin Klapetek <mklapetek@kde.org> - * - * 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) version 3 or any later version - * accepted by the membership of KDE e.V. (or its successor approved - * by the membership of KDE e.V.), which shall act as a proxy - * defined in Section 14 of version 3 of the license. - * - * 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, see <http://www.gnu.org/licenses/>. - * - */ - -#include "notificationsapplet.h" - -#include <KConfigGroup> - -#include <Plasma/Containment> -#include <Plasma/Corona> - - -NotificationsApplet::NotificationsApplet(QObject *parent, const QVariantList &data) - : Plasma::Applet(parent, data), - m_availableScreenRect(0,0,0,0) -{ -} - -NotificationsApplet::~NotificationsApplet() -{ -} - -void NotificationsApplet::init() -{ - m_popupPosition = (NotificationsHelper::PositionOnScreen)configScreenPosition(); - - connect(this, &Plasma::Applet::locationChanged, - this, &NotificationsApplet::onAppletLocationChanged); - - connect(containment(), &Plasma::Containment::screenChanged, - this, &NotificationsApplet::onScreenChanges); - - Q_ASSERT(containment()); - Q_ASSERT(containment()->corona()); - connect(containment()->corona(), &Plasma::Corona::availableScreenRectChanged, this, &NotificationsApplet::onScreenChanges); - - Plasma::Applet::init(); - - onScreenChanges(); - onAppletLocationChanged(); -} - -void NotificationsApplet::onScreenChanges() -{ - // when removing the panel the applet is in, the containment is being destroyed but its corona is still - // there, rightfully emitting availableScreenRectChanged and then we blow up if we try to access it. - if (!containment() || !containment()->corona()) { - return; - } - - auto newAvailableScreenRect = containment()->corona()->availableScreenRect(containment()->screen()); - if (newAvailableScreenRect != m_availableScreenRect) { - m_availableScreenRect = newAvailableScreenRect; - Q_EMIT availableScreenRectChanged(m_availableScreenRect); - } -} - -QRect NotificationsApplet::availableScreenRect() const -{ - return m_availableScreenRect; -} - -void NotificationsApplet::onAppletLocationChanged() -{ - if (configScreenPosition() == 0) { - // If the screenPosition is set to default, - // just follow the panel - setScreenPositionFromAppletLocation(); - } -} - -uint NotificationsApplet::screenPosition() const -{ - return m_popupPosition; -} - -void NotificationsApplet::onScreenPositionChanged(uint position) -{ - KConfigGroup globalGroup = globalConfig(); - globalGroup.writeEntry("popupPosition", position); - globalGroup.sync(); - - // If the position is set to default, let the setScreenPositionFromAppletLocation() - // figure out the effective position, otherwise just set it to m_popupPosition - // and emit the change - if (position == NotificationsHelper::Default) { - setScreenPositionFromAppletLocation(); - } else if (m_popupPosition != position) { - m_popupPosition = (NotificationsHelper::PositionOnScreen)position; - Q_EMIT screenPositionChanged(m_popupPosition); - } -} - -uint NotificationsApplet::configScreenPosition() const -{ - KConfigGroup globalGroup = globalConfig(); - return globalGroup.readEntry("popupPosition", 0); //0 is default -} - -void NotificationsApplet::setScreenPositionFromAppletLocation() -{ - NotificationsHelper::PositionOnScreen newPopupPosition = m_popupPosition; - if (location() == Plasma::Types::TopEdge) { - if (QGuiApplication::isRightToLeft()) { - newPopupPosition = NotificationsHelper::TopLeft; - } else { - newPopupPosition = NotificationsHelper::TopRight; - } - } else { - if (QGuiApplication::isRightToLeft()) { - newPopupPosition = NotificationsHelper::BottomLeft; - } else { - newPopupPosition = NotificationsHelper::BottomRight; - } - } - - if (newPopupPosition != m_popupPosition) { - m_popupPosition = newPopupPosition; - Q_EMIT screenPositionChanged(m_popupPosition); - } -} - -K_EXPORT_PLASMA_APPLET_WITH_JSON(notifications, NotificationsApplet, "metadata.json") - -#include "notificationsapplet.moc"
  71. Download patch applets/digital-clock/package/contents/ui/configTimeZones.qml

    --- 4:5.14.5.1-1/applets/digital-clock/package/contents/ui/configTimeZones.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/digital-clock/package/contents/ui/configTimeZones.qml 2019-07-30 10:35:48.000000000 +0000 @@ -39,7 +39,7 @@ Item { id: timeZones onSelectedTimeZonesChanged: { - if (selectedTimeZones.length == 0) { + if (selectedTimeZones.length === 0) { messageWidget.visible = true; timeZones.selectLocalTimeZone();
  72. Download patch applets/analog-clock/metadata.desktop

    --- 4:5.14.5.1-1/applets/analog-clock/metadata.desktop 2019-02-13 13:39:58.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/analog-clock/metadata.desktop 2019-07-30 10:35:48.000000000 +0000 @@ -33,7 +33,7 @@ Name[hr]=Analogni sat Name[hsb]=Analogny časnik Name[hu]=Mutatós óra Name[ia]=Horologio analogic -Name[id]=Analog Clock +Name[id]=Jam Analog Name[is]=Skífuklukka Name[it]=Orologio analogico Name[ja]=アナログ時計
  73. Download patch applets/notifications/filemenu.cpp

    --- 4:5.14.5.1-1/applets/notifications/filemenu.cpp 1970-01-01 00:00:00.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/filemenu.cpp 2019-07-30 10:35:48.000000000 +0000 @@ -0,0 +1,185 @@ +/* + Copyright (C) 2016,2019 Kai Uwe Broulik <kde@privat.broulik.de> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "filemenu.h" + +#include <QApplication> +#include <QClipboard> +#include <QIcon> +#include <QMimeData> +#include <QMenu> +#include <QQuickItem> +#include <QTimer> +#include <QQuickWindow> + +#include <KFileItemActions> +#include <KFileItemListProperties> +#include <KLocalizedString> +#include <KProtocolManager> +#include <KPropertiesDialog> +#include <KUrlMimeData> + +#include <KIO/OpenFileManagerWindowJob> + +FileMenu::FileMenu(QObject *parent) : QObject(parent) +{ + +} + +FileMenu::~FileMenu() = default; + +QUrl FileMenu::url() const +{ + return m_url; +} + +void FileMenu::setUrl(const QUrl &url) +{ + if (m_url != url) { + m_url = url; + emit urlChanged(); + } +} + +QQuickItem *FileMenu::visualParent() const +{ + return m_visualParent.data(); +} + +void FileMenu::setVisualParent(QQuickItem *visualParent) +{ + if (m_visualParent.data() == visualParent) { + return; + } + + if (m_visualParent) { + disconnect(m_visualParent.data(), nullptr, this, nullptr); + } + m_visualParent = visualParent; + if (m_visualParent) { + connect(m_visualParent.data(), &QObject::destroyed, this, &FileMenu::visualParentChanged); + } + emit visualParentChanged(); +} + +bool FileMenu::visible() const +{ + return m_visible; +} + +void FileMenu::setVisible(bool visible) +{ + if (m_visible == visible) { + return; + } + + if (visible) { + open(0, 0); + } else { + // TODO warning or close? + } +} + +void FileMenu::open(int x, int y) +{ + if (!m_visualParent || !m_visualParent->window()) { + return; + } + + if (!m_url.isValid()) { + return; + } + + KFileItem fileItem(m_url); + + QMenu *menu = new QMenu(); + menu->setAttribute(Qt::WA_DeleteOnClose, true); + connect(menu, &QMenu::triggered, this, &FileMenu::actionTriggered); + + connect(menu, &QMenu::aboutToHide, this, [this] { + m_visible = false; + emit visibleChanged(); + }); + + if (KProtocolManager::supportsListing(m_url)) { + QAction *openContainingFolderAction = menu->addAction(QIcon::fromTheme(QStringLiteral("folder-open")), i18n("Open Containing Folder")); + connect(openContainingFolderAction, &QAction::triggered, [this] { + KIO::highlightInFileManager({m_url}); + }); + } + + KFileItemActions *actions = new KFileItemActions(menu); + KFileItemListProperties itemProperties(KFileItemList({fileItem})); + actions->setItemListProperties(itemProperties); + + actions->addOpenWithActionsTo(menu); + + // KStandardAction? But then the Ctrl+C shortcut makes no sense in this context + QAction *copyAction = menu->addAction(QIcon::fromTheme(QStringLiteral("edit-copy")), i18n("&Copy")); + connect(copyAction, &QAction::triggered, [fileItem] { + // inspired by KDirModel::mimeData() + QMimeData *data = new QMimeData(); // who cleans it up? + KUrlMimeData::setUrls({fileItem.url()}, {fileItem.mostLocalUrl()}, data); + QApplication::clipboard()->setMimeData(data); + }); + + actions->addServiceActionsTo(menu); + actions->addPluginActionsTo(menu); + + QAction *propertiesAction = menu->addAction(QIcon::fromTheme(QStringLiteral("document-properties")), i18n("Properties")); + connect(propertiesAction, &QAction::triggered, [fileItem] { + KPropertiesDialog *dialog = new KPropertiesDialog(fileItem.url()); + dialog->setAttribute(Qt::WA_DeleteOnClose); + dialog->show(); + }); + + //this is a workaround where Qt will fail to realize a mouse has been released + // this happens if a window which does not accept focus spawns a new window that takes focus and X grab + // whilst the mouse is depressed + // https://bugreports.qt.io/browse/QTBUG-59044 + // this causes the next click to go missing + + //by releasing manually we avoid that situation + auto ungrabMouseHack = [this]() { + if (m_visualParent && m_visualParent->window() && m_visualParent->window()->mouseGrabberItem()) { + m_visualParent->window()->mouseGrabberItem()->ungrabMouse(); + } + }; + + QTimer::singleShot(0, m_visualParent, ungrabMouseHack); + //end workaround + + QPoint pos; + if (x == -1 && y == -1) { // align "bottom left of visualParent" + menu->adjustSize(); + + pos = m_visualParent->mapToGlobal(QPointF(0, m_visualParent->height())).toPoint(); + + if (!qApp->isRightToLeft()) { + pos.rx() += m_visualParent->width(); + pos.rx() -= menu->width(); + } + } else { + pos = m_visualParent->mapToGlobal(QPointF(x, y)).toPoint(); + } + + menu->popup(pos); + + m_visible = true; + emit visibleChanged(); +}
  74. Download patch applets/digital-clock/package/contents/ui/configAppearance.qml
  75. Download patch applets/mediacontroller/contents/ui/ExpandedRepresentation.qml

    --- 4:5.14.5.1-1/applets/mediacontroller/contents/ui/ExpandedRepresentation.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/mediacontroller/contents/ui/ExpandedRepresentation.qml 2019-07-30 10:35:48.000000000 +0000 @@ -197,7 +197,8 @@ Item { Image { id: albumArt anchors { - horizontalCenter: parent.horizontalCenter + left: parent.left + right: parent.right top: playerCombo.bottom bottom: controlCol.top margins: units.smallSpacing @@ -267,7 +268,7 @@ Item { id: seekTimer interval: 1000 / expandedRepresentation.rate repeat: true - running: root.state == "playing" && plasmoid.expanded && !keyPressed && interval > 0 && seekSlider.to >= 1000000 + running: root.state === "playing" && plasmoid.expanded && !keyPressed && interval > 0 && seekSlider.to >= 1000000 onTriggered: { // some players don't continuously update the seek slider position via mpris // add one second; value in microseconds
  76. Download patch applets/digital-clock/package/contents/ui/CalendarView.qml

    --- 4:5.14.5.1-1/applets/digital-clock/package/contents/ui/CalendarView.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/digital-clock/package/contents/ui/CalendarView.qml 2019-07-30 10:35:48.000000000 +0000 @@ -201,14 +201,14 @@ Item { } // Non-explicit all-day event - var startIsMidnight = modelData.startDateTime.getHours() == 0 - && modelData.startDateTime.getMinutes() == 0; + var startIsMidnight = modelData.startDateTime.getHours() === 0 + && modelData.startDateTime.getMinutes() === 0; - var endIsMidnight = modelData.endDateTime.getHours() == 0 - && modelData.endDateTime.getMinutes() == 0; + var endIsMidnight = modelData.endDateTime.getHours() === 0 + && modelData.endDateTime.getMinutes() === 0; - var sameDay = modelData.startDateTime.getDate() == modelData.endDateTime.getDate() - && modelData.startDateTime.getDay() == modelData.endDateTime.getDay() + var sameDay = modelData.startDateTime.getDate() === modelData.endDateTime.getDate() + && modelData.startDateTime.getDay() === modelData.endDateTime.getDay() if (startIsMidnight && endIsMidnight && sameDay) { return false @@ -368,5 +368,6 @@ Item { iconSource: "window-pin" checked: plasmoid.configuration.pin onCheckedChanged: plasmoid.configuration.pin = checked + tooltip: i18n("Keep Open") } }
  77. Download patch applets/batterymonitor/package/contents/ui/batterymonitor.qml

    --- 4:5.14.5.1-1/applets/batterymonitor/package/contents/ui/batterymonitor.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/batterymonitor/package/contents/ui/batterymonitor.qml 2019-07-30 10:35:48.000000000 +0000 @@ -64,11 +64,11 @@ Item { var percent = pmSource.data.Battery.Percent var state = pmSource.data.Battery.State if (state === "Charging") { - return i18n("%1%. Charging", percent) + return i18n("%1% Charging", percent) } else if (state === "NoCharge") { - return i18n("%1%. Plugged in, not Charging", percent) + return i18n("%1% Plugged in, not Charging", percent) } else { - return i18n("%1%. Plugged in", percent) + return i18n("%1% Plugged in", percent) } } else { if (remainingTime > 0) { @@ -200,7 +200,7 @@ Item { isBrightnessAvailable: pmSource.data["PowerDevil"] && pmSource.data["PowerDevil"]["Screen Brightness Available"] ? true : false isKeyboardBrightnessAvailable: pmSource.data["PowerDevil"] && pmSource.data["PowerDevil"]["Keyboard Brightness Available"] ? true : false - pluggedIn: pmSource.data["AC Adapter"] != undefined && pmSource.data["AC Adapter"]["Plugged in"] + pluggedIn: pmSource.data["AC Adapter"] !== undefined && pmSource.data["AC Adapter"]["Plugged in"] property int cookie1: -1 property int cookie2: -1
  78. Download patch applets/panelspacer/metadata.desktop

    --- 4:5.14.5.1-1/applets/panelspacer/metadata.desktop 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/panelspacer/metadata.desktop 2019-07-30 10:35:48.000000000 +0000 @@ -23,7 +23,6 @@ Name[he]=מרווח לוח Name[hr]=Razmak na traci Name[hu]=Panelelválasztó Name[ia]=Spatiator de pannello -Name[id]=Panel Spacer Name[is]=Spjaldabil Name[it]=Spaziatore del pannello Name[ja]=パネルのスペーサー @@ -126,7 +125,7 @@ Comment[ug]=تاختادا بوشلۇق Comment[uk]=Створює прогалини на панелі. Comment[wa]=Wårdez des vudes espåces e scriftôr. Comment[x-test]=xxReserve empty spaces within the panel.xx -Comment[zh_CN]=在面板中保留空间。 +Comment[zh_CN]=在面板中预留空白。 Comment[zh_TW]=在面板內保留空間。 X-KDE-ServiceTypes=Plasma/Applet @@ -141,7 +140,7 @@ X-KDE-PluginInfo-Author=The Plasma Team X-KDE-PluginInfo-Email=plasma-devel@kde.org X-KDE-PluginInfo-Name=org.kde.plasma.panelspacer X-KDE-PluginInfo-Version=1.0 -X-KDE-PluginInfo-Website=http://plasma.kde.org/ +X-KDE-PluginInfo-Website=https://www.kde.org/plasma-desktop X-KDE-PluginInfo-Category=System Information X-KDE-PluginInfo-Depends= X-KDE-PluginInfo-License=GPL-2.0+
  79. Download patch applets/appmenu/package/metadata.desktop

    --- 4:5.14.5.1-1/applets/appmenu/package/metadata.desktop 2019-02-13 13:39:58.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/appmenu/package/metadata.desktop 2019-07-30 10:35:48.000000000 +0000 @@ -15,7 +15,7 @@ Name[fr]=Menu global Name[gl]=Menú global Name[he]=תפריט גלובלי Name[hu]=Globális menü -Name[id]=Global Menu +Name[id]=Menu Global Name[it]=Menu globale Name[ko]=전역 메뉴 Name[lt]=Visuotinis meniu
  80. Download patch applets/analog-clock/contents/ui/analogclock.qml

    --- 4:5.14.5.1-1/applets/analog-clock/contents/ui/analogclock.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/analog-clock/contents/ui/analogclock.qml 2019-07-30 10:35:48.000000000 +0000 @@ -66,7 +66,7 @@ Item { //console.log("Date/time changed!"); var currentTZOffset = dataSource.data["Local"]["Offset"] / 60; - if (currentTZOffset != tzOffset) { + if (currentTZOffset !== tzOffset) { tzOffset = currentTZOffset; //console.log("TZ offset changed: " + tzOffset); Date.timeZoneUpdated(); // inform the QML JS engine about TZ change @@ -81,8 +81,8 @@ Item { Plasmoid.compactRepresentation: Item { id: representation - Layout.minimumWidth: plasmoid.formFactor != PlasmaCore.Types.Vertical ? representation.height : units.gridUnit - Layout.minimumHeight: plasmoid.formFactor == PlasmaCore.Types.Vertical ? representation.width : units.gridUnit + Layout.minimumWidth: plasmoid.formFactor !== PlasmaCore.Types.Vertical ? representation.height : units.gridUnit + Layout.minimumHeight: plasmoid.formFactor === PlasmaCore.Types.Vertical ? representation.width : units.gridUnit MouseArea { anchors.fill: parent @@ -93,6 +93,34 @@ Item { PlasmaCore.Svg { id: clockSvg imagePath: "widgets/clock" + function estimateHorizontalHandShadowOffset() { + var id = "hint-hands-shadow-offset-to-west"; + if (hasElement(id)) { + return -elementSize(id).width; + } + id = "hint-hands-shadows-offset-to-east"; + if (hasElement(id)) { + return elementSize(id).width; + } + return 0; + } + function estimateVerticalHandShadowOffset() { + var id = "hint-hands-shadow-offset-to-north"; + if (hasElement(id)) { + return -elementSize(id).height; + } + id = "hint-hands-shadow-offset-to-south"; + if (hasElement(id)) { + return elementSize(id).height; + } + return 0; + } + property double naturalHorizontalHandShadowOffset: estimateHorizontalHandShadowOffset() + property double naturalVerticalHandShadowOffset: estimateVerticalHandShadowOffset() + onRepaintNeeded: { + naturalHorizontalHandShadowOffset = estimateHorizontalHandShadowOffset(); + naturalVerticalHandShadowOffset = estimateVerticalHandShadowOffset(); + } } Item { @@ -102,6 +130,11 @@ Item { top: parent.top bottom: showTimezone ? timezoneBg.top : parent.bottom } + readonly property double svgScale: face.width / face.naturalSize.width + readonly property double horizontalShadowOffset: + Math.round(clockSvg.naturalHorizontalHandShadowOffset * svgScale) + Math.round(clockSvg.naturalHorizontalHandShadowOffset * svgScale) % 2 + readonly property double verticalShadowOffset: + Math.round(clockSvg.naturalVerticalHandShadowOffset * svgScale) + Math.round(clockSvg.naturalVerticalHandShadowOffset * svgScale) % 2 PlasmaCore.SvgItem { id: face @@ -113,48 +146,57 @@ Item { } Hand { - anchors.topMargin: 3 - elementId: "HourHandShdow" + elementId: "HourHandShadow" + rotationCenterHintId: "hint-hourhandshadow-rotation-center-offset" + horizontalRotationOffset: clock.horizontalShadowOffset + verticalRotationOffset: clock.verticalShadowOffset rotation: 180 + hours * 30 + (minutes/2) - svgScale: face.width / face.naturalSize.width + svgScale: clock.svgScale } Hand { elementId: "HourHand" + rotationCenterHintId: "hint-hourhand-rotation-center-offset" rotation: 180 + hours * 30 + (minutes/2) - svgScale: face.width / face.naturalSize.width + svgScale: clock.svgScale } Hand { - anchors.topMargin: 3 elementId: "MinuteHandShadow" + rotationCenterHintId: "hint-minutehandshadow-rotation-center-offset" + horizontalRotationOffset: clock.horizontalShadowOffset + verticalRotationOffset: clock.verticalShadowOffset rotation: 180 + minutes * 6 - svgScale: face.width / face.naturalSize.width + svgScale: clock.svgScale } Hand { elementId: "MinuteHand" + rotationCenterHintId: "hint-minutehand-rotation-center-offset" rotation: 180 + minutes * 6 - svgScale: face.width / face.naturalSize.width + svgScale: clock.svgScale } Hand { - anchors.topMargin: 3 elementId: "SecondHandShadow" + rotationCenterHintId: "hint-secondhandshadow-rotation-center-offset" + horizontalRotationOffset: clock.horizontalShadowOffset + verticalRotationOffset: clock.verticalShadowOffset rotation: 180 + seconds * 6 visible: showSecondsHand - svgScale: face.width / face.naturalSize.width + svgScale: clock.svgScale } Hand { elementId: "SecondHand" + rotationCenterHintId: "hint-secondhand-rotation-center-offset" rotation: 180 + seconds * 6 visible: showSecondsHand - svgScale: face.width / face.naturalSize.width + svgScale: clock.svgScale } PlasmaCore.SvgItem { id: center - width: naturalSize.width * face.width / face.naturalSize.width - height: naturalSize.height * face.width / face.naturalSize.width + width: naturalSize.width * clock.svgScale + height: naturalSize.height * clock.svgScale anchors.centerIn: clock svg: clockSvg elementId: "HandCenterScrew" @@ -165,8 +207,8 @@ Item { anchors.fill: face svg: clockSvg elementId: "Glass" - width: naturalSize.width * face.width / face.naturalSize.width - height: naturalSize.height * face.width / face.naturalSize.width + width: naturalSize.width * clock.svgScale + height: naturalSize.height * clock.svgScale } }
  81. Download patch applets/notifications/plugin/thumbnailer.cpp
  82. Download patch applets/notifications/package/contents/ui/NotificationItem.qml
  83. Download patch applets/notifications/package/contents/ui/configNotifications.qml

    --- 4:5.14.5.1-1/applets/notifications/package/contents/ui/configNotifications.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/package/contents/ui/configNotifications.qml 1970-01-01 00:00:00.000000000 +0000 @@ -1,75 +0,0 @@ -/* - * Copyright 2014 Kai Uwe Broulik <kde@privat.broulik.de> - * - * 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) version 3 or any later version - * accepted by the membership of KDE e.V. (or its successor approved - * by the membership of KDE e.V.), which shall act as a proxy - * defined in Section 14 of version 3 of the license. - * - * 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, see <http://www.gnu.org/licenses/> - */ - -import QtQuick 2.0 -import QtQuick.Controls 1.0 as QtControls -import QtQuick.Layouts 1.1 as QtLayouts -import QtQuick.Window 2.2 -import org.kde.plasma.core 2.0 as PlasmaCore - -import org.kde.plasma.private.notifications 1.0 - -Item { - id: appearancePage - width: childrenRect.width - height: childrenRect.height - - signal configurationChanged - - property alias cfg_showNotifications: showNotificationsCheckBox.checked - property alias cfg_showJobs: showJobsCheckBox.checked - property alias cfg_showHistory: showHistoryCheckBox.checked - - QtLayouts.ColumnLayout { - anchors.left: parent.left - QtControls.CheckBox { - id: showNotificationsCheckBox - text: i18n("Show application and system notifications") - } - - QtControls.CheckBox { - id: showHistoryCheckBox - text: i18n("Show a history of notifications") - enabled: showNotificationsCheckBox.checked - } - - QtControls.CheckBox { - id: showJobsCheckBox - text: i18n("Track file transfers and other jobs") - } - - QtControls.CheckBox { - id: useCustomPopupPositionCheckBox - text: i18n("Use custom position for the notification popup") - checked: plasmoid.nativeInterface.configScreenPosition() != NotificationsHelper.Default - } - - ScreenPositionSelector { - id: screenPositionSelector - enabled: useCustomPopupPositionCheckBox.checked - selectedPosition: plasmoid.nativeInterface.screenPosition - disabledPositions: [NotificationsHelper.Left, NotificationsHelper.Center, NotificationsHelper.Right] - } - } - - Component.onCompleted: { - plasmoid.nativeInterface.screenPosition = Qt.binding(function() {configurationChanged(); return screenPositionSelector.selectedPosition; }); - } -}
  84. Download patch applets/systemmonitor/common/contents/ui/Applet.qml

    --- 4:5.14.5.1-1/applets/systemmonitor/common/contents/ui/Applet.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/systemmonitor/common/contents/ui/Applet.qml 2019-07-30 10:35:48.000000000 +0000 @@ -34,8 +34,8 @@ Item { width: units.gridUnit * 10 height: units.gridUnit * 10 Plasmoid.preferredRepresentation: plasmoid.fullRepresentation - Layout.minimumWidth: units.gridUnit * 12 * (plasmoid.formFactor == PlasmaCore.Types.Horizontal ? sourcesModel.count : 1) - Layout.minimumHeight: units.gridUnit * 4 * (plasmoid.formFactor == PlasmaCore.Types.Vertical ? sourcesModel.count : 1) + Layout.minimumWidth: units.gridUnit * 12 * (plasmoid.formFactor === PlasmaCore.Types.Horizontal ? sourcesModel.count : 1) + Layout.minimumHeight: units.gridUnit * 4 * (plasmoid.formFactor === PlasmaCore.Types.Vertical ? sourcesModel.count : 1) Layout.preferredHeight: Layout.minimumHeight @@ -43,8 +43,8 @@ Item { var found = false; for (var i = 0; i < sourcesModel.count; ++i) { var obj = sourcesModel.get(i); - if (obj.source1 == encodeURIComponent(source1) && - obj.source2 == encodeURIComponent(source2)) { + if (obj.source1 === encodeURIComponent(source1) && + obj.source2 === encodeURIComponent(source2)) { found = true; break; } @@ -91,7 +91,7 @@ Item { onSourceRemoved: { for (var i = sourcesModel.count - 1; i >= 0; --i) { var obj = sourcesModel.get(i); - if (obj.source1 == source || obj.source2 == source) { + if (obj.source1 === source || obj.source2 === source) { sourcesModel.remove(i); } } @@ -101,7 +101,7 @@ Item { Connections { target: plasmoid.configuration onSourcesChanged: { - if (plasmoid.configuration.sources.length == 0) { + if (plasmoid.configuration.sources.length === 0) { for (var i in smSource.sources) { var source = smSource.sources[i]; smSource.sourceAdded(source); @@ -136,13 +136,13 @@ Item { width: parent.width level: 2 text: plasmoid.title - visible: plasmoid.formFactor != PlasmaCore.Types.Horizontal && plasmoid.formFactor != PlasmaCore.Types.Vertical + visible: plasmoid.formFactor !== PlasmaCore.Types.Horizontal && plasmoid.formFactor !== PlasmaCore.Types.Vertical } GridLayout { rows: 1 columns: 1 - flow: plasmoid.formFactor != PlasmaCore.Types.Horizontal ? GridLayout.LeftToRight : GridLayout.TopToBottom + flow: plasmoid.formFactor !== PlasmaCore.Types.Horizontal ? GridLayout.LeftToRight : GridLayout.TopToBottom anchors { top: heading.visible ? heading.bottom : parent.top bottom: parent.bottom
  85. Download patch applets/notifications/plugin/qmldir

    --- 4:5.14.5.1-1/applets/notifications/plugin/qmldir 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/plugin/qmldir 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -module org.kde.plasma.private.notifications -plugin notificationshelperplugin
  86. Download patch applets/notifications/package/contents/ui/FullRepresentation.qml
  87. Download patch applets/devicenotifier/package/contents/ui/configGeneral.qml

    --- 4:5.14.5.1-1/applets/devicenotifier/package/contents/ui/configGeneral.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/devicenotifier/package/contents/ui/configGeneral.qml 2019-07-30 10:35:48.000000000 +0000 @@ -17,49 +17,40 @@ */ import QtQuick 2.0 -import QtQuick.Controls 1.1 as Controls -import QtQuick.Layouts 1.1 as Layouts - -import org.kde.plasma.core 2.0 as PlasmaCore - +import QtQuick.Controls 2.5 +import org.kde.kirigami 2.4 as Kirigami Item { - id: iconsPage width: childrenRect.width height: childrenRect.height - implicitWidth: mainColumn.implicitWidth - implicitHeight: mainColumn.implicitHeight property alias cfg_removableDevices: removableOnly.checked property alias cfg_nonRemovableDevices: nonRemovableOnly.checked property alias cfg_allDevices: allDevices.checked property alias cfg_popupOnNewDevice: autoPopup.checked - Layouts.ColumnLayout { - id: mainColumn + Kirigami.FormLayout { anchors.left: parent.left - Controls.ExclusiveGroup{ - id: deviceFilter - } - Controls.RadioButton { + anchors.right: parent.right + + RadioButton { id: removableOnly + Kirigami.FormData.label: i18n("Show:") text: i18n("Removable devices only") - exclusiveGroup: deviceFilter } - Controls.RadioButton { + + RadioButton { id: nonRemovableOnly text: i18n("Non-removable devices only") - exclusiveGroup: deviceFilter } - Controls.RadioButton { + + RadioButton { id: allDevices text: i18n("All devices") - exclusiveGroup: deviceFilter } - Controls.CheckBox { + CheckBox { id: autoPopup - Layouts.Layout.fillWidth: true text: i18n("Open popup when new device is plugged in") } }
  88. Download patch applets/notifications/thumbnailer.cpp

    --- 4:5.14.5.1-1/applets/notifications/thumbnailer.cpp 1970-01-01 00:00:00.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/thumbnailer.cpp 2019-07-30 10:35:48.000000000 +0000 @@ -0,0 +1,165 @@ +/* + Copyright (C) 2016 Kai Uwe Broulik <kde@privat.broulik.de> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "thumbnailer.h" + +#include <KIO/PreviewJob> + +#include <QApplication> +#include <QClipboard> +#include <QIcon> +#include <QMimeData> +#include <QMenu> +#include <QQuickItem> +#include <QTimer> +#include <QQuickWindow> + +#include <KFileItemActions> +#include <KFileItemListProperties> +#include <KLocalizedString> +#include <KProtocolManager> +#include <KPropertiesDialog> +#include <KUrlMimeData> + +#include <KIO/OpenFileManagerWindowJob> + +Thumbnailer::Thumbnailer(QObject *parent) : QObject(parent) +{ + +} + +Thumbnailer::~Thumbnailer() = default; + +void Thumbnailer::classBegin() +{ + +} + +void Thumbnailer::componentComplete() +{ + m_inited = true; + generatePreview(); +} + +QUrl Thumbnailer::url() const +{ + return m_url; +} + +void Thumbnailer::setUrl(const QUrl &url) +{ + if (m_url != url) { + m_url = url; + emit urlChanged(); + + generatePreview(); + } +} + +QSize Thumbnailer::size() const +{ + return m_size; +} + +void Thumbnailer::setSize(const QSize &size) +{ + if (m_size != size) { + m_size = size; + emit sizeChanged(); + + generatePreview(); + } +} + +bool Thumbnailer::busy() const +{ + return m_busy; +} + +bool Thumbnailer::hasPreview() const +{ + return !m_pixmap.isNull(); +} + +QPixmap Thumbnailer::pixmap() const +{ + return m_pixmap; +} + +QSize Thumbnailer::pixmapSize() const +{ + return m_pixmap.size(); +} + +QString Thumbnailer::iconName() const +{ + return m_iconName; +} + +bool Thumbnailer::menuVisible() const +{ + return m_menuVisible; +} + +void Thumbnailer::generatePreview() +{ + if (!m_inited) { + return; + } + + if (!m_url.isValid() || !m_url.isLocalFile() || !m_size.isValid()) { + return; + } + + auto maxSize = qMax(m_size.width(), m_size.height()); + KIO::PreviewJob *job = KIO::filePreview(KFileItemList({KFileItem(m_url)}), QSize(maxSize,maxSize)); + job->setScaleType(KIO::PreviewJob::Scaled); + job->setIgnoreMaximumSize(true); + + connect(job, &KIO::PreviewJob::gotPreview, this, [this](const KFileItem &item, const QPixmap &preview) { + Q_UNUSED(item); + m_pixmap = preview; + emit pixmapChanged(); + + if (!m_iconName.isEmpty()) { + m_iconName.clear(); + emit iconNameChanged(); + } + }); + + connect(job, &KIO::PreviewJob::failed, this, [this](const KFileItem &item) { + m_pixmap = QPixmap(); + emit pixmapChanged(); + + const QString &iconName = item.determineMimeType().iconName(); + if (m_iconName != iconName) { + m_iconName = iconName; + emit iconNameChanged(); + } + }); + + connect(job, &KJob::result, this, [this] { + m_busy = false; + emit busyChanged(); + }); + + m_busy = true; + emit busyChanged(); + + job->start(); +}
  89. Download patch applets/notifications/package/contents/ui/uiproperties.js

    --- 4:5.14.5.1-1/applets/notifications/package/contents/ui/uiproperties.js 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/package/contents/ui/uiproperties.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ -/* - * Copyright 2012 Marco Martin <notmart@gmail.com> - * - * 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. - */ - - -var toolIconSize = units.iconSizes.smallMedium -var layoutSpacing = 4 -var touchInput = false
  90. Download patch applets/notifications/package/contents/ui/Notifications.qml
  91. Download patch applets/clipboard/metadata.desktop

    --- 4:5.14.5.1-1/applets/clipboard/metadata.desktop 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/clipboard/metadata.desktop 2019-07-30 10:35:48.000000000 +0000 @@ -17,7 +17,7 @@ Name[fr]=Presse-papiers Name[gl]=Portapapeis Name[he]=לוח העתקה Name[hu]=Vágólap -Name[id]=Clipboard +Name[id]=PapanKlip Name[is]=Klippispjald Name[it]=Appunti Name[ja]=クリップボード @@ -59,7 +59,7 @@ Comment[fi]=Tarjoaa pääsyn leikepöyd Comment[fr]=Donne accès à l'historique du presse-papiers Comment[gl]=Fornece acceso ao historial do portapapeis. Comment[hu]=Hozzáférést nyújt a vágólap előzményeihez -Comment[id]=Menyediakan akses ke histori clipboard +Comment[id]=Menyediakan akses ke histori papan-klip Comment[it]=Fornisce l'accesso alla cronologia degli appunti Comment[ko]=클립보드 기록 표시 Comment[nl]=Biedt toegang tot de geschiedenis van klembord
  92. Download patch applets/analog-clock/contents/ui/configGeneral.qml

    --- 4:5.14.5.1-1/applets/analog-clock/contents/ui/configGeneral.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/analog-clock/contents/ui/configGeneral.qml 2019-07-30 10:35:48.000000000 +0000 @@ -17,30 +17,26 @@ */ import QtQuick 2.0 -import QtQuick.Controls 1.0 as QtControls +import QtQuick.Controls 2.0 +import org.kde.kirigami 2.5 as Kirigami -//FIXME this causes a crash in Oxygen style -//QtControls.GroupBox { -Item { - width: childrenRect.width - height: childrenRect.height - -//FIXME enable when we're back to being a group box -// flat: true -// title: i18n("Appearance") +Kirigami.FormLayout { property alias cfg_showSecondHand: showSecondHandCheckBox.checked property alias cfg_showTimezoneString: showTimezoneCheckBox.checked - Column { - anchors.left: parent.left - QtControls.CheckBox { - id: showSecondHandCheckBox - text: i18n("Show seconds hand") - } - QtControls.CheckBox { - id: showTimezoneCheckBox - text: i18n("Show time zone") - } + anchors { + left: parent.left + right: parent.right + } + + CheckBox { + id: showSecondHandCheckBox + text: i18n("Show seconds hand") + Kirigami.FormData.label: i18n("General:") + } + CheckBox { + id: showTimezoneCheckBox + text: i18n("Show time zone") } }
  93. Download patch applets/notifications/package/contents/ui/global/Globals.qml
  94. Download patch applets/notifications/package/contents/ui/global/PulseAudio.qml

    --- 4:5.14.5.1-1/applets/notifications/package/contents/ui/global/PulseAudio.qml 1970-01-01 00:00:00.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/package/contents/ui/global/PulseAudio.qml 2019-07-30 10:35:48.000000000 +0000 @@ -0,0 +1,53 @@ +/* + * Copyright 2017, 2019 Kai Uwe Broulik <kde@privat.broulik.de> + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see <http://www.gnu.org/licenses/> + */ + +import QtQuick 2.2 + +import org.kde.plasma.private.volume 0.1 + +QtObject { + id: pulseAudio + + readonly property string notificationStreamId: "sink-input-by-media-role:event" + + property QtObject notificationStream + + property QtObject instantiator: Instantiator { + model: StreamRestoreModel {} + + delegate: QtObject { + readonly property string name: Name + readonly property bool muted: Muted + + function mute() { + Muted = true + } + function unmute() { + Muted = false + } + } + + onObjectAdded: { + if (object.name === notificationStreamId) { + notificationStream = object; + } + } + } +}
  95. Download patch applets/notifications/Messages.sh

    --- 4:5.14.5.1-1/applets/notifications/Messages.sh 1970-01-01 00:00:00.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/Messages.sh 2019-07-30 10:35:48.000000000 +0000 @@ -0,0 +1,2 @@ +#! /usr/bin/env bash +$XGETTEXT `find . -name \*.js -o -name \*.qml -o -name \*.cpp` -o $podir/plasma_applet_org.kde.plasma.notifications.pot
  96. Download patch applets/devicenotifier/package/contents/ui/devicenotifier.qml

    --- 4:5.14.5.1-1/applets/devicenotifier/package/contents/ui/devicenotifier.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/devicenotifier/package/contents/ui/devicenotifier.qml 2019-07-30 10:35:48.000000000 +0000 @@ -48,6 +48,8 @@ Item { property bool itemClicked: false property int currentIndex: -1 + property var connectedRemovables: [] + property int mountedRemovables: 0 // QTBUG-50380: As soon as the item gets removed from the model, all of ListView's // properties (count, contentHeight) pretend the delegate doesn't exist anymore @@ -109,13 +111,17 @@ Item { id: sdSource engine: "soliddevice" connectedSources: hpSource.sources - interval: plasmoid.expanded ? 5000 : 0 + interval: 0 property string last onSourceAdded: { disconnectSource(source); connectSource(source); last = source; processLastDevice(true); + if (data[source].Removable) { + devicenotifier.connectedRemovables.push(source); + devicenotifier.connectedRemovables = devicenotifier.connectedRemovables; + } } onSourceRemoved: { @@ -123,10 +129,24 @@ Item { expandedDevice = ""; } disconnectSource(source); + var index = devicenotifier.connectedRemovables.indexOf(source); + if (index >= 0) { + devicenotifier.connectedRemovables.splice(index, 1); + devicenotifier.connectedRemovables = devicenotifier.connectedRemovables; + } } onDataChanged: { processLastDevice(true); + var counter = 0; + for (var i = 0; i < devicenotifier.connectedRemovables.length; i++) { + if (isMounted(devicenotifier.connectedRemovables[i])) { + counter++; + } + } + if (counter !== devicenotifier.mountedRemovables) { + devicenotifier.mountedRemovables = counter; + } } onNewData: { @@ -140,6 +160,10 @@ Item { } var device = data[udi]; + if (!device) { + return false; + } + return (devicesType === "removable" && device.Removable) || (devicesType === "nonRemovable" && !device.Removable); } @@ -204,7 +228,7 @@ Item { } Component.onCompleted: { - if (sdSource.connectedSources.count == 0) { + if (sdSource.connectedSources.count === 0) { Plasmoid.status = PlasmaCore.Types.PassiveStatus; } @@ -247,6 +271,10 @@ Item { } function isMounted(udi) { + if (!sdSource.data[udi]) { + return false; + } + var types = sdSource.data[udi]["Device Types"]; if (types.indexOf("Storage Access") >= 0) { return sdSource.data[udi]["Accessible"];
  97. Download patch applets/notifications/package/contents/ui/NotificationIcon.qml

    --- 4:5.14.5.1-1/applets/notifications/package/contents/ui/NotificationIcon.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/package/contents/ui/NotificationIcon.qml 1970-01-01 00:00:00.000000000 +0000 @@ -1,165 +0,0 @@ -/*************************************************************************** - * Copyright 2011 Davide Bettio <davide.bettio@kdemail.net> * - * Copyright 2011 Marco Martin <mart@kde.org> * - * * - * 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 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 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.0 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.components 2.0 as PlasmaComponents -import org.kde.kquickcontrolsaddons 2.0 - -Item { - PlasmaCore.SvgItem { - id: notificationSvgItem - anchors.centerIn: parent - width: units.roundToIconSize(Math.min(parent.width, parent.height)) - height: width - - svg: notificationSvg - - elementId: { - if (activeItemsCount > 0) { - if (jobs && jobs.count > 0) { - return "notification-progress-inactive" - } else { - return "notification-empty" - } - } - return "notification-disabled" - } - - state: notificationsApplet.state - - PlasmaCore.Svg { - id: notificationSvg - imagePath: "icons/notification" - colorGroup: PlasmaCore.ColorScope.colorGroup - } - - Item { - id: jobProgressItem - anchors { - left: parent.left - top: parent.top - bottom: parent.bottom - } - width: notificationSvgItem.width * globalProgress - - clip: true - visible: jobs.count > 0 - - PlasmaCore.SvgItem { - anchors { - left: parent.left - top: parent.top - bottom: parent.bottom - } - width: notificationSvgItem.width - - svg: notificationSvg - elementId: "notification-progress-active" - } - } - - PlasmaComponents.BusyIndicator { - anchors.fill: parent - - visible: jobs ? jobs.count > 0 : false - running: visible - } - - PlasmaComponents.Label { - id: notificationCountLabel - property int oldActiveItemsCount: 0 - - // anchors.fill: parent breaks at small sizes for some reason - anchors.centerIn: parent - width: parent.width - (units.smallSpacing * 2.5 * text.length) - height: width - - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - text: notificationsApplet.activeItemsCount - font.pointSize: 100 - fontSizeMode: Text.Fit - minimumPointSize: theme.smallestFont.pointSize - visible: notificationsApplet.activeItemsCount > 0 - - Connections { - target: notificationsApplet - onActiveItemsCountChanged: { - if (notificationsApplet.activeItemsCount > notificationCountLabel.oldActiveItemsCount) { - notificationAnimation.running = true - } - notificationCountLabel.oldActiveItemsCount = notificationsApplet.activeItemsCount - } - - } - } - - PlasmaCore.SvgItem { - id: notificationAnimatedItem - anchors.fill: parent - - svg: notificationSvg - elementId: "notification-active" - opacity: 0 - scale: 2 - - SequentialAnimation { - id: notificationAnimation - - NumberAnimation { - target: notificationAnimatedItem - duration: units.longDuration - properties: "opacity, scale" - to: 1 - easing.type: Easing.InOutQuad - } - - PauseAnimation { duration: units.longDuration * 2 } - - ParallelAnimation { - NumberAnimation { - target: notificationAnimatedItem - duration: units.longDuration - properties: "opacity" - to: 0 - easing.type: Easing.InOutQuad - } - - NumberAnimation { - target: notificationAnimatedItem - duration: units.longDuration - properties: "scale" - to: 2 - easing.type: Easing.InOutQuad - } - } - } - } - - MouseArea { - anchors.fill: parent - property bool wasExpanded: false - - onPressed: wasExpanded = plasmoid.expanded - onClicked: plasmoid.expanded = !wasExpanded - } - } -}
  98. Download patch applets/notifications/package/contents/config/main.xml

    --- 4:5.14.5.1-1/applets/notifications/package/contents/config/main.xml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/package/contents/config/main.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0 - http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" > - <kcfgfile name=""/> - - <group name="General"> - <entry name="showNotifications" type="Bool"> - <label>Show the notifications</label> - <default>true</default> - </entry> - <entry name="showJobs" type="Bool"> - <label>Show the jobs progress</label> - <default>true</default> - </entry> - <entry name="showHistory" type="Bool"> - <label>Show a history of notifications</label> - <default>true</default> - </entry> - </group> - -</kcfg>
  99. Download patch applets/notifications/lib/CMakeLists.txt

    --- 4:5.14.5.1-1/applets/notifications/lib/CMakeLists.txt 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/notifications/lib/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -set(notificationsapplet_SRCS - notificationsapplet.cpp -) - -add_library(plasma_applet_notifications MODULE ${notificationsapplet_SRCS}) - -kcoreaddons_desktop_to_json(plasma_applet_notifications ../package/metadata.desktop) - -target_link_libraries(plasma_applet_notifications - KF5::WindowSystem - KF5::Plasma - KF5::ConfigCore) - -install(TARGETS plasma_applet_notifications DESTINATION ${KDE_INSTALL_PLUGINDIR}/plasma/applets)
  100. Download patch applets/appmenu/package/contents/ui/configGeneral.qml

    --- 4:5.14.5.1-1/applets/appmenu/package/contents/ui/configGeneral.qml 2019-01-08 11:04:50.000000000 +0000 +++ 4:5.16.4-0ubuntu1/applets/appmenu/package/contents/ui/configGeneral.qml 2019-07-30 10:35:48.000000000 +0000 @@ -19,40 +19,29 @@ **********************************************************************/ import QtQuick 2.0 -import QtQuick.Controls 1.0 as Controls -import QtQuick.Layouts 1.1 as Layouts +import QtQuick.Controls 2.5 +import org.kde.kirigami 2.5 as Kirigami import org.kde.plasma.plasmoid 2.0 import org.kde.plasma.core 2.0 as PlasmaCore -Layouts.ColumnLayout { - id: configGeneral - +Kirigami.FormLayout { + anchors.left: parent.left + anchors.right: parent.right + property alias cfg_compactView: compactViewRadioButton.checked - property bool disableSetting: plasmoid.formFactor === PlasmaCore.Types.Vertical - Controls.ExclusiveGroup { - id: viewOptionGroup - } - - Controls.RadioButton { + RadioButton { id: compactViewRadioButton enabled: !disableSetting text: i18n("Use single button for application menu") - exclusiveGroup: viewOptionGroup } - Controls.RadioButton { + + RadioButton { id: fullViewRadioButton - //this checked binding is just for the initial load in case - //compactViewCheckBox is not checked. Then exclusive group manages it enabled: !disableSetting checked: !compactViewRadioButton.checked text: i18n("Show full application menu") - exclusiveGroup: viewOptionGroup - } - - Item { - Layouts.Layout.fillHeight: true } }
  101. ...

Debian ( Changelog | PTS | Bugs ) Ubuntu ( Changelog | txt | LP | Bugs ) | Diff from Ubuntu

Source: plasma-workspace-wallpapers

plasma-workspace-wallpapers (4:5.16.4-0ubuntu1) eoan; urgency=medium * New upstream release (5.16.4) -- Rik Mills <rikmills@kubuntu.org> Tue, 30 Jul 2019 18:46:27 +0100 plasma-workspace-wallpapers (4:5.16.3-0ubuntu1) eoan; urgency=medium * New upstream release (5.16.3) -- Rik Mills <rikmills@kubuntu.org> Tue, 09 Jul 2019 22:23:43 +0100 plasma-workspace-wallpapers (4:5.16.2-0ubuntu1) eoan; urgency=medium * New upstream release (5.16.2) -- Rik Mills <rikmills@kubuntu.org> Tue, 25 Jun 2019 18:24:39 +0100 plasma-workspace-wallpapers (4:5.16.1-0ubuntu1) eoan; urgency=medium * New upstream release (5.16.1) -- Rik Mills <rikmills@kubuntu.org> Tue, 18 Jun 2019 22:25:43 +0100 plasma-workspace-wallpapers (4:5.16.0-0ubuntu1) eoan; urgency=medium * New upstream release (5.16.0) -- Rik Mills <rikmills@kubuntu.org> Tue, 11 Jun 2019 11:37:23 +0100 plasma-workspace-wallpapers (4:5.15.90-0ubuntu1) eoan; urgency=medium * New upstream (beta) release (5.15.90) * Breaks/Replaces on Kubuntu wallpapers, as this source now includes the Elarun wallpaper which we previously supplied. -- Rik Mills <rikmills@kubuntu.org> Fri, 17 May 2019 11:32:59 +0100 plasma-workspace-wallpapers (4:5.15.5-0ubuntu1) eoan; urgency=medium * New upstream release (5.15.5) -- Rik Mills <rikmills@kubuntu.org> Fri, 10 May 2019 13:49:19 +0100 plasma-workspace-wallpapers (4:5.15.4-0ubuntu1) disco; urgency=medium * New upstream bugfix release (5.15.4) -- Rik Mills <rikmills@kubuntu.org> Thu, 04 Apr 2019 17:11:02 +0100 plasma-workspace-wallpapers (4:5.15.3-0ubuntu1) disco; urgency=medium * New upstream release (5.15.3) -- Rik Mills <rikmills@kubuntu.org> Wed, 13 Mar 2019 09:10:23 +0000 plasma-workspace-wallpapers (4:5.15.2-0ubuntu1) disco; urgency=medium * New upstream release (5.15.2) -- Rik Mills <rikmills@kubuntu.org> Tue, 26 Feb 2019 19:15:40 +0000 plasma-workspace-wallpapers (4:5.15.1-0ubuntu1) disco; urgency=medium * New upstream release (5.15.1) -- Rik Mills <rikmills@kubuntu.org> Tue, 19 Feb 2019 21:34:55 +0000 plasma-workspace-wallpapers (4:5.15.0-0ubuntu1) disco; urgency=medium * New upstream release (5.15.0) -- Rik Mills <rikmills@kubuntu.org> Tue, 12 Feb 2019 09:54:26 +0000 plasma-workspace-wallpapers (4:5.14.90-0ubuntu1) disco; urgency=medium * New upstream (beta) release (5.14.90) -- Rik Mills <rikmills@kubuntu.org> Sat, 19 Jan 2019 08:25:51 +0000 plasma-workspace-wallpapers (4:5.14.5-0ubuntu1) disco; urgency=medium * New upstream release (5.14.5) -- Rik Mills <rikmills@kubuntu.org> Tue, 08 Jan 2019 23:49:11 +0000 plasma-workspace-wallpapers (4:5.14.4-0ubuntu1) disco; urgency=medium * New upstream release (5.13.90) * New upstream release (5.14.0) * New upstream release (5.14.1) * New upstream release (5.14.2) * New upstream release (5.14.3) * New upstream release (5.14.4) -- Rik Mills <rikmills@kubuntu.org> Tue, 27 Nov 2018 23:16:14 +0000 plasma-workspace-wallpapers (4:5.13.5-1ubuntu1) cosmic; urgency=medium * New upstream release (5.13.5) * Merge from Debian unstable. Remaining changes: - Kubuntu packaging Vcs fields. - debian/control: Bumped frameworks & Qt build deps. -- Rik Mills <rikmills@kubuntu.org> Fri, 07 Sep 2018 16:35:52 +0100

Modifications :
  1. Download patch Kokkini/metadata.desktop

    --- 4:5.14.5-1/Kokkini/metadata.desktop 1970-01-01 00:00:00.000000000 +0000 +++ 4:5.16.4-0ubuntu1/Kokkini/metadata.desktop 2019-07-30 10:37:09.000000000 +0000 @@ -0,0 +1,32 @@ +[Desktop Entry] +Name=Kokkini +Name[ca]=Kokkini +Name[ca@valencia]=Kokkini +Name[da]=Kokkini +Name[de]=Kokkini +Name[en_GB]=Kokkini +Name[es]=Kokkini +Name[eu]=Kokkini +Name[fi]=Kokkini +Name[fr]=Kokkini +Name[gl]=Kokkini +Name[id]=Kokkini +Name[it]=Rosso +Name[ko]=코키니 +Name[nl]=Kokkini +Name[nn]=Kokkini +Name[pl]=Kokkini +Name[pt]=Kokkini +Name[pt_BR]=Kokkini +Name[ru]=Коккини +Name[sk]=Kokkini +Name[sv]=Kokkini +Name[uk]=Коккіні +Name[x-test]=xxKokkinixx +Name[zh_CN]=科基尼 +Name[zh_TW]=Kokkini + +X-KDE-PluginInfo-Name=Kokkini +X-KDE-PluginInfo-Author=KDE Visual Design Group +X-KDE-PluginInfo-Email= +X-KDE-PluginInfo-License=LGPLv3 Binary files 4:5.14.5-1/OneStandsOut/contents/images/1280x1024.jpg and 4:5.16.4-0ubuntu1/OneStandsOut/contents/images/1280x1024.jpg differ Binary files 4:5.14.5-1/OneStandsOut/contents/images/1280x800.jpg and 4:5.16.4-0ubuntu1/OneStandsOut/contents/images/1280x800.jpg differ Binary files 4:5.14.5-1/OneStandsOut/contents/images/1440x900.jpg and 4:5.16.4-0ubuntu1/OneStandsOut/contents/images/1440x900.jpg differ Binary files 4:5.14.5-1/OneStandsOut/contents/images/1600x1200.jpg and 4:5.16.4-0ubuntu1/OneStandsOut/contents/images/1600x1200.jpg differ Binary files 4:5.14.5-1/OneStandsOut/contents/images/1638x1024.jpg and 4:5.16.4-0ubuntu1/OneStandsOut/contents/images/1638x1024.jpg differ Binary files 4:5.14.5-1/OneStandsOut/contents/images/1680x1050.jpg and 4:5.16.4-0ubuntu1/OneStandsOut/contents/images/1680x1050.jpg differ Binary files 4:5.14.5-1/OneStandsOut/contents/images/1920x1080.jpg and 4:5.16.4-0ubuntu1/OneStandsOut/contents/images/1920x1080.jpg differ Binary files 4:5.14.5-1/OneStandsOut/contents/images/1920x1200.jpg and 4:5.16.4-0ubuntu1/OneStandsOut/contents/images/1920x1200.jpg differ Binary files 4:5.14.5-1/OneStandsOut/contents/images/2560x1440.jpg and 4:5.16.4-0ubuntu1/OneStandsOut/contents/images/2560x1440.jpg differ Binary files 4:5.14.5-1/OneStandsOut/contents/images/640x480.jpg and 4:5.16.4-0ubuntu1/OneStandsOut/contents/images/640x480.jpg differ Binary files 4:5.14.5-1/OneStandsOut/contents/images/800x600.jpg and 4:5.16.4-0ubuntu1/OneStandsOut/contents/images/800x600.jpg differ Binary files 4:5.14.5-1/Opal/contents/images/3840x2160.png and 4:5.16.4-0ubuntu1/Opal/contents/images/3840x2160.png differ Binary files 4:5.14.5-1/Opal/contents/screenshot.png and 4:5.16.4-0ubuntu1/Opal/contents/screenshot.png differ
  2. Download patch Cascade/metadata.desktop

    --- 4:5.14.5-1/Cascade/metadata.desktop 1970-01-01 00:00:00.000000000 +0000 +++ 4:5.16.4-0ubuntu1/Cascade/metadata.desktop 2019-07-30 10:37:09.000000000 +0000 @@ -0,0 +1,33 @@ +[Desktop Entry] +Name=Cascade +Name[ca]=Cascade +Name[ca@valencia]=Cascade +Name[cs]=Kaskáda +Name[da]=Cascade +Name[de]=Cascade +Name[en_GB]=Cascade +Name[es]=Cascada +Name[eu]=Cascade +Name[fi]=Porrastus +Name[fr]=Cascade +Name[gl]=Fervenza +Name[id]=Cascade +Name[it]=Cascata +Name[ko]=캐스케이드 +Name[nl]=Cascade +Name[nn]=Kaskade +Name[pl]=Kaskada +Name[pt]=Cascata +Name[pt_BR]=Cascata +Name[ru]=Каскад +Name[sk]=Kaskáda +Name[sv]=Kaskad +Name[uk]=Уступи +Name[x-test]=xxCascadexx +Name[zh_CN]=级联 +Name[zh_TW]=Cascade + +X-KDE-PluginInfo-Name=Cascade +X-KDE-PluginInfo-Author=KDE Visual Design Group +X-KDE-PluginInfo-Email= +X-KDE-PluginInfo-License=LGPLv3 Binary files 4:5.14.5-1/Cluster/contents/images/3840x2160.png and 4:5.16.4-0ubuntu1/Cluster/contents/images/3840x2160.png differ Binary files 4:5.14.5-1/Cluster/contents/screenshot.png and 4:5.16.4-0ubuntu1/Cluster/contents/screenshot.png differ
  3. Download patch Opal/metadata.desktop

    --- 4:5.14.5-1/Opal/metadata.desktop 1970-01-01 00:00:00.000000000 +0000 +++ 4:5.16.4-0ubuntu1/Opal/metadata.desktop 2019-07-30 10:37:09.000000000 +0000 @@ -0,0 +1,32 @@ +[Desktop Entry] +Name=Opal +Name[ca]=Opal +Name[ca@valencia]=Opal +Name[da]=Opal +Name[de]=Opal +Name[en_GB]=Opal +Name[es]=Ópalo +Name[eu]=Opal +Name[fi]=Opal +Name[fr]=Opale +Name[gl]=Ópalo +Name[id]=Opal +Name[it]=Opale +Name[ko]=오팔 +Name[nl]=Opal +Name[nn]=Opal +Name[pl]=Opal +Name[pt]=Opala +Name[pt_BR]=Opala +Name[ru]=Опал +Name[sk]=Opál +Name[sv]=Opal +Name[uk]=Опал +Name[x-test]=xxOpalxx +Name[zh_CN]=蛋白石 +Name[zh_TW]=Opal + +X-KDE-PluginInfo-Name=Opal +X-KDE-PluginInfo-Author=KDE Visual Design Group +X-KDE-PluginInfo-Email= +X-KDE-PluginInfo-License=LGPLv3 Binary files 4:5.14.5-1/PastelHills/contents/images/1024x768.jpg and 4:5.16.4-0ubuntu1/PastelHills/contents/images/1024x768.jpg differ Binary files 4:5.14.5-1/PastelHills/contents/images/1280x1024.jpg and 4:5.16.4-0ubuntu1/PastelHills/contents/images/1280x1024.jpg differ Binary files 4:5.14.5-1/PastelHills/contents/images/1280x800.jpg and 4:5.16.4-0ubuntu1/PastelHills/contents/images/1280x800.jpg differ Binary files 4:5.14.5-1/PastelHills/contents/images/1440x900.jpg and 4:5.16.4-0ubuntu1/PastelHills/contents/images/1440x900.jpg differ Binary files 4:5.14.5-1/PastelHills/contents/images/1600x1200.jpg and 4:5.16.4-0ubuntu1/PastelHills/contents/images/1600x1200.jpg differ Binary files 4:5.14.5-1/PastelHills/contents/images/1638x1024.jpg and 4:5.16.4-0ubuntu1/PastelHills/contents/images/1638x1024.jpg differ Binary files 4:5.14.5-1/PastelHills/contents/images/1680x1050.jpg and 4:5.16.4-0ubuntu1/PastelHills/contents/images/1680x1050.jpg differ Binary files 4:5.14.5-1/PastelHills/contents/images/1920x1080.jpg and 4:5.16.4-0ubuntu1/PastelHills/contents/images/1920x1080.jpg differ Binary files 4:5.14.5-1/PastelHills/contents/images/1920x1200.jpg and 4:5.16.4-0ubuntu1/PastelHills/contents/images/1920x1200.jpg differ Binary files 4:5.14.5-1/PastelHills/contents/images/2560x1440.jpg and 4:5.16.4-0ubuntu1/PastelHills/contents/images/2560x1440.jpg differ Binary files 4:5.14.5-1/PastelHills/contents/images/2560x1600.jpg and 4:5.16.4-0ubuntu1/PastelHills/contents/images/2560x1600.jpg differ Binary files 4:5.14.5-1/PastelHills/contents/images/3200x1800.jpg and 4:5.16.4-0ubuntu1/PastelHills/contents/images/3200x1800.jpg differ Binary files 4:5.14.5-1/PastelHills/contents/images/640x480.jpg and 4:5.16.4-0ubuntu1/PastelHills/contents/images/640x480.jpg differ Binary files 4:5.14.5-1/PastelHills/contents/images/800x600.jpg and 4:5.16.4-0ubuntu1/PastelHills/contents/images/800x600.jpg differ Binary files 4:5.14.5-1/Path/contents/images/1280x1024.jpg and 4:5.16.4-0ubuntu1/Path/contents/images/1280x1024.jpg differ Binary files 4:5.14.5-1/Path/contents/images/1280x800.jpg and 4:5.16.4-0ubuntu1/Path/contents/images/1280x800.jpg differ Binary files 4:5.14.5-1/Path/contents/images/1440x900.jpg and 4:5.16.4-0ubuntu1/Path/contents/images/1440x900.jpg differ Binary files 4:5.14.5-1/Path/contents/images/1600x1200.jpg and 4:5.16.4-0ubuntu1/Path/contents/images/1600x1200.jpg differ Binary files 4:5.14.5-1/Path/contents/images/1638x1024.jpg and 4:5.16.4-0ubuntu1/Path/contents/images/1638x1024.jpg differ Binary files 4:5.14.5-1/Path/contents/images/1680x1050.jpg and 4:5.16.4-0ubuntu1/Path/contents/images/1680x1050.jpg differ Binary files 4:5.14.5-1/Path/contents/images/1920x1080.jpg and 4:5.16.4-0ubuntu1/Path/contents/images/1920x1080.jpg differ Binary files 4:5.14.5-1/Path/contents/images/1920x1200.jpg and 4:5.16.4-0ubuntu1/Path/contents/images/1920x1200.jpg differ Binary files 4:5.14.5-1/Path/contents/images/2560x1440.jpg and 4:5.16.4-0ubuntu1/Path/contents/images/2560x1440.jpg differ Binary files 4:5.14.5-1/Path/contents/images/640x480.jpg and 4:5.16.4-0ubuntu1/Path/contents/images/640x480.jpg differ Binary files 4:5.14.5-1/Path/contents/images/800x600.jpg and 4:5.16.4-0ubuntu1/Path/contents/images/800x600.jpg differ Binary files 4:5.14.5-1/SafeLanding/contents/images/5120x2880.jpg and 4:5.16.4-0ubuntu1/SafeLanding/contents/images/5120x2880.jpg differ Binary files 4:5.14.5-1/SafeLanding/contents/screenshot.jpg and 4:5.16.4-0ubuntu1/SafeLanding/contents/screenshot.jpg differ
  4. Download patch DarkestHour/metadata.desktop

    --- 4:5.14.5-1/DarkestHour/metadata.desktop 2019-01-08 11:05:24.000000000 +0000 +++ 4:5.16.4-0ubuntu1/DarkestHour/metadata.desktop 2019-07-30 10:37:09.000000000 +0000 @@ -14,7 +14,7 @@ Name[fr]=Heures les plus sombres Name[gl]=A hora máis escura Name[hu]=A sötétség órája Name[id]=Darkest Hour -Name[it]=Lora più buia +Name[it]=L'ora più buia Name[ko]=어두운 시간 Name[nl]=Donkerste uur Name[nn]=Den mørke timen
  5. Download patch debian/upstream/signing-key.asc
  6. Download patch debian/control

    --- 4:5.14.5-1/debian/control 2019-01-24 12:26:12.000000000 +0000 +++ 4:5.16.4-0ubuntu1/debian/control 2019-07-30 17:46:27.000000000 +0000 @@ -5,18 +5,18 @@ Maintainer: Debian/Kubuntu Qt/KDE Mainta Uploaders: Maximiliano Curia <maxy@debian.org> Build-Depends: cmake (>= 2.8.12), debhelper (>= 11~), - extra-cmake-modules (>= 0.0.9), + extra-cmake-modules (>= 5.58.0~), pkg-kde-tools (>= 0.15.16), - qtbase5-dev (>= 5.4), + qtbase5-dev (>= 5.6.1~), Standards-Version: 4.1.3 Homepage: https://vdesign.kde.org/ -Vcs-Browser: https://salsa.debian.org/qt-kde-team/kde/plasma-workspace-wallpapers -Vcs-Git: https://salsa.debian.org/qt-kde-team/kde/plasma-workspace-wallpapers.git +Vcs-Browser: https://code.launchpad.net/~kubuntu-packagers/kubuntu-packaging/+git/plasma-workspace-wallpapers +Vcs-Git: https://git.launchpad.net/~kubuntu-packagers/kubuntu-packaging/+git/plasma-workspace-wallpapers Package: plasma-workspace-wallpapers Architecture: all Depends: ${misc:Depends} -Breaks: kde-wallpapers -Replaces: kde-wallpapers +Breaks: kde-wallpapers, kubuntu-wallpapers-bionic (<< 19.10.0~) +Replaces: kde-wallpapers, kubuntu-wallpapers-bionic (<< 19.10.0~) Description: Wallpapers for Plasma 5 Wallpapers for integrated use with the Plasma workspace.
  7. Download patch Canopee/metadata.desktop

    --- 4:5.14.5-1/Canopee/metadata.desktop 1970-01-01 00:00:00.000000000 +0000 +++ 4:5.16.4-0ubuntu1/Canopee/metadata.desktop 2019-07-30 10:37:09.000000000 +0000 @@ -0,0 +1,33 @@ +[Desktop Entry] +Name=Canopée +Name[ca]=Canopée +Name[ca@valencia]=Canopée +Name[cs]=Canopus +Name[da]=Canopée +Name[de]=Canopée +Name[en_GB]=Canopée +Name[es]=Techo forestal +Name[eu]=Canopée +Name[fi]=Canopée +Name[fr]=Canopée +Name[gl]=Dosel forestal +Name[id]=Canopée +Name[it]=Baldacchino +Name[ko]=캐노피 +Name[nl]=Canopée +Name[nn]=Canopée +Name[pl]=Canopée +Name[pt]=Canopée +Name[pt_BR]=Canopée +Name[ru]=Купол +Name[sk]=Canopée +Name[sv]=Canopée +Name[uk]=Канапа +Name[x-test]=xxCanopéexx +Name[zh_CN]=卡诺佩 +Name[zh_TW]=Canopée + +X-KDE-PluginInfo-Name=Canopée +X-KDE-PluginInfo-Author=KDE Visual Design Group +X-KDE-PluginInfo-Email= +X-KDE-PluginInfo-License=LGPLv3 Binary files 4:5.14.5-1/Cascade/contents/images/3840x2160.png and 4:5.16.4-0ubuntu1/Cascade/contents/images/3840x2160.png differ Binary files 4:5.14.5-1/Cascade/contents/screenshot.png and 4:5.16.4-0ubuntu1/Cascade/contents/screenshot.png differ
  8. Download patch Elarun/metadata.desktop

    --- 4:5.14.5-1/Elarun/metadata.desktop 1970-01-01 00:00:00.000000000 +0000 +++ 4:5.16.4-0ubuntu1/Elarun/metadata.desktop 2019-07-30 10:37:09.000000000 +0000 @@ -0,0 +1,32 @@ +[Desktop Entry] +Name=Elarun +Name[ca]=Elarun +Name[ca@valencia]=Elarun +Name[cs]=Elarun +Name[da]=Elarun +Name[de]=Elarun +Name[en_GB]=Elarun +Name[es]=Elarun +Name[eu]=Elarun +Name[fi]=Elarun +Name[fr]=Elarun +Name[gl]=Elarun +Name[id]=Elarun +Name[it]=Elarun +Name[ko]=엘라룬 +Name[nl]=Elarun +Name[nn]=Elarun +Name[pl]=Elarun +Name[pt]=Elarun +Name[pt_BR]=Elarun +Name[sk]=Elarun +Name[sv]=Elarun +Name[uk]=Ілеран +Name[x-test]=xxElarunxx +Name[zh_CN]=埃拉伦 +Name[zh_TW]=Elarun + +X-KDE-PluginInfo-Name=Elarun +X-KDE-PluginInfo-Author=Nuno Pinheiro +X-KDE-PluginInfo-Email= +X-KDE-PluginInfo-License=LGPLv3 Binary files 4:5.14.5-1/EveningGlow/contents/images/1280x1024.jpg and 4:5.16.4-0ubuntu1/EveningGlow/contents/images/1280x1024.jpg differ Binary files 4:5.14.5-1/EveningGlow/contents/images/1280x800.jpg and 4:5.16.4-0ubuntu1/EveningGlow/contents/images/1280x800.jpg differ Binary files 4:5.14.5-1/EveningGlow/contents/images/1440x900.jpg and 4:5.16.4-0ubuntu1/EveningGlow/contents/images/1440x900.jpg differ Binary files 4:5.14.5-1/EveningGlow/contents/images/1600x1200.jpg and 4:5.16.4-0ubuntu1/EveningGlow/contents/images/1600x1200.jpg differ Binary files 4:5.14.5-1/EveningGlow/contents/images/1638x1024.jpg and 4:5.16.4-0ubuntu1/EveningGlow/contents/images/1638x1024.jpg differ Binary files 4:5.14.5-1/EveningGlow/contents/images/1680x1050.jpg and 4:5.16.4-0ubuntu1/EveningGlow/contents/images/1680x1050.jpg differ Binary files 4:5.14.5-1/EveningGlow/contents/images/1920x1080.jpg and 4:5.16.4-0ubuntu1/EveningGlow/contents/images/1920x1080.jpg differ Binary files 4:5.14.5-1/EveningGlow/contents/images/1920x1200.jpg and 4:5.16.4-0ubuntu1/EveningGlow/contents/images/1920x1200.jpg differ Binary files 4:5.14.5-1/EveningGlow/contents/images/2560x1440.jpg and 4:5.16.4-0ubuntu1/EveningGlow/contents/images/2560x1440.jpg differ Binary files 4:5.14.5-1/EveningGlow/contents/images/640x480.jpg and 4:5.16.4-0ubuntu1/EveningGlow/contents/images/640x480.jpg differ Binary files 4:5.14.5-1/EveningGlow/contents/images/800x600.jpg and 4:5.16.4-0ubuntu1/EveningGlow/contents/images/800x600.jpg differ Binary files 4:5.14.5-1/FallenLeaf/contents/images/1280x1024.jpg and 4:5.16.4-0ubuntu1/FallenLeaf/contents/images/1280x1024.jpg differ Binary files 4:5.14.5-1/FallenLeaf/contents/images/1280x800.jpg and 4:5.16.4-0ubuntu1/FallenLeaf/contents/images/1280x800.jpg differ Binary files 4:5.14.5-1/FallenLeaf/contents/images/1440x900.jpg and 4:5.16.4-0ubuntu1/FallenLeaf/contents/images/1440x900.jpg differ Binary files 4:5.14.5-1/FallenLeaf/contents/images/1600x1200.jpg and 4:5.16.4-0ubuntu1/FallenLeaf/contents/images/1600x1200.jpg differ Binary files 4:5.14.5-1/FallenLeaf/contents/images/1638x1024.jpg and 4:5.16.4-0ubuntu1/FallenLeaf/contents/images/1638x1024.jpg differ Binary files 4:5.14.5-1/FallenLeaf/contents/images/1680x1050.jpg and 4:5.16.4-0ubuntu1/FallenLeaf/contents/images/1680x1050.jpg differ Binary files 4:5.14.5-1/FallenLeaf/contents/images/1920x1080.jpg and 4:5.16.4-0ubuntu1/FallenLeaf/contents/images/1920x1080.jpg differ Binary files 4:5.14.5-1/FallenLeaf/contents/images/1920x1200.jpg and 4:5.16.4-0ubuntu1/FallenLeaf/contents/images/1920x1200.jpg differ Binary files 4:5.14.5-1/FallenLeaf/contents/images/2560x1440.jpg and 4:5.16.4-0ubuntu1/FallenLeaf/contents/images/2560x1440.jpg differ Binary files 4:5.14.5-1/FallenLeaf/contents/images/640x480.jpg and 4:5.16.4-0ubuntu1/FallenLeaf/contents/images/640x480.jpg differ Binary files 4:5.14.5-1/FallenLeaf/contents/images/800x600.jpg and 4:5.16.4-0ubuntu1/FallenLeaf/contents/images/800x600.jpg differ Binary files 4:5.14.5-1/FlyingKonqui/contents/images/1280x1024.png and 4:5.16.4-0ubuntu1/FlyingKonqui/contents/images/1280x1024.png differ Binary files 4:5.14.5-1/FlyingKonqui/contents/images/1280x800.png and 4:5.16.4-0ubuntu1/FlyingKonqui/contents/images/1280x800.png differ Binary files 4:5.14.5-1/FlyingKonqui/contents/images/1440x900.png and 4:5.16.4-0ubuntu1/FlyingKonqui/contents/images/1440x900.png differ Binary files 4:5.14.5-1/FlyingKonqui/contents/images/1600x1200.png and 4:5.16.4-0ubuntu1/FlyingKonqui/contents/images/1600x1200.png differ Binary files 4:5.14.5-1/FlyingKonqui/contents/images/1638x1024.png and 4:5.16.4-0ubuntu1/FlyingKonqui/contents/images/1638x1024.png differ Binary files 4:5.14.5-1/FlyingKonqui/contents/images/1680x1050.png and 4:5.16.4-0ubuntu1/FlyingKonqui/contents/images/1680x1050.png differ Binary files 4:5.14.5-1/FlyingKonqui/contents/images/1920x1080.png and 4:5.16.4-0ubuntu1/FlyingKonqui/contents/images/1920x1080.png differ Binary files 4:5.14.5-1/FlyingKonqui/contents/images/1920x1200.png and 4:5.16.4-0ubuntu1/FlyingKonqui/contents/images/1920x1200.png differ Binary files 4:5.14.5-1/FlyingKonqui/contents/images/2560x1440.png and 4:5.16.4-0ubuntu1/FlyingKonqui/contents/images/2560x1440.png differ Binary files 4:5.14.5-1/FlyingKonqui/contents/images/640x480.png and 4:5.16.4-0ubuntu1/FlyingKonqui/contents/images/640x480.png differ Binary files 4:5.14.5-1/FlyingKonqui/contents/images/800x600.png and 4:5.16.4-0ubuntu1/FlyingKonqui/contents/images/800x600.png differ Binary files 4:5.14.5-1/Grey/contents/images/1280x1024.jpg and 4:5.16.4-0ubuntu1/Grey/contents/images/1280x1024.jpg differ Binary files 4:5.14.5-1/Grey/contents/images/1280x800.jpg and 4:5.16.4-0ubuntu1/Grey/contents/images/1280x800.jpg differ Binary files 4:5.14.5-1/Grey/contents/images/1440x900.jpg and 4:5.16.4-0ubuntu1/Grey/contents/images/1440x900.jpg differ Binary files 4:5.14.5-1/Grey/contents/images/1600x1200.jpg and 4:5.16.4-0ubuntu1/Grey/contents/images/1600x1200.jpg differ Binary files 4:5.14.5-1/Grey/contents/images/1638x1024.jpg and 4:5.16.4-0ubuntu1/Grey/contents/images/1638x1024.jpg differ Binary files 4:5.14.5-1/Grey/contents/images/1680x1050.jpg and 4:5.16.4-0ubuntu1/Grey/contents/images/1680x1050.jpg differ Binary files 4:5.14.5-1/Grey/contents/images/1920x1080.jpg and 4:5.16.4-0ubuntu1/Grey/contents/images/1920x1080.jpg differ Binary files 4:5.14.5-1/Grey/contents/images/1920x1200.jpg and 4:5.16.4-0ubuntu1/Grey/contents/images/1920x1200.jpg differ Binary files 4:5.14.5-1/Grey/contents/images/2560x1440.jpg and 4:5.16.4-0ubuntu1/Grey/contents/images/2560x1440.jpg differ Binary files 4:5.14.5-1/Grey/contents/images/640x480.jpg and 4:5.16.4-0ubuntu1/Grey/contents/images/640x480.jpg differ Binary files 4:5.14.5-1/Grey/contents/images/800x600.jpg and 4:5.16.4-0ubuntu1/Grey/contents/images/800x600.jpg differ Binary files 4:5.14.5-1/Kite/contents/images/1280x1024.jpg and 4:5.16.4-0ubuntu1/Kite/contents/images/1280x1024.jpg differ Binary files 4:5.14.5-1/Kite/contents/images/1280x800.jpg and 4:5.16.4-0ubuntu1/Kite/contents/images/1280x800.jpg differ Binary files 4:5.14.5-1/Kite/contents/images/1440x900.jpg and 4:5.16.4-0ubuntu1/Kite/contents/images/1440x900.jpg differ Binary files 4:5.14.5-1/Kite/contents/images/1600x1200.jpg and 4:5.16.4-0ubuntu1/Kite/contents/images/1600x1200.jpg differ Binary files 4:5.14.5-1/Kite/contents/images/1638x1024.jpg and 4:5.16.4-0ubuntu1/Kite/contents/images/1638x1024.jpg differ Binary files 4:5.14.5-1/Kite/contents/images/1680x1050.jpg and 4:5.16.4-0ubuntu1/Kite/contents/images/1680x1050.jpg differ Binary files 4:5.14.5-1/Kite/contents/images/1920x1080.jpg and 4:5.16.4-0ubuntu1/Kite/contents/images/1920x1080.jpg differ Binary files 4:5.14.5-1/Kite/contents/images/1920x1200.jpg and 4:5.16.4-0ubuntu1/Kite/contents/images/1920x1200.jpg differ Binary files 4:5.14.5-1/Kite/contents/images/2560x1440.jpg and 4:5.16.4-0ubuntu1/Kite/contents/images/2560x1440.jpg differ Binary files 4:5.14.5-1/Kite/contents/images/640x480.jpg and 4:5.16.4-0ubuntu1/Kite/contents/images/640x480.jpg differ Binary files 4:5.14.5-1/Kite/contents/images/800x600.jpg and 4:5.16.4-0ubuntu1/Kite/contents/images/800x600.jpg differ Binary files 4:5.14.5-1/Kokkini/contents/images/3840x2160.png and 4:5.16.4-0ubuntu1/Kokkini/contents/images/3840x2160.png differ Binary files 4:5.14.5-1/Kokkini/contents/screenshot.png and 4:5.16.4-0ubuntu1/Kokkini/contents/screenshot.png differ
  9. Download patch CMakeLists.txt

    --- 4:5.14.5-1/CMakeLists.txt 2019-01-08 11:05:24.000000000 +0000 +++ 4:5.16.4-0ubuntu1/CMakeLists.txt 2019-07-30 10:37:09.000000000 +0000 @@ -1,5 +1,5 @@ project(wallpapers) -set(PROJECT_VERSION "5.14.5") +set(PROJECT_VERSION "5.16.4") set(PROJECT_VERSION_MAJOR 5) cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR) @@ -16,14 +16,22 @@ include(GenerateExportHeader) install(DIRECTORY Autumn DESTINATION ${WALLPAPER_INSTALL_DIR}) install(DIRECTORY BytheWater DESTINATION ${WALLPAPER_INSTALL_DIR}) +install(DIRECTORY Canopee DESTINATION ${WALLPAPER_INSTALL_DIR}) +install(DIRECTORY Cascade DESTINATION ${WALLPAPER_INSTALL_DIR}) +install(DIRECTORY Cluster DESTINATION ${WALLPAPER_INSTALL_DIR}) install(DIRECTORY ColdRipple DESTINATION ${WALLPAPER_INSTALL_DIR}) install(DIRECTORY ColorfulCups DESTINATION ${WALLPAPER_INSTALL_DIR}) install(DIRECTORY DarkestHour DESTINATION ${WALLPAPER_INSTALL_DIR}) +install(DIRECTORY Elarun DESTINATION ${WALLPAPER_INSTALL_DIR}) install(DIRECTORY EveningGlow DESTINATION ${WALLPAPER_INSTALL_DIR}) install(DIRECTORY FallenLeaf DESTINATION ${WALLPAPER_INSTALL_DIR}) install(DIRECTORY FlyingKonqui DESTINATION ${WALLPAPER_INSTALL_DIR}) install(DIRECTORY Grey DESTINATION ${WALLPAPER_INSTALL_DIR}) install(DIRECTORY Kite DESTINATION ${WALLPAPER_INSTALL_DIR}) +install(DIRECTORY Kokkini DESTINATION ${WALLPAPER_INSTALL_DIR}) install(DIRECTORY OneStandsOut DESTINATION ${WALLPAPER_INSTALL_DIR}) +install(DIRECTORY Opal DESTINATION ${WALLPAPER_INSTALL_DIR}) install(DIRECTORY PastelHills DESTINATION ${WALLPAPER_INSTALL_DIR}) install(DIRECTORY Path DESTINATION ${WALLPAPER_INSTALL_DIR}) +install(DIRECTORY SafeLanding DESTINATION ${WALLPAPER_INSTALL_DIR}) +install(DIRECTORY summer_1am DESTINATION ${WALLPAPER_INSTALL_DIR}) Binary files 4:5.14.5-1/ColdRipple/contents/images/1280x1024.jpg and 4:5.16.4-0ubuntu1/ColdRipple/contents/images/1280x1024.jpg differ Binary files 4:5.14.5-1/ColdRipple/contents/images/1280x800.jpg and 4:5.16.4-0ubuntu1/ColdRipple/contents/images/1280x800.jpg differ Binary files 4:5.14.5-1/ColdRipple/contents/images/1440x900.jpg and 4:5.16.4-0ubuntu1/ColdRipple/contents/images/1440x900.jpg differ Binary files 4:5.14.5-1/ColdRipple/contents/images/1600x1200.jpg and 4:5.16.4-0ubuntu1/ColdRipple/contents/images/1600x1200.jpg differ Binary files 4:5.14.5-1/ColdRipple/contents/images/1638x1024.jpg and 4:5.16.4-0ubuntu1/ColdRipple/contents/images/1638x1024.jpg differ Binary files 4:5.14.5-1/ColdRipple/contents/images/1680x1050.jpg and 4:5.16.4-0ubuntu1/ColdRipple/contents/images/1680x1050.jpg differ Binary files 4:5.14.5-1/ColdRipple/contents/images/1920x1080.jpg and 4:5.16.4-0ubuntu1/ColdRipple/contents/images/1920x1080.jpg differ Binary files 4:5.14.5-1/ColdRipple/contents/images/1920x1200.jpg and 4:5.16.4-0ubuntu1/ColdRipple/contents/images/1920x1200.jpg differ Binary files 4:5.14.5-1/ColdRipple/contents/images/2560x1440.jpg and 4:5.16.4-0ubuntu1/ColdRipple/contents/images/2560x1440.jpg differ Binary files 4:5.14.5-1/ColdRipple/contents/images/640x480.jpg and 4:5.16.4-0ubuntu1/ColdRipple/contents/images/640x480.jpg differ Binary files 4:5.14.5-1/ColdRipple/contents/images/800x600.jpg and 4:5.16.4-0ubuntu1/ColdRipple/contents/images/800x600.jpg differ Binary files 4:5.14.5-1/ColorfulCups/contents/images/1280x1024.jpg and 4:5.16.4-0ubuntu1/ColorfulCups/contents/images/1280x1024.jpg differ Binary files 4:5.14.5-1/ColorfulCups/contents/images/1280x800.jpg and 4:5.16.4-0ubuntu1/ColorfulCups/contents/images/1280x800.jpg differ Binary files 4:5.14.5-1/ColorfulCups/contents/images/1440x900.jpg and 4:5.16.4-0ubuntu1/ColorfulCups/contents/images/1440x900.jpg differ Binary files 4:5.14.5-1/ColorfulCups/contents/images/1600x1200.jpg and 4:5.16.4-0ubuntu1/ColorfulCups/contents/images/1600x1200.jpg differ Binary files 4:5.14.5-1/ColorfulCups/contents/images/1638x1024.jpg and 4:5.16.4-0ubuntu1/ColorfulCups/contents/images/1638x1024.jpg differ Binary files 4:5.14.5-1/ColorfulCups/contents/images/1680x1050.jpg and 4:5.16.4-0ubuntu1/ColorfulCups/contents/images/1680x1050.jpg differ Binary files 4:5.14.5-1/ColorfulCups/contents/images/1920x1080.jpg and 4:5.16.4-0ubuntu1/ColorfulCups/contents/images/1920x1080.jpg differ Binary files 4:5.14.5-1/ColorfulCups/contents/images/1920x1200.jpg and 4:5.16.4-0ubuntu1/ColorfulCups/contents/images/1920x1200.jpg differ Binary files 4:5.14.5-1/ColorfulCups/contents/images/2560x1440.jpg and 4:5.16.4-0ubuntu1/ColorfulCups/contents/images/2560x1440.jpg differ Binary files 4:5.14.5-1/ColorfulCups/contents/images/640x480.jpg and 4:5.16.4-0ubuntu1/ColorfulCups/contents/images/640x480.jpg differ Binary files 4:5.14.5-1/ColorfulCups/contents/images/800x600.jpg and 4:5.16.4-0ubuntu1/ColorfulCups/contents/images/800x600.jpg differ
  10. Download patch Autumn/metadata.desktop

    --- 4:5.14.5-1/Autumn/metadata.desktop 2019-01-08 11:05:24.000000000 +0000 +++ 4:5.16.4-0ubuntu1/Autumn/metadata.desktop 2019-07-30 10:37:09.000000000 +0000 @@ -1,7 +1,6 @@ [Desktop Entry] Name=Autumn 5.5 Name[ar]=خريف 5.5 -Name[ast]=Autumn 5.5 Name[ca]=Tardor 5.5 Name[ca@valencia]=Tardor 5.5 Name[cs]=Podzim 5.5 Binary files 4:5.14.5-1/BytheWater/contents/images/1280x1024.jpg and 4:5.16.4-0ubuntu1/BytheWater/contents/images/1280x1024.jpg differ Binary files 4:5.14.5-1/BytheWater/contents/images/1280x800.jpg and 4:5.16.4-0ubuntu1/BytheWater/contents/images/1280x800.jpg differ Binary files 4:5.14.5-1/BytheWater/contents/images/1440x900.jpg and 4:5.16.4-0ubuntu1/BytheWater/contents/images/1440x900.jpg differ Binary files 4:5.14.5-1/BytheWater/contents/images/1600x1200.jpg and 4:5.16.4-0ubuntu1/BytheWater/contents/images/1600x1200.jpg differ Binary files 4:5.14.5-1/BytheWater/contents/images/1638x1024.jpg and 4:5.16.4-0ubuntu1/BytheWater/contents/images/1638x1024.jpg differ Binary files 4:5.14.5-1/BytheWater/contents/images/1680x1050.jpg and 4:5.16.4-0ubuntu1/BytheWater/contents/images/1680x1050.jpg differ Binary files 4:5.14.5-1/BytheWater/contents/images/1920x1080.jpg and 4:5.16.4-0ubuntu1/BytheWater/contents/images/1920x1080.jpg differ Binary files 4:5.14.5-1/BytheWater/contents/images/1920x1200.jpg and 4:5.16.4-0ubuntu1/BytheWater/contents/images/1920x1200.jpg differ Binary files 4:5.14.5-1/BytheWater/contents/images/2560x1440.jpg and 4:5.16.4-0ubuntu1/BytheWater/contents/images/2560x1440.jpg differ Binary files 4:5.14.5-1/BytheWater/contents/images/640x480.jpg and 4:5.16.4-0ubuntu1/BytheWater/contents/images/640x480.jpg differ Binary files 4:5.14.5-1/BytheWater/contents/images/800x600.jpg and 4:5.16.4-0ubuntu1/BytheWater/contents/images/800x600.jpg differ Binary files 4:5.14.5-1/Canopee/contents/images/3840x2160.png and 4:5.16.4-0ubuntu1/Canopee/contents/images/3840x2160.png differ Binary files 4:5.14.5-1/Canopee/contents/screenshot.png and 4:5.16.4-0ubuntu1/Canopee/contents/screenshot.png differ
  11. Download patch ColorfulCups/metadata.desktop

    --- 4:5.14.5-1/ColorfulCups/metadata.desktop 2019-01-08 11:05:24.000000000 +0000 +++ 4:5.16.4-0ubuntu1/ColorfulCups/metadata.desktop 2019-07-30 10:37:09.000000000 +0000 @@ -12,7 +12,7 @@ Name[et]=Värvilised kruusid Name[eu]=Katilu koloretsuak Name[fi]=Värikkäät kupit Name[fr]=Tasses colorées -Name[gl]=Cuncas de cores +Name[gl]=Cuncas coloridas Name[hu]=Színes csészék Name[id]=Colorful Cups Name[it]=Tazze colorate Binary files 4:5.14.5-1/DarkestHour/contents/images/1280x1024.jpg and 4:5.16.4-0ubuntu1/DarkestHour/contents/images/1280x1024.jpg differ Binary files 4:5.14.5-1/DarkestHour/contents/images/1280x800.jpg and 4:5.16.4-0ubuntu1/DarkestHour/contents/images/1280x800.jpg differ Binary files 4:5.14.5-1/DarkestHour/contents/images/1440x900.jpg and 4:5.16.4-0ubuntu1/DarkestHour/contents/images/1440x900.jpg differ Binary files 4:5.14.5-1/DarkestHour/contents/images/1600x1200.jpg and 4:5.16.4-0ubuntu1/DarkestHour/contents/images/1600x1200.jpg differ Binary files 4:5.14.5-1/DarkestHour/contents/images/1638x1024.jpg and 4:5.16.4-0ubuntu1/DarkestHour/contents/images/1638x1024.jpg differ Binary files 4:5.14.5-1/DarkestHour/contents/images/1680x1050.jpg and 4:5.16.4-0ubuntu1/DarkestHour/contents/images/1680x1050.jpg differ Binary files 4:5.14.5-1/DarkestHour/contents/images/1920x1080.jpg and 4:5.16.4-0ubuntu1/DarkestHour/contents/images/1920x1080.jpg differ Binary files 4:5.14.5-1/DarkestHour/contents/images/1920x1200.jpg and 4:5.16.4-0ubuntu1/DarkestHour/contents/images/1920x1200.jpg differ Binary files 4:5.14.5-1/DarkestHour/contents/images/2560x1440.jpg and 4:5.16.4-0ubuntu1/DarkestHour/contents/images/2560x1440.jpg differ Binary files 4:5.14.5-1/DarkestHour/contents/images/640x480.jpg and 4:5.16.4-0ubuntu1/DarkestHour/contents/images/640x480.jpg differ Binary files 4:5.14.5-1/DarkestHour/contents/images/800x600.jpg and 4:5.16.4-0ubuntu1/DarkestHour/contents/images/800x600.jpg differ
  12. Download patch .arcconfig

    --- 4:5.14.5-1/.arcconfig 1970-01-01 00:00:00.000000000 +0000 +++ 4:5.16.4-0ubuntu1/.arcconfig 2019-07-30 10:37:09.000000000 +0000 @@ -0,0 +1,3 @@ +{ + "phabricator.uri" : "https://phabricator.kde.org/" +} Binary files 4:5.14.5-1/Autumn/contents/images/1280x1024.jpg and 4:5.16.4-0ubuntu1/Autumn/contents/images/1280x1024.jpg differ Binary files 4:5.14.5-1/Autumn/contents/images/1280x800.jpg and 4:5.16.4-0ubuntu1/Autumn/contents/images/1280x800.jpg differ Binary files 4:5.14.5-1/Autumn/contents/images/1440x900.jpg and 4:5.16.4-0ubuntu1/Autumn/contents/images/1440x900.jpg differ Binary files 4:5.14.5-1/Autumn/contents/images/1600x1200.jpg and 4:5.16.4-0ubuntu1/Autumn/contents/images/1600x1200.jpg differ Binary files 4:5.14.5-1/Autumn/contents/images/1638x1024.jpg and 4:5.16.4-0ubuntu1/Autumn/contents/images/1638x1024.jpg differ Binary files 4:5.14.5-1/Autumn/contents/images/1680x1050.jpg and 4:5.16.4-0ubuntu1/Autumn/contents/images/1680x1050.jpg differ Binary files 4:5.14.5-1/Autumn/contents/images/1920x1080.jpg and 4:5.16.4-0ubuntu1/Autumn/contents/images/1920x1080.jpg differ Binary files 4:5.14.5-1/Autumn/contents/images/1920x1200.jpg and 4:5.16.4-0ubuntu1/Autumn/contents/images/1920x1200.jpg differ Binary files 4:5.14.5-1/Autumn/contents/images/2560x1440.jpg and 4:5.16.4-0ubuntu1/Autumn/contents/images/2560x1440.jpg differ Binary files 4:5.14.5-1/Autumn/contents/images/640x480.jpg and 4:5.16.4-0ubuntu1/Autumn/contents/images/640x480.jpg differ Binary files 4:5.14.5-1/Autumn/contents/images/800x600.jpg and 4:5.16.4-0ubuntu1/Autumn/contents/images/800x600.jpg differ
  13. Download patch Cluster/metadata.desktop

    --- 4:5.14.5-1/Cluster/metadata.desktop 1970-01-01 00:00:00.000000000 +0000 +++ 4:5.16.4-0ubuntu1/Cluster/metadata.desktop 2019-07-30 10:37:09.000000000 +0000 @@ -0,0 +1,28 @@ +[Desktop Entry] +Name=Cluster +Name[ca]=Cúmul +Name[ca@valencia]=Cúmul +Name[es]=Cúmulo +Name[eu]=Cluster +Name[fi]=Ryväs +Name[fr]=Cluster +Name[gl]=Clúster +Name[id]=Cluster +Name[it]=Ammasso +Name[ko]=클러스터 +Name[nl]=Cluster +Name[nn]=Klynge +Name[pl]=Klaster +Name[pt]=Enxame +Name[pt_BR]=Cluster +Name[ru]=Кластер +Name[sk]=Zhluk +Name[sv]=Hop +Name[uk]=Скупчення +Name[x-test]=xxClusterxx +Name[zh_CN]=星团 +Name[zh_TW]=Cluster +X-KDE-PluginInfo-Name=Cluster +X-KDE-PluginInfo-Author=KDE Visual Design Group +X-KDE-PluginInfo-Email= +X-KDE-PluginInfo-License=LGPLv3
  14. Download patch SafeLanding/metadata.desktop

    --- 4:5.14.5-1/SafeLanding/metadata.desktop 1970-01-01 00:00:00.000000000 +0000 +++ 4:5.16.4-0ubuntu1/SafeLanding/metadata.desktop 2019-07-30 10:37:09.000000000 +0000 @@ -0,0 +1,28 @@ +[Desktop Entry] +Name=Safe Landing +Name[ca]=Aterratge segur +Name[ca@valencia]=Aterratge segur +Name[es]=Aterrizaje seguro +Name[eu]=Lurreratze segurua +Name[fi]=Turvallinen laskeutuminen +Name[fr]=Atterrissage en douceur +Name[gl]=Aterraxe segura +Name[id]=Safe Landing +Name[it]=Atterraggio sicuro +Name[ko]=안전한 착륙 +Name[nl]=Veilige landing +Name[nn]=Trygg landing +Name[pl]=Bezpieczne lądowanie +Name[pt]=Aterragem Suave +Name[pt_BR]=Pouso Seguro +Name[ru]=Мягкая посадка +Name[sk]=Bezpečné pristátie +Name[sv]=Säker landning +Name[uk]=Безпечне приземлення +Name[x-test]=xxSafe Landingxx +Name[zh_CN]=安全着陆 +Name[zh_TW]=Safe Landing +X-KDE-PluginInfo-Name=SafeLanding +X-KDE-PluginInfo-Author=Louis Durrant +X-KDE-PluginInfo-Email=louisfoss@disroot.org +X-KDE-PluginInfo-License=CC-BY-SA-4.0 Binary files 4:5.14.5-1/summer_1am/contents/images/1280x1024.jpg and 4:5.16.4-0ubuntu1/summer_1am/contents/images/1280x1024.jpg differ Binary files 4:5.14.5-1/summer_1am/contents/images/1280x800.jpg and 4:5.16.4-0ubuntu1/summer_1am/contents/images/1280x800.jpg differ Binary files 4:5.14.5-1/summer_1am/contents/images/1440x900.jpg and 4:5.16.4-0ubuntu1/summer_1am/contents/images/1440x900.jpg differ Binary files 4:5.14.5-1/summer_1am/contents/images/1600x1200.jpg and 4:5.16.4-0ubuntu1/summer_1am/contents/images/1600x1200.jpg differ Binary files 4:5.14.5-1/summer_1am/contents/images/1638x1024.jpg and 4:5.16.4-0ubuntu1/summer_1am/contents/images/1638x1024.jpg differ Binary files 4:5.14.5-1/summer_1am/contents/images/1680x1050.jpg and 4:5.16.4-0ubuntu1/summer_1am/contents/images/1680x1050.jpg differ Binary files 4:5.14.5-1/summer_1am/contents/images/1920x1080.jpg and 4:5.16.4-0ubuntu1/summer_1am/contents/images/1920x1080.jpg differ Binary files 4:5.14.5-1/summer_1am/contents/images/1920x1200.jpg and 4:5.16.4-0ubuntu1/summer_1am/contents/images/1920x1200.jpg differ Binary files 4:5.14.5-1/summer_1am/contents/images/2560x1440.jpg and 4:5.16.4-0ubuntu1/summer_1am/contents/images/2560x1440.jpg differ Binary files 4:5.14.5-1/summer_1am/contents/images/640x480.jpg and 4:5.16.4-0ubuntu1/summer_1am/contents/images/640x480.jpg differ Binary files 4:5.14.5-1/summer_1am/contents/images/800x600.jpg and 4:5.16.4-0ubuntu1/summer_1am/contents/images/800x600.jpg differ
  1. plasma-workspace
  2. plasma-workspace-wallpapers