Use the new widget instead of EmptyFolderWidget

This commit is contained in:
Luis Ángel San Martín 2022-10-09 11:31:33 +02:00
parent d2dff7b4a5
commit abfa03fa16
5 changed files with 113 additions and 14 deletions

View File

@ -79,6 +79,7 @@
#include "opengl_checker.h" #include "opengl_checker.h"
#include "yacreader_comics_views_manager.h" #include "yacreader_comics_views_manager.h"
#include "folder_content_view.h"
#include "trayicon_controller.h" #include "trayicon_controller.h"
@ -1544,7 +1545,7 @@ void LibraryWindow::reloadAfterCopyMove(const QModelIndex &mi)
navigationController->loadFolderInfo(mi); navigationController->loadFolderInfo(mi);
} }
foldersModel->fetchMoreFromDB(mi); foldersModel->reload();
enableNeededActions(); enableNeededActions();
} }
@ -1783,6 +1784,87 @@ void LibraryWindow::showComicsItemContextMenu(const QPoint &point)
menu.exec(comicsViewsManager->comicsView->mapToGlobal(point)); menu.exec(comicsViewsManager->comicsView->mapToGlobal(point));
} }
void LibraryWindow::showGridFoldersContextMenu(QPoint point, Folder folder)
{
QMenu menu;
auto openContainingFolderAction = new QAction();
openContainingFolderAction->setText(tr("Open folder..."));
openContainingFolderAction->setIcon(QIcon(":/images/menus_icons/open.png"));
auto updateFolderAction = new QAction(tr("Update folder"), this);
updateFolderAction->setIcon(QIcon(":/images/menus_icons/updateLibraryIcon.png"));
auto setFolderAsNotCompletedAction = new QAction();
setFolderAsNotCompletedAction->setText(tr("Set as uncompleted"));
auto setFolderAsCompletedAction = new QAction();
setFolderAsCompletedAction->setText(tr("Set as completed"));
auto setFolderAsReadAction = new QAction();
setFolderAsReadAction->setText(tr("Set as read"));
auto setFolderAsUnreadAction = new QAction();
setFolderAsUnreadAction->setText(tr("Set as unread"));
auto setFolderAsMangaAction = new QAction();
setFolderAsMangaAction->setText(tr("Set as manga"));
auto setFolderAsNormalAction = new QAction();
setFolderAsNormalAction->setText(tr("Set as comic"));
menu.addAction(openContainingFolderAction);
menu.addAction(updateFolderAction);
menu.addSeparator();
if (folder.isCompleted())
menu.addAction(setFolderAsNotCompletedAction);
else
menu.addAction(setFolderAsCompletedAction);
menu.addSeparator();
if (folder.isFinished())
menu.addAction(setFolderAsUnreadAction);
else
menu.addAction(setFolderAsReadAction);
menu.addSeparator();
if (folder.isManga())
menu.addAction(setFolderAsNormalAction);
else
menu.addAction(setFolderAsMangaAction);
// TODO update the subfolder model loaded in folderContentView
connect(openContainingFolderAction, &QAction::triggered, this, [=]() {
QDesktopServices::openUrl(QUrl("file:///" + QDir::cleanPath(currentPath() + "/" + folder.path), QUrl::TolerantMode));
});
connect(updateFolderAction, &QAction::triggered, this, [=]() {
updateFolder(foldersModel->getIndexFromFolder(folder));
});
connect(setFolderAsNotCompletedAction, &QAction::triggered, this, [=]() {
foldersModel->updateFolderCompletedStatus(QModelIndexList() << foldersModel->getIndexFromFolder(folder), false);
});
connect(setFolderAsCompletedAction, &QAction::triggered, this, [=]() {
foldersModel->updateFolderCompletedStatus(QModelIndexList() << foldersModel->getIndexFromFolder(folder), true);
});
connect(setFolderAsReadAction, &QAction::triggered, this, [=]() {
foldersModel->updateFolderFinishedStatus(QModelIndexList() << foldersModel->getIndexFromFolder(folder), true);
});
connect(setFolderAsUnreadAction, &QAction::triggered, this, [=]() {
foldersModel->updateFolderFinishedStatus(QModelIndexList() << foldersModel->getIndexFromFolder(folder), false);
});
connect(setFolderAsMangaAction, &QAction::triggered, this, [=]() {
foldersModel->updateFolderManga(QModelIndexList() << foldersModel->getIndexFromFolder(folder), true);
});
connect(setFolderAsNormalAction, &QAction::triggered, this, [=]() {
foldersModel->updateFolderManga(QModelIndexList() << foldersModel->getIndexFromFolder(folder), false);
});
menu.exec(comicsViewsManager->folderContentView->mapToGlobal(point));
}
void LibraryWindow::showContinueReadingContextMenu(QPoint point, ComicDB comic)
{
qDebug() << "openContinueReadingComicContextMenu" << comic.name;
}
void LibraryWindow::setupAddToSubmenu(QMenu &menu) void LibraryWindow::setupAddToSubmenu(QMenu &menu)
{ {
menu.addAction(addToFavoritesAction); menu.addAction(addToFavoritesAction);
@ -1832,7 +1914,7 @@ void LibraryWindow::saveSelectedCoversTo()
if (!folderPath.isEmpty()) { if (!folderPath.isEmpty()) {
QModelIndexList comics = getSelectedComics(); QModelIndexList comics = getSelectedComics();
foreach (QModelIndex comic, comics) { foreach (QModelIndex comic, comics) {
QString origin = comic.data(ComicModel::CoverPathRole).toString().remove("file:///"); QString origin = comic.data(ComicModel::CoverPathRole).toString().remove("file:///").remove("file:");
QString destination = QDir(folderPath).filePath(comic.data(ComicModel::FileNameRole).toString() + ".jpg"); QString destination = QDir(folderPath).filePath(comic.data(ComicModel::FileNameRole).toString() + ".jpg");
QLOG_DEBUG() << "From : " << origin; QLOG_DEBUG() << "From : " << origin;

View File

@ -14,6 +14,8 @@
#include "folder_query_result_processor.h" #include "folder_query_result_processor.h"
#include "comic_model.h" #include "comic_model.h"
#include "comic_db.h"
#include "folder.h"
#include <future> #include <future>
#include <memory> #include <memory>
@ -379,6 +381,8 @@ public slots:
void deleteComicsFromList(); void deleteComicsFromList();
// void showSocial(); // void showSocial();
void showFoldersContextMenu(const QPoint &point); void showFoldersContextMenu(const QPoint &point);
void showGridFoldersContextMenu(QPoint point, Folder folder);
void showContinueReadingContextMenu(QPoint point, ComicDB comic);
void libraryAlreadyExists(const QString &name); void libraryAlreadyExists(const QString &name);
void importLibraryPackage(); void importLibraryPackage();
void updateComicsView(quint64 libraryId, const ComicDB &comic); void updateComicsView(quint64 libraryId, const ComicDB &comic);

View File

@ -6,7 +6,7 @@
#include "grid_comics_view.h" #include "grid_comics_view.h"
#include "info_comics_view.h" #include "info_comics_view.h"
#include "comics_view_transition.h" #include "comics_view_transition.h"
#include "empty_folder_widget.h" #include "folder_content_view.h"
#include "empty_label_widget.h" #include "empty_label_widget.h"
#include "empty_special_list.h" #include "empty_special_list.h"
#include "empty_reading_list_widget.h" #include "empty_reading_list_widget.h"
@ -48,7 +48,7 @@ YACReaderComicsViewsManager::YACReaderComicsViewsManager(QSettings *settings, Li
doComicsViewConnections(); doComicsViewConnections();
comicsViewStack->addWidget(comicsViewTransition = new ComicsViewTransition()); comicsViewStack->addWidget(comicsViewTransition = new ComicsViewTransition());
comicsViewStack->addWidget(emptyFolderWidget = new EmptyFolderWidget()); comicsViewStack->addWidget(folderContentView = new FolderContentView());
comicsViewStack->addWidget(emptyLabelWidget = new EmptyLabelWidget()); comicsViewStack->addWidget(emptyLabelWidget = new EmptyLabelWidget());
comicsViewStack->addWidget(emptySpecialList = new EmptySpecialListWidget()); comicsViewStack->addWidget(emptySpecialList = new EmptySpecialListWidget());
comicsViewStack->addWidget(emptyReadingList = new EmptyReadingListWidget()); comicsViewStack->addWidget(emptyReadingList = new EmptyReadingListWidget());
@ -59,8 +59,8 @@ YACReaderComicsViewsManager::YACReaderComicsViewsManager(QSettings *settings, Li
comicsViewStack->setCurrentWidget(comicsView); comicsViewStack->setCurrentWidget(comicsView);
// connections // connections
connect(emptyFolderWidget, &EmptyFolderWidget::copyComicsToCurrentFolder, libraryWindow, &LibraryWindow::copyAndImportComicsToCurrentFolder); connect(folderContentView, &FolderContentView::copyComicsToCurrentFolder, libraryWindow, &LibraryWindow::copyAndImportComicsToCurrentFolder);
connect(emptyFolderWidget, &EmptyFolderWidget::moveComicsToCurrentFolder, libraryWindow, &LibraryWindow::moveAndImportComicsToCurrentFolder); connect(folderContentView, &FolderContentView::moveComicsToCurrentFolder, libraryWindow, &LibraryWindow::moveAndImportComicsToCurrentFolder);
} }
QWidget *YACReaderComicsViewsManager::containerWidget() QWidget *YACReaderComicsViewsManager::containerWidget()
@ -86,7 +86,7 @@ void YACReaderComicsViewsManager::showComicsView()
void YACReaderComicsViewsManager::showEmptyFolderView() void YACReaderComicsViewsManager::showEmptyFolderView()
{ {
comicsViewStack->setCurrentWidget(emptyFolderWidget); comicsViewStack->setCurrentWidget(folderContentView);
} }
void YACReaderComicsViewsManager::showEmptyLabelView() void YACReaderComicsViewsManager::showEmptyLabelView()

View File

@ -12,7 +12,7 @@ class ClassicComicsView;
class GridComicsView; class GridComicsView;
class InfoComicsView; class InfoComicsView;
class ComicsViewTransition; class ComicsViewTransition;
class EmptyFolderWidget; class FolderContentView;
class EmptyLabelWidget; class EmptyLabelWidget;
class EmptySpecialListWidget; class EmptySpecialListWidget;
class EmptyReadingListWidget; class EmptyReadingListWidget;
@ -20,6 +20,7 @@ class NoSearchResultsWidget;
using namespace YACReader; using namespace YACReader;
// TODO rename to YACReaderContentViewsManager
class YACReaderComicsViewsManager : public QObject class YACReaderComicsViewsManager : public QObject
{ {
Q_OBJECT Q_OBJECT
@ -32,7 +33,7 @@ public:
ComicsViewTransition *comicsViewTransition; ComicsViewTransition *comicsViewTransition;
EmptyFolderWidget *emptyFolderWidget; FolderContentView *folderContentView;
EmptyLabelWidget *emptyLabelWidget; EmptyLabelWidget *emptyLabelWidget;
EmptySpecialListWidget *emptySpecialList; EmptySpecialListWidget *emptySpecialList;
EmptyReadingListWidget *emptyReadingList; EmptyReadingListWidget *emptyReadingList;

View File

@ -11,7 +11,7 @@
#include "folder_model.h" #include "folder_model.h"
#include "reading_list_model.h" #include "reading_list_model.h"
#include "comics_view.h" #include "comics_view.h"
#include "empty_folder_widget.h" #include "folder_content_view.h"
#include "yacreader_search_line_edit.h" #include "yacreader_search_line_edit.h"
#include "yacreader_global.h" #include "yacreader_global.h"
#include "empty_label_widget.h" #include "empty_label_widget.h"
@ -249,9 +249,18 @@ void YACReaderNavigationController::selectSubfolder(const QModelIndex &sourceMIP
void YACReaderNavigationController::loadEmptyFolderInfo(const QModelIndex &modelIndex) void YACReaderNavigationController::loadEmptyFolderInfo(const QModelIndex &modelIndex)
{ {
QStringList subfolders; auto readingComicsModel = new ComicModel();
subfolders = libraryWindow->foldersModel->getSubfoldersNames(modelIndex);
comicsViewsManager->emptyFolderWidget->setSubfolders(modelIndex, subfolders); auto isRoot = !modelIndex.isValid();
if (isRoot) {
readingComicsModel->setupReadingModelData(libraryWindow->foldersModel->getDatabase());
}
comicsViewsManager->folderContentView->setContinueReadingModel(readingComicsModel);
auto subFolderModel = libraryWindow->foldersModel->getSubfoldersModel(modelIndex);
comicsViewsManager->folderContentView->setModel(modelIndex, subFolderModel);
} }
void YACReaderNavigationController::loadPreviousStatus() void YACReaderNavigationController::loadPreviousStatus()
@ -266,7 +275,10 @@ void YACReaderNavigationController::setupConnections()
connect(libraryWindow->foldersView, &YACReaderTreeView::clicked, this, &YACReaderNavigationController::selectedFolder); connect(libraryWindow->foldersView, &YACReaderTreeView::clicked, this, &YACReaderNavigationController::selectedFolder);
connect(libraryWindow->listsView, &QAbstractItemView::clicked, this, &YACReaderNavigationController::selectedList); connect(libraryWindow->listsView, &QAbstractItemView::clicked, this, &YACReaderNavigationController::selectedList);
connect(libraryWindow->historyController, &YACReaderHistoryController::modelIndexSelected, this, &YACReaderNavigationController::selectedIndexFromHistory); connect(libraryWindow->historyController, &YACReaderHistoryController::modelIndexSelected, this, &YACReaderNavigationController::selectedIndexFromHistory);
connect(comicsViewsManager->emptyFolderWidget, &EmptyFolderWidget::subfolderSelected, this, &YACReaderNavigationController::selectSubfolder); connect(comicsViewsManager->folderContentView, &FolderContentView::subfolderSelected, this, &YACReaderNavigationController::selectSubfolder);
connect(comicsViewsManager->folderContentView, &FolderContentView::openComic, libraryWindow, QOverload<const ComicDB &, const ComicModel::Mode>::of(&LibraryWindow::openComic));
connect(comicsViewsManager->folderContentView, &FolderContentView::openFolderContextMenu, libraryWindow, &LibraryWindow::showGridFoldersContextMenu);
connect(comicsViewsManager->folderContentView, &FolderContentView::openContinueReadingComicContextMenu, libraryWindow, &LibraryWindow::showContinueReadingContextMenu);
connect(libraryWindow->comicsModel, &ComicModel::isEmpty, this, &YACReaderNavigationController::reselectCurrentSource); connect(libraryWindow->comicsModel, &ComicModel::isEmpty, this, &YACReaderNavigationController::reselectCurrentSource);
} }