diff --git a/src/kiwixapp.cpp b/src/kiwixapp.cpp index a72d6870..71130a26 100644 --- a/src/kiwixapp.cpp +++ b/src/kiwixapp.cpp @@ -435,21 +435,22 @@ void KiwixApp::createAction() } void KiwixApp::postInit() { - connect(getTabWidget(), &TabBar::libraryPageDisplayed, - this, &KiwixApp::disableItemsOnLibraryPage); + connect(getTabWidget(), &TabBar::tabDisplayed, + this, &KiwixApp::handleItemsState); emit(m_library.booksChanged()); connect(&m_library, &Library::booksChanged, this, &KiwixApp::updateNameMapper); - disableItemsOnLibraryPage(true); + handleItemsState(TabType::LibraryTab); } -void KiwixApp::disableItemsOnLibraryPage(bool libraryDisplayed) +void KiwixApp::handleItemsState(TabType tabType) { - KiwixApp::instance()->getAction(KiwixApp::ToggleReadingListAction)->setDisabled(libraryDisplayed); - KiwixApp::instance()->getAction(KiwixApp::FindInPageAction)->setDisabled(libraryDisplayed); - KiwixApp::instance()->getAction(KiwixApp::ZoomInAction)->setDisabled(libraryDisplayed); - KiwixApp::instance()->getAction(KiwixApp::ZoomOutAction)->setDisabled(libraryDisplayed); - KiwixApp::instance()->getAction(KiwixApp::ZoomResetAction)->setDisabled(libraryDisplayed); - KiwixApp::instance()->getAction(KiwixApp::RandomArticleAction)->setDisabled(libraryDisplayed); + auto libraryOrSettingsTab = (tabType == TabType::LibraryTab || tabType == TabType::SettingsTab); + KiwixApp::instance()->getAction(KiwixApp::ToggleReadingListAction)->setDisabled(libraryOrSettingsTab); + KiwixApp::instance()->getAction(KiwixApp::FindInPageAction)->setDisabled(libraryOrSettingsTab); + KiwixApp::instance()->getAction(KiwixApp::ZoomInAction)->setDisabled(libraryOrSettingsTab); + KiwixApp::instance()->getAction(KiwixApp::ZoomOutAction)->setDisabled(libraryOrSettingsTab); + KiwixApp::instance()->getAction(KiwixApp::ZoomResetAction)->setDisabled(libraryOrSettingsTab); + KiwixApp::instance()->getAction(KiwixApp::RandomArticleAction)->setDisabled(libraryOrSettingsTab); } void KiwixApp::updateNameMapper() diff --git a/src/kiwixapp.h b/src/kiwixapp.h index 60420063..212f1680 100644 --- a/src/kiwixapp.h +++ b/src/kiwixapp.h @@ -3,6 +3,7 @@ #include "library.h" #include "contentmanager.h" +#include "tabbar.h" #include "mainwindow.h" #include "kiwix/downloader.h" #include @@ -20,6 +21,7 @@ #include #include +typedef TabBar::TabType TabType; class KiwixApp : public QtSingleApplication { @@ -90,7 +92,7 @@ public slots: void openUrl(const QString& url, bool newTab=true); void openUrl(const QUrl& url, bool newTab=true); void printPage(); - void disableItemsOnLibraryPage(bool displayed); + void handleItemsState(TabType); void updateNameMapper(); void printVersions(std::ostream& out = std::cout); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 5a42f824..23d3b764 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -54,8 +54,10 @@ MainWindow::MainWindow(QWidget *parent) : connect(mp_ui->tabBar, &QTabBar::currentChanged, mp_ui->mainToolBar, &TopWidget::updateBackForwardButtons); - connect(mp_ui->tabBar, &TabBar::libraryPageDisplayed, - this, &MainWindow::when_libraryPageDisplayed); + connect(mp_ui->tabBar, &TabBar::tabDisplayed, + this, [=](TabType tabType) { + when_libraryPageDisplayed(tabType == TabType::LibraryTab); + }); connect(mp_ui->tabBar, &TabBar::currentTitleChanged, &(mp_ui->mainToolBar->getSearchBar()), &SearchBar::on_currentTitleChanged); diff --git a/src/tabbar.cpp b/src/tabbar.cpp index c0e11205..4f7e4c3b 100644 --- a/src/tabbar.cpp +++ b/src/tabbar.cpp @@ -65,7 +65,7 @@ TabBar::TabBar(QWidget *parent) : } int index = currentIndex() + 1; mp_stackedWidget->insertWidget(index, view); - emit libraryPageDisplayed(false); + emit tabDisplayed(TabType::SettingsTab); insertTab(index,QIcon(":/icons/settings.svg"), gt("settings")); QToolButton *tb = new QToolButton(this); tb->setDefaultAction(KiwixApp::instance()->getAction(KiwixApp::CloseTabAction)); @@ -321,18 +321,18 @@ void TabBar::onCurrentChanged(int index) if (qobject_cast(w)) { emit webActionEnabledChanged(QWebEnginePage::Back, false); emit webActionEnabledChanged(QWebEnginePage::Forward, false); - emit libraryPageDisplayed(false); + emit tabDisplayed(TabType::SettingsTab); QTimer::singleShot(0, [=](){emit currentTitleChanged("");}); } else if (auto zv = qobject_cast(w)) { auto view = zv->getWebView(); emit webActionEnabledChanged(QWebEnginePage::Back, view->isWebActionEnabled(QWebEnginePage::Back)); emit webActionEnabledChanged(QWebEnginePage::Forward, view->isWebActionEnabled(QWebEnginePage::Forward)); - emit libraryPageDisplayed(false); + emit tabDisplayed(TabType::ZimViewTab); QTimer::singleShot(0, [=](){emit currentTitleChanged(view->title());}); } else if (qobject_cast(w)) { emit webActionEnabledChanged(QWebEnginePage::Back, false); emit webActionEnabledChanged(QWebEnginePage::Forward, false); - emit libraryPageDisplayed(true); + emit tabDisplayed(TabType::LibraryTab); QTimer::singleShot(0, [=](){emit currentTitleChanged("");}); } else { diff --git a/src/tabbar.h b/src/tabbar.h index 4ff6cf0a..f5cc2bbf 100644 --- a/src/tabbar.h +++ b/src/tabbar.h @@ -15,6 +15,11 @@ class TabBar : public QTabBar { Q_OBJECT public: + enum class TabType { + LibraryTab, + ZimViewTab, + SettingsTab + }; TabBar(QWidget* parent=nullptr); void setStackedWidget(QStackedWidget* widget); @@ -51,7 +56,7 @@ class TabBar : public QTabBar signals: void webActionEnabledChanged(QWebEnginePage::WebAction action, bool enabled); - void libraryPageDisplayed(bool displayed); + void tabDisplayed(TabType tabType); void currentTitleChanged(const QString& title); public slots: