aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFelix (xq) Queißner <git@mq32.de>2020-06-19 17:55:04 +0200
committerFelix (xq) Queißner <git@mq32.de>2020-06-19 17:55:04 +0200
commite716a44604dcfe0ed57d278cd4d2597bf328de03 (patch)
treeb0ddb57cbca3c4031cf8741690d78bd808e42090 /src
parent1eec0c9fa22e86225691e7892e9219e7d17d5c42 (diff)
downloadkristall-e716a44604dcfe0ed57d278cd4d2597bf328de03.tar.gz
Fixes non-updating status bar, fixes bug in the mime parser.
Diffstat (limited to 'src')
-rw-r--r--src/browsertab.cpp13
-rw-r--r--src/browsertab.hpp17
-rw-r--r--src/mainwindow.cpp23
-rw-r--r--src/mainwindow.hpp6
-rw-r--r--src/mimeparser.cpp20
-rw-r--r--src/mimeparser.hpp2
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 &param_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