diff options
| author | Felix (xq) Queißner <git@mq32.de> | 2020-06-19 17:55:04 +0200 |
|---|---|---|
| committer | Felix (xq) Queißner <git@mq32.de> | 2020-06-19 17:55:04 +0200 |
| commit | e716a44604dcfe0ed57d278cd4d2597bf328de03 (patch) | |
| tree | b0ddb57cbca3c4031cf8741690d78bd808e42090 /src | |
| parent | 1eec0c9fa22e86225691e7892e9219e7d17d5c42 (diff) | |
| download | kristall-e716a44604dcfe0ed57d278cd4d2597bf328de03.tar.gz | |
Fixes non-updating status bar, fixes bug in the mime parser.
Diffstat (limited to 'src')
| -rw-r--r-- | src/browsertab.cpp | 13 | ||||
| -rw-r--r-- | src/browsertab.hpp | 17 | ||||
| -rw-r--r-- | src/mainwindow.cpp | 23 | ||||
| -rw-r--r-- | src/mainwindow.hpp | 6 | ||||
| -rw-r--r-- | src/mimeparser.cpp | 20 | ||||
| -rw-r--r-- | src/mimeparser.hpp | 2 |
6 files changed, 70 insertions, 11 deletions
diff --git a/src/browsertab.cpp b/src/browsertab.cpp index 6e18e07..783e9e3 100644 --- a/src/browsertab.cpp +++ b/src/browsertab.cpp @@ -332,9 +332,8 @@ void BrowserTab::on_requestComplete(const QByteArray &ref_data, const QString &m } } - this->current_mime = mime_text; - this->current_buffer = data; + this->current_buffer = ref_data; this->graphics_scene.clear(); this->ui->text_browser->setText(""); @@ -471,7 +470,10 @@ File Size: %2 QString title = this->current_location.toString(); emit this->titleChanged(title); - emit this->fileLoaded(ref_data.size(), mime_text, this->timer.elapsed()); + this->current_stats.file_size = ref_data.size(); + this->current_stats.mime_type = mime; + this->current_stats.loading_time = this->timer.elapsed(); + emit this->fileLoaded(this->current_stats); this->successfully_loaded = true; @@ -700,7 +702,10 @@ void BrowserTab::on_stop_button_clicked() void BrowserTab::on_requestProgress(qint64 transferred) { - emit this->fileLoaded(transferred, "Loading...", timer.elapsed()); + this->current_stats.file_size = transferred; + this->current_stats.mime_type = MimeType { }; + this->current_stats.loading_time = this->timer.elapsed(); + emit this->fileLoaded(this->current_stats); } void BrowserTab::on_back_button_clicked() diff --git a/src/browsertab.hpp b/src/browsertab.hpp index cc18d28..47a9871 100644 --- a/src/browsertab.hpp +++ b/src/browsertab.hpp @@ -17,12 +17,25 @@ #include "protocolhandler.hpp" +#include "mimeparser.hpp" + namespace Ui { class BrowserTab; } class MainWindow; +struct DocumentStats +{ + int loading_time = 0; // in ms + MimeType mime_type; + qint64 file_size = 0; + + bool isValid() const { + return mime_type.isValid(); + } +}; + class BrowserTab : public QWidget { Q_OBJECT @@ -57,7 +70,7 @@ public: signals: void titleChanged(QString const & title); void locationChanged(QUrl const & url); - void fileLoaded(qint64 fileSize, QString const & mime, int msec); + void fileLoaded(DocumentStats const & stats); private slots: void on_url_bar_returnPressed(); @@ -140,6 +153,8 @@ public: CryptoIdentity current_identitiy; bool is_internal_location; + + DocumentStats current_stats; }; #endif // BROWSERTAB_HPP diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 48405db..48895c2 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -179,13 +179,17 @@ void MainWindow::on_browser_tabs_currentChanged(int index) this->ui->outline_view->expandAll(); this->ui->history_view->setModel(&tab->history); + + this->setFileStatus(tab->current_stats); } else { this->ui->outline_view->setModel(nullptr); this->ui->history_view->setModel(nullptr); + this->setFileStatus(DocumentStats { }); } } else { this->ui->outline_view->setModel(nullptr); this->ui->history_view->setModel(nullptr); + this->setFileStatus(DocumentStats { }); } } @@ -345,6 +349,19 @@ void MainWindow::reloadTheme() } } +void MainWindow::setFileStatus(const DocumentStats &stats) +{ + if(stats.isValid()) { + this->file_size->setText(IoUtil::size_human(stats.file_size)); + this->file_mime->setText(stats.mime_type.toString()); + this->load_time->setText(QString("%1 ms").arg(stats.loading_time)); + } else { + this->file_size->setText(""); + this->file_mime->setText(""); + this->load_time->setText(""); + } +} + void MainWindow::on_actionSave_as_triggered() { BrowserTab * tab = qobject_cast<BrowserTab*>(this->ui->browser_tabs->currentWidget()); @@ -387,16 +404,14 @@ void MainWindow::on_actionAdd_to_favourites_triggered() } } -void MainWindow::on_tab_fileLoaded(qint64 fileSize, const QString &mime, int msec) +void MainWindow::on_tab_fileLoaded(DocumentStats const & stats) { auto * tab = qobject_cast<BrowserTab*>(sender()); if(tab != nullptr) { int index = this->ui->browser_tabs->indexOf(tab); assert(index >= 0); if(index == this->ui->browser_tabs->currentIndex()) { - this->file_size->setText(IoUtil::size_human(fileSize)); - this->file_mime->setText(mime); - this->load_time->setText(QString("%1 ms").arg(msec)); + setFileStatus(stats); } } } diff --git a/src/mainwindow.hpp b/src/mainwindow.hpp index f0c64ae..7f58034 100644 --- a/src/mainwindow.hpp +++ b/src/mainwindow.hpp @@ -12,6 +12,8 @@ #include "elidelabel.hpp" +#include "browsertab.hpp" + QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE @@ -72,7 +74,7 @@ private slots: void on_actionAdd_to_favourites_triggered(); - void on_tab_fileLoaded(qint64 fileSize, QString const & mime, int msec); + void on_tab_fileLoaded(DocumentStats const & stats); void on_focus_inputbar(); @@ -89,6 +91,8 @@ private slots: private: void reloadTheme(); + void setFileStatus(DocumentStats const & stats); + public: QApplication * application; DocumentStyle current_style; diff --git a/src/mimeparser.cpp b/src/mimeparser.cpp index dd254a4..b5f5fc3 100644 --- a/src/mimeparser.cpp +++ b/src/mimeparser.cpp @@ -15,6 +15,24 @@ QString MimeType::parameter(const QString ¶m_name, QString const & default_v return val; } +QString MimeType::toString() const +{ + if(isValid()) { + QString result = type; + if(not subtype.isEmpty()) + result += "/" + subtype; + for(auto const & key : parameters.keys()) { + result += "; "; + result += key; + result += "="; + result += parameters[key]; + } + return result; + } else { + return QString { }; + } +} + MimeType MimeParser::parse(const QString &mime_text) { MimeType type; @@ -22,7 +40,7 @@ MimeType MimeParser::parse(const QString &mime_text) QString arg_list; QString mime_part; - if(int idx = mime_text.indexOf(' '); idx >= 0) { + if(int idx = mime_text.indexOf(';'); idx >= 0) { arg_list = mime_text.mid(idx + 1).trimmed().toLower(); mime_part = mime_text.mid(0, idx).trimmed().toLower(); } else { diff --git a/src/mimeparser.hpp b/src/mimeparser.hpp index d76594b..861b890 100644 --- a/src/mimeparser.hpp +++ b/src/mimeparser.hpp @@ -17,6 +17,8 @@ struct MimeType bool isValid() const { return not type.isEmpty(); } + + QString toString() const; }; struct MimeParser |
