aboutsummaryrefslogtreecommitdiff
path: root/x11/kde4-workspace
diff options
context:
space:
mode:
authorMatthew Rezny <rezny@FreeBSD.org>2017-02-25 15:55:49 +0000
committerMatthew Rezny <rezny@FreeBSD.org>2017-02-25 15:55:49 +0000
commit918ceb933ba8ad3b9e3a5102b58833f86b6e1ffe (patch)
tree90103a5d6b38243d0a0e86481038ba511db280b3 /x11/kde4-workspace
parent7e8f03eec832b8052fe9722b1c766617611bc257 (diff)
downloadports-918ceb933ba8ad3b9e3a5102b58833f86b6e1ffe.tar.gz
ports-918ceb933ba8ad3b9e3a5102b58833f86b6e1ffe.zip
Multiple enhancements to components of kde4-workspaces
KInfoCenter: * obey user's unit preferences (IEC vs JEDEC) when displaying PCI info * correct the units, someone forgot about terabytes KSysGuard: * make plotter obey user's unit preferences (status bar was correct) * change tooltip to use same or adjacent unit scale as the plot * support a description different from the sensor name for use as the label * add an additional step to label widths so horizontal resize is smoother * change status bar elements from fixed layout to proportional layout * space permitting, show more detailed memory stats in the status bar * replace simplistic (app) memory & swap graph with a detailed graph Plasma Desktop: * hide the Desktop Toolbox (aka "the cashew") when widgets are locked NB: KSysGuard caches the layouts, delete ~/.kde4/share/apps/ksysguard/* when upgrading so the new layout (detailed memory graph) is used Reviewed by: tcberner Approved by: swills (mentor) Differential Revision: https://reviews.freebsd.org/D9760
Notes
Notes: svn path=/head/; revision=434823
Diffstat (limited to 'x11/kde4-workspace')
-rw-r--r--x11/kde4-workspace/Makefile2
-rw-r--r--x11/kde4-workspace/files/patch-CMakeLists.txt6
-rw-r--r--x11/kde4-workspace/files/patch-ConfigureChecks.cmake6
-rw-r--r--x11/kde4-workspace/files/patch-kdm-kfrontend-CMakeLists.txt6
-rw-r--r--x11/kde4-workspace/files/patch-kdm__backend__client.c10
-rw-r--r--x11/kde4-workspace/files/patch-kinfocenter76
-rw-r--r--x11/kde4-workspace/files/patch-kinfocenter_Modules_pci_kpci.cpp56
-rw-r--r--x11/kde4-workspace/files/patch-ksysguard_gui_SensorDisplayLib_FancyPlotter.cpp306
-rw-r--r--x11/kde4-workspace/files/patch-ksysguard_gui_SensorDisplayLib_FancyPlotter.h29
-rw-r--r--x11/kde4-workspace/files/patch-ksysguard_gui_SystemLoad2.sgrd24
-rw-r--r--x11/kde4-workspace/files/patch-ksysguard_gui_ksysguard.cpp73
-rw-r--r--x11/kde4-workspace/files/patch-ksysguard_gui_ksysguard.h12
-rw-r--r--x11/kde4-workspace/files/patch-kwin_opengltest_CMakeLists.txt2
-rw-r--r--x11/kde4-workspace/files/patch-plasma_desktop_toolboxes_desktoptoolbox.cpp25
-rw-r--r--x11/kde4-workspace/files/patch-plasma_desktop_toolboxes_desktoptoolbox.h12
-rw-r--r--x11/kde4-workspace/files/patch-powerdevil__daemon__backends__upower__xrandrbrightness.cpp8
-rw-r--r--x11/kde4-workspace/files/patch-startkde.cmake10
-rw-r--r--x11/kde4-workspace/files/patch-usbview20
18 files changed, 610 insertions, 73 deletions
diff --git a/x11/kde4-workspace/Makefile b/x11/kde4-workspace/Makefile
index d5cc6ac847b5..6e60454cb2fc 100644
--- a/x11/kde4-workspace/Makefile
+++ b/x11/kde4-workspace/Makefile
@@ -2,7 +2,7 @@
PORTNAME= kde-workspace
PORTVERSION= ${KDE4_WORKSPACE_VERSION}
-PORTREVISION= 5
+PORTREVISION= 6
CATEGORIES= x11 kde
MASTER_SITES= KDE/${KDE4_APPLICATIONS_BRANCH}/applications/${KDE4_APPLICATIONS_VERSION}/src
DIST_SUBDIR= KDE/${PORTVERSION}
diff --git a/x11/kde4-workspace/files/patch-CMakeLists.txt b/x11/kde4-workspace/files/patch-CMakeLists.txt
index 24b0b4d2b235..418ac6c5e40e 100644
--- a/x11/kde4-workspace/files/patch-CMakeLists.txt
+++ b/x11/kde4-workspace/files/patch-CMakeLists.txt
@@ -1,6 +1,6 @@
---- ./CMakeLists.txt.orig 2011-07-19 23:37:36.000000000 +0200
-+++ ./CMakeLists.txt 2011-08-09 20:45:40.975563521 +0200
-@@ -90,7 +90,7 @@
+--- CMakeLists.txt.orig 2015-06-26 03:17:21 UTC
++++ CMakeLists.txt
+@@ -198,7 +198,7 @@ if(NOT WIN32)
configure_file(config-unix.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-unix.h )
configure_file(config-X11.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-X11.h )
if(NOT CMAKE_INSTALL_PREFIX STREQUAL "/usr")
diff --git a/x11/kde4-workspace/files/patch-ConfigureChecks.cmake b/x11/kde4-workspace/files/patch-ConfigureChecks.cmake
index ed8b60fb95c2..ceb47dd93117 100644
--- a/x11/kde4-workspace/files/patch-ConfigureChecks.cmake
+++ b/x11/kde4-workspace/files/patch-ConfigureChecks.cmake
@@ -1,6 +1,6 @@
---- ./ConfigureChecks.cmake.orig 2009-11-21 12:44:36.000000000 +0300
-+++ ./ConfigureChecks.cmake 2010-01-27 00:04:40.445046695 +0300
-@@ -16,16 +16,7 @@
+--- ConfigureChecks.cmake.orig 2015-06-26 03:17:21 UTC
++++ ConfigureChecks.cmake
+@@ -21,16 +21,7 @@ if (PAM_FOUND)
endmacro(define_pam_service)
macro(install_pam_service APP)
diff --git a/x11/kde4-workspace/files/patch-kdm-kfrontend-CMakeLists.txt b/x11/kde4-workspace/files/patch-kdm-kfrontend-CMakeLists.txt
index a4102a8029dd..40bcb9a68ff4 100644
--- a/x11/kde4-workspace/files/patch-kdm-kfrontend-CMakeLists.txt
+++ b/x11/kde4-workspace/files/patch-kdm-kfrontend-CMakeLists.txt
@@ -1,6 +1,6 @@
---- ./kdm/kfrontend/CMakeLists.txt.orig 2008-07-30 17:02:54.000000000 +0300
-+++ ./kdm/kfrontend/CMakeLists.txt 2008-07-30 17:03:26.000000000 +0300
-@@ -113,6 +113,6 @@
+--- kdm/kfrontend/CMakeLists.txt.orig 2015-06-26 03:17:21 UTC
++++ kdm/kfrontend/CMakeLists.txt
+@@ -111,6 +111,6 @@ install(TARGETS kdmctl ${INSTALL_TARGETS
# use 'GENKDMCONF_FLAGS=... make install' to add flags to the config generation (try genkdmconf -h)
diff --git a/x11/kde4-workspace/files/patch-kdm__backend__client.c b/x11/kde4-workspace/files/patch-kdm__backend__client.c
index 017beeafc8c6..cff83e810c9f 100644
--- a/x11/kde4-workspace/files/patch-kdm__backend__client.c
+++ b/x11/kde4-workspace/files/patch-kdm__backend__client.c
@@ -1,6 +1,6 @@
---- kdm/backend/client.c.orig 2014-11-06 23:36:58.000000000 +0100
-+++ kdm/backend/client.c 2015-03-09 13:20:24.870430799 +0100
-@@ -1322,6 +1322,9 @@
+--- kdm/backend/client.c.orig 2015-06-26 03:17:21 UTC
++++ kdm/backend/client.c
+@@ -1322,6 +1322,9 @@ startClient(volatile int *pid)
char ckDeviceBuf[20] = "";
const char *ckDevice = ckDeviceBuf;
dbus_bool_t isLocal;
@@ -10,7 +10,7 @@
#endif
char *failsafeArgv[2];
char *buf, *buf2;
-@@ -1353,6 +1356,13 @@
+@@ -1353,6 +1356,13 @@ startClient(volatile int *pid)
# ifdef HAVE_VTS
if (td->serverVT > 0)
sprintf(ckDeviceBuf, "/dev/tty%d", td->serverVT);
@@ -24,7 +24,7 @@
# endif
isLocal = ((td->displayType & d_location) == dLocal);
# ifdef XDMCP
-@@ -1532,7 +1542,7 @@
+@@ -1532,7 +1542,7 @@ startClient(volatile int *pid)
environ = pam_env;
# endif
removeCreds = True; /* set it first - i don't trust PAM's rollback */
diff --git a/x11/kde4-workspace/files/patch-kinfocenter b/x11/kde4-workspace/files/patch-kinfocenter
index 0c88b1f18648..effd580055ab 100644
--- a/x11/kde4-workspace/files/patch-kinfocenter
+++ b/x11/kde4-workspace/files/patch-kinfocenter
@@ -5,7 +5,7 @@
Improve GetInfo_ReadfromPipe function to use Qt types, pass program name
and its parameters as separate arguments.
---- /dev/null
+--- cmake/modules/FindBSDDevinfo.cmake.orig 2016-12-13 11:26:31 UTC
+++ cmake/modules/FindBSDDevinfo.cmake
@@ -0,0 +1,15 @@
+# Find FreeBSD devinfo library
@@ -23,7 +23,7 @@
+find_package_handle_standard_args(BSDDEVINFO DEFAULT_MSG BSDDEVINFO_LIBRARY BSDDEVINFO_INCLUDE_DIR)
+
+mark_as_advanced(BSDDEVINFO_INCLUDE_DIR BSDDEVINFO_LIBRARY)
---- kinfocenter/Modules/base/CMakeLists.txt
+--- kinfocenter/Modules/base/CMakeLists.txt.orig 2015-06-26 03:17:21 UTC
+++ kinfocenter/Modules/base/CMakeLists.txt
@@ -1,6 +1,7 @@
# TODO: HAVE_LIBDEVINFO_H (for Solaris 7 and later)
@@ -34,8 +34,8 @@
+macro_bool_to_01(BSDDEVINFO_FOUND HAVE_DEVINFO_H)
configure_file (../base/config-infocenter.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-infocenter.h )
---- kinfocenter/Modules/base/info_fbsd.cpp.orig 2014-11-06 22:36:58.000000000 +0000
-+++ kinfocenter/Modules/base/info_fbsd.cpp 2015-02-20 22:40:53.380666149 +0000
+--- kinfocenter/Modules/base/info_fbsd.cpp.orig 2015-06-26 03:17:21 UTC
++++ kinfocenter/Modules/base/info_fbsd.cpp
@@ -15,8 +15,6 @@
*/
@@ -45,7 +45,7 @@
#ifdef HAVE_DEVINFO_H
extern "C" {
-@@ -24,13 +22,16 @@
+@@ -24,13 +22,16 @@ extern "C" {
}
#endif
@@ -65,7 +65,7 @@
void ProcessChildren(QString name);
#ifdef HAVE_DEVINFO_H
-@@ -44,13 +45,12 @@
+@@ -44,13 +45,12 @@ extern "C" {
bool GetInfo_IRQ(QTreeWidget* tree) {
#ifdef HAVE_DEVINFO_H
@@ -84,7 +84,7 @@
devinfo_foreach_rman(print_irq, tree);
return true;
#else
-@@ -60,9 +60,13 @@
+@@ -60,9 +60,13 @@ bool GetInfo_IRQ(QTreeWidget* tree) {
bool GetInfo_DMA(QTreeWidget* tree) {
#ifdef HAVE_DEVINFO_H
@@ -100,7 +100,7 @@
devinfo_foreach_rman(print_dma, tree);
return true;
#else
-@@ -72,9 +76,12 @@
+@@ -72,9 +76,12 @@ bool GetInfo_DMA(QTreeWidget* tree) {
bool GetInfo_IO_Ports(QTreeWidget* tree) {
#ifdef HAVE_DEVINFO_H
@@ -115,7 +115,7 @@
devinfo_foreach_rman(print_ioports, tree);
return true;
#else
-@@ -83,50 +90,28 @@
+@@ -83,50 +90,28 @@ bool GetInfo_IO_Ports(QTreeWidget* tree)
}
bool GetInfo_SCSI(QTreeWidget* tree) {
@@ -125,15 +125,15 @@
-
if (!QFileInfo(QLatin1String("/sbin/camcontrol")).exists()) {
- s = i18n("SCSI subsystem could not be queried: /sbin/camcontrol could not be found");
- QStringList list;
+- QStringList list;
- list << s;
-+ list << i18n("SCSI subsystem could not be queried: /sbin/camcontrol could not be found");
- new QTreeWidgetItem(tree, list);
+- new QTreeWidgetItem(tree, list);
- } else if ((pipe = popen("/sbin/camcontrol devlist 2>&1", "r")) == NULL) {
- s = i18n("SCSI subsystem could not be queried: /sbin/camcontrol could not be executed");
-- QStringList list;
+ QStringList list;
- list << s;
-- new QTreeWidgetItem(tree, list);
++ list << i18n("SCSI subsystem could not be queried: /sbin/camcontrol could not be found");
+ new QTreeWidgetItem(tree, list);
- } else {
-
- /* This prints out a list of all the scsi devies, perhaps eventually we could
@@ -180,13 +180,13 @@
const QStringList headers(i18nc("@title:column Column name for PCI information", "Information"));
tree->setHeaderLabels(headers);
-@@ -136,40 +121,11 @@
+@@ -136,40 +121,11 @@ bool GetInfo_PCI(QTreeWidget* tree) {
list << i18n("Could not find any programs with which to query your system's PCI information");
new QTreeWidgetItem(tree, list);
return true;
- } else {
- cmd = "/usr/sbin/pciconf -l -v 2>&1";
-- }
+ }
-
- // TODO: GetInfo_ReadfromPipe should be improved so that we could pass the program name and its
- // arguments to it and remove most of the code below.
@@ -208,7 +208,7 @@
- }
-
- pclose(pipe);
- }
+- }
-
- if (!tree->topLevelItemCount()) {
- QString str = i18n("The PCI subsystem could not be queried, this may need root privileges.");
@@ -223,7 +223,7 @@
}
bool GetInfo_XServer_and_Video(QTreeWidget* tree) {
-@@ -179,12 +135,7 @@
+@@ -179,12 +135,7 @@ bool GetInfo_XServer_and_Video(QTreeWidg
#ifdef HAVE_DEVINFO_H
int print_irq(struct devinfo_rman *rman, void *arg) {
@@ -236,7 +236,7 @@
devinfo_foreach_rman_resource(rman, print_resource, arg);
}
return 0;
-@@ -192,11 +143,7 @@
+@@ -192,11 +143,7 @@ int print_irq(struct devinfo_rman *rman,
int print_dma(struct devinfo_rman *rman, void *arg)
{
@@ -248,7 +248,7 @@
devinfo_foreach_rman_resource(rman, print_resource, arg);
}
return(0);
-@@ -230,29 +177,25 @@
+@@ -230,29 +177,25 @@ int print_resource(struct devinfo_res *r
int hexmode;
QTreeWidget* tree = (QTreeWidget*) arg;
@@ -290,21 +290,9 @@
new QTreeWidgetItem(tree, list);
return 0;
---- kinfocenter/Modules/info/CMakeLists.txt
-+++ kinfocenter/Modules/info/CMakeLists.txt
-@@ -13,6 +13,9 @@ set(kcm_info_PART_SRCS main.cpp info.cpp ../base/os_current.cpp )
- kde4_add_plugin(kcm_info ${kcm_info_PART_SRCS})
-
- target_link_libraries(kcm_info ${KDE4_KDEUI_LIBS} ${QT_QTGUI_LIBRARY} ${X11_X11_LIB})
-+if(BSDDEVINFO_FOUND)
-+ target_link_libraries(kcm_info ${BSDDEVINFO_LIBRARY})
-+endif(BSDDEVINFO_FOUND)
-
- install(TARGETS kcm_info DESTINATION ${PLUGIN_INSTALL_DIR} )
-
---- kinfocenter/Modules/base/info_hpux.cpp
+--- kinfocenter/Modules/base/info_hpux.cpp.orig 2015-06-26 03:17:21 UTC
+++ kinfocenter/Modules/base/info_hpux.cpp
-@@ -30,6 +30,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
+@@ -30,6 +30,7 @@ along with this program. If not, see <h
#include <stdlib.h>
#include <QFile>
#include <QFontMetrics>
@@ -330,9 +318,9 @@
}
/* Parts taken from fsusage.c from the Midnight Commander (mc)
---- kinfocenter/Modules/base/info_linux.cpp
+--- kinfocenter/Modules/base/info_linux.cpp.orig 2015-06-26 03:17:21 UTC
+++ kinfocenter/Modules/base/info_linux.cpp
-@@ -33,6 +33,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
+@@ -33,6 +33,7 @@ along with this program. If not, see <h
#include <QRegExp>
#include <QFile>
#include <QHeaderView>
@@ -356,9 +344,9 @@
/* if lspci failed, read the contents of /proc/pci */
return GetInfo_ReadfromFile(tree, INFO_PCI, 0);
---- kinfocenter/Modules/base/os_base.h
+--- kinfocenter/Modules/base/os_base.h.orig 2015-06-26 03:17:21 UTC
+++ kinfocenter/Modules/base/os_base.h
-@@ -320,12 +320,12 @@ static bool GetInfo_XServer_Generic(QTreeWidget *lBox) {
+@@ -330,12 +330,12 @@ static bool GetInfo_XServer_Generic(QTre
}
/* Helper-function to read output from an external program */
@@ -373,3 +361,15 @@
if (!proc.waitForFinished()) {
// Process hanged or did not start
return 0;
+--- kinfocenter/Modules/info/CMakeLists.txt.orig 2015-06-26 03:17:21 UTC
++++ kinfocenter/Modules/info/CMakeLists.txt
+@@ -13,6 +13,9 @@ set(kcm_info_PART_SRCS main.cpp info.cpp
+ kde4_add_plugin(kcm_info ${kcm_info_PART_SRCS})
+
+ target_link_libraries(kcm_info ${KDE4_KDEUI_LIBS} ${QT_QTGUI_LIBRARY} ${X11_X11_LIB})
++if(BSDDEVINFO_FOUND)
++ target_link_libraries(kcm_info ${BSDDEVINFO_LIBRARY})
++endif(BSDDEVINFO_FOUND)
+
+ install(TARGETS kcm_info DESTINATION ${PLUGIN_INSTALL_DIR} )
+
diff --git a/x11/kde4-workspace/files/patch-kinfocenter_Modules_pci_kpci.cpp b/x11/kde4-workspace/files/patch-kinfocenter_Modules_pci_kpci.cpp
new file mode 100644
index 000000000000..10b57e9feccf
--- /dev/null
+++ b/x11/kde4-workspace/files/patch-kinfocenter_Modules_pci_kpci.cpp
@@ -0,0 +1,56 @@
+* Obey user's unit preferences when displaying PCI info.
+* Use correct units, someone forgot about terabytes
+*
+--- kinfocenter/Modules/pci/kpci.cpp.orig 2015-06-26 03:17:21 UTC
++++ kinfocenter/Modules/pci/kpci.cpp
+@@ -22,6 +22,8 @@ extern "C" {
+ #include <QTreeWidget>
+ #include <QTreeWidgetItem>
+ #include <QFile>
++#include <kglobal.h>
++#include <klocale.h>
+
+ static const QString& getNameById(const id2name *const table, int id) {
+ for (int i=0;; i++) {
+@@ -238,31 +240,35 @@ static QTreeWidgetItem* addBist(QTreeWid
+ }//addBist
+
+ static QTreeWidgetItem* addSize(QTreeWidgetItem *parent, QTreeWidgetItem *after, pciaddr_t size) {
++ static bool realUnits = (KGlobal::locale()->binaryUnitDialect() == KLocale::JEDECBinaryDialect);
+ if (size<0x400) {
+ after=create(parent, i18n("Size"), QString("%1 B").arg(static_cast<unsigned long>(size)));
+ }//if
+ else if (size<0x100000) {
+- after=create(parent, i18n("Size"), QString("%1 kiB").arg(static_cast<unsigned long>(size/0x400)));
++ after=create(parent, i18n("Size"), QString(realUnits ? "%1 KB" : "%1 KiB").arg(static_cast<unsigned long>(size/0x400)));
+ }//elif
+ else if (size<0x40000000) {
+- after=create(parent, i18n("Size"), QString("%1 MiB").arg(static_cast<unsigned long>(size/0x100000)));
++ after=create(parent, i18n("Size"), QString(realUnits ? "%1 MB" : "%1 MiB").arg(static_cast<unsigned long>(size/0x100000)));
+ }//elif
+
+ #ifdef HAVE_PCIADDR_T64
+
+ else if (size<0x10000000000LL) {
+- after=create(parent, i18n("Size"),QString("%1 GiB").arg(static_cast<unsigned long>(size/0x40000000)));
++ after=create(parent, i18n("Size"),QString(realUnits ? "%1 GB" : "%1 GiB").arg(static_cast<unsigned long>(size/0x40000000)));
+ }//elif
+ else if (size<0x4000000000000LL) {
+- after=create(parent, i18n("Size"),QString("%1 PiB").arg(static_cast<unsigned long>(size/0x10000000000LL)));
++ after=create(parent, i18n("Size"),QString(realUnits ? "%1 TB" : "%1 TiB").arg(static_cast<unsigned long>(size/0x10000000000LL)));
+ }//elif
+ else if (size<0x1000000000000000LL) {
+- after=create(parent, i18n("Size"),QString("%1 EiB").arg(static_cast<unsigned long>(size/0x4000000000000LL)));
++ after=create(parent, i18n("Size"),QString(realUnits ? "%1 PB" : "%1 PiB").arg(static_cast<unsigned long>(size/0x4000000000000LL)));
+ }//elif
++ else {
++ after=create(parent, i18n("Size"),QString(realUnits ? "%1 EB" : "%1 EiB").arg(static_cast<unsigned long>(size/0x1000000000000000LL)));
++ }//else
+
+ #else //HAVE_PCIADDR_T64
+ else {
+- after=create(parent, i18n("Size"), QString("%1 GiB").arg(static_cast<unsigned long>(size/0x40000000)));
++ after=create(parent, i18n("Size"), QString(realUnits ? "%1 GB" : "%1 GiB").arg(static_cast<unsigned long>(size/0x40000000)));
+ }//else
+
+ #endif //HAVE_PCIADDR_T64
diff --git a/x11/kde4-workspace/files/patch-ksysguard_gui_SensorDisplayLib_FancyPlotter.cpp b/x11/kde4-workspace/files/patch-ksysguard_gui_SensorDisplayLib_FancyPlotter.cpp
new file mode 100644
index 000000000000..72d181a797e2
--- /dev/null
+++ b/x11/kde4-workspace/files/patch-ksysguard_gui_SensorDisplayLib_FancyPlotter.cpp
@@ -0,0 +1,306 @@
+* Fix the unit handling in KSysGuard's Plotter to respect user's unit preferences
+*
+* Improve the handling of labels so the display is nicer when horizontally constrained
+*
+* Use reasonable units for the Plotter's tooltip (used to be unscaled)
+*
+* Allow a stored description for sensors to override the label
+*
+--- ksysguard/gui/SensorDisplayLib/FancyPlotter.cpp.orig 2015-06-26 03:17:21 UTC
++++ ksysguard/gui/SensorDisplayLib/FancyPlotter.cpp
+@@ -48,6 +48,7 @@ class SensorToAdd {
+ QRegExp name;
+ QString hostname;
+ QString type;
++ QString description;
+ QList<QColor> colors;
+ QString summationName;
+ };
+@@ -58,13 +59,15 @@ class FancyPlotterLabel : public QLabel
+ setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
+ longHeadingWidth = 0;
+ shortHeadingWidth = 0;
++ minHeadingWidth = 0;
+ textMargin = 0;
+ setLayoutDirection(Qt::LeftToRight); //We do this because we organise the strings ourselves.. is this going to muck it up though for RTL languages?
+ }
+ ~FancyPlotterLabel() {
+ }
+ void setLabel(const QString &name, const QColor &color) {
+- labelName = name;
++ labelLongName = name;
++ labelShortName = name.split(QChar(' ')).first();
+
+ if(indicatorSymbol.isNull()) {
+ if(fontMetrics().inFont(QChar(0x25CF)))
+@@ -73,7 +76,6 @@ class FancyPlotterLabel : public QLabel
+ indicatorSymbol = '#';
+ }
+ changeLabel(color);
+-
+ }
+ void setValueText(const QString &value) {
+ //value can have multiple strings, separated with the 0x9c character
+@@ -87,63 +89,72 @@ class FancyPlotterLabel : public QLabel
+ if(valueText.isEmpty()) {
+ if(longHeadingWidth < width())
+ setText(longHeadingText);
+- else
++ else if(shortHeadingWidth < width())
+ setText(shortHeadingText);
++ else
++ setText(minHeadingText);
+ return;
+ }
+- QString value = valueText.first();
+
+- int textWidth = fm.boundingRect(value).width();
+- if(textWidth + longHeadingWidth < width())
+- setBothText(longHeadingText, value);
+- else if(textWidth + shortHeadingWidth < width())
+- setBothText(shortHeadingText, value);
+- else {
+- int valueTextCount = valueText.count();
+- int i;
+- for(i = 1; i < valueTextCount; ++i) {
+- textWidth = fm.boundingRect(valueText.at(i)).width();
+- if(textWidth + shortHeadingWidth <= width()) {
+- break;
+- }
++ int i, textWidth, valueTextCount = valueText.count();
++ for(i = 0; i < valueTextCount; ++i) {
++ textWidth = fm.boundingRect(valueText.at(i)).width();
++ if(textWidth + longHeadingWidth <= width()) {
++ setBothText(longHeadingText, valueText.at(i));
++ return;
+ }
+- if(i < valueTextCount)
++ if(textWidth + shortHeadingWidth <= width()) {
+ setBothText(shortHeadingText, valueText.at(i));
+- else
+- setText(noHeadingText + valueText.last()); //This just sets the color of the text
++ return;
++ }
+ }
++ for(i = 0; i < valueTextCount; ++i) {
++ textWidth = fm.boundingRect(valueText.at(i)).width();
++ if(textWidth + minHeadingWidth <= width()) {
++ setBothText(minHeadingText, valueText.at(i));
++ return;
++ }
++ }
++ setBothText(noHeadingText, valueText.last()); //This just sets the color of the text
+ }
+ void changeLabel(const QColor &_color) {
+ color = _color;
+
+- if ( kapp->layoutDirection() == Qt::RightToLeft )
+- longHeadingText = QString(": ") + labelName + " <font color=\"" + color.name() + "\">" + indicatorSymbol + "</font>";
+- else
+- longHeadingText = QString("<qt><font color=\"") + color.name() + "\">" + indicatorSymbol + "</font> " + labelName + " :";
+- shortHeadingText = QString("<qt><font color=\"") + color.name() + "\">" + indicatorSymbol + "</font>";
++ if ( kapp->layoutDirection() == Qt::RightToLeft ) {
++ longHeadingText = QString(" : ") + labelLongName + " <font color=\"" + color.name() + "\">" + indicatorSymbol + "</font>";
++ shortHeadingText = QString(" :") + labelShortName + " <font color=\"" + color.name() + "\">" + indicatorSymbol + "</font>";
++ } else {
++ longHeadingText = QString("<qt><font color=\"") + color.name() + "\">" + indicatorSymbol + "</font> " + labelLongName + " : ";
++ shortHeadingText = QString("<qt><font color=\"") + color.name() + "\">" + indicatorSymbol + "</font> " + labelShortName + ": ";
++ }
++ minHeadingText = QString("<qt><font color=\"") + color.name() + "\">" + indicatorSymbol + "</font> ";
+ noHeadingText = QString("<qt><font color=\"") + color.name() + "\">";
+
+- textMargin = fontMetrics().width('x') + margin()*2 + frameWidth()*2;
+- longHeadingWidth = fontMetrics().boundingRect(labelName + " :" + indicatorSymbol + " x").width() + textMargin;
+- shortHeadingWidth = fontMetrics().boundingRect(indicatorSymbol).width() + textMargin;
+- setMinimumWidth(shortHeadingWidth);
++ textMargin = margin()*2 + frameWidth()*2;
++ longHeadingWidth = fontMetrics().boundingRect(labelLongName + " : " + indicatorSymbol + " x").width() + textMargin;
++ shortHeadingWidth = fontMetrics().boundingRect(labelShortName + ": " + indicatorSymbol + " x").width() + textMargin;
++ minHeadingWidth = fontMetrics().boundingRect(indicatorSymbol + " x").width() + textMargin;
++ setMinimumWidth(minHeadingWidth);
+ update();
+ }
+ private:
+ void setBothText(const QString &heading, const QString & value) {
+ if(QApplication::layoutDirection() == Qt::LeftToRight)
+- setText(heading + ' ' + value);
++ setText(heading + value);
+ else
+- setText("<qt>" + value + ' ' + heading);
++ setText("<qt>" + value + heading);
+ }
+ int textMargin;
+ QString longHeadingText;
+ QString shortHeadingText;
++ QString minHeadingText;
+ QString noHeadingText;
+ int longHeadingWidth;
+ int shortHeadingWidth;
++ int minHeadingWidth;
+ QList<QString> valueText;
+- QString labelName;
++ QString labelLongName;
++ QString labelShortName;
+ QColor color;
+ static QChar indicatorSymbol;
+ };
+@@ -162,6 +173,7 @@ FancyPlotter::FancyPlotter( QWidget* par
+ mUseManualRange = false;
+ mNumAnswers = 0;
+ mLabelsWidget = NULL;
++ mRealUnits = (KGlobal::locale()->binaryUnitDialect() == KLocale::JEDECBinaryDialect);
+
+ //The unicode character 0x25CF is a big filled in circle. We would prefer to use this in the tooltip.
+ //However it's maybe possible that the font used to draw the tooltip won't have it. So we fall back to a
+@@ -510,10 +522,17 @@ void FancyPlotter::setTooltip()
+
+ if(sensor->isOk()) {
+ lastValue = KGlobal::locale()->formatNumber( sensor->lastValue, (sensor->isInteger)?0:-1 );
+- if (sensor->unit() == "%")
++ if (sensor->unit() == "%") {
+ lastValue = i18nc("units", "%1%", lastValue);
+- else if( !sensor->unit().isEmpty() )
+- lastValue = i18nc("units", QString(QString("%1 ") + sensor->unit()).toUtf8(), lastValue);
++ } else if( !sensor->unit().isEmpty() ) {
++ qreal scale = (mPlotter->scaleDownBy() == 1) ? 1 : (sensor->lastValue / mPlotter->scaleDownBy() < 0.1) ? (mPlotter->scaleDownBy() / 1024) : mPlotter->scaleDownBy();
++ if(scale > 1) {
++ QString unit = (scale == 1024) ? (sensor->unit()).replace("K","M") : (scale == 1024*1024) ? (sensor->unit()).replace("K","G") : (sensor->unit()).replace("K","T");
++ lastValue = i18nc("units", QString(QString("%1 ") + unit).toUtf8(), KGlobal::locale()->formatNumber( sensor->lastValue / scale ));
++ } else {
++ lastValue = i18nc("units", QString(QString("%1 ") + sensor->unit()).toUtf8(), lastValue);
++ }
++ }
+ } else {
+ lastValue = i18n("Error");
+ }
+@@ -615,33 +634,33 @@ void FancyPlotter::plotterAxisScaleChang
+ disconnect(mPlotter, SIGNAL(axisScaleChanged()), this, SLOT(plotterAxisScaleChanged()));
+ KLocalizedString unit;
+ double value = mPlotter->currentMaximumRangeValue();
+- if(mUnit == "KiB") {
+- if(value >= 1024*1024*1024*0.7) { //If it's over 0.7TiB, then set the scale to terabytes
++ if(mUnit == "KB" || mUnit == "KiB") {
++ if(value >= 1024*1024*1024) {
+ mPlotter->setScaleDownBy(1024*1024*1024);
+- unit = ki18nc("units", "%1 TiB"); // the unit - terabytes
+- } else if(value >= 1024*1024*0.7) { //If it's over 0.7GiB, then set the scale to gigabytes
++ unit = ki18nc("units", mRealUnits ? "%1 TB" : "%1 TiB"); // the unit - terabytes
++ } else if(value >= 1024*1024) {
+ mPlotter->setScaleDownBy(1024*1024);
+- unit = ki18nc("units", "%1 GiB"); // the unit - gigabytes
++ unit = ki18nc("units", mRealUnits ? "%1 GB" : "%1 GiB"); // the unit - gigabytes
+ } else if(value > 1024) {
+ mPlotter->setScaleDownBy(1024);
+- unit = ki18nc("units", "%1 MiB"); // the unit - megabytes
++ unit = ki18nc("units", mRealUnits ? "%1 MB" : "%1 MiB"); // the unit - megabytes
+ } else {
+ mPlotter->setScaleDownBy(1);
+- unit = ki18nc("units", "%1 KiB"); // the unit - kilobytes
++ unit = ki18nc("units", mRealUnits ? "%1 KB" : "%1 KiB"); // the unit - kilobytes
+ }
+- } else if(mUnit == "KiB/s") {
+- if(value >= 1024*1024*1024*0.7) { //If it's over 0.7TiB, then set the scale to terabytes
++ } else if(mUnit == "KB/s" || mUnit == "KiB/s") {
++ if(value >= 1024*1024*1024) {
+ mPlotter->setScaleDownBy(1024*1024*1024);
+- unit = ki18nc("units", "%1 TiB/s"); // the unit - terabytes per second
+- } else if(value >= 1024*1024*0.7) { //If it's over 0.7GiB, then set the scale to gigabytes
++ unit = ki18nc("units", mRealUnits ? "%1 TB/s" : "%1 TiB/s"); // the unit - terabytes per second
++ } else if(value >= 1024*1024) {
+ mPlotter->setScaleDownBy(1024*1024);
+- unit = ki18nc("units", "%1 GiB/s"); // the unit - gigabytes per second
++ unit = ki18nc("units", mRealUnits ? "%1 GB/s" : "%1 GiB/s"); // the unit - gigabytes per second
+ } else if(value > 1024) {
+ mPlotter->setScaleDownBy(1024);
+- unit = ki18nc("units", "%1 MiB/s"); // the unit - megabytes per second
++ unit = ki18nc("units", mRealUnits ? "%1 MB/s" : "%1 MiB/s"); // the unit - megabytes per second
+ } else {
+ mPlotter->setScaleDownBy(1);
+- unit = ki18nc("units", "%1 KiB/s"); // the unit - kilobytes per second
++ unit = ki18nc("units", mRealUnits ? "%1 KB/s" : "%1 KiB/s"); // the unit - kilobytes per second
+ }
+ } else if(mUnit == "%") {
+ mPlotter->setScaleDownBy(1);
+@@ -694,9 +713,9 @@ void FancyPlotter::answerReceived( int i
+ KSGRD::SensorFloatInfo info( answer );
+ QString unit = info.unit();
+ if(unit.toUpper() == "KB" || unit.toUpper() == "KIB")
+- unit = "KiB";
++ unit = mRealUnits ? "KB" : "KiB";
+ if(unit.toUpper() == "KB/S" || unit.toUpper() == "KIB/S")
+- unit = "KiB/s";
++ unit = mRealUnits ? "KB/s" : "KiB/s";
+
+ if(id == 100) //if we are the first sensor, just use that sensors units as the global unit
+ mUnit = unit;
+@@ -714,7 +733,8 @@ void FancyPlotter::answerReceived( int i
+ sensor->maxValue = info.max();
+ sensor->minValue = info.min();
+ sensor->setUnit( unit );
+- sensor->setDescription( info.name() );
++ if(sensor->description().isEmpty())
++ sensor->setDescription( info.name() );
+
+ QString summationName = sensor->summationName;
+ int beamId = sensor->beamId;
+@@ -723,7 +743,7 @@ void FancyPlotter::answerReceived( int i
+ Q_ASSERT(beamId < mLabelLayout->count());
+
+ if(summationName.isEmpty())
+- static_cast<FancyPlotterLabel *>((static_cast<QWidgetItem *>(mLabelLayout->itemAt(beamId)))->widget())->setLabel(info.name(), mPlotter->beamColor(beamId));
++ static_cast<FancyPlotterLabel *>((static_cast<QWidgetItem *>(mLabelLayout->itemAt(beamId)))->widget())->setLabel(sensor->description(), mPlotter->beamColor(beamId));
+
+ } else if( id == 200) {
+ /* FIXME This doesn't check the host! */
+@@ -743,8 +763,8 @@ void FancyPlotter::answerReceived( int i
+ else if(KSGRD::Style->numSensorColors() != 0)
+ color = KSGRD::Style->sensorColor( beamId % KSGRD::Style->numSensorColors());
+ addSensor( sensor->hostname, sensorName,
+- (sensor->type.isEmpty()) ? "float" : sensor->type
+- , "", color, sensor->name.pattern(), beamId, sensor->summationName);
++ (sensor->type.isEmpty()) ? "float" : sensor->type,
++ sensor->description, color, sensor->name.pattern(), beamId, sensor->summationName);
+ }
+ }
+ }
+@@ -823,7 +843,7 @@ bool FancyPlotter::restoreSettings( QDom
+ } else
+ addSensor( el.attribute( "hostName" ), el.attribute( "sensorName" ),
+ ( el.attribute( "sensorType" ).isEmpty() ? "float" :
+- el.attribute( "sensorType" ) ), "", restoreColor( el, "color",
++ el.attribute( "sensorType" ) ), el.attribute( "description" ), restoreColor( el, "color",
+ KSGRD::Style->sensorColor( i ) ), QString(), mBeams, el.attribute("summationName") );
+ }
+
+@@ -873,16 +893,18 @@ bool FancyPlotter::saveSettings( QDomDoc
+ } else {
+ QDomElement beam = doc.createElement( "beam" );
+ element.appendChild( beam );
++ beam.setAttribute( "sensorType", sensor->type() );
+ beam.setAttribute( "hostName", sensor->hostName() );
+- if(regExpName.isEmpty())
++ if(regExpName.isEmpty()) {
+ beam.setAttribute( "sensorName", sensor->name() );
+- else {
++ if(sensor->hasDescription)
++ beam.setAttribute( "description", sensor->description() );
++ } else {
+ beam.setAttribute( "regexpSensorName", sensor->regExpName() );
+ hash[regExpName] = beam;
++ if(!sensor->summationName.isEmpty())
++ beam.setAttribute( "summationName", sensor->summationName);
+ }
+- if(!sensor->summationName.isEmpty())
+- beam.setAttribute( "summationName", sensor->summationName);
+- beam.setAttribute( "sensorType", sensor->type() );
+ saveColor( beam, "color", mPlotter->beamColor( beamId ) );
+ }
+ }
+@@ -918,6 +940,7 @@ FPSensorProperties::FPSensorProperties(
+ minValue = 0;
+ lastValue = 0;
+ isInteger = (type == "integer");
++ hasDescription = !description.isEmpty();
+ }
+
+ FPSensorProperties::~FPSensorProperties()
diff --git a/x11/kde4-workspace/files/patch-ksysguard_gui_SensorDisplayLib_FancyPlotter.h b/x11/kde4-workspace/files/patch-ksysguard_gui_SensorDisplayLib_FancyPlotter.h
new file mode 100644
index 000000000000..e81bcb039dc1
--- /dev/null
+++ b/x11/kde4-workspace/files/patch-ksysguard_gui_SensorDisplayLib_FancyPlotter.h
@@ -0,0 +1,29 @@
+* Add a couple variables for the additional functionality in FancyPlotter.cpp
+*
+--- ksysguard/gui/SensorDisplayLib/FancyPlotter.h.orig 2015-06-26 03:17:21 UTC
++++ ksysguard/gui/SensorDisplayLib/FancyPlotter.h
+@@ -52,6 +52,7 @@ class FPSensorProperties : public KSGRD:
+ double minValue;
+ double lastValue;
+ bool isInteger;
++ bool hasDescription;
+
+ private:
+ QColor mColor;
+@@ -104,7 +105,7 @@ class FancyPlotter : public KSGRD::Senso
+ private:
+ void sendDataToPlotter();
+ uint mBeams;
+-
++
+ int mNumAnswers;
+ /** When we talk to the sensor, it tells us a range. Record the max here. equals 0 until we have an answer from it */
+ double mSensorReportedMax;
+@@ -131,6 +132,7 @@ class FancyPlotter : public KSGRD::Senso
+ QLabel *mHeading;
+
+ QString mUnit;
++ bool mRealUnits;
+
+ QList<SensorToAdd *> mSensorsToAdd;
+ QBoxLayout *mLabelLayout;
diff --git a/x11/kde4-workspace/files/patch-ksysguard_gui_SystemLoad2.sgrd b/x11/kde4-workspace/files/patch-ksysguard_gui_SystemLoad2.sgrd
new file mode 100644
index 000000000000..07b0f46205f7
--- /dev/null
+++ b/x11/kde4-workspace/files/patch-ksysguard_gui_SystemLoad2.sgrd
@@ -0,0 +1,24 @@
+* Provide a detailed view of Memory and Swap Used instead of the simplistic and
+* misleading view that showed only application use (kernel use was neglected)
+*
+--- ksysguard/gui/SystemLoad2.sgrd.orig 2015-06-26 03:17:21 UTC
++++ ksysguard/gui/SystemLoad2.sgrd
+@@ -3,11 +3,14 @@
+ <WorkSheet title="System Load" interval="0.5" locked="1" rows="3" columns="1" >
+ <host port="-1" command="ksysguardd" shell="" name="localhost" />
+ <display title="CPU History" svgBackground="widgets/plot-background" autoRange="0" class="FancyPlotter" column="0" row="0" version="1">
+- <beam sensorType="float" hostName="localhost" regexpSensorName="cpu/cpu.*/TotalLoad" color="0xffff8000,0xffe20800" />
++ <beam sensorType="float" hostName="localhost" regexpSensorName="cpu/cpu.*/TotalLoad" />
+ </display>
+- <display title="Memory and Swap History" svgBackground="widgets/plot-background" autoRange="0" class="FancyPlotter" column="0" row="1" version="1" >
+- <beam summationName="Memory" sensorName="mem/physical/application" sensorType="integer" hostName="localhost" color="0xffc000c0" />
+- <beam summationName="Swap" sensorName="mem/swap/used" sensorType="integer" hostName="localhost" color="0xff00c000" />
++ <display title="Memory and Swap History" svgBackground="widgets/plot-background" autoRange="1" class="FancyPlotter" column="0" row="1" version="1" stacked="1">
++ <beam sensorType="integer" hostName="localhost" sensorName="mem/physical/wired" color="0xffc00000" />
++ <beam sensorType="integer" hostName="localhost" sensorName="mem/physical/inactive" color="0xffc0c000" />
++ <beam sensorType="integer" hostName="localhost" sensorName="mem/physical/active" color="0xff0000c0" />
++ <beam sensorType="integer" hostName="localhost" sensorName="mem/physical/free" color="0xff00c000" />
++ <beam sensorType="integer" hostName="localhost" sensorName="mem/swap/used" description="Swap Used" color="0xffc000c0" />
+ </display>
+ <display title="Network History" svgBackground="widgets/plot-background" autoRange="1" class="FancyPlotter" column="0" row="2" version="1" min="0" max="20" manualRange="1">
+ <beam sensorType="float" hostName="localhost" summationName="Receiving" regexpSensorName="network/interfaces/(?!lo|bridge|usbus|bond).*/receiver/data" color="0xB3A52D" />
diff --git a/x11/kde4-workspace/files/patch-ksysguard_gui_ksysguard.cpp b/x11/kde4-workspace/files/patch-ksysguard_gui_ksysguard.cpp
new file mode 100644
index 000000000000..071689cb5fcc
--- /dev/null
+++ b/x11/kde4-workspace/files/patch-ksysguard_gui_ksysguard.cpp
@@ -0,0 +1,73 @@
+* More detailed Memory stats in the KSysGuard's Status Bar
+*
+* Make the the Status Bar elements reasonably proportional in size
+*
+--- ksysguard/gui/ksysguard.cpp.orig 2015-06-26 03:17:21 UTC
++++ ksysguard/gui/ksysguard.cpp
+@@ -93,19 +93,21 @@ TopLevel::TopLevel()
+ /* Create the status bar. It displays some information about the
+ * number of processes and the memory consumption of the local
+ * host. */
+- const int STATUSBAR_STRETCH=1;
+-
+ sbProcessCount = new QLabel();
+- statusBar()->addWidget( sbProcessCount, STATUSBAR_STRETCH );
++ sbProcessCount->setAlignment( Qt::AlignHCenter );
++ statusBar()->addWidget( sbProcessCount, 3 ); // 1 long label + 1 value = 3
+
+ sbCpuStat = new QLabel();
+- statusBar()->addWidget( sbCpuStat, STATUSBAR_STRETCH );
++ sbCpuStat->setAlignment( Qt::AlignHCenter );
++ statusBar()->addWidget( sbCpuStat, 2 ); // 1 short label + 1 value = 2
+
+ sbMemTotal = new QLabel();
+- statusBar()->addWidget( sbMemTotal, STATUSBAR_STRETCH );
++ sbMemTotal->setAlignment( Qt::AlignHCenter );
++ statusBar()->addWidget( sbMemTotal, 5 ); // 1 label + 4 values = 5
+
+ sbSwapTotal = new QLabel();
+- statusBar()->addWidget( sbSwapTotal, STATUSBAR_STRETCH );
++ sbSwapTotal->setAlignment( Qt::AlignHCenter );
++ statusBar()->addWidget( sbSwapTotal, 3 ); // 1 label + 2 values = 3
+
+ statusBar()->hide();
+
+@@ -453,11 +455,7 @@ void TopLevel::answerReceived( int id, c
+
+ case 4:
+ mUsedApplication = answer.toLongLong();
+- //Use a multi-length string
+- s = i18nc( "Arguments are formatted byte sizes (used/total)", "Memory: %1 / %2" "\xc2\x9c" "Mem: %1 / %2" "\xc2\x9c" "Mem: %1" "\xc2\x9c" "%1",
+- KGlobal::locale()->formatByteSize( mUsedApplication*1024),
+- KGlobal::locale()->formatByteSize( (mFree+mUsedTotal)*1024 ) );
+- sbMemTotal->setText( s );
++ setMemInfo( mUsedApplication, mUsedTotal, mFree, unit );
+ break;
+
+ case 5:
+@@ -477,6 +475,17 @@ void TopLevel::answerReceived( int id, c
+ }
+ }
+
++void TopLevel::setMemInfo(qlonglong usedapps, qlonglong usedtotal, qlonglong free, const QString & )
++{
++ QString msg;
++ msg = i18nc( "Arguments are formatted byte sizes (used/total)", "Memory: (K %4 + U %3) %1 / %2" "\xc2\x9c" "Memory: (U %3) %1 / %2" "\xc2\x9c" "Memory: %1 / %2" "\xc2\x9c" "Mem: %1 / %2" "\xc2\x9c" "Mem: %1" "\xc2\x9c" "%1",
++ KGlobal::locale()->formatByteSize( usedtotal*1024 ),
++ KGlobal::locale()->formatByteSize( (free+usedtotal)*1024 ),
++ KGlobal::locale()->formatByteSize( usedapps*1024 ),
++ KGlobal::locale()->formatByteSize( (usedtotal-usedapps)*1024 ) );
++ sbMemTotal->setText( msg );
++}
++
+ void TopLevel::setSwapInfo( qlonglong used, qlonglong free, const QString & )
+ {
+ QString msg;
+@@ -487,7 +496,6 @@ void TopLevel::setSwapInfo( qlonglong us
+ KGlobal::locale()->formatByteSize( used*1024 ),
+ KGlobal::locale()->formatByteSize( (free+used)*1024) );
+ }
+-
+ sbSwapTotal->setText( msg );
+ }
+
diff --git a/x11/kde4-workspace/files/patch-ksysguard_gui_ksysguard.h b/x11/kde4-workspace/files/patch-ksysguard_gui_ksysguard.h
new file mode 100644
index 000000000000..8afa4d9b3225
--- /dev/null
+++ b/x11/kde4-workspace/files/patch-ksysguard_gui_ksysguard.h
@@ -0,0 +1,12 @@
+* Add the detailed setMemInfo used in ksysguard.cpp
+*
+--- ksysguard/gui/ksysguard.h.orig 2015-06-26 03:17:21 UTC
++++ ksysguard/gui/ksysguard.h
+@@ -77,6 +77,7 @@ class TopLevel : public KXmlGuiWindow, p
+ void configureCurrentSheet();
+
+ private:
++ void setMemInfo( qlonglong, qlonglong, qlonglong, const QString& );
+ void setSwapInfo( qlonglong, qlonglong, const QString& );
+ void changeEvent( QEvent * event );
+ void retranslateUi();
diff --git a/x11/kde4-workspace/files/patch-kwin_opengltest_CMakeLists.txt b/x11/kde4-workspace/files/patch-kwin_opengltest_CMakeLists.txt
index be76904999e2..f9d589472c79 100644
--- a/x11/kde4-workspace/files/patch-kwin_opengltest_CMakeLists.txt
+++ b/x11/kde4-workspace/files/patch-kwin_opengltest_CMakeLists.txt
@@ -1,4 +1,4 @@
---- kwin/opengltest/CMakeLists.txt.orig 2014-11-06 22:36:58 UTC
+--- kwin/opengltest/CMakeLists.txt.orig 2015-06-26 03:17:21 UTC
+++ kwin/opengltest/CMakeLists.txt
@@ -2,9 +2,11 @@
diff --git a/x11/kde4-workspace/files/patch-plasma_desktop_toolboxes_desktoptoolbox.cpp b/x11/kde4-workspace/files/patch-plasma_desktop_toolboxes_desktoptoolbox.cpp
new file mode 100644
index 000000000000..9c761bd9aff2
--- /dev/null
+++ b/x11/kde4-workspace/files/patch-plasma_desktop_toolboxes_desktoptoolbox.cpp
@@ -0,0 +1,25 @@
+* Hide the desktop toolbox (aka "cashew") when widgets are locked
+*
+--- plasma/desktop/toolboxes/desktoptoolbox.cpp.orig 2015-06-26 03:17:21 UTC
++++ plasma/desktop/toolboxes/desktoptoolbox.cpp
+@@ -177,6 +177,8 @@ void DesktopToolBox::init()
+ connect(Plasma::Theme::defaultTheme(), SIGNAL(themeChanged()),
+ this, SLOT(updateTheming()));
+ Plasma::ToolTipManager::self()->registerWidget(this);
++ QObject::connect(m_containment, SIGNAL(immutabilityChanged(Plasma::ImmutabilityType)),
++ this, SLOT(immutabilityChanged(Plasma::ImmutabilityType)));
+
+ if (KAuthorized::authorizeKAction("logout")) {
+ QAction *action = new QAction(i18n("Leave..."), this);
+@@ -761,6 +763,11 @@ void DesktopToolBox::toggle()
+ setShowing(!isShowing());
+ }
+
++void DesktopToolBox::immutabilityChanged(Plasma::ImmutabilityType immutability)
++{
++ setVisible(immutability == Plasma::Mutable);
++}
++
+ void DesktopToolBox::adjustBackgroundBorders() const
+ {
+ Plasma::FrameSvg *background = const_cast<Plasma::FrameSvg *>(m_background);
diff --git a/x11/kde4-workspace/files/patch-plasma_desktop_toolboxes_desktoptoolbox.h b/x11/kde4-workspace/files/patch-plasma_desktop_toolboxes_desktoptoolbox.h
new file mode 100644
index 000000000000..07e35d50d86d
--- /dev/null
+++ b/x11/kde4-workspace/files/patch-plasma_desktop_toolboxes_desktoptoolbox.h
@@ -0,0 +1,12 @@
+* Add handler for change of mutability of the desktop toolbox
+*
+--- plasma/desktop/toolboxes/desktoptoolbox.h.orig 2015-06-26 03:17:21 UTC
++++ plasma/desktop/toolboxes/desktoptoolbox.h
+@@ -81,6 +81,7 @@ protected Q_SLOTS:
+ * show/hide the toolbox
+ */
+ void toggle();
++ void immutabilityChanged(Plasma::ImmutabilityType immutability);
+
+ // basic desktop controls
+ void startLogout();
diff --git a/x11/kde4-workspace/files/patch-powerdevil__daemon__backends__upower__xrandrbrightness.cpp b/x11/kde4-workspace/files/patch-powerdevil__daemon__backends__upower__xrandrbrightness.cpp
index 8883b4e1c9df..53fa3cbebf8e 100644
--- a/x11/kde4-workspace/files/patch-powerdevil__daemon__backends__upower__xrandrbrightness.cpp
+++ b/x11/kde4-workspace/files/patch-powerdevil__daemon__backends__upower__xrandrbrightness.cpp
@@ -1,6 +1,6 @@
---- ./powerdevil/daemon/backends/upower/xrandrbrightness.cpp.orig 2012-11-30 08:24:40.000000000 +0100
-+++ ./powerdevil/daemon/backends/upower/xrandrbrightness.cpp 2013-01-22 20:44:13.303230302 +0100
-@@ -69,6 +69,9 @@
+--- powerdevil/daemon/backends/upower/xrandrbrightness.cpp.orig 2015-06-26 03:17:21 UTC
++++ powerdevil/daemon/backends/upower/xrandrbrightness.cpp
+@@ -62,6 +62,9 @@ XRandrBrightness::XRandrBrightness()
qWarning("No available Randr resources");
return;
}
@@ -10,7 +10,7 @@
}
XRandrBrightness::~XRandrBrightness()
-@@ -85,7 +88,7 @@
+@@ -89,7 +92,7 @@ bool XRandrBrightness::isSupported() con
float XRandrBrightness::brightness() const
{
diff --git a/x11/kde4-workspace/files/patch-startkde.cmake b/x11/kde4-workspace/files/patch-startkde.cmake
index 38cfee602f9f..e322d8a68db9 100644
--- a/x11/kde4-workspace/files/patch-startkde.cmake
+++ b/x11/kde4-workspace/files/patch-startkde.cmake
@@ -1,12 +1,12 @@
---- startkde.cmake.orig 2009-10-07 08:37:24.000000000 +1100
-+++ startkde.cmake 2009-12-28 10:02:07.133352180 +1000
-@@ -337,7 +337,8 @@
- fi
+--- startkde.cmake.orig 2015-06-26 03:17:21 UTC
++++ startkde.cmake
+@@ -271,7 +271,8 @@ export XDG_DATA_DIRS
+ # Make sure that D-Bus is running
# D-Bus autolaunch is broken
if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then
- eval `dbus-launch --sh-syntax --exit-with-session`
+ uuid="`dbus-uuidgen --get`"
+ eval `dbus-launch --sh-syntax --exit-with-session --autolaunch $uuid`
fi
- if qdbus >/dev/null 2>/dev/null; then
+ if $qdbus >/dev/null 2>/dev/null; then
: # ok
diff --git a/x11/kde4-workspace/files/patch-usbview b/x11/kde4-workspace/files/patch-usbview
index b6da2e814a38..9c56664bb6ce 100644
--- a/x11/kde4-workspace/files/patch-usbview
+++ b/x11/kde4-workspace/files/patch-usbview
@@ -4,7 +4,7 @@
Old code probably works on NetBSD, but let it use libusb-1 as well.
Use DeviceNotifier instead of polling.
---- /dev/null
+--- cmake/modules/FindLibUSB1.cmake.orig 2016-12-13 11:26:31 UTC
+++ cmake/modules/FindLibUSB1.cmake
@@ -0,0 +1,21 @@
+# - Try to find libusb v1.0 library
@@ -28,7 +28,7 @@
+find_package_handle_standard_args(LIBUSB1 DEFAULT_MSG LIBUSB1_LIBRARY LIBUSB1_INCLUDE_DIR)
+
+mark_as_advanced(LIBUSB1_INCLUDE_DIR LIBUSB1_LIBRARY)
---- kinfocenter/Modules/usbview/CMakeLists.txt
+--- kinfocenter/Modules/usbview/CMakeLists.txt.orig 2015-06-26 03:17:21 UTC
+++ kinfocenter/Modules/usbview/CMakeLists.txt
@@ -1,15 +1,25 @@
+macro_optional_find_package(LibUSB1)
@@ -58,12 +58,12 @@
install(TARGETS kcm_usb DESTINATION ${PLUGIN_INSTALL_DIR} )
---- /dev/null
+--- kinfocenter/Modules/usbview/config-kcmusb.h.cmake.orig 2016-12-13 11:26:31 UTC
+++ kinfocenter/Modules/usbview/config-kcmusb.h.cmake
@@ -0,0 +1,2 @@
+/* Defined if you have libusb */
+#cmakedefine HAVE_LIBUSB1 1
---- kinfocenter/Modules/usbview/kcmusb.cpp
+--- kinfocenter/Modules/usbview/kcmusb.cpp.orig 2015-06-26 03:17:21 UTC
+++ kinfocenter/Modules/usbview/kcmusb.cpp
@@ -12,7 +12,6 @@
#include <QLayout>
@@ -81,7 +81,7 @@
#include <KPluginFactory>
#include <KPluginLoader>
-@@ -63,11 +63,8 @@ USBViewer::USBViewer(QWidget *parent, const QVariantList &) :
+@@ -63,11 +63,8 @@ USBViewer::USBViewer(QWidget *parent, co
_details = new QTextEdit(splitter);
_details->setReadOnly(true);
@@ -95,7 +95,7 @@
connect(_devices, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), this, SLOT(selectionChanged(QTreeWidgetItem*)));
KAboutData *about = new KAboutData(I18N_NOOP("kcmusb"), 0, ki18n("KDE USB Viewer"),
-@@ -113,8 +110,12 @@ static void delete_recursive(QTreeWidgetItem *item, const QMap<int, QTreeWidgetI
+@@ -113,8 +110,12 @@ static void delete_recursive(QTreeWidget
void USBViewer::refresh() {
QMap<int, QTreeWidgetItem*> new_items;
@@ -108,7 +108,7 @@
int level = 0;
bool found = true;
---- kinfocenter/Modules/usbview/usbdevices.cpp
+--- kinfocenter/Modules/usbview/usbdevices.cpp.orig 2015-06-26 03:17:21 UTC
+++ kinfocenter/Modules/usbview/usbdevices.cpp
@@ -27,9 +27,9 @@
@@ -131,7 +131,7 @@
static QString catFile(QString fname) {
char buffer[256];
QString result;
-@@ -129,6 +130,7 @@ void USBDevice::parseLine(const QString& line) {
+@@ -129,6 +130,7 @@ void USBDevice::parseLine(const QString&
} else if (line.startsWith("P:"))
sscanf(line.toLocal8Bit().data(), "P: Vendor=%x ProdID=%x Rev=%x.%x", &_vendorID, &_prodID, &_revMajor, &_revMinor);
}
@@ -275,7 +275,7 @@
bool USBDevice::parse(const QString &fname) {
_devices.clear();
-@@ -290,146 +362,19 @@ bool USBDevice::parseSys(const QString &dname) {
+@@ -290,146 +362,19 @@ bool USBDevice::parseSys(const QString &
return d.count();
}
@@ -428,7 +428,7 @@
-#endif // !(defined(Q_OS_FREEBSD) || defined(Q_OS_NETBSD))
+#endif // defined(Q_OS_LINUX)
+#endif // defined(HAVE_LIBUSB1)
---- kinfocenter/Modules/usbview/usbdevices.h
+--- kinfocenter/Modules/usbview/usbdevices.h.orig 2015-06-26 03:17:21 UTC
+++ kinfocenter/Modules/usbview/usbdevices.h
@@ -14,18 +14,9 @@
#include <QList>