mirror of
https://github.com/YACReader/yacreader
synced 2025-06-04 01:28:55 -04:00
moved comics views managment code to the new class
This commit is contained in:
parent
704408f704
commit
a4375f0c8e
@ -63,19 +63,11 @@
|
|||||||
#include "api_key_dialog.h"
|
#include "api_key_dialog.h"
|
||||||
//#include "yacreader_social_dialog.h"
|
//#include "yacreader_social_dialog.h"
|
||||||
|
|
||||||
#include "classic_comics_view.h"
|
#include "comics_view.h"
|
||||||
#include "grid_comics_view.h"
|
|
||||||
#include "comics_view_transition.h"
|
|
||||||
#include "empty_folder_widget.h"
|
|
||||||
#include "empty_label_widget.h"
|
|
||||||
#include "empty_special_list.h"
|
|
||||||
#include "empty_reading_list_widget.h"
|
|
||||||
|
|
||||||
#include "edit_shortcuts_dialog.h"
|
#include "edit_shortcuts_dialog.h"
|
||||||
#include "shortcuts_manager.h"
|
#include "shortcuts_manager.h"
|
||||||
|
|
||||||
#include "no_search_results_widget.h"
|
|
||||||
|
|
||||||
#include "comic_files_manager.h"
|
#include "comic_files_manager.h"
|
||||||
|
|
||||||
#include "reading_list_model.h"
|
#include "reading_list_model.h"
|
||||||
@ -88,6 +80,8 @@
|
|||||||
#include "reading_list_item.h"
|
#include "reading_list_item.h"
|
||||||
#include "opengl_checker.h"
|
#include "opengl_checker.h"
|
||||||
|
|
||||||
|
#include "yacreader_comics_views_manager.h"
|
||||||
|
|
||||||
#include "QsLog.h"
|
#include "QsLog.h"
|
||||||
|
|
||||||
#ifdef Q_OS_WIN
|
#ifdef Q_OS_WIN
|
||||||
@ -140,7 +134,7 @@ void LibraryWindow::setupUI()
|
|||||||
createToolBars();
|
createToolBars();
|
||||||
createMenus();
|
createMenus();
|
||||||
|
|
||||||
navigationController = new YACReaderNavigationController(this);
|
navigationController = new YACReaderNavigationController(this, comicsViewsManager);
|
||||||
|
|
||||||
createConnections();
|
createConnections();
|
||||||
|
|
||||||
@ -237,37 +231,14 @@ void LibraryWindow::doLayout()
|
|||||||
readingListsTitle->addSpacing(3);
|
readingListsTitle->addSpacing(3);
|
||||||
|
|
||||||
//FINAL LAYOUT-------------------------------------------------------------
|
//FINAL LAYOUT-------------------------------------------------------------
|
||||||
comicsViewStack = new QStackedWidget();
|
|
||||||
|
|
||||||
if(!settings->contains(COMICS_VIEW_STATUS) || settings->value(COMICS_VIEW_STATUS) == Flow) {
|
comicsViewsManager = new YACReaderComicsViewsManager(settings, this);
|
||||||
comicsView = classicComicsView = new ClassicComicsView();
|
|
||||||
comicsViewStatus = Flow;
|
|
||||||
//comicsViewStack->setCurrentIndex(Flow);
|
|
||||||
} else {
|
|
||||||
comicsView = gridComicsView = new GridComicsView();
|
|
||||||
connect(optionsDialog, SIGNAL(optionsChanged()), gridComicsView, SLOT(updateBackgroundConfig()));
|
|
||||||
comicsViewStatus = Grid;
|
|
||||||
//comicsViewStack->setCurrentIndex(Grid);
|
|
||||||
}
|
|
||||||
|
|
||||||
doComicsViewConnections();
|
|
||||||
|
|
||||||
comicsViewStack->addWidget(comicsViewTransition = new ComicsViewTransition());
|
|
||||||
comicsViewStack->addWidget(emptyFolderWidget = new EmptyFolderWidget());
|
|
||||||
comicsViewStack->addWidget(emptyLabelWidget = new EmptyLabelWidget());
|
|
||||||
comicsViewStack->addWidget(emptySpecialList = new EmptySpecialListWidget());
|
|
||||||
comicsViewStack->addWidget(emptyReadingList = new EmptyReadingListWidget());
|
|
||||||
comicsViewStack->addWidget(noSearchResultsWidget = new NoSearchResultsWidget());
|
|
||||||
|
|
||||||
comicsViewStack->addWidget(comicsView);
|
|
||||||
|
|
||||||
comicsViewStack->setCurrentWidget(comicsView);
|
|
||||||
|
|
||||||
sHorizontal->addWidget(sideBar);
|
sHorizontal->addWidget(sideBar);
|
||||||
#ifndef Q_OS_MAC
|
#ifndef Q_OS_MAC
|
||||||
QVBoxLayout * rightLayout = new QVBoxLayout;
|
QVBoxLayout * rightLayout = new QVBoxLayout;
|
||||||
rightLayout->addWidget(libraryToolBar);
|
rightLayout->addWidget(libraryToolBar);
|
||||||
rightLayout->addWidget(comicsViewStack);
|
rightLayout->addWidget(comicsViewsManager->containerWidget());
|
||||||
|
|
||||||
rightLayout->setMargin(0);
|
rightLayout->setMargin(0);
|
||||||
rightLayout->setSpacing(0);
|
rightLayout->setSpacing(0);
|
||||||
@ -441,34 +412,6 @@ void LibraryWindow::doModels()
|
|||||||
//setSearchFilter(YACReader::NoModifiers, ""); //clear search filter
|
//setSearchFilter(YACReader::NoModifiers, ""); //clear search filter
|
||||||
}
|
}
|
||||||
|
|
||||||
void LibraryWindow::disconnectComicsViewConnections(ComicsView * widget)
|
|
||||||
{
|
|
||||||
disconnect(widget, SIGNAL(comicRated(int,QModelIndex)), comicsModel, SLOT(updateRating(int,QModelIndex)));
|
|
||||||
disconnect(showHideMarksAction,SIGNAL(toggled(bool)),widget,SLOT(setShowMarks(bool)));
|
|
||||||
disconnect(widget,SIGNAL(selected(unsigned int)),this,SLOT(openComic()));
|
|
||||||
disconnect(widget,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(openComic()));
|
|
||||||
disconnect(selectAllComicsAction,SIGNAL(triggered()),widget,SLOT(selectAll()));
|
|
||||||
disconnect(comicsView, SIGNAL(copyComicsToCurrentFolder(QList<QPair<QString, QString> >)), this, SLOT(copyAndImportComicsToCurrentFolder(QList<QPair<QString, QString> >)));
|
|
||||||
disconnect(comicsView, SIGNAL(moveComicsToCurrentFolder(QList<QPair<QString, QString> >)), this, SLOT(moveAndImportComicsToCurrentFolder(QList<QPair<QString, QString> >)));
|
|
||||||
disconnect(comicsView,SIGNAL(customContextMenuViewRequested(QPoint)),this,SLOT(showComicsViewContextMenu(QPoint)));
|
|
||||||
disconnect(comicsView,SIGNAL(customContextMenuItemRequested(QPoint)),this,SLOT(showComicsItemContextMenu(QPoint)));
|
|
||||||
}
|
|
||||||
|
|
||||||
void LibraryWindow::doComicsViewConnections()
|
|
||||||
{
|
|
||||||
connect(comicsView, SIGNAL(comicRated(int,QModelIndex)), comicsModel, SLOT(updateRating(int,QModelIndex)));
|
|
||||||
connect(showHideMarksAction,SIGNAL(toggled(bool)),comicsView,SLOT(setShowMarks(bool)));
|
|
||||||
connect(comicsView,SIGNAL(selected(unsigned int)),this,SLOT(openComic()));
|
|
||||||
connect(comicsView,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(openComic()));
|
|
||||||
connect(selectAllComicsAction,SIGNAL(triggered()),comicsView,SLOT(selectAll()));
|
|
||||||
|
|
||||||
connect(comicsView,SIGNAL(customContextMenuViewRequested(QPoint)),this,SLOT(showComicsViewContextMenu(QPoint)));
|
|
||||||
connect(comicsView,SIGNAL(customContextMenuItemRequested(QPoint)),this,SLOT(showComicsItemContextMenu(QPoint)));
|
|
||||||
//Drops
|
|
||||||
connect(comicsView, SIGNAL(copyComicsToCurrentFolder(QList<QPair<QString, QString> >)), this, SLOT(copyAndImportComicsToCurrentFolder(QList<QPair<QString, QString> >)));
|
|
||||||
connect(comicsView, SIGNAL(moveComicsToCurrentFolder(QList<QPair<QString, QString> >)), this, SLOT(moveAndImportComicsToCurrentFolder(QList<QPair<QString, QString> >)));
|
|
||||||
}
|
|
||||||
|
|
||||||
void LibraryWindow::createActions()
|
void LibraryWindow::createActions()
|
||||||
{
|
{
|
||||||
backAction = new QAction(this);
|
backAction = new QAction(this);
|
||||||
@ -930,7 +873,7 @@ void LibraryWindow::createToolBars()
|
|||||||
editInfoToolBar->addAction(deleteComicsAction);
|
editInfoToolBar->addAction(deleteComicsAction);
|
||||||
|
|
||||||
|
|
||||||
comicsView->setToolBar(editInfoToolBar);
|
comicsViewsManager->comicsView->setToolBar(editInfoToolBar);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LibraryWindow::createMenus()
|
void LibraryWindow::createMenus()
|
||||||
@ -1109,7 +1052,7 @@ void LibraryWindow::createConnections()
|
|||||||
#ifndef Q_OS_MAC
|
#ifndef Q_OS_MAC
|
||||||
connect(toggleFullScreenAction,SIGNAL(triggered()),this,SLOT(toggleFullScreen()));
|
connect(toggleFullScreenAction,SIGNAL(triggered()),this,SLOT(toggleFullScreen()));
|
||||||
#endif
|
#endif
|
||||||
connect(toggleComicsViewAction,SIGNAL(triggered()),this,SLOT(toggleComicsView()));
|
connect(toggleComicsViewAction,SIGNAL(triggered()),comicsViewsManager,SLOT(toggleComicsView()));
|
||||||
connect(optionsAction, SIGNAL(triggered()),optionsDialog,SLOT(show()));
|
connect(optionsAction, SIGNAL(triggered()),optionsDialog,SLOT(show()));
|
||||||
#ifdef SERVER_RELEASE
|
#ifdef SERVER_RELEASE
|
||||||
connect(serverConfigAction, SIGNAL(triggered()), serverConfigDialog, SLOT(show()));
|
connect(serverConfigAction, SIGNAL(triggered()), serverConfigDialog, SLOT(show()));
|
||||||
@ -1143,14 +1086,9 @@ void LibraryWindow::createConnections()
|
|||||||
|
|
||||||
//connect(socialAction,SIGNAL(triggered()),this,SLOT(showSocial()));
|
//connect(socialAction,SIGNAL(triggered()),this,SLOT(showSocial()));
|
||||||
|
|
||||||
connect(comicsViewTransition,SIGNAL(transitionFinished()),this,SLOT(showComicsView()));
|
|
||||||
|
|
||||||
//connect(comicsModel,SIGNAL(isEmpty()),this,SLOT(showEmptyFolderView()));
|
//connect(comicsModel,SIGNAL(isEmpty()),this,SLOT(showEmptyFolderView()));
|
||||||
//connect(comicsModel,SIGNAL(searchNumResults(int)),this,SLOT(checkSearchNumResults(int)));
|
//connect(comicsModel,SIGNAL(searchNumResults(int)),this,SLOT(checkSearchNumResults(int)));
|
||||||
//connect(emptyFolderWidget,SIGNAL(subfolderSelected(QModelIndex,int)),this,SLOT(selectSubfolder(QModelIndex,int)));
|
//connect(emptyFolderWidget,SIGNAL(subfolderSelected(QModelIndex,int)),this,SLOT(selectSubfolder(QModelIndex,int)));
|
||||||
//Drops
|
|
||||||
connect(emptyFolderWidget, SIGNAL(copyComicsToCurrentFolder(QList<QPair<QString, QString> >)), this, SLOT(copyAndImportComicsToCurrentFolder(QList<QPair<QString, QString> >)));
|
|
||||||
connect(emptyFolderWidget, SIGNAL(moveComicsToCurrentFolder(QList<QPair<QString, QString> >)), this, SLOT(moveAndImportComicsToCurrentFolder(QList<QPair<QString, QString> >)));
|
|
||||||
|
|
||||||
connect(showEditShortcutsAction,SIGNAL(triggered()),editShortcutsDialog,SLOT(show()));
|
connect(showEditShortcutsAction,SIGNAL(triggered()),editShortcutsDialog,SLOT(show()));
|
||||||
|
|
||||||
@ -1200,7 +1138,7 @@ void LibraryWindow::loadLibrary(const QString & name)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
comicsView->setModel(NULL);
|
comicsViewsManager->comicsView->setModel(NULL);
|
||||||
foldersView->setModel(NULL);
|
foldersView->setModel(NULL);
|
||||||
listsView->setModel(NULL);
|
listsView->setModel(NULL);
|
||||||
disableAllActions();//TODO comprobar que se deben deshabilitar
|
disableAllActions();//TODO comprobar que se deben deshabilitar
|
||||||
@ -1257,7 +1195,7 @@ void LibraryWindow::loadLibrary(const QString & name)
|
|||||||
if(ret == QMessageBox::Yes)
|
if(ret == QMessageBox::Yes)
|
||||||
QDesktopServices::openUrl(QUrl("http://www.yacreader.com"));
|
QDesktopServices::openUrl(QUrl("http://www.yacreader.com"));
|
||||||
|
|
||||||
comicsView->setModel(NULL);
|
comicsViewsManager->comicsView->setModel(NULL);
|
||||||
foldersView->setModel(NULL);
|
foldersView->setModel(NULL);
|
||||||
listsView->setModel(NULL);
|
listsView->setModel(NULL);
|
||||||
disableAllActions();//TODO comprobar que se deben deshabilitar
|
disableAllActions();//TODO comprobar que se deben deshabilitar
|
||||||
@ -1268,7 +1206,7 @@ void LibraryWindow::loadLibrary(const QString & name)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
comicsView->setModel(NULL);
|
comicsViewsManager->comicsView->setModel(NULL);
|
||||||
foldersView->setModel(NULL);
|
foldersView->setModel(NULL);
|
||||||
listsView->setModel(NULL);
|
listsView->setModel(NULL);
|
||||||
disableAllActions();//TODO comprobar que se deben deshabilitar
|
disableAllActions();//TODO comprobar que se deben deshabilitar
|
||||||
@ -1326,9 +1264,9 @@ void LibraryWindow::loadLibrary(const QString & name)
|
|||||||
void LibraryWindow::loadCoversFromCurrentModel()
|
void LibraryWindow::loadCoversFromCurrentModel()
|
||||||
{
|
{
|
||||||
//TODO this is a workaround for the crash in GridComicsView::setModel crash on views switching
|
//TODO this is a workaround for the crash in GridComicsView::setModel crash on views switching
|
||||||
if(typeid(*comicsView) == typeid(GridComicsView))
|
if(typeid(*comicsViewsManager->comicsView) == typeid(GridComicsView))
|
||||||
comicsView->setModel(new ComicModel());
|
comicsViewsManager->comicsView->setModel(new ComicModel());
|
||||||
comicsView->setModel(comicsModel);
|
comicsViewsManager->comicsView->setModel(comicsModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LibraryWindow::copyAndImportComicsToCurrentFolder(const QList<QPair<QString, QString> > &comics)
|
void LibraryWindow::copyAndImportComicsToCurrentFolder(const QList<QPair<QString, QString> > &comics)
|
||||||
@ -1521,7 +1459,7 @@ void LibraryWindow::addFolderToCurrentIndex()
|
|||||||
navigationController->loadFolderInfo(newIndex);
|
navigationController->loadFolderInfo(newIndex);
|
||||||
historyController->updateHistory(YACReaderLibrarySourceContainer(newIndex,YACReaderLibrarySourceContainer::Folder));
|
historyController->updateHistory(YACReaderLibrarySourceContainer(newIndex,YACReaderLibrarySourceContainer::Folder));
|
||||||
//a new folder is always an empty folder
|
//a new folder is always an empty folder
|
||||||
showEmptyFolderView();
|
comicsViewsManager->showEmptyFolderView();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1694,7 +1632,7 @@ void LibraryWindow::showComicsViewContextMenu(const QPoint &point)
|
|||||||
menu.addAction(toggleFullScreenAction);
|
menu.addAction(toggleFullScreenAction);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
menu.exec(comicsView->mapToGlobal(point));
|
menu.exec(comicsViewsManager->comicsView->mapToGlobal(point));
|
||||||
}
|
}
|
||||||
|
|
||||||
void LibraryWindow::showComicsItemContextMenu(const QPoint &point)
|
void LibraryWindow::showComicsItemContextMenu(const QPoint &point)
|
||||||
@ -1722,7 +1660,7 @@ void LibraryWindow::showComicsItemContextMenu(const QPoint &point)
|
|||||||
QMenu subMenu;
|
QMenu subMenu;
|
||||||
setupAddToSubmenu(subMenu);
|
setupAddToSubmenu(subMenu);
|
||||||
|
|
||||||
menu.exec(comicsView->mapToGlobal(point));
|
menu.exec(comicsViewsManager->comicsView->mapToGlobal(point));
|
||||||
}
|
}
|
||||||
|
|
||||||
void LibraryWindow::setupAddToSubmenu(QMenu &menu)
|
void LibraryWindow::setupAddToSubmenu(QMenu &menu)
|
||||||
@ -1819,7 +1757,7 @@ void LibraryWindow::openComic()
|
|||||||
{
|
{
|
||||||
if(!importedCovers)
|
if(!importedCovers)
|
||||||
{
|
{
|
||||||
ComicDB comic = comicsModel->getComic(comicsView->currentIndex());
|
ComicDB comic = comicsModel->getComic(comicsViewsManager->comicsView->currentIndex());
|
||||||
QString path = currentPath();
|
QString path = currentPath();
|
||||||
QList<ComicDB> siblings = comicsModel->getAllComics();
|
QList<ComicDB> siblings = comicsModel->getAllComics();
|
||||||
|
|
||||||
@ -1972,7 +1910,7 @@ void LibraryWindow::deleteCurrentLibrary()
|
|||||||
d.removeRecursively();
|
d.removeRecursively();
|
||||||
if(libraries.isEmpty())//no more libraries available.
|
if(libraries.isEmpty())//no more libraries available.
|
||||||
{
|
{
|
||||||
comicsView->setModel(NULL);
|
comicsViewsManager->comicsView->setModel(NULL);
|
||||||
foldersView->setModel(NULL);
|
foldersView->setModel(NULL);
|
||||||
listsView->setModel(NULL);
|
listsView->setModel(NULL);
|
||||||
|
|
||||||
@ -1997,7 +1935,7 @@ void LibraryWindow::removeLibrary()
|
|||||||
//selectedLibrary->setCurrentIndex(0);
|
//selectedLibrary->setCurrentIndex(0);
|
||||||
if(libraries.isEmpty())//no more libraries available.
|
if(libraries.isEmpty())//no more libraries available.
|
||||||
{
|
{
|
||||||
comicsView->setModel(NULL);
|
comicsViewsManager->comicsView->setModel(NULL);
|
||||||
foldersView->setModel(NULL);
|
foldersView->setModel(NULL);
|
||||||
listsView->setModel(NULL);
|
listsView->setModel(NULL);
|
||||||
|
|
||||||
@ -2069,7 +2007,7 @@ void LibraryWindow::setRootIndex()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
comicsView->setModel(NULL);
|
comicsViewsManager->comicsView->setModel(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
foldersView->selectionModel()->clear();
|
foldersView->selectionModel()->clear();
|
||||||
@ -2090,7 +2028,7 @@ void LibraryWindow::toFullScreen()
|
|||||||
sideBar->hide();
|
sideBar->hide();
|
||||||
libraryToolBar->hide();
|
libraryToolBar->hide();
|
||||||
|
|
||||||
comicsView->toFullScreen();
|
comicsViewsManager->comicsView->toFullScreen();
|
||||||
|
|
||||||
showFullScreen();
|
showFullScreen();
|
||||||
}
|
}
|
||||||
@ -2099,7 +2037,7 @@ void LibraryWindow::toNormal()
|
|||||||
{
|
{
|
||||||
sideBar->show();
|
sideBar->show();
|
||||||
|
|
||||||
comicsView->toNormal();
|
comicsViewsManager->comicsView->toNormal();
|
||||||
|
|
||||||
if(fromMaximized)
|
if(fromMaximized)
|
||||||
showMaximized();
|
showMaximized();
|
||||||
@ -2125,14 +2063,14 @@ void LibraryWindow::setSearchFilter(const YACReader::SearchModifiers modifier, Q
|
|||||||
status = LibraryWindow::Searching;
|
status = LibraryWindow::Searching;
|
||||||
foldersModelProxy->setFilter(modifier, filter, true);//includeComicsCheckBox->isChecked());
|
foldersModelProxy->setFilter(modifier, filter, true);//includeComicsCheckBox->isChecked());
|
||||||
comicsModel->setupModelData(modifier, filter, foldersModel->getDatabase());
|
comicsModel->setupModelData(modifier, filter, foldersModel->getDatabase());
|
||||||
comicsView->enableFilterMode(true);
|
comicsViewsManager->comicsView->enableFilterMode(true);
|
||||||
comicsView->setModel(comicsModel); //TODO, columns are messed up after ResetModel some times, this shouldn't be necesary
|
comicsViewsManager->comicsView->setModel(comicsModel); //TODO, columns are messed up after ResetModel some times, this shouldn't be necesary
|
||||||
foldersView->expandAll();
|
foldersView->expandAll();
|
||||||
|
|
||||||
if(comicsModel->rowCount() == 0)
|
if(comicsModel->rowCount() == 0)
|
||||||
showNoSearchResultsView();
|
comicsViewsManager->showNoSearchResultsView();
|
||||||
else
|
else
|
||||||
showComicsView();
|
comicsViewsManager->showComicsView();
|
||||||
}
|
}
|
||||||
else if(status == LibraryWindow::Searching)
|
else if(status == LibraryWindow::Searching)
|
||||||
{//if no searching, then ignore this
|
{//if no searching, then ignore this
|
||||||
@ -2144,7 +2082,7 @@ void LibraryWindow::setSearchFilter(const YACReader::SearchModifiers modifier, Q
|
|||||||
void LibraryWindow::clearSearchFilter()
|
void LibraryWindow::clearSearchFilter()
|
||||||
{
|
{
|
||||||
foldersModelProxy->clear();
|
foldersModelProxy->clear();
|
||||||
comicsView->enableFilterMode(false);
|
comicsViewsManager->comicsView->enableFilterMode(false);
|
||||||
foldersView->collapseAll();
|
foldersView->collapseAll();
|
||||||
status = LibraryWindow::Normal;
|
status = LibraryWindow::Normal;
|
||||||
}
|
}
|
||||||
@ -2219,110 +2157,12 @@ void LibraryWindow::resetComicRating()
|
|||||||
comicsModel->finishTransaction();
|
comicsModel->finishTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LibraryWindow::switchToComicsView(ComicsView * from, ComicsView * to)
|
|
||||||
{
|
|
||||||
//setup views
|
|
||||||
disconnectComicsViewConnections(from);
|
|
||||||
from->close();
|
|
||||||
|
|
||||||
comicsView = to;
|
|
||||||
doComicsViewConnections();
|
|
||||||
|
|
||||||
comicsView->setToolBar(editInfoToolBar);
|
|
||||||
|
|
||||||
comicsViewStack->removeWidget(from);
|
|
||||||
comicsViewStack->addWidget(comicsView);
|
|
||||||
|
|
||||||
delete from;
|
|
||||||
|
|
||||||
//load content into current view
|
|
||||||
loadCoversFromCurrentModel();
|
|
||||||
|
|
||||||
if(!searchEdit->text().isEmpty())
|
|
||||||
{
|
|
||||||
comicsView->enableFilterMode(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void LibraryWindow::showComicsViewTransition()
|
|
||||||
{
|
|
||||||
comicsViewStack->setCurrentWidget(comicsViewTransition);
|
|
||||||
comicsViewTransition->startMovie();
|
|
||||||
}
|
|
||||||
|
|
||||||
void LibraryWindow::toggleComicsView_delayed()
|
|
||||||
{
|
|
||||||
if(comicsViewStatus == Flow){
|
|
||||||
QIcon icoViewsButton;
|
|
||||||
icoViewsButton.addFile(":/images/main_toolbar/flow.png", QSize(), QIcon::Normal);
|
|
||||||
toggleComicsViewAction->setIcon(icoViewsButton);
|
|
||||||
#ifdef Q_OS_MAC
|
|
||||||
libraryToolBar->updateViewSelectorIcon(icoViewsButton);
|
|
||||||
#endif
|
|
||||||
switchToComicsView(classicComicsView, gridComicsView = new GridComicsView());
|
|
||||||
connect(optionsDialog, SIGNAL(optionsChanged()), gridComicsView, SLOT(updateBackgroundConfig()));
|
|
||||||
comicsViewStatus = Grid;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
QIcon icoViewsButton;
|
|
||||||
icoViewsButton.addFile(":/images/main_toolbar/grid.png", QSize(), QIcon::Normal);
|
|
||||||
toggleComicsViewAction->setIcon(icoViewsButton);
|
|
||||||
#ifdef Q_OS_MAC
|
|
||||||
libraryToolBar->updateViewSelectorIcon(icoViewsButton);
|
|
||||||
#endif
|
|
||||||
switchToComicsView(gridComicsView, classicComicsView = new ClassicComicsView());
|
|
||||||
comicsViewStatus = Flow;
|
|
||||||
}
|
|
||||||
|
|
||||||
settings->setValue(COMICS_VIEW_STATUS, comicsViewStatus);
|
|
||||||
}
|
|
||||||
|
|
||||||
void LibraryWindow::showComicsView()
|
|
||||||
{
|
|
||||||
comicsViewStack->setCurrentWidget(comicsView);
|
|
||||||
}
|
|
||||||
|
|
||||||
void LibraryWindow::showEmptyFolderView()
|
|
||||||
{
|
|
||||||
comicsViewStack->setCurrentWidget(emptyFolderWidget);
|
|
||||||
}
|
|
||||||
|
|
||||||
void LibraryWindow::showEmptyLabelView()
|
|
||||||
{
|
|
||||||
comicsViewStack->setCurrentWidget(emptyLabelWidget);
|
|
||||||
}
|
|
||||||
|
|
||||||
void LibraryWindow::showEmptySpecialList()
|
|
||||||
{
|
|
||||||
comicsViewStack->setCurrentWidget(emptySpecialList);
|
|
||||||
}
|
|
||||||
|
|
||||||
void LibraryWindow::showEmptyReadingListWidget()
|
|
||||||
{
|
|
||||||
comicsViewStack->setCurrentWidget(emptyReadingList);
|
|
||||||
}
|
|
||||||
|
|
||||||
void LibraryWindow::showNoSearchResultsView()
|
|
||||||
{
|
|
||||||
comicsViewStack->setCurrentWidget(noSearchResultsWidget);
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO recover the current comics selection and restore it in the destination
|
|
||||||
void LibraryWindow::toggleComicsView()
|
|
||||||
{
|
|
||||||
if(comicsViewStack->currentWidget()==comicsView) {
|
|
||||||
QTimer::singleShot(0,this,SLOT(showComicsViewTransition()));
|
|
||||||
QTimer::singleShot(32,this,SLOT(toggleComicsView_delayed()));
|
|
||||||
} else
|
|
||||||
toggleComicsView_delayed();
|
|
||||||
}
|
|
||||||
|
|
||||||
void LibraryWindow::checkSearchNumResults(int numResults)
|
void LibraryWindow::checkSearchNumResults(int numResults)
|
||||||
{
|
{
|
||||||
if(numResults == 0)
|
if(numResults == 0)
|
||||||
showNoSearchResultsView();
|
comicsViewsManager->showNoSearchResultsView();
|
||||||
else
|
else
|
||||||
showComicsView();
|
comicsViewsManager->showComicsView();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LibraryWindow::asignNumbers()
|
void LibraryWindow::asignNumbers()
|
||||||
@ -2348,14 +2188,14 @@ void LibraryWindow::asignNumbers()
|
|||||||
const QModelIndex & mi = comicsModel->getIndexFromId(edited);
|
const QModelIndex & mi = comicsModel->getIndexFromId(edited);
|
||||||
if(mi.isValid())
|
if(mi.isValid())
|
||||||
{
|
{
|
||||||
comicsView->scrollTo(mi,QAbstractItemView::PositionAtCenter);
|
comicsViewsManager->comicsView->scrollTo(mi,QAbstractItemView::PositionAtCenter);
|
||||||
comicsView->setCurrentIndex(mi);
|
comicsViewsManager->comicsView->setCurrentIndex(mi);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void LibraryWindow::openContainingFolderComic()
|
void LibraryWindow::openContainingFolderComic()
|
||||||
{
|
{
|
||||||
QModelIndex modelIndex = comicsView->currentIndex();
|
QModelIndex modelIndex = comicsViewsManager->comicsView->currentIndex();
|
||||||
QFileInfo file = QDir::cleanPath(currentPath() + comicsModel->getComicPath(modelIndex));
|
QFileInfo file = QDir::cleanPath(currentPath() + comicsModel->getComicPath(modelIndex));
|
||||||
#if defined Q_OS_UNIX && !defined Q_OS_MAC
|
#if defined Q_OS_UNIX && !defined Q_OS_MAC
|
||||||
QString path = file.absolutePath();
|
QString path = file.absolutePath();
|
||||||
@ -2435,7 +2275,7 @@ void LibraryWindow::importLibrary(QString clc,QString destPath,QString name)
|
|||||||
void LibraryWindow::reloadOptions()
|
void LibraryWindow::reloadOptions()
|
||||||
{
|
{
|
||||||
//comicFlow->setFlowType(flowType);
|
//comicFlow->setFlowType(flowType);
|
||||||
comicsView->updateConfig(settings);
|
comicsViewsManager->comicsView->updateConfig(settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString LibraryWindow::currentPath()
|
QString LibraryWindow::currentPath()
|
||||||
@ -2475,7 +2315,7 @@ void LibraryWindow::closeEvent ( QCloseEvent * event )
|
|||||||
s->stop();
|
s->stop();
|
||||||
settings->setValue(MAIN_WINDOW_GEOMETRY, saveGeometry());
|
settings->setValue(MAIN_WINDOW_GEOMETRY, saveGeometry());
|
||||||
|
|
||||||
comicsView->close();
|
comicsViewsManager->comicsView->close();
|
||||||
sideBar->close();
|
sideBar->close();
|
||||||
|
|
||||||
QApplication::instance()->processEvents();
|
QApplication::instance()->processEvents();
|
||||||
@ -2534,14 +2374,14 @@ QModelIndexList LibraryWindow::getSelectedComics()
|
|||||||
{
|
{
|
||||||
//se fuerza a que haya almenos una fila seleccionada TODO comprobar se se puede forzar a la tabla a que lo haga automáticamente
|
//se fuerza a que haya almenos una fila seleccionada TODO comprobar se se puede forzar a la tabla a que lo haga automáticamente
|
||||||
//avoid selection.count()==0 forcing selection in comicsView
|
//avoid selection.count()==0 forcing selection in comicsView
|
||||||
QModelIndexList selection = comicsView->selectionModel()->selectedRows();
|
QModelIndexList selection = comicsViewsManager->comicsView->selectionModel()->selectedRows();
|
||||||
QLOG_TRACE() << "selection count " << selection.length();
|
QLOG_TRACE() << "selection count " << selection.length();
|
||||||
qSort(selection.begin(),selection.end(),lessThanModelIndexRow);
|
qSort(selection.begin(),selection.end(),lessThanModelIndexRow);
|
||||||
|
|
||||||
if(selection.count()==0)
|
if(selection.count()==0)
|
||||||
{
|
{
|
||||||
comicsView->selectIndex(0);
|
comicsViewsManager->comicsView->selectIndex(0);
|
||||||
selection = comicsView->selectionModel()->selectedRows();
|
selection = comicsViewsManager->comicsView->selectionModel()->selectedRows();
|
||||||
}
|
}
|
||||||
return selection;
|
return selection;
|
||||||
}
|
}
|
||||||
|
@ -71,6 +71,7 @@ class YACReaderHistoryController;
|
|||||||
class EmptyLabelWidget;
|
class EmptyLabelWidget;
|
||||||
class EmptySpecialListWidget;
|
class EmptySpecialListWidget;
|
||||||
class EmptyReadingListWidget;
|
class EmptyReadingListWidget;
|
||||||
|
class YACReaderComicsViewsManager;
|
||||||
|
|
||||||
#include "comic_db.h"
|
#include "comic_db.h"
|
||||||
|
|
||||||
@ -81,7 +82,7 @@ class LibraryWindow : public QMainWindow
|
|||||||
friend class YACReaderNavigationController;
|
friend class YACReaderNavigationController;
|
||||||
|
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
private:
|
public:
|
||||||
YACReaderSideBar * sideBar;
|
YACReaderSideBar * sideBar;
|
||||||
|
|
||||||
CreateLibraryDialog * createLibraryDialog;
|
CreateLibraryDialog * createLibraryDialog;
|
||||||
@ -117,17 +118,7 @@ private:
|
|||||||
//-------------
|
//-------------
|
||||||
|
|
||||||
YACReaderNavigationController * navigationController;
|
YACReaderNavigationController * navigationController;
|
||||||
|
YACReaderComicsViewsManager * comicsViewsManager;
|
||||||
ComicsView * comicsView;
|
|
||||||
ClassicComicsView * classicComicsView;
|
|
||||||
GridComicsView * gridComicsView;
|
|
||||||
QStackedWidget * comicsViewStack;
|
|
||||||
ComicsViewTransition * comicsViewTransition;
|
|
||||||
EmptyFolderWidget * emptyFolderWidget;
|
|
||||||
EmptyLabelWidget * emptyLabelWidget;
|
|
||||||
EmptySpecialListWidget * emptySpecialList;
|
|
||||||
EmptyReadingListWidget * emptyReadingList;
|
|
||||||
NoSearchResultsWidget * noSearchResultsWidget;
|
|
||||||
|
|
||||||
YACReaderFoldersView * foldersView;
|
YACReaderFoldersView * foldersView;
|
||||||
YACReaderReadingListsView * listsView;
|
YACReaderReadingListsView * listsView;
|
||||||
@ -261,9 +252,6 @@ private:
|
|||||||
void doDialogs();
|
void doDialogs();
|
||||||
void setUpShortcutsManagement();
|
void setUpShortcutsManagement();
|
||||||
void doModels();
|
void doModels();
|
||||||
void disconnectComicsViewConnections(ComicsView * widget);
|
|
||||||
void doComicsViewConnections();
|
|
||||||
|
|
||||||
|
|
||||||
//ACTIONS MANAGEMENT
|
//ACTIONS MANAGEMENT
|
||||||
void disableComicsActions(bool disabled);
|
void disableComicsActions(bool disabled);
|
||||||
@ -287,8 +275,6 @@ private:
|
|||||||
|
|
||||||
bool removeError;
|
bool removeError;
|
||||||
|
|
||||||
ComicsViewStatus comicsViewStatus;
|
|
||||||
|
|
||||||
//QTBUG-41883
|
//QTBUG-41883
|
||||||
QSize _size;
|
QSize _size;
|
||||||
QPoint _pos;
|
QPoint _pos;
|
||||||
@ -361,16 +347,6 @@ public slots:
|
|||||||
void setRemoveError();
|
void setRemoveError();
|
||||||
void checkRemoveError();
|
void checkRemoveError();
|
||||||
void resetComicRating();
|
void resetComicRating();
|
||||||
void switchToComicsView(ComicsView *from, ComicsView *to);
|
|
||||||
void showComicsViewTransition();
|
|
||||||
void toggleComicsView_delayed();//used in orther to avoid flickering;
|
|
||||||
void showComicsView();
|
|
||||||
void showEmptyFolderView();
|
|
||||||
void showEmptyLabelView();
|
|
||||||
void showEmptySpecialList();
|
|
||||||
void showEmptyReadingListWidget();
|
|
||||||
void showNoSearchResultsView();
|
|
||||||
void toggleComicsView();
|
|
||||||
void checkSearchNumResults(int numResults);
|
void checkSearchNumResults(int numResults);
|
||||||
void loadCoversFromCurrentModel();
|
void loadCoversFromCurrentModel();
|
||||||
void copyAndImportComicsToCurrentFolder(const QList<QPair<QString,QString> > & comics);
|
void copyAndImportComicsToCurrentFolder(const QList<QPair<QString,QString> > & comics);
|
||||||
@ -399,7 +375,6 @@ public slots:
|
|||||||
void onAddComicsToLabel();
|
void onAddComicsToLabel();
|
||||||
void setToolbarTitle(const QModelIndex & modelIndex);
|
void setToolbarTitle(const QModelIndex & modelIndex);
|
||||||
void saveSelectedCoversTo();
|
void saveSelectedCoversTo();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,6 +1,184 @@
|
|||||||
#include "comics_views_manager.h"
|
#include "yacreader_comics_views_manager.h"
|
||||||
|
|
||||||
ComicsViewsManager::ComicsViewsManager(QObject *parent) : QObject(parent)
|
#include "library_window.h"
|
||||||
|
|
||||||
|
#include "classic_comics_view.h"
|
||||||
|
#include "grid_comics_view.h"
|
||||||
|
#include "comics_view_transition.h"
|
||||||
|
#include "empty_folder_widget.h"
|
||||||
|
#include "empty_label_widget.h"
|
||||||
|
#include "empty_special_list.h"
|
||||||
|
#include "empty_reading_list_widget.h"
|
||||||
|
#include "no_search_results_widget.h"
|
||||||
|
|
||||||
|
//--
|
||||||
|
#include "yacreader_search_line_edit.h"
|
||||||
|
#include "options_dialog.h"
|
||||||
|
|
||||||
|
YACReaderComicsViewsManager::YACReaderComicsViewsManager(QSettings *settings, LibraryWindow *parent)
|
||||||
|
: QObject(parent), libraryWindow(parent)
|
||||||
{
|
{
|
||||||
|
comicsViewStack = new QStackedWidget();
|
||||||
|
|
||||||
|
if(!settings->contains(COMICS_VIEW_STATUS) || settings->value(COMICS_VIEW_STATUS) == Flow) {
|
||||||
|
comicsView = classicComicsView = new ClassicComicsView();
|
||||||
|
comicsViewStatus = Flow;
|
||||||
|
} else {
|
||||||
|
comicsView = gridComicsView = new GridComicsView();
|
||||||
|
connect(libraryWindow->optionsDialog, SIGNAL(optionsChanged()), gridComicsView, SLOT(updateBackgroundConfig()));
|
||||||
|
comicsViewStatus = Grid;
|
||||||
|
}
|
||||||
|
|
||||||
|
doComicsViewConnections();
|
||||||
|
|
||||||
|
comicsViewStack->addWidget(comicsViewTransition = new ComicsViewTransition());
|
||||||
|
comicsViewStack->addWidget(emptyFolderWidget = new EmptyFolderWidget());
|
||||||
|
comicsViewStack->addWidget(emptyLabelWidget = new EmptyLabelWidget());
|
||||||
|
comicsViewStack->addWidget(emptySpecialList = new EmptySpecialListWidget());
|
||||||
|
comicsViewStack->addWidget(emptyReadingList = new EmptyReadingListWidget());
|
||||||
|
comicsViewStack->addWidget(noSearchResultsWidget = new NoSearchResultsWidget());
|
||||||
|
|
||||||
|
comicsViewStack->addWidget(comicsView);
|
||||||
|
|
||||||
|
comicsViewStack->setCurrentWidget(comicsView);
|
||||||
|
|
||||||
|
//connections
|
||||||
|
connect(comicsViewTransition,SIGNAL(transitionFinished()),this,SLOT(showComicsView()));
|
||||||
|
|
||||||
|
connect(emptyFolderWidget, SIGNAL(copyComicsToCurrentFolder(QList<QPair<QString, QString> >)), libraryWindow, SLOT(copyAndImportComicsToCurrentFolder(QList<QPair<QString, QString> >)));
|
||||||
|
connect(emptyFolderWidget, SIGNAL(moveComicsToCurrentFolder(QList<QPair<QString, QString> >)), libraryWindow, SLOT(moveAndImportComicsToCurrentFolder(QList<QPair<QString, QString> >)));
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget * YACReaderComicsViewsManager::containerWidget()
|
||||||
|
{
|
||||||
|
return comicsViewStack;
|
||||||
|
}
|
||||||
|
|
||||||
|
void YACReaderComicsViewsManager::showComicsView()
|
||||||
|
{
|
||||||
|
comicsViewStack->setCurrentWidget(comicsView);
|
||||||
|
}
|
||||||
|
|
||||||
|
void YACReaderComicsViewsManager::showEmptyFolderView()
|
||||||
|
{
|
||||||
|
comicsViewStack->setCurrentWidget(emptyFolderWidget);
|
||||||
|
}
|
||||||
|
|
||||||
|
void YACReaderComicsViewsManager::showEmptyLabelView()
|
||||||
|
{
|
||||||
|
comicsViewStack->setCurrentWidget(emptyLabelWidget);
|
||||||
|
}
|
||||||
|
|
||||||
|
void YACReaderComicsViewsManager::showEmptySpecialList()
|
||||||
|
{
|
||||||
|
comicsViewStack->setCurrentWidget(emptySpecialList);
|
||||||
|
}
|
||||||
|
|
||||||
|
void YACReaderComicsViewsManager::showEmptyReadingListWidget()
|
||||||
|
{
|
||||||
|
comicsViewStack->setCurrentWidget(emptyReadingList);
|
||||||
|
}
|
||||||
|
|
||||||
|
void YACReaderComicsViewsManager::showNoSearchResultsView()
|
||||||
|
{
|
||||||
|
comicsViewStack->setCurrentWidget(noSearchResultsWidget);
|
||||||
|
}
|
||||||
|
|
||||||
|
//TODO recover the current comics selection and restore it in the destination
|
||||||
|
void YACReaderComicsViewsManager::toggleComicsView()
|
||||||
|
{
|
||||||
|
if(comicsViewStack->currentWidget()==comicsView) {
|
||||||
|
QTimer::singleShot(0,this,SLOT(showComicsViewTransition()));
|
||||||
|
QTimer::singleShot(32,this,SLOT(toggleComicsView_delayed()));
|
||||||
|
} else
|
||||||
|
toggleComicsView_delayed();
|
||||||
|
}
|
||||||
|
|
||||||
|
//PROTECTED
|
||||||
|
|
||||||
|
//TODO FIX these connections
|
||||||
|
void YACReaderComicsViewsManager::disconnectComicsViewConnections(ComicsView * widget)
|
||||||
|
{
|
||||||
|
disconnect(widget, SIGNAL(comicRated(int,QModelIndex)), libraryWindow->comicsModel, SLOT(updateRating(int,QModelIndex)));
|
||||||
|
disconnect(libraryWindow->showHideMarksAction,SIGNAL(toggled(bool)),widget,SLOT(setShowMarks(bool)));
|
||||||
|
disconnect(widget,SIGNAL(selected(unsigned int)),libraryWindow,SLOT(openComic()));
|
||||||
|
disconnect(widget,SIGNAL(doubleClicked(QModelIndex)),libraryWindow,SLOT(openComic()));
|
||||||
|
disconnect(libraryWindow->selectAllComicsAction,SIGNAL(triggered()),widget,SLOT(selectAll()));
|
||||||
|
disconnect(comicsView, SIGNAL(copyComicsToCurrentFolder(QList<QPair<QString, QString> >)), libraryWindow, SLOT(copyAndImportComicsToCurrentFolder(QList<QPair<QString, QString> >)));
|
||||||
|
disconnect(comicsView, SIGNAL(moveComicsToCurrentFolder(QList<QPair<QString, QString> >)), libraryWindow, SLOT(moveAndImportComicsToCurrentFolder(QList<QPair<QString, QString> >)));
|
||||||
|
disconnect(comicsView,SIGNAL(customContextMenuViewRequested(QPoint)),libraryWindow,SLOT(showComicsViewContextMenu(QPoint)));
|
||||||
|
disconnect(comicsView,SIGNAL(customContextMenuItemRequested(QPoint)),libraryWindow,SLOT(showComicsItemContextMenu(QPoint)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void YACReaderComicsViewsManager::doComicsViewConnections()
|
||||||
|
{
|
||||||
|
connect(comicsView, SIGNAL(comicRated(int,QModelIndex)), libraryWindow->comicsModel, SLOT(updateRating(int,QModelIndex)));
|
||||||
|
connect(libraryWindow->showHideMarksAction,SIGNAL(toggled(bool)),comicsView,SLOT(setShowMarks(bool)));
|
||||||
|
connect(comicsView,SIGNAL(selected(unsigned int)),libraryWindow,SLOT(openComic()));
|
||||||
|
connect(comicsView,SIGNAL(doubleClicked(QModelIndex)),libraryWindow,SLOT(openComic()));
|
||||||
|
connect(libraryWindow->selectAllComicsAction,SIGNAL(triggered()),comicsView,SLOT(selectAll()));
|
||||||
|
|
||||||
|
connect(comicsView,SIGNAL(customContextMenuViewRequested(QPoint)),libraryWindow,SLOT(showComicsViewContextMenu(QPoint)));
|
||||||
|
connect(comicsView,SIGNAL(customContextMenuItemRequested(QPoint)),libraryWindow,SLOT(showComicsItemContextMenu(QPoint)));
|
||||||
|
//Drops
|
||||||
|
connect(comicsView, SIGNAL(copyComicsToCurrentFolder(QList<QPair<QString, QString> >)), libraryWindow, SLOT(copyAndImportComicsToCurrentFolder(QList<QPair<QString, QString> >)));
|
||||||
|
connect(comicsView, SIGNAL(moveComicsToCurrentFolder(QList<QPair<QString, QString> >)), libraryWindow, SLOT(moveAndImportComicsToCurrentFolder(QList<QPair<QString, QString> >)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void YACReaderComicsViewsManager::switchToComicsView(ComicsView * from, ComicsView * to)
|
||||||
|
{
|
||||||
|
//setup views
|
||||||
|
disconnectComicsViewConnections(from);
|
||||||
|
from->close();
|
||||||
|
|
||||||
|
comicsView = to;
|
||||||
|
doComicsViewConnections();
|
||||||
|
|
||||||
|
comicsView->setToolBar(libraryWindow->editInfoToolBar);
|
||||||
|
|
||||||
|
comicsViewStack->removeWidget(from);
|
||||||
|
comicsViewStack->addWidget(comicsView);
|
||||||
|
|
||||||
|
delete from;
|
||||||
|
|
||||||
|
//load content into current view
|
||||||
|
libraryWindow->loadCoversFromCurrentModel();
|
||||||
|
|
||||||
|
if(!libraryWindow->searchEdit->text().isEmpty())
|
||||||
|
{
|
||||||
|
comicsView->enableFilterMode(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void YACReaderComicsViewsManager::showComicsViewTransition()
|
||||||
|
{
|
||||||
|
comicsViewStack->setCurrentWidget(comicsViewTransition);
|
||||||
|
comicsViewTransition->startMovie();
|
||||||
|
}
|
||||||
|
|
||||||
|
void YACReaderComicsViewsManager::toggleComicsView_delayed()
|
||||||
|
{
|
||||||
|
if(comicsViewStatus == Flow){
|
||||||
|
QIcon icoViewsButton;
|
||||||
|
icoViewsButton.addFile(":/images/main_toolbar/flow.png", QSize(), QIcon::Normal);
|
||||||
|
libraryWindow->toggleComicsViewAction->setIcon(icoViewsButton);
|
||||||
|
#ifdef Q_OS_MAC
|
||||||
|
libraryWindow->libraryToolBar->updateViewSelectorIcon(icoViewsButton);
|
||||||
|
#endif
|
||||||
|
switchToComicsView(classicComicsView, gridComicsView = new GridComicsView());
|
||||||
|
connect(libraryWindow->optionsDialog, SIGNAL(optionsChanged()), gridComicsView, SLOT(updateBackgroundConfig()));
|
||||||
|
comicsViewStatus = Grid;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
QIcon icoViewsButton;
|
||||||
|
icoViewsButton.addFile(":/images/main_toolbar/grid.png", QSize(), QIcon::Normal);
|
||||||
|
libraryWindow->toggleComicsViewAction->setIcon(icoViewsButton);
|
||||||
|
#ifdef Q_OS_MAC
|
||||||
|
libraryWindow->libraryToolBar->updateViewSelectorIcon(icoViewsButton);
|
||||||
|
#endif
|
||||||
|
switchToComicsView(gridComicsView, classicComicsView = new ClassicComicsView());
|
||||||
|
comicsViewStatus = Flow;
|
||||||
|
}
|
||||||
|
|
||||||
|
libraryWindow->settings->setValue(COMICS_VIEW_STATUS, comicsViewStatus);
|
||||||
}
|
}
|
||||||
|
@ -3,17 +3,30 @@
|
|||||||
|
|
||||||
#include <QtWidgets>
|
#include <QtWidgets>
|
||||||
|
|
||||||
|
#include "yacreader_global_gui.h"
|
||||||
|
|
||||||
|
class LibraryWindow;
|
||||||
|
|
||||||
|
class ComicsView;
|
||||||
|
class ClassicComicsView;
|
||||||
|
class GridComicsView;
|
||||||
|
class ComicsViewTransition;
|
||||||
|
class EmptyFolderWidget;
|
||||||
|
class EmptyLabelWidget;
|
||||||
|
class EmptySpecialListWidget;
|
||||||
|
class EmptyReadingListWidget;
|
||||||
|
class NoSearchResultsWidget;
|
||||||
|
|
||||||
|
using namespace YACReader;
|
||||||
|
|
||||||
class YACReaderComicsViewsManager : public QObject
|
class YACReaderComicsViewsManager : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit YACReaderComicsViewsManager(QObject *parent = 0);
|
explicit YACReaderComicsViewsManager(QSettings *settings, LibraryWindow *parent = 0);
|
||||||
|
|
||||||
QWidget * containerWidget();
|
QWidget * containerWidget();
|
||||||
|
|
||||||
protected:
|
|
||||||
QStackedWidget * comicsViewStack;
|
|
||||||
|
|
||||||
ComicsView * comicsView;
|
ComicsView * comicsView;
|
||||||
ClassicComicsView * classicComicsView;
|
ClassicComicsView * classicComicsView;
|
||||||
GridComicsView * gridComicsView;
|
GridComicsView * gridComicsView;
|
||||||
@ -27,9 +40,33 @@ protected:
|
|||||||
|
|
||||||
NoSearchResultsWidget * noSearchResultsWidget;
|
NoSearchResultsWidget * noSearchResultsWidget;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
QStackedWidget * comicsViewStack;
|
||||||
|
LibraryWindow * libraryWindow;
|
||||||
|
|
||||||
|
ComicsViewStatus comicsViewStatus;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
void toggleComicsView();
|
||||||
|
|
||||||
|
void showComicsView();
|
||||||
|
void showEmptyFolderView();
|
||||||
|
void showEmptyLabelView();
|
||||||
|
void showEmptySpecialList();
|
||||||
|
void showEmptyReadingListWidget();
|
||||||
|
void showNoSearchResultsView();
|
||||||
|
|
||||||
|
protected slots:
|
||||||
|
void showComicsViewTransition();
|
||||||
|
void toggleComicsView_delayed();
|
||||||
|
|
||||||
|
void disconnectComicsViewConnections(ComicsView * widget);
|
||||||
|
void doComicsViewConnections();
|
||||||
|
|
||||||
|
void switchToComicsView(ComicsView *from, ComicsView *to);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // COMICSVIEWSMANAGER_H
|
#endif // COMICSVIEWSMANAGER_H
|
||||||
|
@ -16,11 +16,12 @@
|
|||||||
#include "yacreader_global.h"
|
#include "yacreader_global.h"
|
||||||
#include "empty_label_widget.h"
|
#include "empty_label_widget.h"
|
||||||
#include "empty_special_list.h"
|
#include "empty_special_list.h"
|
||||||
|
#include "yacreader_comics_views_manager.h"
|
||||||
|
|
||||||
#include "QsLog.h"
|
#include "QsLog.h"
|
||||||
|
|
||||||
YACReaderNavigationController::YACReaderNavigationController(LibraryWindow *parent) :
|
YACReaderNavigationController::YACReaderNavigationController(LibraryWindow *parent, YACReaderComicsViewsManager *comicsViewsManager) :
|
||||||
QObject(parent),libraryWindow(parent)
|
QObject(parent),libraryWindow(parent),comicsViewsManager(comicsViewsManager)
|
||||||
{
|
{
|
||||||
setupConnections();
|
setupConnections();
|
||||||
}
|
}
|
||||||
@ -59,19 +60,19 @@ void YACReaderNavigationController::loadFolderInfo(const QModelIndex &modelIndex
|
|||||||
|
|
||||||
//check comics in folder with id = folderId
|
//check comics in folder with id = folderId
|
||||||
libraryWindow->comicsModel->setupFolderModelData(folderId,libraryWindow->foldersModel->getDatabase());
|
libraryWindow->comicsModel->setupFolderModelData(folderId,libraryWindow->foldersModel->getDatabase());
|
||||||
libraryWindow->comicsView->setModel(libraryWindow->comicsModel);
|
comicsViewsManager->comicsView->setModel(libraryWindow->comicsModel);
|
||||||
|
|
||||||
//configure views
|
//configure views
|
||||||
if(libraryWindow->comicsModel->rowCount() > 0)
|
if(libraryWindow->comicsModel->rowCount() > 0)
|
||||||
{
|
{
|
||||||
//updateView
|
//updateView
|
||||||
libraryWindow->showComicsView();
|
comicsViewsManager->showComicsView();
|
||||||
libraryWindow->disableComicsActions(false);
|
libraryWindow->disableComicsActions(false);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
//showEmptyFolder
|
//showEmptyFolder
|
||||||
loadEmptyFolderInfo(modelIndex);
|
loadEmptyFolderInfo(modelIndex);
|
||||||
libraryWindow->showEmptyFolderView();
|
comicsViewsManager->showEmptyFolderView();
|
||||||
libraryWindow->disableComicsActions(true);
|
libraryWindow->disableComicsActions(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -116,11 +117,11 @@ void YACReaderNavigationController::loadSpecialListInfo(const QModelIndex &model
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
libraryWindow->comicsView->setModel(libraryWindow->comicsModel);
|
comicsViewsManager->comicsView->setModel(libraryWindow->comicsModel);
|
||||||
|
|
||||||
if(libraryWindow->comicsModel->rowCount() > 0)
|
if(libraryWindow->comicsModel->rowCount() > 0)
|
||||||
{
|
{
|
||||||
libraryWindow->showComicsView();
|
comicsViewsManager->showComicsView();
|
||||||
libraryWindow->disableComicsActions(false);
|
libraryWindow->disableComicsActions(false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -129,16 +130,16 @@ void YACReaderNavigationController::loadSpecialListInfo(const QModelIndex &model
|
|||||||
switch(type)
|
switch(type)
|
||||||
{
|
{
|
||||||
case ReadingListModel::Favorites:
|
case ReadingListModel::Favorites:
|
||||||
libraryWindow->emptySpecialList->setPixmap(QPixmap(":/images/empty_favorites.png"));
|
comicsViewsManager->emptySpecialList->setPixmap(QPixmap(":/images/empty_favorites.png"));
|
||||||
libraryWindow->emptySpecialList->setText(tr("No favorites"));
|
comicsViewsManager->emptySpecialList->setText(tr("No favorites"));
|
||||||
break;
|
break;
|
||||||
case ReadingListModel::Reading:
|
case ReadingListModel::Reading:
|
||||||
libraryWindow->emptySpecialList->setPixmap(QPixmap(":/images/empty_current_readings.png"));
|
comicsViewsManager->emptySpecialList->setPixmap(QPixmap(":/images/empty_current_readings.png"));
|
||||||
libraryWindow->emptySpecialList->setText(tr("You are not reading anything yet, come on!!"));
|
comicsViewsManager->emptySpecialList->setText(tr("You are not reading anything yet, come on!!"));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
libraryWindow->showEmptySpecialList();
|
comicsViewsManager->showEmptySpecialList();
|
||||||
libraryWindow->disableComicsActions(true);
|
libraryWindow->disableComicsActions(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -148,20 +149,20 @@ void YACReaderNavigationController::loadLabelInfo(const QModelIndex &modelIndex)
|
|||||||
qulonglong id = modelIndex.data(ReadingListModel::IDRole).toULongLong();
|
qulonglong id = modelIndex.data(ReadingListModel::IDRole).toULongLong();
|
||||||
//check comics in label with id = id
|
//check comics in label with id = id
|
||||||
libraryWindow->comicsModel->setupLabelModelData(id,libraryWindow->foldersModel->getDatabase());
|
libraryWindow->comicsModel->setupLabelModelData(id,libraryWindow->foldersModel->getDatabase());
|
||||||
libraryWindow->comicsView->setModel(libraryWindow->comicsModel);
|
comicsViewsManager->comicsView->setModel(libraryWindow->comicsModel);
|
||||||
|
|
||||||
//configure views
|
//configure views
|
||||||
if(libraryWindow->comicsModel->rowCount() > 0)
|
if(libraryWindow->comicsModel->rowCount() > 0)
|
||||||
{
|
{
|
||||||
//updateView
|
//updateView
|
||||||
libraryWindow->showComicsView();
|
comicsViewsManager->showComicsView();
|
||||||
libraryWindow->disableComicsActions(false);
|
libraryWindow->disableComicsActions(false);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
//showEmptyFolder
|
//showEmptyFolder
|
||||||
//loadEmptyLabelInfo(); //there is no info in an empty label by now, TODO design something
|
//loadEmptyLabelInfo(); //there is no info in an empty label by now, TODO design something
|
||||||
libraryWindow->emptyLabelWidget->setColor((YACReader::LabelColors)modelIndex.data(ReadingListModel::LabelColorRole).toInt());
|
comicsViewsManager->emptyLabelWidget->setColor((YACReader::LabelColors)modelIndex.data(ReadingListModel::LabelColorRole).toInt());
|
||||||
libraryWindow->showEmptyLabelView();
|
comicsViewsManager->showEmptyLabelView();
|
||||||
libraryWindow->disableComicsActions(true);
|
libraryWindow->disableComicsActions(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -171,17 +172,17 @@ void YACReaderNavigationController::loadReadingListInfo(const QModelIndex &model
|
|||||||
qulonglong id = modelIndex.data(ReadingListModel::IDRole).toULongLong();
|
qulonglong id = modelIndex.data(ReadingListModel::IDRole).toULongLong();
|
||||||
//check comics in label with id = id
|
//check comics in label with id = id
|
||||||
libraryWindow->comicsModel->setupReadingListModelData(id,libraryWindow->foldersModel->getDatabase());
|
libraryWindow->comicsModel->setupReadingListModelData(id,libraryWindow->foldersModel->getDatabase());
|
||||||
libraryWindow->comicsView->setModel(libraryWindow->comicsModel);
|
comicsViewsManager->comicsView->setModel(libraryWindow->comicsModel);
|
||||||
|
|
||||||
//configure views
|
//configure views
|
||||||
if(libraryWindow->comicsModel->rowCount() > 0)
|
if(libraryWindow->comicsModel->rowCount() > 0)
|
||||||
{
|
{
|
||||||
//updateView
|
//updateView
|
||||||
libraryWindow->showComicsView();
|
comicsViewsManager->showComicsView();
|
||||||
libraryWindow->disableComicsActions(false);
|
libraryWindow->disableComicsActions(false);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
libraryWindow->showEmptyReadingListWidget();
|
comicsViewsManager->showEmptyReadingListWidget();
|
||||||
libraryWindow->disableComicsActions(true);
|
libraryWindow->disableComicsActions(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -273,7 +274,7 @@ void YACReaderNavigationController::loadEmptyFolderInfo(const QModelIndex &model
|
|||||||
{
|
{
|
||||||
QStringList subfolders;
|
QStringList subfolders;
|
||||||
subfolders = libraryWindow->foldersModel->getSubfoldersNames(modelIndex);
|
subfolders = libraryWindow->foldersModel->getSubfoldersNames(modelIndex);
|
||||||
libraryWindow->emptyFolderWidget->setSubfolders(modelIndex,subfolders);
|
comicsViewsManager->emptyFolderWidget->setSubfolders(modelIndex,subfolders);
|
||||||
}
|
}
|
||||||
|
|
||||||
void YACReaderNavigationController::loadPreviousStatus()
|
void YACReaderNavigationController::loadPreviousStatus()
|
||||||
@ -287,7 +288,7 @@ void YACReaderNavigationController::setupConnections()
|
|||||||
connect(libraryWindow->foldersView,SIGNAL(clicked(QModelIndex)),this,SLOT(selectedFolder(QModelIndex)));
|
connect(libraryWindow->foldersView,SIGNAL(clicked(QModelIndex)),this,SLOT(selectedFolder(QModelIndex)));
|
||||||
connect(libraryWindow->listsView,SIGNAL(clicked(QModelIndex)),this,SLOT(selectedList(QModelIndex)));
|
connect(libraryWindow->listsView,SIGNAL(clicked(QModelIndex)),this,SLOT(selectedList(QModelIndex)));
|
||||||
connect(libraryWindow->historyController,SIGNAL(modelIndexSelected(YACReaderLibrarySourceContainer)),this,SLOT(selectedIndexFromHistory(YACReaderLibrarySourceContainer)));
|
connect(libraryWindow->historyController,SIGNAL(modelIndexSelected(YACReaderLibrarySourceContainer)),this,SLOT(selectedIndexFromHistory(YACReaderLibrarySourceContainer)));
|
||||||
connect(libraryWindow->emptyFolderWidget,SIGNAL(subfolderSelected(QModelIndex,int)),this,SLOT(selectSubfolder(QModelIndex,int)));
|
connect(comicsViewsManager->emptyFolderWidget,SIGNAL(subfolderSelected(QModelIndex,int)),this,SLOT(selectSubfolder(QModelIndex,int)));
|
||||||
connect(libraryWindow->comicsModel,SIGNAL(isEmpty()),this,SLOT(reselectCurrentSource()));
|
connect(libraryWindow->comicsModel,SIGNAL(isEmpty()),this,SLOT(reselectCurrentSource()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,13 +4,14 @@
|
|||||||
#include <QObject>
|
#include <QObject>
|
||||||
class LibraryWindow;
|
class LibraryWindow;
|
||||||
class YACReaderLibrarySourceContainer;
|
class YACReaderLibrarySourceContainer;
|
||||||
|
class YACReaderComicsViewsManager;
|
||||||
|
|
||||||
class YACReaderNavigationController : public QObject
|
class YACReaderNavigationController : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
|
|
||||||
explicit YACReaderNavigationController(LibraryWindow * parent);
|
explicit YACReaderNavigationController(LibraryWindow * parent, YACReaderComicsViewsManager * comicsViewsManager);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
||||||
@ -45,6 +46,7 @@ private:
|
|||||||
|
|
||||||
void setupConnections();
|
void setupConnections();
|
||||||
LibraryWindow * libraryWindow;
|
LibraryWindow * libraryWindow;
|
||||||
|
YACReaderComicsViewsManager * comicsViewsManager;
|
||||||
|
|
||||||
//convenience methods
|
//convenience methods
|
||||||
qulonglong folderModelIndexToID(const QModelIndex & mi);
|
qulonglong folderModelIndexToID(const QModelIndex & mi);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user