UI improvements (linux)
Change-Id: Id1a03f6bc500d6ecc78cd04cf4250a177120f1a8
diff --git a/linux/Resources/status.xslt b/linux/Resources/status.xslt
index bf33e49..8192628 100644
--- a/linux/Resources/status.xslt
+++ b/linux/Resources/status.xslt
@@ -1,28 +1,20 @@
<xsl:stylesheet version = '2.0'
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
-<xsl:template match="/ndnd">
-<html><body>
-<xsl:apply-templates select="forwarding/fentry" />
-</body></html>
+<xsl:template match="/">
+<stats>
+ <data>
+ <in><xsl:value-of select="sum(/ndnd/faces/face/meters/datain/total)" /></in>
+ <out><xsl:value-of select="sum(/ndnd/faces/face/meters/dataout/total)" /></out>
+ <!-- <in><xsl:value-of select="sum(/ndnd/faces/face/meters/datain/persec)" /></in> -->
+ <!-- <out><xsl:value-of select="sum(/ndnd/faces/face/meters/dataout/persec)" /></out> -->
+ </data>
+ <interests>
+ <in><xsl:value-of select="sum(/ndnd/faces/face/meters/intrin/total)" /></in>
+ <out><xsl:value-of select="sum(/ndnd/faces/face/meters/introut/total)" /></out>
+ <!-- <in><xsl:value-of select="sum(/ndnd/faces/face/meters/intrin/persec)" /></in> -->
+ <!-- <out><xsl:value-of select="sum(/ndnd/faces/face/meters/introut/persec)" /></out> -->
+ </interests>
+</stats>
</xsl:template>
-
-<xsl:template match="fentry">
-<xsl:apply-templates select="dest/faceid" />
-<xsl:text> </xsl:text>
-<xsl:value-of select="prefix"/>
-<br/>
-</xsl:template>
-
-<xsl:template match="faceid">
-<xsl:variable name="id"><xsl:value-of select="." /></xsl:variable>
-<b>face: <xsl:copy-of select="$id" />
-
-<xsl:choose>
- <xsl:when test="count(//face/ip[../faceid=$id]) > 0"> (<xsl:value-of select="//face/ip[../faceid=$id]" />)
- </xsl:when>
- <xsl:otherwise> (app)</xsl:otherwise>
-</xsl:choose></b>
-</xsl:template>
-
</xsl:stylesheet>
diff --git a/linux/resource.qrc b/linux/resource.qrc
index 77511fa..e39ebb1 100644
--- a/linux/resource.qrc
+++ b/linux/resource.qrc
@@ -1,7 +1,5 @@
<RCC>
<qresource prefix="/resource">
- <file>Resources/icon1.png</file>
- <file>Resources/FlatConnected.png</file>
<file>Resources/emblem-dropbox-unsyncable.png</file>
<file>Resources/emblem-system.png</file>
<file>Resources/emblem-web.png</file>
@@ -9,9 +7,9 @@
<file>Resources/mail-send-receive.png</file>
<file>Resources/preferences-desktop.png</file>
<file>Resources/system-run.png</file>
- <file>Resources/status.xslt</file>
<file>Resources/icon-connected-white.png</file>
<file>Resources/icon-disconnected-white.png</file>
<file>Resources/status-to-fib.xslt</file>
+ <file>Resources/status.xslt</file>
</qresource>
</RCC>
diff --git a/linux/tray-menu.cpp b/linux/tray-menu.cpp
index daf28d5..f345828 100644
--- a/linux/tray-menu.cpp
+++ b/linux/tray-menu.cpp
@@ -27,6 +27,8 @@
#include <QtXml>
#include <QStandardItemModel>
#include <QDir>
+#include <QWidgetAction>
+#include <QTextStream>
TrayMenu::TrayMenu(QWidget *parent) :
QMainWindow(parent),
@@ -232,9 +234,14 @@
trayIconMenu->addSeparator();
- QAction *displayStatus = new QAction(tr("Status"), this);
- connect(displayStatus, SIGNAL(triggered()), this, SLOT(displayPopup()));
+ displayStatus = new QAction(" Sent / Recv ", this);
+ //connect(displayStatus, SIGNAL(triggered()), this, SLOT(displayPopup()));
trayIconMenu->addAction(displayStatus);
+ interestSentRecv = new QAction("Interests 0 / 0", this);
+ trayIconMenu->addAction(interestSentRecv);
+ dataSentRecv = new QAction("Data 0 / 0", this);
+ trayIconMenu->addAction(dataSentRecv);
+
trayIconMenu->addSeparator();
@@ -246,6 +253,22 @@
connect(close, SIGNAL(triggered()), this, SLOT(confirmQuit()));
trayIconMenu->addAction(close);
+
+
+
+ /*QWidgetAction * wa = new QWidgetAction(this);
+ wa->setDefaultWidget(new QPushButton("Default"));
+
+ trayIconMenu->setDefaultAction(wa);
+*/
+ //trayIconMenu->addAction();
+ /*QVBoxLayout *layout = new QVBoxLayout(wa->defaultWidget());
+
+ QLineEdit *edit = new QLineEdit("", wa->defaultWidget());
+ layout->addWidget(edit);
+
+ trayIconMenu->addAction(wa);*/
+
trayIcon = new QSystemTrayIcon(this);
trayIcon->setContextMenu(trayIconMenu);
@@ -398,6 +421,62 @@
daemonStarted = true;
setIcon(true);
statusIndicator->setText(tr("Active"));
+ //qDebug() << statusXml;
+ QString interestIn = statusXml.mid(statusXml.indexOf("<in>")+4, statusXml.indexOf("</in>") - (statusXml.indexOf("<in>")+4));
+ QString interestOut = statusXml.mid(statusXml.indexOf("<out>")+5, statusXml.indexOf("</out>") - (statusXml.indexOf("<out>")+5));
+ QString dataIn = statusXml.mid(statusXml.lastIndexOf("<in>")+4, statusXml.lastIndexOf("</in>") - (statusXml.lastIndexOf("<in>")+4));
+ QString dataOut = statusXml.mid(statusXml.lastIndexOf("<out>")+5, statusXml.lastIndexOf("</out>") - (statusXml.lastIndexOf("<out>")+5));
+
+ int i = 0;
+ int k = 0;
+ if((dataOut.length() - interestOut.length()) > 0)
+ {
+ i = dataOut.length() - interestOut.length();
+ i*=2; //because space takes less space than a letter
+ }
+
+ if((interestOut.length() - dataOut.length()) > 0)
+ {
+ k = interestOut.length() - dataOut.length();
+ k*=2; //because space takes less space than a letter
+ }
+
+ QString interestStats = QString("%1%2%3%4").arg("Interests",-16,' ').arg(interestOut,6+i,' ').arg(" / ",3).arg(interestIn,-6,' ');
+ QString dataStats = QString("%1%2%3%4").arg("Data",-20,' ').arg(dataOut,6+k,' ').arg(" / ",3).arg(dataIn,-6,' ');
+
+ //Now I try to align header "Sent / Recv" centrally with the upper line
+ QString padding;
+ for(int j = 0; j < interestStats.indexOf(interestOut); j++)
+ {
+ if(interestStats.at(j)==' ')
+ padding +=" ";
+ else
+ padding += " "; //because space takes less space than a letter
+ }
+
+ QString header;
+ int m = 0;
+ if(interestOut.length() - QString("Sent").length() > 0)
+ {
+ m = interestOut.length() - QString("Sent").length();
+ m *=3;
+ //qDebug() << "m=" << m;
+ header = QString("%1%2").arg(padding).arg(" Sent / Recv",QString(" Sent / Recv").length() + m,' ');
+ }
+ else if(interestOut.length() - QString("Sent").length() < 0)
+ {
+ //qDebug() << "truncating";
+ padding.truncate(padding.length()-(QString("Sent").length() - interestOut.length()));
+ header = padding + "Sent / Recv";
+ }
+ else
+ {
+ header = padding + " Sent / Recv";
+ }
+
+ interestSentRecv->setText(interestStats);
+ dataSentRecv->setText(dataStats);
+ displayStatus->setText(header);
}
query.setQuery(QUrl("qrc:/resource/Resources/status-to-fib.xslt")); // TODO: I suspect it's being read from HDD each time
diff --git a/linux/tray-menu.h b/linux/tray-menu.h
index a40faca..0badef0 100644
--- a/linux/tray-menu.h
+++ b/linux/tray-menu.h
@@ -82,6 +82,9 @@
int selectedRow;
QAction *statusIndicator;
+ QAction *displayStatus;
+ QAction *interestSentRecv;
+ QAction *dataSentRecv;
QAction *open;
QAction *close;
QAction *openGeneralSettings;