summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/dialog.cpp24
-rw-r--r--src/dialog.h2
-rw-r--r--src/i18n/de.ts10
-rw-r--r--src/main.cpp3
-rw-r--r--src/sessiontreeitem.cpp4
-rw-r--r--src/sessiontreeitem.h1
-rw-r--r--src/sessiontreemodel.cpp47
-rw-r--r--src/sessiontreemodel.h2
8 files changed, 92 insertions, 1 deletions
diff --git a/src/dialog.cpp b/src/dialog.cpp
index 9367bf8..b48ff1b 100644
--- a/src/dialog.cpp
+++ b/src/dialog.cpp
@@ -84,6 +84,18 @@ void Dialog::addItems(const QList<Session*>& entries, const QString& section) {
ui->treeView->expandAll();
}
+void Dialog::addLabelItem(const QString& label, const QString& section) {
+ this->model_->addLabelItem(label, section);
+ ui->treeView->setModel(model_);
+ ui->treeView->expandAll();
+}
+
+void Dialog::removeItem(const QString& name, const QString& section) {
+ this->model_->removeItem(name, section);
+ ui->treeView->setModel(model_);
+ ui->treeView->expandAll();
+}
+
void Dialog::on_pushButtonAbort_clicked() {
close();
}
@@ -262,6 +274,8 @@ void Dialog::addSessionsAfterDownload(QNetworkReply* reply) {
if (debugMode) {
qDebug() << "Cannot read backup file " << backup_filename << " either";
}
+ this->removeItem(QCoreApplication::instance()->translate("Dialog", "Loading..."),QCoreApplication::instance()->translate("Dialog", "Virtual Sessions"));
+ this->addLabelItem(QCoreApplication::instance()->translate("Dialog", "URL Error"), QCoreApplication::instance()->translate("Dialog", "Virtual Sessions"));
return;
}
@@ -292,6 +306,14 @@ void Dialog::addSessionsAfterDownload(QNetworkReply* reply) {
file.close();
}
- this->addItems(VSession::readXmlFile(filename), QCoreApplication::instance()->translate("Dialog", "Virtual Sessions"));
+ const QList<Session*> sessions = VSession::readXmlFile(filename);
+
+ this->removeItem(QCoreApplication::instance()->translate("Dialog", "Loading..."),QCoreApplication::instance()->translate("Dialog", "Virtual Sessions"));
+
+ if (!sessions.isEmpty()) {
+ this->addItems(sessions, QCoreApplication::instance()->translate("Dialog", "Virtual Sessions"));
+ } else {
+ this->addLabelItem(QCoreApplication::instance()->translate("Dialog", "No Items"), QCoreApplication::instance()->translate("Dialog", "Virtual Sessions"));
+ }
}
diff --git a/src/dialog.h b/src/dialog.h
index 4627a8e..63f7c45 100644
--- a/src/dialog.h
+++ b/src/dialog.h
@@ -20,6 +20,8 @@ class Dialog : public QDialog {
explicit Dialog(QWidget *parent = 0);
~Dialog();
void addItems(const QList<Session*>&, const QString& section);
+ void addLabelItem(const QString& label, const QString& section);
+ void removeItem(const QString& name, const QString& section);
bool selectSession(const QString& name);
void selectPreviousSession();
void showSettingsPVS();
diff --git a/src/i18n/de.ts b/src/i18n/de.ts
index b920b73..25ecae9 100644
--- a/src/i18n/de.ts
+++ b/src/i18n/de.ts
@@ -130,5 +130,15 @@ FILE can be a vmware .xml or an X .desktop file
<source>Virtual Sessions</source>
<translation>Virtuelle Sitzungen</translation>
</message>
+ <message>
+ <location filename="../main.cpp" line="226"/>
+ <source>Loading...</source>
+ <translation>Laden...</translation>
+ </message>
+ <message>
+ <location filename="../dialog.cpp" line="271"/>
+ <source>No Items</source>
+ <translation>Keine Einträge</translation>
+ </message>
</context>
</TS>
diff --git a/src/main.cpp b/src/main.cpp
index 3c16e17..e9e8328 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -222,6 +222,9 @@ int main(int argc, char *argv[]) {
qSort(xsessions.begin(), xsessions.end(), myLessThan);
w.addItems(xsessions, a.translate("Dialog", "X Sessions"));
}
+
+ w.addLabelItem(a.translate("Dialog", "Loading..."), a.translate("Dialog", "Virtual Sessions"));
+
if (vsessions.size()) {
if (!(QFile::permissions(runVmScript) & QFile::ExeUser)) {
std::cerr << a.translate(
diff --git a/src/sessiontreeitem.cpp b/src/sessiontreeitem.cpp
index 45a4774..bdc3edf 100644
--- a/src/sessiontreeitem.cpp
+++ b/src/sessiontreeitem.cpp
@@ -17,6 +17,10 @@ void SessionTreeItem::appendChild(SessionTreeItem *item) {
children_.append(item);
}
+void SessionTreeItem::removeChild(SessionTreeItem *item) {
+ children_.removeOne(item);
+}
+
SessionTreeItem *SessionTreeItem::child(int row) {
return children_.value(row);
}
diff --git a/src/sessiontreeitem.h b/src/sessiontreeitem.h
index 77a1078..a95fb45 100644
--- a/src/sessiontreeitem.h
+++ b/src/sessiontreeitem.h
@@ -15,6 +15,7 @@ class SessionTreeItem {
~SessionTreeItem();
void appendChild(SessionTreeItem *child);
+ void removeChild(SessionTreeItem *child);
SessionTreeItem *child(int row);
int childCount() const;
diff --git a/src/sessiontreemodel.cpp b/src/sessiontreemodel.cpp
index 12eebf5..d63bab5 100644
--- a/src/sessiontreemodel.cpp
+++ b/src/sessiontreemodel.cpp
@@ -4,6 +4,7 @@
#include <QIcon>
#include <QResource>
#include <QString>
+#include <QtDebug>
#include "sessiontreeitem.h"
@@ -160,3 +161,49 @@ void SessionTreeModel::addItems(const QList<Session*>& sessions,
parentItem->appendChild(new SessionTreeItem(s, parentItem));
}
}
+
+void SessionTreeModel::addLabelItem(const QString& label, const QString& section) {
+ SessionTreeItem* parentItem;
+
+ bool sectionExists = false;
+
+ for (int i = 0; i < root_->childCount(); ++i) {
+ SessionTreeItem* item = root_->child(i);
+ if (item->text() == section) {
+ parentItem = item;
+ sectionExists = true;
+ break;
+ }
+ }
+
+ if (!sectionExists) {
+ parentItem = new SessionTreeItem(section, root_);
+ root_->appendChild(parentItem);
+ }
+
+ parentItem->appendChild(new SessionTreeItem(label, parentItem));
+}
+
+void SessionTreeModel::removeItem(const QString& name, const QString& section) {
+ SessionTreeItem* parentItem;
+
+ bool sectionExists = false;
+
+ for (int i = 0; i < root_->childCount(); ++i) {
+ SessionTreeItem* item = root_->child(i);
+ if (item->text() == section) {
+ parentItem = item;
+ sectionExists = true;
+ break;
+ }
+ }
+
+ if (sectionExists) {
+ for (int i = 0; i < parentItem->childCount(); ++i) {
+ SessionTreeItem* item = parentItem->child(i);
+ if (item->text() == name) {
+ parentItem->removeChild(item);
+ }
+ }
+ }
+}
diff --git a/src/sessiontreemodel.h b/src/sessiontreemodel.h
index b5d8ff8..a768bf1 100644
--- a/src/sessiontreemodel.h
+++ b/src/sessiontreemodel.h
@@ -26,6 +26,8 @@ class SessionTreeModel : public QAbstractItemModel {
int columnCount(const QModelIndex &parent = QModelIndex()) const;
void addItems(const QList<Session*>& sessions, const QString& section);
+ void addLabelItem(const QString& label, const QString& section);
+ void removeItem(const QString& name, const QString& section);
private: