Skip to content

Commit

Permalink
Add enums to identify tabs
Browse files Browse the repository at this point in the history
kiwix-desktop didn't acknowledge the different types of tabs available earlier.
These enums provide a way to handle and customize the state of app's different elements based on tab content.
  • Loading branch information
juuz0 committed Jul 20, 2023
1 parent 878c72b commit bf4a0ed
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 18 deletions.
21 changes: 11 additions & 10 deletions src/kiwixapp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down
4 changes: 3 additions & 1 deletion src/kiwixapp.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

#include "library.h"
#include "contentmanager.h"
#include "tabbar.h"
#include "mainwindow.h"
#include "kiwix/downloader.h"
#include <kiwix/kiwixserve.h>
Expand All @@ -20,6 +21,7 @@
#include <mutex>
#include <iostream>

typedef TabBar::TabType TabType;

class KiwixApp : public QtSingleApplication
{
Expand Down Expand Up @@ -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);

Expand Down
6 changes: 4 additions & 2 deletions src/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
8 changes: 4 additions & 4 deletions src/tabbar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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));
Expand Down Expand Up @@ -321,18 +321,18 @@ void TabBar::onCurrentChanged(int index)
if (qobject_cast<SettingsView*>(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<ZimView*>(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<ContentManagerView*>(w)) {
emit webActionEnabledChanged(QWebEnginePage::Back, false);
emit webActionEnabledChanged(QWebEnginePage::Forward, false);
emit libraryPageDisplayed(true);
emit tabDisplayed(TabType::LibraryTab);
QTimer::singleShot(0, [=](){emit currentTitleChanged("");});
}
else {
Expand Down
7 changes: 6 additions & 1 deletion src/tabbar.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down Expand Up @@ -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:
Expand Down

0 comments on commit bf4a0ed

Please sign in to comment.