Initial implementation of theming

This commit is contained in:
luisangelsm
2026-02-19 17:39:22 +01:00
parent ed28c94f66
commit 044176d6b7
303 changed files with 4634 additions and 2119 deletions

View File

@ -10,6 +10,7 @@
#include "empty_label_widget.h"
#include "empty_special_list.h"
#include "empty_reading_list_widget.h"
#include "empty_folder_widget.h"
#include "no_search_results_widget.h"
#include "yacreader_sidebar.h"
@ -17,6 +18,7 @@
//--
#include "yacreader_search_line_edit.h"
#include "options_dialog.h"
#include "theme_manager.h"
YACReaderContentViewsManager::YACReaderContentViewsManager(QSettings *settings, LibraryWindow *parent)
: QObject(parent), libraryWindow(parent), classicComicsView(nullptr), gridComicsView(nullptr), infoComicsView(nullptr)
@ -50,6 +52,7 @@ YACReaderContentViewsManager::YACReaderContentViewsManager(QSettings *settings,
comicsViewStack->addWidget(emptyLabelWidget = new EmptyLabelWidget());
comicsViewStack->addWidget(emptySpecialList = new EmptySpecialListWidget());
comicsViewStack->addWidget(emptyReadingList = new EmptyReadingListWidget());
comicsViewStack->addWidget(emptyFolderWidget = new EmptyFolderWidget());
comicsViewStack->addWidget(noSearchResultsWidget = new NoSearchResultsWidget());
comicsViewStack->addWidget(comicsView);
@ -60,6 +63,8 @@ YACReaderContentViewsManager::YACReaderContentViewsManager(QSettings *settings,
connect(folderContentView, &FolderContentView::copyComicsToCurrentFolder, libraryWindow, &LibraryWindow::copyAndImportComicsToCurrentFolder);
connect(folderContentView, &FolderContentView::moveComicsToCurrentFolder, libraryWindow, &LibraryWindow::moveAndImportComicsToCurrentFolder);
connect(libraryWindow->optionsDialog, &YACReaderOptionsDialog::optionsChanged, folderContentView, &FolderContentView::updateSettings);
initTheme(this);
}
QWidget *YACReaderContentViewsManager::containerWidget()
@ -152,6 +157,11 @@ void YACReaderContentViewsManager::showEmptyReadingListWidget()
comicsViewStack->setCurrentWidget(emptyReadingList);
}
void YACReaderContentViewsManager::showEmptyFolderWidget()
{
comicsViewStack->setCurrentWidget(emptyFolderWidget);
}
void YACReaderContentViewsManager::showNoSearchResultsView()
{
comicsViewStack->setCurrentWidget(noSearchResultsWidget);
@ -235,10 +245,11 @@ void YACReaderContentViewsManager::showComicsViewTransition()
void YACReaderContentViewsManager::_toggleComicsView()
{
const auto &mainToolbar = theme.mainToolbar;
switch (comicsViewStatus) {
case Flow: {
QIcon icoViewsButton;
icoViewsButton.addFile(addExtensionToIconPath(":/images/main_toolbar/info"), QSize(), QIcon::Normal);
QIcon icoViewsButton = mainToolbar.infoIcon;
libraryWindow->actions.toggleComicsViewAction->setIcon(icoViewsButton);
#ifdef Y_MAC_UI
libraryWindow->libraryToolBar->updateViewSelectorIcon(icoViewsButton);
@ -255,8 +266,7 @@ void YACReaderContentViewsManager::_toggleComicsView()
}
case Grid: {
QIcon icoViewsButton;
icoViewsButton.addFile(addExtensionToIconPath(":/images/main_toolbar/flow"), QSize(), QIcon::Normal);
QIcon icoViewsButton = mainToolbar.flowIcon;
libraryWindow->actions.toggleComicsViewAction->setIcon(icoViewsButton);
#ifdef Y_MAC_UI
libraryWindow->libraryToolBar->updateViewSelectorIcon(icoViewsButton);
@ -271,8 +281,7 @@ void YACReaderContentViewsManager::_toggleComicsView()
}
case Info: {
QIcon icoViewsButton;
icoViewsButton.addFile(addExtensionToIconPath(":/images/main_toolbar/grid"), QSize(), QIcon::Normal);
QIcon icoViewsButton = mainToolbar.gridIcon;
libraryWindow->actions.toggleComicsViewAction->setIcon(icoViewsButton);
#ifdef Y_MAC_UI
libraryWindow->libraryToolBar->updateViewSelectorIcon(icoViewsButton);
@ -292,3 +301,28 @@ void YACReaderContentViewsManager::_toggleComicsView()
if (comicsViewStack->currentWidget() == comicsViewTransition)
showComicsView();
}
void YACReaderContentViewsManager::applyTheme(const Theme &theme)
{
const auto &mainToolbar = theme.mainToolbar;
// Update the toggle button icon based on current view status
// The icon shows what the NEXT view will be when clicked
QIcon icon;
switch (comicsViewStatus) {
case Flow:
icon = mainToolbar.gridIcon;
break;
case Grid:
icon = mainToolbar.infoIcon;
break;
case Info:
icon = mainToolbar.flowIcon;
break;
}
libraryWindow->actions.toggleComicsViewAction->setIcon(icon);
#ifdef Y_MAC_UI
libraryWindow->libraryToolBar->updateViewSelectorIcon(icon);
#endif
}