From d2be02fceb3b2f1cd2fe4720560acc85a6c331be Mon Sep 17 00:00:00 2001 From: Nils Schwabe Date: Mon, 31 Mar 2014 16:32:44 +0200 Subject: Help/News improvement, added ini settings, made some translations for new text elemtents, cleaned code --- src/choosersettings.cpp | 57 +++++++++++++ src/choosersettings.h | 30 +++++++ src/dialog.cpp | 61 +++++++------- src/dialog.h | 3 + src/globals.cpp | 2 + src/globals.h | 2 + src/i18n/de.ts | 173 +++++++++++++++++++++++++++++++-------- src/i18n/pt.ts | 196 ++++++++++++++++++++++++++++++++++++++------- src/main.cpp | 38 +++++---- src/sessionsiconholder.cpp | 3 - src/sessiontreemodel.cpp | 1 - src/ui/dialog.ui | 2 +- 12 files changed, 451 insertions(+), 117 deletions(-) create mode 100644 src/choosersettings.cpp create mode 100644 src/choosersettings.h (limited to 'src') diff --git a/src/choosersettings.cpp b/src/choosersettings.cpp new file mode 100644 index 0000000..2b8b9ac --- /dev/null +++ b/src/choosersettings.cpp @@ -0,0 +1,57 @@ +/* + * choosersettings.cpp + * + * Created on: Mar 24, 2014 + * Author: nils + */ + +#include "choosersettings.h" +#include "globals.h" + +bool ChooserSettings::settingsLoaded = false; +ChooserSettings* ChooserSettings::chooserSettings = NULL; + +ChooserSettings::ChooserSettings() { + // test (and make) directory + QDir saveFileDir(QFileInfo(previousSessionFile).absoluteDir()); + if (!saveFileDir.exists()) { + if (!saveFileDir.mkpath(saveFileDir.path())) { + return; + } + } + + settings = new QSettings(previousSessionFile + ".ini", QSettings::IniFormat); + settings->setIniCodec("UTF-8"); + + if (settings->status() != QSettings::NoError) { + if (debugMode) { + qDebug() << "Settings: " << previousSessionFile << " contains erros."; + } + return; + } + + settingsLoaded = true; +} + +ChooserSettings::~ChooserSettings() { + settings->deleteLater(); +} + +QString ChooserSettings::getSetting(QString key) { + if (!settingsLoaded) { + chooserSettings = new ChooserSettings(); + if (!settingsLoaded) return ""; + } + + return chooserSettings->settings->value(key).toString(); +} + +bool ChooserSettings::setSetting(QString key, QString value) { + if (!settingsLoaded) { + chooserSettings = new ChooserSettings(); + if (!settingsLoaded) return false; + } + chooserSettings->settings->setValue(key, value); +// chooserSettings->settings->sync(); + return true; +} diff --git a/src/choosersettings.h b/src/choosersettings.h new file mode 100644 index 0000000..74e01ab --- /dev/null +++ b/src/choosersettings.h @@ -0,0 +1,30 @@ +/* + * choosersettings.h + * + * Created on: Mar 24, 2014 + * Author: nils + */ + +#ifndef CHOOSERSETTINGS_H_ +#define CHOOSERSETTINGS_H_ + +#include +#include +#include + +class ChooserSettings { +public: + static QString getSetting(QString key); + static bool setSetting(QString key, QString value); + +private: + static ChooserSettings* chooserSettings; + static bool settingsLoaded; + + QSettings* settings; + + ChooserSettings(); + virtual ~ChooserSettings(); +}; + +#endif /* CHOOSERSETTINGS_H_ */ diff --git a/src/dialog.cpp b/src/dialog.cpp index 4e65d16..6236208 100644 --- a/src/dialog.cpp +++ b/src/dialog.cpp @@ -202,6 +202,7 @@ bool Dialog::selectSession(const QString& name) { // change the tab onTabButtonChanged(tab); // set selection + ui->treeView->selectionModel()->clearSelection(); ui->treeView->selectionModel() ->setCurrentIndex(index, QItemSelectionModel::Select); return true; @@ -213,8 +214,10 @@ bool Dialog::selectSession(const QString& name) { } void Dialog::selectPreviousSession() { - qDebug() << "selecting previous session"; - selectSession(ChooserSettings::getSetting("last-session")); + if (!ChooserSettings::getSetting("last-session").isEmpty()) { + ui->treeView->clearSelection(); + selectSession(ChooserSettings::getSetting("last-session")); + } } void Dialog::startSession(const QString& name) { @@ -301,23 +304,16 @@ void Dialog::addSessionsAfterDownload(QNetworkReply* reply) { this->addLabelItem(QCoreApplication::instance()->translate("Dialog", "URL Error"), 1); return; } - if (debugMode) { qDebug() << "Used backup file " << xml_backup_filename; } - backup_file.close(); QList sessions = VSession::readXmlFile(xml_backup_filename); - qSort(sessions.begin(), sessions.end(), myLessThan); - this->addItems(sessions, 1); - } else { - QFile file(xml_filename); - if (!file.open(QIODevice::WriteOnly)) { if (debugMode) { qDebug() << "Could not write XML to " << xml_filename; @@ -326,11 +322,9 @@ void Dialog::addSessionsAfterDownload(QNetworkReply* reply) { } QByteArray data = reply->readAll(); - if (file.write(data) != data.length()) { return; } - file.close(); } @@ -373,7 +367,6 @@ void Dialog::treeView_selectionChanged(const QModelIndex& current, const QModelI ui->label_os->setText(vs->getAttribute("os", "param")); ui->label_os->setToolTip(vs->getAttribute("os", "param")); - //ui->textBrowser->setText(vs->getAttribute("long_description", "param")); QString description(vs->getAttribute("long_description", "param") + "\n\nKeywords: "); for (int i = 0; i < vs->keywords().length(); ++i) { description += vs->keywords()[i] + ", "; @@ -410,18 +403,6 @@ void Dialog::onTabButtonChanged(int tab) { // give focus to treeView ui->treeView->setFocus(); - // one button needs to be enabled - if (this->activeTab == tab) { - switch (tab) { - case 0: ui->tabButtonLocal->setChecked(true); break; - case 1: ui->tabButtonMyClasses->setChecked(true); break; - case 2: ui->tabButtonAllClasses->setChecked(true); break; - } - } - - - this->activeTab = tab; - // when button was pressed disable the other buttons if (tab == 0) { ui->tabButtonLocal->setChecked(true); @@ -442,26 +423,26 @@ void Dialog::onTabButtonChanged(int tab) { // load the new list setListModel(model_[tab]); + this->activeTab = tab; } void Dialog::on_filterEdit_textChanged() { SessionTreeModel *newModel; // filter the current model - if (ui->filterEdit->text() != "" && ui->filterEdit->text().length() > 2) { + if (ui->filterEdit->text() != "" && ui->filterEdit->text().replace(" ", "").length() > 2) { newModel = new SessionTreeModel(this); newModel->addItems(this->model_[activeTab]->lookForItem(ui->filterEdit->text())); } else { newModel = model_[activeTab]; } - setListModel(newModel); } void Dialog::setListModel(QAbstractItemModel *model) { if (ui->treeView->model() == model_[0] || ui->treeView->model() == model_[1] || ui->treeView->model() == model_[2]) { } else { - ui->treeView->model()->deleteLater(); + //ui->treeView->model()->deleteLater(); } ui->treeView->setModel(model); @@ -502,16 +483,18 @@ void Dialog::addNewsAfterDownload(QNetworkReply* reply) { QDateTime timestamp; timestamp.setTime_t(newsNode.firstChildElement("date").text().toInt()); - if (ChooserSettings::getSetting("last-news").toUInt() > timestamp.toTime_t()) { - return; - } - // format and print news ui->newsTextBrowser->setText(QString("

" + newsNode.firstChildElement("headline").text() + "

" + timestamp.toString(Qt::SystemLocaleShortDate) + "

" + newsNode.firstChildElement("info").text() + "

")); - on_helpNewsButton_clicked(); + if (ChooserSettings::getSetting("last-news").toUInt() < timestamp.toTime_t()) { + // show news if not seen before + on_helpNewsButton_clicked(); + } + + // update ini + ChooserSettings::setSetting("last-news", QString::number(timestamp.toTime_t())); } void Dialog::addHelpAfterDownload(QNetworkReply* reply) { @@ -521,14 +504,24 @@ void Dialog::addHelpAfterDownload(QNetworkReply* reply) { } return; } - QByteArray data = reply->readAll(); + QByteArray data = reply->readAll(); QDomDocument doc; + if (!doc.setContent(data)) { - qDebug() << "Help file contains errors."; + if (debugMode) { + qDebug() << "Help file contains errors."; + } return; } ui->helpTextBrowser->setText(QString(data)); +} +void Dialog::keyPressEvent(QKeyEvent* event) { + switch(event->key()) { + case Qt::Key_Return: this->on_pushButtonStart_clicked(); break; + case Qt::Key_Escape: this->on_pushButtonAbort_clicked(); break; + case Qt::Key_H: this->on_helpNewsButton_clicked(); break; + } } diff --git a/src/dialog.h b/src/dialog.h index d6391ac..f11b674 100644 --- a/src/dialog.h +++ b/src/dialog.h @@ -6,6 +6,8 @@ #include #include #include +#include + #include "session.h" #include "sessiontreemodel.h" @@ -58,6 +60,7 @@ class Dialog : public QDialog { void treeView_selectionChanged(const QModelIndex& current, const QModelIndex&); void on_helpNewsButton_clicked(); void onCenterTimer(); + void keyPressEvent(QKeyEvent * e); public slots: void addSessionsAfterDownload(QNetworkReply* reply); diff --git a/src/globals.cpp b/src/globals.cpp index 92026b8..6ff6aed 100644 --- a/src/globals.cpp +++ b/src/globals.cpp @@ -30,6 +30,8 @@ const QString iconsTempPath("/tmp/vmchooser2/icons/"); const QString xml_backup_filename("/tmp/vmchooser2/vmchooser2_backup.xml"); const QString xml_filename("/tmp/vmchooser2/vmchooser2.xml"); +QString urlBase; + bool myLessThan(Session* a, Session* b) { return *a < *b; } diff --git a/src/globals.h b/src/globals.h index 8215c19..00d10c5 100644 --- a/src/globals.h +++ b/src/globals.h @@ -48,6 +48,8 @@ extern const QString iconsTempPath; extern const QString xml_backup_filename; extern const QString xml_filename; +extern QString urlBase; + bool myLessThan(Session* a, Session* b); #endif diff --git a/src/i18n/de.ts b/src/i18n/de.ts index 25ecae9..7ac1550 100644 --- a/src/i18n/de.ts +++ b/src/i18n/de.ts @@ -4,7 +4,6 @@ Console - Usage: vmchooser [ OPTIONS | FILE ] -d, --default name of default session @@ -17,7 +16,7 @@ FILE can be a vmware .xml or an X .desktop file - Aufruf: vmchooser [ OPTIONEN | DATEI ] + Aufruf: vmchooser [ OPTIONEN | DATEI ] -d, --default Name der Standardsitzung -P, --pool Name der Umgebung @@ -31,114 +30,224 @@ FILE can be a vmware .xml or an X .desktop file - - vmchooser: failed to run session vmchooser: Fehler beim Start der Sitzung - vmchooser: invalid session file vmchooser: ungültige Sitzungsdatei - vmchooser: invlid size argument - vmchooser: ungültige Größenangabe + vmchooser: ungültige Größenangabe - vmchooser: no sessions found - vmchooser: keine Sitzungen gefunden + vmchooser: keine Sitzungen gefunden - vmchooser: external script %1 is not executable - vmchooser: externes Skript %1 ist nicht ausführbar + vmchooser: externes Skript %1 ist nicht ausführbar + + + Usage: vmchooser [ OPTIONS ] + + -d, --default name of default session + -c, --config alternative config file + -e, --env name of the environment + -f, --file direct boot .desktop file + -x, --xpath path of X Session .desktop files + -u, --url url of vmware .xml file + -s, --size window size <width>x<height> + -t, --theme theme + -b, --pvs show pvs options + -D, --debug print debug information + -v, --version print version and exit + -h, --help print usage information and exit + +FILE can be a vmware .xml or an X .desktop file + + Aufruf: vmchooser [ OPTIONS ] + + -d, --default Name der Default Session + -c, --config Alternative Config Datei + -e, --env Name der Desktopumgebung + -f, --file Boote .desktop file direkt + -x, --xpath Pfad zu X Session .desktop Dateien + -u, --url Basis URL zu list.php, news.php, help.php + -s, --size Fenster Größe <width>x<height> + -t, --theme theme + -b, --pvs Zeige pvs Optionen + -D, --debug Schaltehalte Debug ein + -v, --version Gibt Version aus (ohne Start) + -h, --help Gibt diese Hilfe Seite aus + + + vmchooser: no URL given + Fehlende URL + + + vmchooser: invalid URL + Ungültige URL + + + vmchooser: invalid size argument + Ungültige Größe Dialog - - vmchooser vmchooser - PVS Options PVS Einstellungen - VNC access by lecturer: VNC-Zugriff für Dozenten: - VNC access by others: VNC-Zugriff für andere: - Accept chat messages - Chat-Nachrichten akzeptieren + Chat-Nachrichten akzeptieren - Accept file transfers - Dateiübertragungen akzeptieren + Dateiübertragungen akzeptieren - Abort Abbrechen - Start Start - None kein Zugriff - View Only nur ansehen - Full Vollzugriff - Vmchooser failed to run the selected session! Vmchooser konnte die gewählte Sitzung nicht ausführen! - X Sessions - X-Sitzungen + X-Sitzungen - Virtual Sessions - Virtuelle Sitzungen + Virtuelle Sitzungen - Loading... Laden... - No Items Keine Einträge + + Help + Hilfe + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Loading...</p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Lädt...</p></body></html> + + + News + News + + + Local + Lokal + + + My Classes + Meine Kurse + + + All Classes + Alle Kurse + + + Filter: + Filter: + + + Details + Details + + + Description: + Beschreibung: + + + Name: + Name: + + + Creator: + Autor: + + + Operating System: + Betriebssystem: + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Click on an item on the left side for more infos.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Für mehr Infos auf einen Eintrag in der Liste klicken.</span></p></body></html> + + + Report Bug + Fehler melden + + + Help/News + Hilfe/News + + + URL Error + URL Error + + + Native + Nativ + + + Running on this machine. + Läuft auf diesem Rechner. + diff --git a/src/i18n/pt.ts b/src/i18n/pt.ts index d75f1f2..4782956 100755 --- a/src/i18n/pt.ts +++ b/src/i18n/pt.ts @@ -4,7 +4,6 @@ Console - Usage: vmchooser [ OPTIONS | FILE ] -d, --default name of default session @@ -17,7 +16,7 @@ FILE can be a vmware .xml or an X .desktop file - Uso: vmchooser [ OPÇOES | ARQUIVO ] + Uso: vmchooser [ OPÇOES | ARQUIVO ] -d, --(default) nome da sessão padrão -P, --(pool) nome do pool do ambiente @@ -31,105 +30,244 @@ ARQUIVO pode ser um arquivo xml do vmware ou do área de trabalho do X - - + + Usage: vmchooser [ OPTIONS ] + + -d, --default name of default session + -c, --config alternative config file + -e, --env name of the environment + -f, --file direct boot .desktop file + -x, --xpath path of X Session .desktop files + -u, --url url of vmware .xml file + -s, --size window size <width>x<height> + -t, --theme theme + -b, --pvs show pvs options + -D, --debug print debug information + -v, --version print version and exit + -h, --help print usage information and exit + +FILE can be a vmware .xml or an X .desktop file + + + + + vmchooser: failed to run session vmchooser: falhou ao executar a sessão - + vmchooser: invalid session file vmchooser: arquivo de sessão inválido - + + vmchooser: no URL given + + + + + vmchooser: invalid URL + + + + + vmchooser: invalid size argument + + + vmchooser: invlid size argument - vmchooser: argumento de tamanho inválido + vmchooser: argumento de tamanho inválido - vmchooser: no sessions found - vmchooser: nenhuma sessão encontrada + vmchooser: nenhuma sessão encontrada - vmchooser: external script %1 is not executable - vmchooser: o script externo %1 não é executável + vmchooser: o script externo %1 não é executável Dialog - + vmchooser seletor - + + Help + + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Loading...</p></body></html> + + + + + News + + + + + Local + + + + + My Classes + + + + + All Classes + + + + + Filter: + + + + + Details + + + + + Description: + + + + + Name: + + + + + Creator: + + + + + Operating System: + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Click on an item on the left side for more infos.</span></p></body></html> + + + + PVS Options Opções do PVS - + VNC access by lecturer: Acesso VNC para o Instrutor: - + VNC access by others: Acesso VNC para os demais: - + + Report Bug + + + + + Help/News + + + Accept chat messages - Aceitar mensagens instantâneas + Aceitar mensagens instantâneas - Accept file transfers - Aceitar transferência de arquivos + Aceitar transferência de arquivos - + Abort Interromper - + Start Iniciar - + None it's used for no access Nada - + View Only Apenar ver - + Full Total - + + + + Loading... + + + + + URL Error + + + + + No Items + + + + + Native + + + + + Running on this machine. + + + + Vmchooser failed to run the selected session! O seletor da VM falhou ao executar a sessão selecionada! - X Sessions - Sessões X + Sessões X - Virtual Sessions - Sessões Virtuais + Sessões Virtuais diff --git a/src/main.cpp b/src/main.cpp index f20564d..d55f01c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -120,11 +120,23 @@ int main(int argc, char *argv[]) { xSessionPath = settings.value("xpath").toString(); } // else keep default path - QString vSessionUrl = ""; if (cmdOptions.contains("url")) { - vSessionUrl = cmdOptions.value("url"); + urlBase = cmdOptions.value("url"); } else if (settings.contains("url")) { - vSessionUrl = settings.value("url").toString(); + urlBase = settings.value("url").toString(); + } else { + std::cerr << a.translate("Console", "vmchooser: no URL given").toUtf8().data() << std::endl; + return EXIT_FAILURE; + } + + /* PARSE URL */ + if (!urlBase.startsWith("http://")) { + std::cerr << a.translate("Console", "vmchooser: invalid URL").toUtf8().data() << std::endl; + return EXIT_FAILURE; + } else { + if (!urlBase.endsWith("/")) { + urlBase += "/"; + } } QString size; @@ -143,7 +155,7 @@ int main(int argc, char *argv[]) { } else if (!size.isEmpty()) { std::cerr << a.translate( "Console", - "vmchooser: invlid size argument").toUtf8().data() + "vmchooser: invalid size argument").toUtf8().data() << std::endl; return EXIT_FAILURE; } else { @@ -173,25 +185,21 @@ int main(int argc, char *argv[]) { Dialog w; /* DOWNLOAD VSESSIONS */ - HttpXmlDownloader httpxmldownloader; httpxmldownloader.connectSlot(&w, SLOT(addSessionsAfterDownload(QNetworkReply*))); - if (!vSessionUrl.isEmpty()) { - // read xml and add items later - httpxmldownloader.makeRequest(vSessionUrl); - } + // read xml and add items later + httpxmldownloader.makeRequest(urlBase + "list.php"); /* DOWNLOAD NEWS */ HttpXmlDownloader news_downloader; news_downloader.connectSlot(&w, SLOT(addNewsAfterDownload(QNetworkReply*))); - // TODO: url - news_downloader.makeRequest("http://localhost/news.php"); + news_downloader.makeRequest(urlBase + "news.php"); /* DOWNLOAD HELP-SECTION */ HttpXmlDownloader help_downloader; help_downloader.connectSlot(&w, SLOT(addHelpAfterDownload(QNetworkReply*))); - help_downloader.makeRequest("http://localhost/help.php"); + help_downloader.makeRequest(urlBase + "help.php"); w.setTheme(); @@ -213,17 +221,13 @@ int main(int argc, char *argv[]) { w.addItems(xsessions, 0); } - if (!vSessionUrl.isEmpty()) { - w.addLabelItem(a.translate("Dialog", "Loading..."), 1); - } + w.addLabelItem(a.translate("Dialog", "Loading..."), 1); QSettings SLXsettings(OPENSLXCONFIG, QSettings::NativeFormat); if ( SLXsettings.contains("SLX_BENCHMARK_VM") ) { QString vm = SLXsettings.value("SLX_BENCHMARK_VM").toString(); vm.remove('\''); w.startSession(vm); - } else { - w.selectSession(defaultSession); } w.show(); diff --git a/src/sessionsiconholder.cpp b/src/sessionsiconholder.cpp index 5f7c590..b52d93d 100644 --- a/src/sessionsiconholder.cpp +++ b/src/sessionsiconholder.cpp @@ -85,9 +85,6 @@ QIcon SessionsIconHolder::getIcon(const QUrl& url) { QString file_path = iconsTempPath + file_name; if (QFile::exists(file_path)) { - if (debugMode) { - qDebug() << "Loaded file from: " << file_path; - } QIcon icon(file_path); icons.insert(url.toString(), icon); return icon; diff --git a/src/sessiontreemodel.cpp b/src/sessiontreemodel.cpp index 722850e..3858ffe 100644 --- a/src/sessiontreemodel.cpp +++ b/src/sessiontreemodel.cpp @@ -188,7 +188,6 @@ QList SessionTreeModel::lookForItem(const QString& label) { } } else { QList items = label.split(" ", QString::SkipEmptyParts); - for (int i = 0; i < root_->childCount(); ++i) { SessionTreeItem* item = root_->child(i); if (item->session()->containsKeywords(items)) { diff --git a/src/ui/dialog.ui b/src/ui/dialog.ui index 55a1441..04fd93e 100644 --- a/src/ui/dialog.ui +++ b/src/ui/dialog.ui @@ -153,7 +153,7 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Heute gibt es nichts neues.</p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Loading...</p></body></html> -- cgit v1.2.3-55-g7522