UI improvements (linux)
Change-Id: Id1a03f6bc500d6ecc78cd04cf4250a177120f1a8
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