aboutsummaryrefslogtreecommitdiff
path: root/mainwindow.cpp
diff options
context:
space:
mode:
authorFelix (xq) Queißner <git@mq32.de>2020-05-30 19:33:47 +0200
committerFelix (xq) Queißner <git@mq32.de>2020-05-30 19:33:47 +0200
commitea39cc542e17ce592dc3c4f2053d534bc458d88e (patch)
treec3c6a369d5b6d8a6a4e0b3e3667a56ca19e93173 /mainwindow.cpp
parent79ff338a3427a236ef53adf806c56616faa3426c (diff)
downloadkristall-ea39cc542e17ce592dc3c4f2053d534bc458d88e.tar.gz
More usability, survives conmans torture nearly with 100%
Diffstat (limited to 'mainwindow.cpp')
-rw-r--r--mainwindow.cpp63
1 files changed, 52 insertions, 11 deletions
diff --git a/mainwindow.cpp b/mainwindow.cpp
index 9e5c3df..75cdeba 100644
--- a/mainwindow.cpp
+++ b/mainwindow.cpp
@@ -12,36 +12,77 @@ MainWindow::MainWindow(QWidget *parent)
ui->setupUi(this);
this->statusBar()->addWidget(this->url_status);
+
+ this->favourites.load("./favourites.db");
+
+ ui->favourites_view->setModel(&favourites);
}
MainWindow::~MainWindow()
{
+ this->favourites.save("./favourites.db");
delete ui;
}
-void MainWindow::addEmptyTab()
+BrowserTab * MainWindow::addEmptyTab(bool focus_new)
{
- auto tab = std::make_unique<BrowserTab>(this);
+ BrowserTab * tab = new BrowserTab(this);
+ int index = this->ui->browser_tabs->addTab(tab, "Page");
+ if(focus_new) {
+ this->ui->browser_tabs->setCurrentIndex(index);
+ }
- this->ui->browser_tabs->addTab(tab.release(), "Page");
+ return tab;
}
-void MainWindow::addNewTab(QUrl const & url)
+BrowserTab * MainWindow::addNewTab(bool focus_new, QUrl const & url)
{
- auto tab = std::make_unique<BrowserTab>(this);
-
+ auto tab = addEmptyTab(focus_new);
tab->navigateTo(url);
-
- this->ui->browser_tabs->addTab(tab.release(), "Page");
+ return tab;
}
void MainWindow::setUrlPreview(const QUrl &url)
{
- if(url.isValid())
- this->url_status->setText(url.toString());
- else
+ if(url.isValid()) {
+ auto str = url.toString();
+ if(str.length() > 300) {
+ str = str.mid(0, 300) + "...";
+ }
+ this->url_status->setText(str);
+ }
+ else {
this->url_status->setText("");
+ }
+}
+
+
+void MainWindow::on_browser_tabs_currentChanged(int index)
+{
+ if(index >= 0) {
+ BrowserTab * tab = qobject_cast<BrowserTab*>(this->ui->browser_tabs->widget(index));
+
+ if(tab != nullptr) {
+ this->ui->outline_view->setModel(&tab->outline);
+ this->ui->outline_view->expandAll();
+ } else {
+ this->ui->outline_view->setModel(nullptr);
+ }
+ } else {
+ this->ui->outline_view->setModel(nullptr);
+ }
}
+void MainWindow::on_favourites_view_doubleClicked(const QModelIndex &index)
+{
+ if(auto url = this->favourites.get(index); url.isValid()) {
+ this->addNewTab(true, url);
+ }
+}
+
+void MainWindow::on_browser_tabs_tabCloseRequested(int index)
+{
+ delete this->ui->browser_tabs->widget(index);
+}