Create wrappers for the search edit and the main toolbar.

So we can hide native implementations from classes using these elements.
This commit is contained in:
Luis Ángel San Martín
2018-09-11 16:50:29 +02:00
committed by Luis Ángel San Martín
parent 00f8adfa54
commit 655cdc619e
5 changed files with 327 additions and 2 deletions

View File

@ -146,7 +146,9 @@ HEADERS += comic_flow.h \
yacreader_comic_info_helper.h \
db/reading_list.h \
current_comic_view_helper.h \
theme.h
theme.h \
yacreader_library_toolbar.h \
yacreader_library_search_edit.h
!CONFIG(no_opengl) {
HEADERS += ../common/gl/yacreader_flow_gl.h
@ -219,7 +221,9 @@ SOURCES += comic_flow.cpp \
yacreader_comic_info_helper.cpp\
db/reading_list.cpp \
current_comic_view_helper.cpp \
theme.cpp
theme.cpp \
yacreader_library_toolbar.cpp \
yacreader_library_search_edit.cpp
!CONFIG(no_opengl) {
SOURCES += ../common/gl/yacreader_flow_gl.cpp

View File

@ -0,0 +1,72 @@
#include "yacreader_library_search_edit.h"
#ifdef Q_OS_MAC
YACReaderLibrarySearchEdit::YACReaderLibrarySearchEdit(YACReaderMacOSXSearchLineEdit *searchEdit)
:macosSearchEdit(searchEdit), defaultSearchEdit(nullptr)
{
}
#endif
YACReaderLibrarySearchEdit::YACReaderLibrarySearchEdit(YACReaderSearchLineEdit *searchEdit)
:defaultSearchEdit(searchEdit)
{
}
void YACReaderLibrarySearchEdit::clear()
{
if (defaultSearchEdit != nullptr) {
defaultSearchEdit->clear();
} else {
#ifdef Q_OS_MAC
macosSearchEdit->clear();
#endif
}
}
void YACReaderLibrarySearchEdit::clearText()
{
if (defaultSearchEdit != nullptr) {
defaultSearchEdit->clearText();
} else {
#ifdef Q_OS_MAC
macosSearchEdit->clearText();
#endif
}
}
void YACReaderLibrarySearchEdit::setDisabled(bool disabled)
{
if (defaultSearchEdit != nullptr) {
defaultSearchEdit->setDisabled(disabled);
} else {
#ifdef Q_OS_MAC
macosSearchEdit->setDisabled(disabled);
#endif
}
}
void YACReaderLibrarySearchEdit::setEnabled(bool enabled)
{
if (defaultSearchEdit != nullptr) {
defaultSearchEdit->setEnabled(enabled);
} else {
#ifdef Q_OS_MAC
macosSearchEdit->setEnabled(enabled);
#endif
}
}
QString YACReaderLibrarySearchEdit::text()
{
if (defaultSearchEdit != nullptr) {
return defaultSearchEdit->text();
} else {
#ifdef Q_OS_MAC
return macosSearchEdit->text();
#endif
}
return "";
}

View File

@ -0,0 +1,39 @@
#ifndef YACREADER_LIBRARY_SEARCH_EDIT_H
#define YACREADER_LIBRARY_SEARCH_EDIT_H
#include <QObject>
#include "yacreader_global.h"
#include "yacreader_search_line_edit.h"
#ifdef Q_OS_MAC
#include "yacreader_macosx_toolbar.h"
#endif
class YACReaderLibrarySearchEdit: public QObject
{
public:
#ifdef Q_OS_MAC
YACReaderLibrarySearchEdit(YACReaderMacOSXSearchLineEdit *searchEdit);
#endif
YACReaderLibrarySearchEdit(YACReaderSearchLineEdit *searchEdit);
public slots:
void clear();
void clearText();
void setDisabled(bool disabled);
void setEnabled(bool enabled);
QString text();
signals:
void filterChanged(const YACReader::SearchModifiers, QString);
private:
#ifdef Q_OS_MAC
YACReaderMacOSXSearchLineEdit *macosSearchEdit;
#endif
YACReaderSearchLineEdit *defaultSearchEdit;
};
#endif // YACREADER_LIBRARY_SEARCH_EDIT_H

View File

@ -0,0 +1,155 @@
#include "yacreader_library_toolbar.h"
#include "shortcuts_manager.h"
#include "yacreader_library_search_edit.h"
#include "yacreader_global_gui.h"
using namespace YACReader;
YACReaderLibraryToolbar::YACReaderLibraryToolbar(QMainWindow *mainWindow, bool isMacosNative, bool useNativeFullScreen, QSettings *settings)
:QObject(mainWindow), mainWindow(mainWindow), isMacosNative(isMacosNative), useNativeFullScreen(useNativeFullScreen), settings(settings)
{
backAction = new QAction(mainWindow);
QIcon icoBackButton;
icoBackButton.addFile(":/images/main_toolbar/back.png",QSize(), QIcon::Normal);
//icoBackButton.addPixmap(QPixmap(":/images/main_toolbar/back_disabled.png"), QIcon::Disabled);
backAction->setData(BACK_ACTION_YL);
backAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(BACK_ACTION_YL));
backAction->setIcon(icoBackButton);
backAction->setDisabled(true);
forwardAction = new QAction(mainWindow);
QIcon icoFordwardButton;
icoFordwardButton.addFile(":/images/main_toolbar/forward.png", QSize(), QIcon::Normal);
//icoFordwardButton.addPixmap(QPixmap(":/images/main_toolbar/forward_disabled.png"), QIcon::Disabled);
forwardAction->setData(FORWARD_ACTION_YL);
forwardAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(FORWARD_ACTION_YL));
forwardAction->setIcon(icoFordwardButton);
forwardAction->setDisabled(true);
optionsAction = new QAction(mainWindow);
optionsAction->setToolTip(tr("Show options dialog"));
optionsAction->setData(OPTIONS_ACTION_YL);
optionsAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(OPTIONS_ACTION_YL));
QIcon icoSettingsButton;
icoSettingsButton.addFile(":/images/main_toolbar/settings.png", QSize(), QIcon::Normal);
optionsAction->setIcon(icoSettingsButton);
serverConfigAction = new QAction(mainWindow);
serverConfigAction->setToolTip(tr("Show comics server options dialog"));
serverConfigAction->setData(SERVER_CONFIG_ACTION_YL);
serverConfigAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SERVER_CONFIG_ACTION_YL));
QIcon icoServerButton;
icoServerButton.addFile(":/images/main_toolbar/server.png", QSize(), QIcon::Normal);
serverConfigAction->setIcon(icoServerButton);
toggleComicsViewAction = new QAction(tr("Change between comics views"),mainWindow);
toggleComicsViewAction->setToolTip(tr("Change between comics views"));
QIcon icoViewsButton;
if(!settings->contains(COMICS_VIEW_STATUS) || settings->value(COMICS_VIEW_STATUS) == Flow)
icoViewsButton.addFile(":/images/main_toolbar/grid.png", QSize(), QIcon::Normal);
else if(settings->value(COMICS_VIEW_STATUS) == Grid)
icoViewsButton.addFile(":/images/main_toolbar/info.png", QSize(), QIcon::Normal);
else
icoViewsButton.addFile(":/images/main_toolbar/flow.png", QSize(), QIcon::Normal);
toggleComicsViewAction->setData(TOGGLE_COMICS_VIEW_ACTION_YL);
toggleComicsViewAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(TOGGLE_COMICS_VIEW_ACTION_YL));
toggleComicsViewAction->setIcon(icoViewsButton);
helpAboutAction = new QAction(mainWindow);
helpAboutAction->setToolTip(tr("Help, About YACReader"));
helpAboutAction->setData(HELP_ABOUT_ACTION_YL);
helpAboutAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(HELP_ABOUT_ACTION_YL));
QIcon icoHelpButton;
icoHelpButton.addFile(":/images/main_toolbar/help.png",QSize(), QIcon::Normal);
helpAboutAction->setIcon(icoHelpButton);
if (!useNativeFullScreen) {
toggleFullScreenAction = new QAction(tr("Fullscreen mode on/off"),mainWindow);
toggleFullScreenAction->setToolTip(tr("Fullscreen mode on/off"));
toggleFullScreenAction->setData(TOGGLE_FULL_SCREEN_ACTION_YL);
toggleFullScreenAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(TOGGLE_FULL_SCREEN_ACTION_YL));
QIcon icoFullscreenButton;
icoFullscreenButton.addPixmap(QPixmap(":/images/main_toolbar/fullscreen.png"), QIcon::Normal);
toggleFullScreenAction->setIcon(icoFullscreenButton);
}
if (isMacosNative) {
#ifdef Q_OS_MAC
macosxToolbar = new YACReaderMacOSXToolbar(mainWindow);
macosxToolbar->addAction(backAction);
macosxToolbar->addAction(forwardAction);
macosxToolbar->addSpace(10);
macosxToolbar->addAction(serverConfigAction);
macosxToolbar->addAction(optionsAction);
macosxToolbar->addAction(helpAboutAction);
macosxToolbar->addSpace(10);
macosxToolbar->addAction(toggleComicsViewAction);
macosxToolbar->addStretch();
auto actualSearchEdit = macosxToolbar->addSearchEdit();
searchEdit = new YACReaderLibrarySearchEdit(actualSearchEdit);
macosxToolbar->attachToWindow(mainWindow->windowHandle());
#endif
} else {
defaultToolbar = new YACReaderMainToolBar(mainWindow);
auto actualSearchEdit = new YACReaderSearchLineEdit();
searchEdit = new YACReaderLibrarySearchEdit(actualSearchEdit);
defaultToolbar->backButton->setDefaultAction(backAction);
defaultToolbar->forwardButton->setDefaultAction(forwardAction);
defaultToolbar->settingsButton->setDefaultAction(optionsAction);
defaultToolbar->serverButton->setDefaultAction(serverConfigAction);
defaultToolbar->helpButton->setDefaultAction(helpAboutAction);
defaultToolbar->toggleComicsViewButton->setDefaultAction(toggleComicsViewAction);
defaultToolbar->fullscreenButton->setDefaultAction(toggleFullScreenAction);
defaultToolbar->setSearchWidget(actualSearchEdit);
}
}
void YACReaderLibraryToolbar::show()
{
if (isMacosNative) {
#ifdef Q_OS_MAC
macosxToolbar->show();
#endif
} else {
defaultToolbar->show();
}
}
void YACReaderLibraryToolbar::hide()
{
if (isMacosNative) {
#ifdef Q_OS_MAC
macosxToolbar->hide();
#endif
} else {
defaultToolbar->hide();
}
}
void YACReaderLibraryToolbar::updateViewSelectorIcon(const QIcon &icon)
{
#ifdef Q_OS_MAC
macosxToolbar->updateViewSelectorIcon(icon);
#endif
}
void YACReaderLibraryToolbar::setDisabled(bool disabled)
{
if (defaultToolbar != nullptr) {
defaultToolbar->setDisabled(disabled);
}
}

View File

@ -0,0 +1,55 @@
#ifndef YACREADER_LIBRARY_TOOLBAR_H
#define YACREADER_LIBRARY_TOOLBAR_H
#include <QtWidgets>
#include "yacreader_main_toolbar.h"
#ifdef Q_OS_MAC
#include "yacreader_macosx_toolbar.h"
#endif
#include "yacreader_library_search_edit.h"
class YACReaderLibraryToolbar: public QObject
{
public:
YACReaderLibraryToolbar(QMainWindow *mainWindow, bool isMacosNative, bool useNativeFullScreen, QSettings *settings);
QWidget * widget() { return defaultToolbar; }
QAction * backAction;
QAction * forwardAction;
QAction * optionsAction;
QAction * serverConfigAction;
QAction * toggleComicsViewAction;
QAction * helpAboutAction;
QAction * toggleFullScreenAction = nullptr;
YACReaderLibrarySearchEdit *searchEdit;
public slots:
void show();
void hide();
void updateViewSelectorIcon(const QIcon &icon);
void setDisabled(bool disabled);
private:
QMainWindow *mainWindow;
bool isMacosNative;
bool useNativeFullScreen;
QSettings * settings;
#ifdef Q_OS_MAC
YACReaderMacOSXToolbar *macosxToolbar;
#endif
YACReaderMainToolBar *defaultToolbar = nullptr;
};
#endif // YACREADER_LIBRARY_TOOLBAR_H