From 58ec456fc714d6b46bae9dee6dfe3c156d617d4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20=C3=81ngel=20San=20Mart=C3=ADn?= Date: Sun, 23 Jun 2024 19:02:13 +0200 Subject: [PATCH] Extract the library QActions to its own file --- YACReaderLibrary/YACReaderLibrary.pro | 2 + YACReaderLibrary/library_window.cpp | 1015 +++-------------- YACReaderLibrary/library_window.h | 105 +- YACReaderLibrary/library_window_actions.cpp | 744 ++++++++++++ YACReaderLibrary/library_window_actions.h | 137 +++ YACReaderLibrary/trayicon_controller.cpp | 2 +- .../yacreader_content_views_manager.cpp | 18 +- 7 files changed, 1054 insertions(+), 969 deletions(-) create mode 100644 YACReaderLibrary/library_window_actions.cpp create mode 100644 YACReaderLibrary/library_window_actions.h diff --git a/YACReaderLibrary/YACReaderLibrary.pro b/YACReaderLibrary/YACReaderLibrary.pro index ed79aa38..ddbc6575 100644 --- a/YACReaderLibrary/YACReaderLibrary.pro +++ b/YACReaderLibrary/YACReaderLibrary.pro @@ -86,6 +86,7 @@ HEADERS += comic_flow.h \ library_creator.h \ library_window.h \ add_library_dialog.h \ + library_window_actions.h \ recent_visibility_coordinator.h \ rename_library_dialog.h \ properties_dialog.h \ @@ -172,6 +173,7 @@ SOURCES += comic_flow.cpp \ library_comic_opener.cpp \ library_creator.cpp \ library_window.cpp \ + library_window_actions.cpp \ main.cpp \ add_library_dialog.cpp \ recent_visibility_coordinator.cpp \ diff --git a/YACReaderLibrary/library_window.cpp b/YACReaderLibrary/library_window.cpp index 3d0abfba..a6937e9e 100644 --- a/YACReaderLibrary/library_window.cpp +++ b/YACReaderLibrary/library_window.cpp @@ -16,9 +16,6 @@ #include #include -#include -#include -#include #include #include "folder_item.h" @@ -147,13 +144,13 @@ bool LibraryWindow::eventFilter(QObject *object, QEvent *event) auto mouseEvent = static_cast(event); if (mouseEvent->button() == Qt::ForwardButton) { - forwardAction->trigger(); + actions.forwardAction->trigger(); event->accept(); return true; } if (mouseEvent->button() == Qt::BackButton) { - backAction->trigger(); + actions.backAction->trigger(); event->accept(); return true; } @@ -225,7 +222,7 @@ void LibraryWindow::setupUI() historyController = new YACReaderHistoryController(this); - createActions(); + actions.createActions(this, settings); doModels(); doDialogs(); @@ -293,23 +290,23 @@ void LibraryWindow::doLayout() YACReaderTitledToolBar *foldersTitle = sideBar->foldersTitle; YACReaderTitledToolBar *readingListsTitle = sideBar->readingListsTitle; - librariesTitle->addAction(createLibraryAction); - librariesTitle->addAction(openLibraryAction); + librariesTitle->addAction(actions.createLibraryAction); + librariesTitle->addAction(actions.openLibraryAction); librariesTitle->addSpacing(3); - foldersTitle->addAction(addFolderAction); - foldersTitle->addAction(deleteFolderAction); + foldersTitle->addAction(actions.addFolderAction); + foldersTitle->addAction(actions.deleteFolderAction); foldersTitle->addSepartor(); - foldersTitle->addAction(setRootIndexAction); - foldersTitle->addAction(expandAllNodesAction); - foldersTitle->addAction(colapseAllNodesAction); + foldersTitle->addAction(actions.setRootIndexAction); + foldersTitle->addAction(actions.expandAllNodesAction); + foldersTitle->addAction(actions.colapseAllNodesAction); - readingListsTitle->addAction(addReadingListAction); + readingListsTitle->addAction(actions.addReadingListAction); // readingListsTitle->addSepartor(); - readingListsTitle->addAction(addLabelAction); + readingListsTitle->addAction(actions.addLabelAction); // readingListsTitle->addSepartor(); - readingListsTitle->addAction(renameListAction); - readingListsTitle->addAction(deleteReadingListAction); + readingListsTitle->addAction(actions.renameListAction); + readingListsTitle->addAction(actions.deleteReadingListAction); readingListsTitle->addSpacing(3); // FINAL LAYOUT------------------------------------------------------------- @@ -372,7 +369,7 @@ void LibraryWindow::doDialogs() optionsDialog->restoreOptions(settings); editShortcutsDialog = new EditShortcutsDialog(this); - setUpShortcutsManagement(); + actions.setUpShortcutsManagement(editShortcutsDialog); #ifdef SERVER_RELEASE serverConfigDialog = new ServerConfigDialog(this); @@ -391,100 +388,6 @@ void LibraryWindow::doDialogs() had->loadHelp(":/files/helpYACReaderLibrary.html"); } -void LibraryWindow::setUpShortcutsManagement() -{ - - QList allActions; - QList tmpList; - - editShortcutsDialog->addActionsGroup("Comics", QIcon(":/images/shortcuts_group_comics.svg"), - tmpList = QList() - << openComicAction - << saveCoversToAction - << setAsReadAction - << setAsNonReadAction - << setMangaAction - << setNormalAction - << openContainingFolderComicAction - << resetComicRatingAction - << selectAllComicsAction - << editSelectedComicsAction - << asignOrderAction - << deleteMetadataAction - << deleteComicsAction - << getInfoAction); - - allActions << tmpList; - - editShortcutsDialog->addActionsGroup("Folders", QIcon(":/images/shortcuts_group_folders.svg"), - tmpList = QList() - << addFolderAction - << deleteFolderAction - << setRootIndexAction - << expandAllNodesAction - << colapseAllNodesAction - << openContainingFolderAction - << setFolderAsNotCompletedAction - << setFolderAsCompletedAction - << setFolderAsReadAction - << setFolderAsUnreadAction - << setFolderAsMangaAction - << setFolderAsNormalAction - << updateCurrentFolderAction - << rescanXMLFromCurrentFolderAction); - allActions << tmpList; - - editShortcutsDialog->addActionsGroup("Lists", QIcon(":/images/shortcuts_group_folders.svg"), // TODO change icon - tmpList = QList() - << addReadingListAction - << deleteReadingListAction - << addLabelAction - << renameListAction); - allActions << tmpList; - - editShortcutsDialog->addActionsGroup("General", QIcon(":/images/shortcuts_group_general.svg"), - tmpList = QList() - << backAction - << forwardAction - << focusSearchLineAction - << focusComicsViewAction - << helpAboutAction - << optionsAction - << serverConfigAction - << showEditShortcutsAction - << quitAction); - - allActions << tmpList; - - editShortcutsDialog->addActionsGroup("Libraries", QIcon(":/images/shortcuts_group_libraries.svg"), - tmpList = QList() - << createLibraryAction - << openLibraryAction - << exportComicsInfoAction - << importComicsInfoAction - << exportLibraryAction - << importLibraryAction - << updateLibraryAction - << renameLibraryAction - << removeLibraryAction - << rescanLibraryForXMLInfoAction); - - allActions << tmpList; - - editShortcutsDialog->addActionsGroup("Visualization", QIcon(":/images/shortcuts_group_visualization.svg"), - tmpList = QList() - << showHideMarksAction - << toogleShowRecentIndicatorAction -#ifndef Q_OS_MACOS - << toggleFullScreenAction // Think about what to do in macos if the default theme is used -#endif - << toggleComicsViewAction); - - allActions << tmpList; - - ShortcutsManager::getShortcutsManager().registerActions(allActions); -} - void LibraryWindow::doModels() { // folders @@ -513,7 +416,7 @@ void LibraryWindow::setupCoordinators() connect(librariesUpdateCoordinator, &LibrariesUpdateCoordinator::updateEnded, sideBar->librariesTitle, &YACReaderTitledToolBar::hideBusyIndicator); connect(librariesUpdateCoordinator, &LibrariesUpdateCoordinator::updateStarted, this, [=]() { - disableAllActions(); + actions.disableAllActions(); }); connect(librariesUpdateCoordinator, &LibrariesUpdateCoordinator::updateEnded, this, &LibraryWindow::reloadCurrentLibrary); @@ -522,509 +425,6 @@ void LibraryWindow::setupCoordinators() connect(sideBar->librariesTitle, &YACReaderTitledToolBar::cancelOperationRequested, librariesUpdateCoordinator, &LibrariesUpdateCoordinator::cancel); } -void LibraryWindow::createActions() -{ - backAction = new QAction(this); - QIcon icoBackButton; - icoBackButton.addFile(addExtensionToIconPath(":/images/main_toolbar/back"), 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(this); - QIcon icoFordwardButton; - icoFordwardButton.addFile(addExtensionToIconPath(":/images/main_toolbar/forward"), 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); - - createLibraryAction = new QAction(this); - createLibraryAction->setToolTip(tr("Create a new library")); - createLibraryAction->setData(CREATE_LIBRARY_ACTION_YL); - createLibraryAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(CREATE_LIBRARY_ACTION_YL)); - createLibraryAction->setIcon(QIcon(addExtensionToIconPath(":/images/sidebar/newLibraryIcon"))); - - openLibraryAction = new QAction(this); - openLibraryAction->setToolTip(tr("Open an existing library")); - openLibraryAction->setData(OPEN_LIBRARY_ACTION_YL); - openLibraryAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(OPEN_LIBRARY_ACTION_YL)); - openLibraryAction->setIcon(QIcon(addExtensionToIconPath(":/images/sidebar/openLibraryIcon"))); - - exportComicsInfoAction = new QAction(tr("Export comics info"), this); - exportComicsInfoAction->setToolTip(tr("Export comics info")); - exportComicsInfoAction->setData(EXPORT_COMICS_INFO_ACTION_YL); - exportComicsInfoAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(EXPORT_COMICS_INFO_ACTION_YL)); - exportComicsInfoAction->setIcon(QIcon(":/images/menus_icons/exportComicsInfoIcon.svg")); - - importComicsInfoAction = new QAction(tr("Import comics info"), this); - importComicsInfoAction->setToolTip(tr("Import comics info")); - importComicsInfoAction->setData(IMPORT_COMICS_INFO_ACTION_YL); - importComicsInfoAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(IMPORT_COMICS_INFO_ACTION_YL)); - importComicsInfoAction->setIcon(QIcon(":/images/menus_icons/importComicsInfoIcon.svg")); - - exportLibraryAction = new QAction(tr("Pack covers"), this); - exportLibraryAction->setToolTip(tr("Pack the covers of the selected library")); - exportLibraryAction->setData(EXPORT_LIBRARY_ACTION_YL); - exportLibraryAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(EXPORT_LIBRARY_ACTION_YL)); - exportLibraryAction->setIcon(QIcon(":/images/menus_icons/exportLibraryIcon.svg")); - - importLibraryAction = new QAction(tr("Unpack covers"), this); - importLibraryAction->setToolTip(tr("Unpack a catalog")); - importLibraryAction->setData(IMPORT_LIBRARY_ACTION_YL); - importLibraryAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(IMPORT_LIBRARY_ACTION_YL)); - importLibraryAction->setIcon(QIcon(":/images/menus_icons/importLibraryIcon.svg")); - - updateLibraryAction = new QAction(tr("Update library"), this); - updateLibraryAction->setToolTip(tr("Update current library")); - updateLibraryAction->setData(UPDATE_LIBRARY_ACTION_YL); - updateLibraryAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(UPDATE_LIBRARY_ACTION_YL)); - updateLibraryAction->setIcon(QIcon(":/images/menus_icons/updateLibraryIcon.svg")); - - renameLibraryAction = new QAction(tr("Rename library"), this); - renameLibraryAction->setToolTip(tr("Rename current library")); - renameLibraryAction->setData(RENAME_LIBRARY_ACTION_YL); - renameLibraryAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(RENAME_LIBRARY_ACTION_YL)); - renameLibraryAction->setIcon(QIcon(":/images/menus_icons/editIcon.svg")); - - removeLibraryAction = new QAction(tr("Remove library"), this); - removeLibraryAction->setToolTip(tr("Remove current library from your collection")); - removeLibraryAction->setData(REMOVE_LIBRARY_ACTION_YL); - removeLibraryAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(REMOVE_LIBRARY_ACTION_YL)); - removeLibraryAction->setIcon(QIcon(":/images/menus_icons/removeLibraryIcon.svg")); - - rescanLibraryForXMLInfoAction = new QAction(tr("Rescan library for XML info"), this); - rescanLibraryForXMLInfoAction->setToolTip(tr("Tries to find XML info embedded in comic files. You only need to do this if the library was created with 9.8.2 or earlier versions or if you are using third party software to embed XML info in the files.")); - rescanLibraryForXMLInfoAction->setData(RESCAN_LIBRARY_XML_INFO_ACTION_YL); - rescanLibraryForXMLInfoAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(RESCAN_LIBRARY_XML_INFO_ACTION_YL)); - - openComicAction = new QAction(tr("Open current comic"), this); - openComicAction->setToolTip(tr("Open current comic on YACReader")); - openComicAction->setData(OPEN_COMIC_ACTION_YL); - openComicAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(OPEN_COMIC_ACTION_YL)); - openComicAction->setIcon(QIcon(":/images/comics_view_toolbar/openInYACReader.svg")); - - saveCoversToAction = new QAction(tr("Save selected covers to..."), this); - saveCoversToAction->setToolTip(tr("Save covers of the selected comics as JPG files")); - saveCoversToAction->setData(SAVE_COVERS_TO_ACTION_YL); - saveCoversToAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SAVE_COVERS_TO_ACTION_YL)); - - setAsReadAction = new QAction(tr("Set as read"), this); - setAsReadAction->setToolTip(tr("Set comic as read")); - setAsReadAction->setData(SET_AS_READ_ACTION_YL); - setAsReadAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_AS_READ_ACTION_YL)); - setAsReadAction->setIcon(QIcon(":/images/comics_view_toolbar/setReadButton.svg")); - - setAsNonReadAction = new QAction(tr("Set as unread"), this); - setAsNonReadAction->setToolTip(tr("Set comic as unread")); - setAsNonReadAction->setData(SET_AS_NON_READ_ACTION_YL); - setAsNonReadAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_AS_NON_READ_ACTION_YL)); - setAsNonReadAction->setIcon(QIcon(":/images/comics_view_toolbar/setUnread.svg")); - - setMangaAction = new QAction(tr("manga"), this); - setMangaAction->setToolTip(tr("Set issue as manga")); - setMangaAction->setData(SET_AS_MANGA_ACTION_YL); - setMangaAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_AS_MANGA_ACTION_YL)); - setMangaAction->setIcon(QIcon(":/images/comics_view_toolbar/setManga.svg")); - - setNormalAction = new QAction(tr("comic"), this); - setNormalAction->setToolTip(tr("Set issue as normal")); - setNormalAction->setData(SET_AS_NORMAL_ACTION_YL); - setNormalAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_AS_NORMAL_ACTION_YL)); - setNormalAction->setIcon(QIcon(":/images/comics_view_toolbar/setNormal.svg")); - - setWesternMangaAction = new QAction(tr("western manga"), this); - setWesternMangaAction->setToolTip(tr("Set issue as western manga")); - setWesternMangaAction->setData(SET_AS_WESTERN_MANGA_ACTION_YL); - setWesternMangaAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_AS_WESTERN_MANGA_ACTION_YL)); - // setWesternMangaAction->setIcon(QIcon(":/images/comics_view_toolbar/setWesternManga.svg")); - - setWebComicAction = new QAction(tr("web comic"), this); - setWebComicAction->setToolTip(tr("Set issue as web comic")); - setWebComicAction->setData(SET_AS_WEB_COMIC_ACTION_YL); - setWebComicAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_AS_WEB_COMIC_ACTION_YL)); - // setWebComicAction->setIcon(QIcon(":/images/comics_view_toolbar/setWebComic.svg")); - - setYonkomaAction = new QAction(tr("yonkoma"), this); - setYonkomaAction->setToolTip(tr("Set issue as yonkoma")); - setYonkomaAction->setData(SET_AS_YONKOMA_ACTION_YL); - setYonkomaAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_AS_YONKOMA_ACTION_YL)); - - showHideMarksAction = new QAction(tr("Show/Hide marks"), this); - showHideMarksAction->setToolTip(tr("Show or hide read marks")); - showHideMarksAction->setData(SHOW_HIDE_MARKS_ACTION_YL); - showHideMarksAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SHOW_HIDE_MARKS_ACTION_YL)); - showHideMarksAction->setCheckable(true); - showHideMarksAction->setIcon(QIcon(":/images/comics_view_toolbar/showMarks.svg")); - showHideMarksAction->setChecked(true); - - toogleShowRecentIndicatorAction = new QAction(tr("Show/Hide recent indicator"), this); - toogleShowRecentIndicatorAction->setToolTip(tr("Show or hide recent indicator")); - toogleShowRecentIndicatorAction->setData(SHOW_HIDE_RECENT_INDICATOR_ACTION_YL); - toogleShowRecentIndicatorAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SHOW_HIDE_RECENT_INDICATOR_ACTION_YL)); - toogleShowRecentIndicatorAction->setCheckable(true); - toogleShowRecentIndicatorAction->setIcon(QIcon(":/images/comics_view_toolbar/showRecentIndicator.svg")); - toogleShowRecentIndicatorAction->setChecked(settings->value(DISPLAY_RECENTLY_INDICATOR, true).toBool()); - -#ifndef Q_OS_MACOS - toggleFullScreenAction = new QAction(tr("Fullscreen mode on/off"), this); - 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.addFile(addExtensionToIconPath(":/images/main_toolbar/fullscreen"), QSize(), QIcon::Normal); - toggleFullScreenAction->setIcon(icoFullscreenButton); -#endif - helpAboutAction = new QAction(this); - 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(addExtensionToIconPath(":/images/main_toolbar/help"), QSize(), QIcon::Normal); - helpAboutAction->setIcon(icoHelpButton); - - addFolderAction = new QAction(tr("Add new folder"), this); - addFolderAction->setData(ADD_FOLDER_ACTION_YL); - addFolderAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(ADD_FOLDER_ACTION_YL)); - addFolderAction->setToolTip(tr("Add new folder to the current library")); - addFolderAction->setIcon(QIcon(addExtensionToIconPath(":/images/sidebar/addNew_sidebar"))); - - deleteFolderAction = new QAction(tr("Delete folder"), this); - deleteFolderAction->setData(REMOVE_FOLDER_ACTION_YL); - deleteFolderAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(REMOVE_FOLDER_ACTION_YL)); - deleteFolderAction->setToolTip(tr("Delete current folder from disk")); - deleteFolderAction->setIcon(QIcon(addExtensionToIconPath(":/images/sidebar/delete_sidebar"))); - - setRootIndexAction = new QAction(this); - setRootIndexAction->setData(SET_ROOT_INDEX_ACTION_YL); - setRootIndexAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_ROOT_INDEX_ACTION_YL)); - setRootIndexAction->setToolTip(tr("Select root node")); - setRootIndexAction->setIcon(QIcon(addExtensionToIconPath(":/images/sidebar/setRoot"))); - - expandAllNodesAction = new QAction(this); - expandAllNodesAction->setToolTip(tr("Expand all nodes")); - expandAllNodesAction->setData(EXPAND_ALL_NODES_ACTION_YL); - expandAllNodesAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(EXPAND_ALL_NODES_ACTION_YL)); - expandAllNodesAction->setIcon(QIcon(addExtensionToIconPath(":/images/sidebar/expand"))); - - colapseAllNodesAction = new QAction(this); - colapseAllNodesAction->setToolTip(tr("Collapse all nodes")); - colapseAllNodesAction->setData(COLAPSE_ALL_NODES_ACTION_YL); - colapseAllNodesAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(COLAPSE_ALL_NODES_ACTION_YL)); - colapseAllNodesAction->setIcon(QIcon(addExtensionToIconPath(":/images/sidebar/colapse"))); - - optionsAction = new QAction(this); - optionsAction->setToolTip(tr("Show options dialog")); - optionsAction->setData(OPTIONS_ACTION_YL); - optionsAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(OPTIONS_ACTION_YL)); - QIcon icoSettingsButton; - icoSettingsButton.addFile(addExtensionToIconPath(":/images/main_toolbar/settings"), QSize(), QIcon::Normal); - optionsAction->setIcon(icoSettingsButton); - - serverConfigAction = new QAction(this); - 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(addExtensionToIconPath(":/images/main_toolbar/server"), QSize(), QIcon::Normal); - serverConfigAction->setIcon(icoServerButton); - - toggleComicsViewAction = new QAction(tr("Change between comics views"), this); - toggleComicsViewAction->setToolTip(tr("Change between comics views")); - QIcon icoViewsButton; - - if (!settings->contains(COMICS_VIEW_STATUS) || settings->value(COMICS_VIEW_STATUS) == Flow) - icoViewsButton.addFile(addExtensionToIconPath(":/images/main_toolbar/grid"), QSize(), QIcon::Normal); - else if (settings->value(COMICS_VIEW_STATUS) == Grid) - icoViewsButton.addFile(addExtensionToIconPath(":/images/main_toolbar/info"), QSize(), QIcon::Normal); - else - icoViewsButton.addFile(addExtensionToIconPath(":/images/main_toolbar/flow"), QSize(), QIcon::Normal); - - toggleComicsViewAction->setData(TOGGLE_COMICS_VIEW_ACTION_YL); - toggleComicsViewAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(TOGGLE_COMICS_VIEW_ACTION_YL)); - toggleComicsViewAction->setIcon(icoViewsButton); - // socialAction = new QAction(this); - - //---- - - openContainingFolderAction = new QAction(this); - openContainingFolderAction->setText(tr("Open folder...")); - openContainingFolderAction->setData(OPEN_CONTAINING_FOLDER_ACTION_YL); - openContainingFolderAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(OPEN_CONTAINING_FOLDER_ACTION_YL)); - openContainingFolderAction->setIcon(QIcon(":/images/menus_icons/open_containing_folder.svg")); - - setFolderAsNotCompletedAction = new QAction(this); - setFolderAsNotCompletedAction->setText(tr("Set as uncompleted")); - setFolderAsNotCompletedAction->setData(SET_FOLDER_AS_NOT_COMPLETED_ACTION_YL); - setFolderAsNotCompletedAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_FOLDER_AS_NOT_COMPLETED_ACTION_YL)); - - setFolderAsCompletedAction = new QAction(this); - setFolderAsCompletedAction->setText(tr("Set as completed")); - setFolderAsCompletedAction->setData(SET_FOLDER_AS_COMPLETED_ACTION_YL); - setFolderAsCompletedAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_FOLDER_AS_COMPLETED_ACTION_YL)); - - setFolderAsReadAction = new QAction(this); - setFolderAsReadAction->setText(tr("Set as read")); - setFolderAsReadAction->setData(SET_FOLDER_AS_READ_ACTION_YL); - setFolderAsReadAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_FOLDER_AS_READ_ACTION_YL)); - - setFolderAsUnreadAction = new QAction(this); - setFolderAsUnreadAction->setText(tr("Set as unread")); - setFolderAsUnreadAction->setData(SET_FOLDER_AS_UNREAD_ACTION_YL); - setFolderAsUnreadAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_FOLDER_AS_UNREAD_ACTION_YL)); - - setFolderAsMangaAction = new QAction(this); - setFolderAsMangaAction->setText(tr("manga")); - setFolderAsMangaAction->setData(SET_FOLDER_AS_MANGA_ACTION_YL); - setFolderAsMangaAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_FOLDER_AS_MANGA_ACTION_YL)); - - setFolderAsNormalAction = new QAction(this); - setFolderAsNormalAction->setText(tr("comic")); - setFolderAsNormalAction->setData(SET_FOLDER_AS_NORMAL_ACTION_YL); - setFolderAsNormalAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_FOLDER_AS_NORMAL_ACTION_YL)); - - setFolderAsWesternMangaAction = new QAction(this); - setFolderAsWesternMangaAction->setText(tr("western manga (left to right)")); - setFolderAsWesternMangaAction->setData(SET_FOLDER_AS_WESTERN_MANGA_ACTION_YL); - setFolderAsWesternMangaAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_FOLDER_AS_WESTERN_MANGA_ACTION_YL)); - - setFolderAsWebComicAction = new QAction(this); - setFolderAsWebComicAction->setText(tr("web comic")); - setFolderAsWebComicAction->setData(SET_FOLDER_AS_WEB_COMIC_ACTION_YL); - setFolderAsWebComicAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_FOLDER_AS_WEB_COMIC_ACTION_YL)); - - setFolderAsYonkomaAction = new QAction(this); - setFolderAsYonkomaAction->setText(tr("yonkoma")); - setFolderAsYonkomaAction->setData(SET_FOLDER_AS_YONKOMA_ACTION_YL); - setFolderAsYonkomaAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_FOLDER_AS_YONKOMA_ACTION_YL)); - - //---- - - openContainingFolderComicAction = new QAction(this); - openContainingFolderComicAction->setText(tr("Open containing folder...")); - openContainingFolderComicAction->setData(OPEN_CONTAINING_FOLDER_COMIC_ACTION_YL); - openContainingFolderComicAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(OPEN_CONTAINING_FOLDER_COMIC_ACTION_YL)); - openContainingFolderComicAction->setIcon(QIcon(":/images/menus_icons/open_containing_folder.svg")); - - resetComicRatingAction = new QAction(this); - resetComicRatingAction->setText(tr("Reset comic rating")); - resetComicRatingAction->setData(RESET_COMIC_RATING_ACTION_YL); - resetComicRatingAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(RESET_COMIC_RATING_ACTION_YL)); - - // Edit comics actions------------------------------------------------------ - selectAllComicsAction = new QAction(this); - selectAllComicsAction->setText(tr("Select all comics")); - selectAllComicsAction->setData(SELECT_ALL_COMICS_ACTION_YL); - selectAllComicsAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SELECT_ALL_COMICS_ACTION_YL)); - selectAllComicsAction->setIcon(QIcon(":/images/comics_view_toolbar/selectAll.svg")); - - editSelectedComicsAction = new QAction(this); - editSelectedComicsAction->setText(tr("Edit")); - editSelectedComicsAction->setData(EDIT_SELECTED_COMICS_ACTION_YL); - editSelectedComicsAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(EDIT_SELECTED_COMICS_ACTION_YL)); - editSelectedComicsAction->setIcon(QIcon(":/images/comics_view_toolbar/editComic.svg")); - - asignOrderAction = new QAction(this); - asignOrderAction->setText(tr("Assign current order to comics")); - asignOrderAction->setData(ASIGN_ORDER_ACTION_YL); - asignOrderAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(ASIGN_ORDER_ACTION_YL)); - asignOrderAction->setIcon(QIcon(":/images/comics_view_toolbar/asignNumber.svg")); - - forceCoverExtractedAction = new QAction(this); - forceCoverExtractedAction->setText(tr("Update cover")); - forceCoverExtractedAction->setData(FORCE_COVER_EXTRACTED_ACTION_YL); - forceCoverExtractedAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(FORCE_COVER_EXTRACTED_ACTION_YL)); - forceCoverExtractedAction->setIcon(QIcon(":/images/importCover.png")); - - deleteComicsAction = new QAction(this); - deleteComicsAction->setText(tr("Delete selected comics")); - deleteComicsAction->setData(DELETE_COMICS_ACTION_YL); - deleteComicsAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(DELETE_COMICS_ACTION_YL)); - deleteComicsAction->setIcon(QIcon(":/images/comics_view_toolbar/trash.svg")); - - deleteMetadataAction = new QAction(this); - deleteMetadataAction->setText(tr("Delete metadata from selected comics")); - deleteMetadataAction->setData(DELETE_METADATA_FROM_COMICS_ACTION_YL); - deleteMetadataAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(DELETE_METADATA_FROM_COMICS_ACTION_YL)); - - getInfoAction = new QAction(this); - getInfoAction->setData(GET_INFO_ACTION_YL); - getInfoAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(GET_INFO_ACTION_YL)); - getInfoAction->setText(tr("Download tags from Comic Vine")); - getInfoAction->setIcon(QIcon(":/images/comics_view_toolbar/getInfo.svg")); - //------------------------------------------------------------------------- - - focusSearchLineAction = new QAction(tr("Focus search line"), this); - focusSearchLineAction->setData(FOCUS_SEARCH_LINE_ACTION_YL); - focusSearchLineAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(FOCUS_SEARCH_LINE_ACTION_YL)); - focusSearchLineAction->setIcon(QIcon(":/images/iconSearch.png")); - addAction(focusSearchLineAction); - - focusComicsViewAction = new QAction(tr("Focus comics view"), this); - focusComicsViewAction->setData(FOCUS_COMICS_VIEW_ACTION_YL); - focusComicsViewAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(FOCUS_COMICS_VIEW_ACTION_YL)); - addAction(focusComicsViewAction); - - showEditShortcutsAction = new QAction(tr("Edit shortcuts"), this); - showEditShortcutsAction->setData(SHOW_EDIT_SHORTCUTS_ACTION_YL); - showEditShortcutsAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SHOW_EDIT_SHORTCUTS_ACTION_YL)); - showEditShortcutsAction->setShortcutContext(Qt::ApplicationShortcut); - addAction(showEditShortcutsAction); - - quitAction = new QAction(tr("&Quit"), this); - quitAction->setIcon(QIcon(":/images/viewer_toolbar/close.svg")); - quitAction->setData(QUIT_ACTION_YL); - quitAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(QUIT_ACTION_YL)); - // TODO: is `quitAction->setMenuRole(QAction::QuitRole);` useful on macOS? - addAction(quitAction); - - updateFolderAction = new QAction(tr("Update folder"), this); - updateFolderAction->setIcon(QIcon(":/images/menus_icons/update_current_folder.svg")); - - updateCurrentFolderAction = new QAction(tr("Update current folder"), this); - updateCurrentFolderAction->setData(UPDATE_CURRENT_FOLDER_ACTION_YL); - updateCurrentFolderAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(UPDATE_CURRENT_FOLDER_ACTION_YL)); - updateCurrentFolderAction->setIcon(QIcon(":/images/menus_icons/update_current_folder.svg")); - - rescanXMLFromCurrentFolderAction = new QAction(tr("Scan legacy XML metadata"), this); - rescanXMLFromCurrentFolderAction->setData(SCAN_XML_FROM_CURRENT_FOLDER_ACTION_YL); - rescanXMLFromCurrentFolderAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SCAN_XML_FROM_CURRENT_FOLDER_ACTION_YL)); - - addReadingListAction = new QAction(tr("Add new reading list"), this); - addReadingListAction->setData(ADD_READING_LIST_ACTION_YL); - addReadingListAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(ADD_READING_LIST_ACTION_YL)); - addReadingListAction->setToolTip(tr("Add a new reading list to the current library")); - addReadingListAction->setIcon(QIcon(addExtensionToIconPath(":/images/sidebar/addNew_sidebar"))); - - deleteReadingListAction = new QAction(tr("Remove reading list"), this); - deleteReadingListAction->setData(REMOVE_READING_LIST_ACTION_YL); - deleteReadingListAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(REMOVE_READING_LIST_ACTION_YL)); - deleteReadingListAction->setToolTip(tr("Remove current reading list from the library")); - deleteReadingListAction->setIcon(QIcon(addExtensionToIconPath(":/images/sidebar/delete_sidebar"))); - - addLabelAction = new QAction(tr("Add new label"), this); - addLabelAction->setData(ADD_LABEL_ACTION_YL); - addLabelAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(ADD_LABEL_ACTION_YL)); - addLabelAction->setToolTip(tr("Add a new label to this library")); - addLabelAction->setIcon(QIcon(addExtensionToIconPath(":/images/sidebar/addLabelIcon"))); - - renameListAction = new QAction(tr("Rename selected list"), this); - renameListAction->setData(RENAME_LIST_ACTION_YL); - renameListAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(RENAME_LIST_ACTION_YL)); - renameListAction->setToolTip(tr("Rename any selected labels or lists")); - renameListAction->setIcon(QIcon(addExtensionToIconPath(":/images/sidebar/renameListIcon"))); - - //-- - addToMenuAction = new QAction(tr("Add to..."), this); - - addToFavoritesAction = new QAction(tr("Favorites"), this); - addToFavoritesAction->setData(ADD_TO_FAVORITES_ACTION_YL); - addToFavoritesAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(ADD_TO_FAVORITES_ACTION_YL)); - addToFavoritesAction->setToolTip(tr("Add selected comics to favorites list")); - addToFavoritesAction->setIcon(QIcon(":/images/lists/default_1.svg")); - - // actions not asigned to any widget - this->addAction(saveCoversToAction); - this->addAction(openContainingFolderAction); - this->addAction(updateCurrentFolderAction); - this->addAction(resetComicRatingAction); - this->addAction(setFolderAsCompletedAction); - this->addAction(setFolderAsNotCompletedAction); - this->addAction(setFolderAsReadAction); - this->addAction(setFolderAsUnreadAction); - this->addAction(setFolderAsMangaAction); - this->addAction(setFolderAsNormalAction); - this->addAction(setFolderAsWesternMangaAction); - this->addAction(setFolderAsWebComicAction); - this->addAction(setFolderAsYonkomaAction); - this->addAction(deleteMetadataAction); - this->addAction(rescanXMLFromCurrentFolderAction); -#ifndef Q_OS_MACOS - this->addAction(toggleFullScreenAction); -#endif - - // disable actions - disableAllActions(); -} -void LibraryWindow::disableComicsActions(bool disabled) -{ - if (!disabled && librariesUpdateCoordinator->isRunning()) { - disableComicsActions(true); - return; - } - - // if there aren't comics, no fullscreen option will be available -#ifndef Q_OS_MACOS - toggleFullScreenAction->setDisabled(disabled); -#endif - // edit toolbar - openComicAction->setDisabled(disabled); - editSelectedComicsAction->setDisabled(disabled); - selectAllComicsAction->setDisabled(disabled); - asignOrderAction->setDisabled(disabled); - setAsReadAction->setDisabled(disabled); - setAsNonReadAction->setDisabled(disabled); - setNormalAction->setDisabled(disabled); - setMangaAction->setDisabled(disabled); - setWebComicAction->setDisabled(disabled); - setWesternMangaAction->setDisabled(disabled); - setYonkomaAction->setDisabled(disabled); - // setAllAsReadAction->setDisabled(disabled); - // setAllAsNonReadAction->setDisabled(disabled); - showHideMarksAction->setDisabled(disabled); - deleteMetadataAction->setDisabled(disabled); - deleteComicsAction->setDisabled(disabled); - // context menu - openContainingFolderComicAction->setDisabled(disabled); - resetComicRatingAction->setDisabled(disabled); - - getInfoAction->setDisabled(disabled); - - updateCurrentFolderAction->setDisabled(disabled); -} -void LibraryWindow::disableLibrariesActions(bool disabled) -{ - updateLibraryAction->setDisabled(disabled); - renameLibraryAction->setDisabled(disabled); - removeLibraryAction->setDisabled(disabled); - exportComicsInfoAction->setDisabled(disabled); - importComicsInfoAction->setDisabled(disabled); - exportLibraryAction->setDisabled(disabled); - rescanLibraryForXMLInfoAction->setDisabled(disabled); - // importLibraryAction->setDisabled(disabled); -} - -void LibraryWindow::disableNoUpdatedLibrariesActions(bool disabled) -{ - updateLibraryAction->setDisabled(disabled); - exportComicsInfoAction->setDisabled(disabled); - importComicsInfoAction->setDisabled(disabled); - exportLibraryAction->setDisabled(disabled); - rescanLibraryForXMLInfoAction->setDisabled(disabled); -} - -void LibraryWindow::disableFoldersActions(bool disabled) -{ - setRootIndexAction->setDisabled(disabled); - expandAllNodesAction->setDisabled(disabled); - colapseAllNodesAction->setDisabled(disabled); - - openContainingFolderAction->setDisabled(disabled); - - updateFolderAction->setDisabled(disabled); - rescanXMLFromCurrentFolderAction->setDisabled(disabled); -} - -void LibraryWindow::disableAllActions() -{ - disableComicsActions(true); - disableLibrariesActions(true); - disableFoldersActions(true); -} - void LibraryWindow::createToolBars() { @@ -1058,98 +458,98 @@ void LibraryWindow::createToolBars() libraryToolBar->attachToWindow(this); #else - libraryToolBar->backButton->setDefaultAction(backAction); - libraryToolBar->forwardButton->setDefaultAction(forwardAction); - libraryToolBar->settingsButton->setDefaultAction(optionsAction); - libraryToolBar->serverButton->setDefaultAction(serverConfigAction); - libraryToolBar->helpButton->setDefaultAction(helpAboutAction); - libraryToolBar->toggleComicsViewButton->setDefaultAction(toggleComicsViewAction); + libraryToolBar->backButton->setDefaultAction(actions.backAction); + libraryToolBar->forwardButton->setDefaultAction(actions.forwardAction); + libraryToolBar->settingsButton->setDefaultAction(actions.optionsAction); + libraryToolBar->serverButton->setDefaultAction(actions.serverConfigAction); + libraryToolBar->helpButton->setDefaultAction(actions.helpAboutAction); + libraryToolBar->toggleComicsViewButton->setDefaultAction(actions.toggleComicsViewAction); #ifndef Q_OS_MACOS - libraryToolBar->fullscreenButton->setDefaultAction(toggleFullScreenAction); + libraryToolBar->fullscreenButton->setDefaultAction(actions.toggleFullScreenAction); #endif libraryToolBar->setSearchWidget(searchEdit); #endif editInfoToolBar->setIconSize(QSize(18, 18)); - editInfoToolBar->addAction(openComicAction); + editInfoToolBar->addAction(actions.openComicAction); editInfoToolBar->addSeparator(); - editInfoToolBar->addAction(editSelectedComicsAction); - editInfoToolBar->addAction(getInfoAction); - editInfoToolBar->addAction(asignOrderAction); + editInfoToolBar->addAction(actions.editSelectedComicsAction); + editInfoToolBar->addAction(actions.getInfoAction); + editInfoToolBar->addAction(actions.asignOrderAction); editInfoToolBar->addSeparator(); - editInfoToolBar->addAction(selectAllComicsAction); + editInfoToolBar->addAction(actions.selectAllComicsAction); editInfoToolBar->addSeparator(); - editInfoToolBar->addAction(setAsReadAction); - editInfoToolBar->addAction(setAsNonReadAction); + editInfoToolBar->addAction(actions.setAsReadAction); + editInfoToolBar->addAction(actions.setAsNonReadAction); - editInfoToolBar->addAction(showHideMarksAction); + editInfoToolBar->addAction(actions.showHideMarksAction); editInfoToolBar->addSeparator(); auto setTypeToolButton = new QToolButton(); - setTypeToolButton->addAction(setNormalAction); - setTypeToolButton->addAction(setMangaAction); - setTypeToolButton->addAction(setWesternMangaAction); - setTypeToolButton->addAction(setWebComicAction); - setTypeToolButton->addAction(setYonkomaAction); + setTypeToolButton->addAction(actions.setNormalAction); + setTypeToolButton->addAction(actions.setMangaAction); + setTypeToolButton->addAction(actions.setWesternMangaAction); + setTypeToolButton->addAction(actions.setWebComicAction); + setTypeToolButton->addAction(actions.setYonkomaAction); setTypeToolButton->setPopupMode(QToolButton::InstantPopup); - setTypeToolButton->setDefaultAction(setNormalAction); + setTypeToolButton->setDefaultAction(actions.setNormalAction); editInfoToolBar->addWidget(setTypeToolButton); editInfoToolBar->addSeparator(); - editInfoToolBar->addAction(deleteComicsAction); + editInfoToolBar->addAction(actions.deleteComicsAction); auto toolBarStretch = new YACReaderToolBarStretch(this); editInfoToolBar->addWidget(toolBarStretch); - editInfoToolBar->addAction(toogleShowRecentIndicatorAction); + editInfoToolBar->addAction(actions.toogleShowRecentIndicatorAction); contentViewsManager->comicsView->setToolBar(editInfoToolBar); } void LibraryWindow::createMenus() { - foldersView->addAction(addFolderAction); - foldersView->addAction(deleteFolderAction); + foldersView->addAction(actions.addFolderAction); + foldersView->addAction(actions.deleteFolderAction); YACReader::addSperator(foldersView); - foldersView->addAction(openContainingFolderAction); - foldersView->addAction(updateFolderAction); + foldersView->addAction(actions.openContainingFolderAction); + foldersView->addAction(actions.updateFolderAction); YACReader::addSperator(foldersView); - foldersView->addAction(setFolderAsNotCompletedAction); - foldersView->addAction(setFolderAsCompletedAction); + foldersView->addAction(actions.setFolderAsNotCompletedAction); + foldersView->addAction(actions.setFolderAsCompletedAction); YACReader::addSperator(foldersView); - foldersView->addAction(setFolderAsReadAction); - foldersView->addAction(setFolderAsUnreadAction); + foldersView->addAction(actions.setFolderAsReadAction); + foldersView->addAction(actions.setFolderAsUnreadAction); YACReader::addSperator(foldersView); - foldersView->addAction(setFolderAsNormalAction); - foldersView->addAction(setFolderAsMangaAction); - foldersView->addAction(setFolderAsWesternMangaAction); - foldersView->addAction(setFolderAsWebComicAction); - foldersView->addAction(setFolderAsYonkomaAction); + foldersView->addAction(actions.setFolderAsNormalAction); + foldersView->addAction(actions.setFolderAsMangaAction); + foldersView->addAction(actions.setFolderAsWesternMangaAction); + foldersView->addAction(actions.setFolderAsWebComicAction); + foldersView->addAction(actions.setFolderAsYonkomaAction); - selectedLibrary->addAction(updateLibraryAction); - selectedLibrary->addAction(renameLibraryAction); - selectedLibrary->addAction(removeLibraryAction); + selectedLibrary->addAction(actions.updateLibraryAction); + selectedLibrary->addAction(actions.renameLibraryAction); + selectedLibrary->addAction(actions.removeLibraryAction); YACReader::addSperator(selectedLibrary); - selectedLibrary->addAction(rescanLibraryForXMLInfoAction); + selectedLibrary->addAction(actions.rescanLibraryForXMLInfoAction); YACReader::addSperator(selectedLibrary); - selectedLibrary->addAction(exportComicsInfoAction); - selectedLibrary->addAction(importComicsInfoAction); + selectedLibrary->addAction(actions.exportComicsInfoAction); + selectedLibrary->addAction(actions.importComicsInfoAction); YACReader::addSperator(selectedLibrary); - selectedLibrary->addAction(exportLibraryAction); - selectedLibrary->addAction(importLibraryAction); + selectedLibrary->addAction(actions.exportLibraryAction); + selectedLibrary->addAction(actions.importLibraryAction); // MacOSX app menus #ifdef Q_OS_MACOS @@ -1209,13 +609,17 @@ void LibraryWindow::createMenus() void LibraryWindow::createConnections() { - // history navigation - connect(backAction, &QAction::triggered, historyController, &YACReaderHistoryController::backward); - connect(forwardAction, &QAction::triggered, historyController, &YACReaderHistoryController::forward); - //-- - connect(historyController, &YACReaderHistoryController::enabledBackward, backAction, &QAction::setEnabled); - connect(historyController, &YACReaderHistoryController::enabledForward, forwardAction, &QAction::setEnabled); - // connect(foldersView, SIGNAL(clicked(QModelIndex)), historyController, SLOT(updateHistory(QModelIndex))); + actions.createConnections( + historyController, + this, + had, + exportLibraryDialog, + contentViewsManager, + editShortcutsDialog, + foldersView, + optionsDialog, + serverConfigDialog); + QObject::connect(actions.focusSearchLineAction, &QAction::triggered, searchEdit, [this] { searchEdit->setFocus(Qt::ShortcutFocusReason); }); // libraryCreator connections connect(createLibraryDialog, &CreateLibraryDialog::createLibrary, this, QOverload::of(&LibraryWindow::create)); @@ -1276,35 +680,6 @@ void LibraryWindow::createConnections() this, &LibraryWindow::moveAndImportComicsToFolder); connect(foldersView, &QWidget::customContextMenuRequested, this, &LibraryWindow::showFoldersContextMenu); - // actions - connect(createLibraryAction, &QAction::triggered, this, &LibraryWindow::createLibrary); - connect(exportLibraryAction, &QAction::triggered, exportLibraryDialog, &ExportLibraryDialog::open); - connect(importLibraryAction, &QAction::triggered, this, &LibraryWindow::importLibraryPackage); - - connect(openLibraryAction, &QAction::triggered, this, &LibraryWindow::showAddLibrary); - connect(setAsReadAction, &QAction::triggered, this, &LibraryWindow::setCurrentComicReaded); - connect(setAsNonReadAction, &QAction::triggered, this, &LibraryWindow::setCurrentComicUnreaded); - - connect(setNormalAction, &QAction::triggered, this, [=]() { - setSelectedComicsType(FileType::Comic); - }); - connect(setMangaAction, &QAction::triggered, this, [=]() { - setSelectedComicsType(FileType::Manga); - }); - connect(setWesternMangaAction, &QAction::triggered, this, [=]() { - setSelectedComicsType(FileType::WesternManga); - }); - connect(setWebComicAction, &QAction::triggered, this, [=]() { - setSelectedComicsType(FileType::WebComic); - }); - connect(setYonkomaAction, &QAction::triggered, this, [=]() { - setSelectedComicsType(FileType::Yonkoma); - }); - - // comicsInfoManagement - connect(exportComicsInfoAction, &QAction::triggered, this, &LibraryWindow::showExportComicsInfo); - connect(importComicsInfoAction, &QAction::triggered, this, &LibraryWindow::showImportComicsInfo); - // properties & config connect(propertiesDialog, &QDialog::accepted, contentViewsManager, &YACReaderContentViewsManager::updateCurrentContentView); connect(propertiesDialog, &PropertiesDialog::coverChangedSignal, this, [=](const ComicDB &comic) { @@ -1314,26 +689,6 @@ void LibraryWindow::createConnections() // comic vine connect(comicVineDialog, &QDialog::accepted, contentViewsManager, &YACReaderContentViewsManager::updateCurrentContentView, Qt::QueuedConnection); - connect(updateLibraryAction, &QAction::triggered, this, &LibraryWindow::updateLibrary); - connect(renameLibraryAction, &QAction::triggered, this, &LibraryWindow::renameLibrary); - // connect(deleteLibraryAction,SIGNAL(triggered()),this,SLOT(deleteLibrary())); - connect(removeLibraryAction, &QAction::triggered, this, &LibraryWindow::removeLibrary); - connect(rescanLibraryForXMLInfoAction, &QAction::triggered, this, &LibraryWindow::rescanLibraryForXMLInfo); - connect(openComicAction, &QAction::triggered, this, QOverload<>::of(&LibraryWindow::openComic)); - connect(helpAboutAction, &QAction::triggered, had, &QWidget::show); - connect(addFolderAction, &QAction::triggered, this, &LibraryWindow::addFolderToCurrentIndex); - connect(deleteFolderAction, &QAction::triggered, this, &LibraryWindow::deleteSelectedFolder); - connect(setRootIndexAction, &QAction::triggered, this, &LibraryWindow::setRootIndex); - connect(expandAllNodesAction, &QAction::triggered, foldersView, &QTreeView::expandAll); - connect(colapseAllNodesAction, &QAction::triggered, foldersView, &QTreeView::collapseAll); -#ifndef Q_OS_MACOS - connect(toggleFullScreenAction, &QAction::triggered, this, &LibraryWindow::toggleFullScreen); -#endif - connect(toggleComicsViewAction, &QAction::triggered, contentViewsManager, &YACReaderContentViewsManager::toggleComicsView); - connect(optionsAction, &QAction::triggered, optionsDialog, &QWidget::show); -#ifdef SERVER_RELEASE - connect(serverConfigAction, &QAction::triggered, serverConfigDialog, &QWidget::show); -#endif connect(optionsDialog, &YACReaderOptionsDialog::optionsChanged, this, &LibraryWindow::reloadOptions); connect(optionsDialog, &YACReaderOptionsDialog::editShortcuts, editShortcutsDialog, &QWidget::show); @@ -1357,76 +712,14 @@ void LibraryWindow::createConnections() qRegisterMetaType *>("QMap *"); connect(folderQueryResultProcessor.get(), &FolderQueryResultProcessor::newData, this, &LibraryWindow::setFolderSearchFilterData); - // ContextMenus - connect(openContainingFolderComicAction, &QAction::triggered, this, &LibraryWindow::openContainingFolderComic); - connect(setFolderAsNotCompletedAction, &QAction::triggered, this, &LibraryWindow::setFolderAsNotCompleted); - connect(setFolderAsCompletedAction, &QAction::triggered, this, &LibraryWindow::setFolderAsCompleted); - connect(setFolderAsReadAction, &QAction::triggered, this, &LibraryWindow::setFolderAsRead); - connect(setFolderAsUnreadAction, &QAction::triggered, this, &LibraryWindow::setFolderAsUnread); - connect(openContainingFolderAction, &QAction::triggered, this, &LibraryWindow::openContainingFolder); - - connect(setFolderAsMangaAction, &QAction::triggered, this, [=]() { - setFolderType(FileType::Manga); - }); - connect(setFolderAsNormalAction, &QAction::triggered, this, [=]() { - setFolderType(FileType::Comic); - }); - connect(setFolderAsWesternMangaAction, &QAction::triggered, this, [=]() { - setFolderType(FileType::WesternManga); - }); - connect(setFolderAsWebComicAction, &QAction::triggered, this, [=]() { - setFolderType(FileType::WebComic); - }); - connect(setFolderAsYonkomaAction, &QAction::triggered, this, [=]() { - setFolderType(FileType::Yonkoma); - }); - - connect(resetComicRatingAction, &QAction::triggered, this, &LibraryWindow::resetComicRating); - - // Comicts edition - connect(editSelectedComicsAction, &QAction::triggered, this, &LibraryWindow::showProperties); - connect(asignOrderAction, &QAction::triggered, this, &LibraryWindow::asignNumbers); - - connect(deleteMetadataAction, &QAction::triggered, this, &LibraryWindow::deleteMetadataFromSelectedComics); - - connect(deleteComicsAction, &QAction::triggered, this, &LibraryWindow::deleteComics); - - connect(getInfoAction, &QAction::triggered, this, &LibraryWindow::showComicVineScraper); - - connect(focusSearchLineAction, &QAction::triggered, searchEdit, [this] { searchEdit->setFocus(Qt::ShortcutFocusReason); }); - connect(focusComicsViewAction, &QAction::triggered, contentViewsManager, &YACReaderContentViewsManager::focusComicsViewViaShortcut); - - connect(showEditShortcutsAction, &QAction::triggered, editShortcutsDialog, &QWidget::show); - - connect(quitAction, &QAction::triggered, this, &LibraryWindow::closeApp); - - // update folders (partial updates) - connect(updateCurrentFolderAction, &QAction::triggered, this, &LibraryWindow::updateCurrentFolder); - connect(updateFolderAction, &QAction::triggered, this, &LibraryWindow::updateCurrentFolder); - - connect(rescanXMLFromCurrentFolderAction, &QAction::triggered, this, &LibraryWindow::rescanCurrentFolderForXMLInfo); - - // lists - connect(addReadingListAction, &QAction::triggered, this, &LibraryWindow::addNewReadingList); - connect(deleteReadingListAction, &QAction::triggered, this, &LibraryWindow::deleteSelectedReadingList); - connect(addLabelAction, &QAction::triggered, this, &LibraryWindow::showAddNewLabelDialog); - connect(renameListAction, &QAction::triggered, this, &LibraryWindow::showRenameCurrentList); - connect(listsModel, &ReadingListModel::addComicsToFavorites, comicsModel, QOverload &>::of(&ComicModel::addComicsToFavorites)); connect(listsModel, &ReadingListModel::addComicsToLabel, comicsModel, QOverload &, qulonglong>::of(&ComicModel::addComicsToLabel)); connect(listsModel, &ReadingListModel::addComicsToReadingList, comicsModel, QOverload &, qulonglong>::of(&ComicModel::addComicsToReadingList)); //-- - connect(addToFavoritesAction, &QAction::triggered, this, &LibraryWindow::addSelectedComicsToFavorites); - - // save covers - connect(saveCoversToAction, &QAction::triggered, this, &LibraryWindow::saveSelectedCoversTo); - // upgrade library connect(this, &LibraryWindow::libraryUpgraded, this, &LibraryWindow::loadLibrary, Qt::QueuedConnection); connect(this, &LibraryWindow::errorUpgradingLibrary, this, &LibraryWindow::showErrorUpgradingLibrary, Qt::QueuedConnection); - - connect(toogleShowRecentIndicatorAction, &QAction::toggled, recentVisibilityCoordinator, &RecentVisibilityCoordinator::toggleVisibility); } void LibraryWindow::showErrorUpgradingLibrary(const QString &path) @@ -1468,10 +761,10 @@ void LibraryWindow::loadLibrary(const QString &name) contentViewsManager->comicsView->setModel(NULL); foldersView->setModel(NULL); listsView->setModel(NULL); - disableAllActions(); // TODO comprobar que se deben deshabilitar + actions.disableAllActions(); // TODO comprobar que se deben deshabilitar // será possible renombrar y borrar estas bibliotecas - renameLibraryAction->setEnabled(true); - removeLibraryAction->setEnabled(true); + actions.renameLibraryAction->setEnabled(true); + actions.removeLibraryAction->setEnabled(true); } } @@ -1487,28 +780,28 @@ void LibraryWindow::loadLibrary(const QString &name) listsView->setModel(listsModelProxy); if (foldersModel->rowCount(QModelIndex()) > 0) - disableFoldersActions(false); + actions.disableFoldersActions(false); else - disableFoldersActions(true); + actions.disableFoldersActions(true); d.setCurrent(libraries.getPath(name)); d.setFilter(QDir::AllDirs | QDir::Files | QDir::Hidden | QDir::NoSymLinks | QDir::NoDotAndDotDot); if (d.count() <= 1) // read only library { - disableLibrariesActions(false); - updateLibraryAction->setDisabled(true); - openContainingFolderAction->setDisabled(true); - rescanLibraryForXMLInfoAction->setDisabled(true); + actions.disableLibrariesActions(false); + actions.updateLibraryAction->setDisabled(true); + actions.openContainingFolderAction->setDisabled(true); + actions.rescanLibraryForXMLInfoAction->setDisabled(true); disableComicsActions(true); #ifndef Q_OS_MACOS - toggleFullScreenAction->setEnabled(true); + actions.toggleFullScreenAction->setEnabled(true); #endif importedCovers = true; } else // librería normal abierta { - disableLibrariesActions(false); + actions.disableLibrariesActions(false); importedCovers = false; } @@ -1523,16 +816,16 @@ void LibraryWindow::loadLibrary(const QString &name) contentViewsManager->comicsView->setModel(NULL); foldersView->setModel(NULL); listsView->setModel(NULL); - disableAllActions(); // TODO comprobar que se deben deshabilitar + actions.disableAllActions(); // TODO comprobar que se deben deshabilitar // será possible renombrar y borrar estas bibliotecas - renameLibraryAction->setEnabled(true); - removeLibraryAction->setEnabled(true); + actions.renameLibraryAction->setEnabled(true); + actions.removeLibraryAction->setEnabled(true); } } else { contentViewsManager->comicsView->setModel(NULL); foldersView->setModel(NULL); listsView->setModel(NULL); - disableAllActions(); // TODO comprobar que se deben deshabilitar + actions.disableAllActions(); // TODO comprobar que se deben deshabilitar // si la librería no existe en disco, se ofrece al usuario la posibiliad de eliminarla if (!d.exists(path)) { @@ -1541,8 +834,8 @@ void LibraryWindow::loadLibrary(const QString &name) deleteCurrentLibrary(); } // será possible renombrar y borrar estas bibliotecas - renameLibraryAction->setEnabled(true); - removeLibraryAction->setEnabled(true); + actions.renameLibraryAction->setEnabled(true); + actions.removeLibraryAction->setEnabled(true); } else // si existe el path, puede ser que la librería sea alguna versión pre-5.0 ó que esté corrupta o que no haya drivers sql { @@ -1551,8 +844,8 @@ void LibraryWindow::loadLibrary(const QString &name) QSqlDatabase db = DataBaseManagement::loadDatabase(path); manageOpeningLibraryError(db.lastError().databaseText() + "-" + db.lastError().driverText()); // será possible renombrar y borrar estas bibliotecas - renameLibraryAction->setEnabled(true); - removeLibraryAction->setEnabled(true); + actions.renameLibraryAction->setEnabled(true); + actions.removeLibraryAction->setEnabled(true); } else { QString currentLibrary = selectedLibrary->currentText(); QString path = libraries.getPath(selectedLibrary->currentText()); @@ -1564,14 +857,14 @@ void LibraryWindow::loadLibrary(const QString &name) // create(path,path+"/.yacreaderlibrary",currentLibrary); } // será possible renombrar y borrar estas bibliotecas - renameLibraryAction->setEnabled(true); - removeLibraryAction->setEnabled(true); + actions.renameLibraryAction->setEnabled(true); + actions.removeLibraryAction->setEnabled(true); } } } } else // en caso de que no exista ninguna biblioteca se desactivan los botones pertinentes { - disableAllActions(); + actions.disableAllActions(); showNoLibrariesWidget(); } } @@ -1745,12 +1038,22 @@ QModelIndex LibraryWindow::getCurrentFolderIndex() void LibraryWindow::enableNeededActions() { if (foldersModel->rowCount(QModelIndex()) > 0) - disableFoldersActions(false); + actions.disableFoldersActions(false); if (comicsModel->rowCount() > 0) disableComicsActions(false); - disableLibrariesActions(false); + actions.disableLibrariesActions(false); +} + +void LibraryWindow::disableComicsActions(bool disabled) +{ + if (!disabled && librariesUpdateCoordinator->isRunning()) { + disableComicsActions(true); + return; + } + + actions.disableComicsActions(disabled); } void LibraryWindow::addFolderToCurrentIndex() @@ -1934,11 +1237,11 @@ void LibraryWindow::showComicsContextMenu(const QPoint &point, bool showFullScre setWebComicAction->setCheckable(true); setYonkomaAction->setCheckable(true); - connect(setNormalAction, &QAction::triggered, this->setNormalAction, &QAction::trigger); - connect(setMangaAction, &QAction::triggered, this->setMangaAction, &QAction::trigger); - connect(setWesternMangaAction, &QAction::triggered, this->setWesternMangaAction, &QAction::trigger); - connect(setWebComicAction, &QAction::triggered, this->setWebComicAction, &QAction::trigger); - connect(setYonkomaAction, &QAction::triggered, this->setYonkomaAction, &QAction::trigger); + connect(setNormalAction, &QAction::triggered, actions.setNormalAction, &QAction::trigger); + connect(setMangaAction, &QAction::triggered, actions.setMangaAction, &QAction::trigger); + connect(setWesternMangaAction, &QAction::triggered, actions.setWesternMangaAction, &QAction::trigger); + connect(setWebComicAction, &QAction::triggered, actions.setWebComicAction, &QAction::trigger); + connect(setYonkomaAction, &QAction::triggered, actions.setYonkomaAction, &QAction::trigger); auto setupActions = [=](FileType type) { switch (type) { @@ -1968,22 +1271,22 @@ void LibraryWindow::showComicsContextMenu(const QPoint &point, bool showFullScre QMenu menu; - menu.addAction(openComicAction); - menu.addAction(saveCoversToAction); + menu.addAction(actions.openComicAction); + menu.addAction(actions.saveCoversToAction); menu.addSeparator(); - menu.addAction(openContainingFolderComicAction); - menu.addAction(updateCurrentFolderAction); + menu.addAction(actions.openContainingFolderComicAction); + menu.addAction(actions.updateCurrentFolderAction); menu.addSeparator(); - menu.addAction(resetComicRatingAction); + menu.addAction(actions.resetComicRatingAction); menu.addSeparator(); - menu.addAction(editSelectedComicsAction); - menu.addAction(getInfoAction); - menu.addAction(asignOrderAction); + menu.addAction(actions.editSelectedComicsAction); + menu.addAction(actions.getInfoAction); + menu.addAction(actions.asignOrderAction); menu.addSeparator(); - menu.addAction(selectAllComicsAction); + menu.addAction(actions.selectAllComicsAction); menu.addSeparator(); - menu.addAction(setAsReadAction); - menu.addAction(setAsNonReadAction); + menu.addAction(actions.setAsReadAction); + menu.addAction(actions.setAsNonReadAction); menu.addSeparator(); auto typeMenu = new QMenu(tr("Set type")); menu.addMenu(typeMenu); @@ -1993,18 +1296,18 @@ void LibraryWindow::showComicsContextMenu(const QPoint &point, bool showFullScre typeMenu->addAction(setWebComicAction); typeMenu->addAction(setYonkomaAction); menu.addSeparator(); - menu.addAction(deleteMetadataAction); + menu.addAction(actions.deleteMetadataAction); menu.addSeparator(); - menu.addAction(deleteComicsAction); + menu.addAction(actions.deleteComicsAction); menu.addSeparator(); - menu.addAction(addToMenuAction); + menu.addAction(actions.addToMenuAction); QMenu subMenu; setupAddToSubmenu(subMenu); #ifndef Q_OS_MACOS if (showFullScreenAction) { menu.addSeparator(); - menu.addAction(toggleFullScreenAction); + menu.addAction(actions.toggleFullScreenAction); } #endif @@ -2177,8 +1480,8 @@ void LibraryWindow::showContinueReadingContextMenu(QPoint point, ComicDB comic) void LibraryWindow::setupAddToSubmenu(QMenu &menu) { - menu.addAction(addToFavoritesAction); - addToMenuAction->setMenu(&menu); + menu.addAction(actions.addToFavoritesAction); + actions.addToMenuAction->setMenu(&menu); const QList labels = listsModel->getLabels(); if (labels.count() > 0) @@ -2260,7 +1563,7 @@ void LibraryWindow::checkEmptyFolder() disableComicsActions(true); #ifndef Q_OS_MACOS if (comicsModel->rowCount() > 0) - toggleFullScreenAction->setEnabled(true); + actions.toggleFullScreenAction->setEnabled(true); #endif if (comicsModel->rowCount() == 0) navigationController->reselectCurrentFolder(); @@ -2431,7 +1734,7 @@ void LibraryWindow::deleteCurrentLibrary() foldersView->setModel(NULL); listsView->setModel(NULL); - disableAllActions(); + actions.disableAllActions(); showNoLibrariesWidget(); } libraries.save(); @@ -2455,7 +1758,7 @@ void LibraryWindow::removeLibrary() foldersView->setModel(NULL); listsView->setModel(NULL); - disableAllActions(); + actions.disableAllActions(); showNoLibrariesWidget(); } libraries.save(); @@ -2942,7 +2245,7 @@ void LibraryWindow::closeApp() void LibraryWindow::showNoLibrariesWidget() { - disableAllActions(); + actions.disableAllActions(); searchEdit->setDisabled(true); mainWidget->setCurrentIndex(1); } @@ -2958,7 +2261,7 @@ void LibraryWindow::showRootWidget() void LibraryWindow::showImportingWidget() { - disableAllActions(); + actions.disableAllActions(); importWidget->clear(); #ifndef Y_MAC_UI libraryToolBar->setDisabled(true); @@ -3101,60 +2404,60 @@ void LibraryWindow::showFoldersContextMenu(const QPoint &point) bool isRead = sourceMI.data(FolderModel::FinishedRole).toBool(); auto type = sourceMI.data(FolderModel::TypeRole).value(); - setFolderAsNormalAction->setCheckable(true); - setFolderAsMangaAction->setCheckable(true); - setFolderAsWesternMangaAction->setCheckable(true); - setFolderAsWebComicAction->setCheckable(true); - setFolderAsYonkomaAction->setCheckable(true); + actions.setFolderAsNormalAction->setCheckable(true); + actions.setFolderAsMangaAction->setCheckable(true); + actions.setFolderAsWesternMangaAction->setCheckable(true); + actions.setFolderAsWebComicAction->setCheckable(true); + actions.setFolderAsYonkomaAction->setCheckable(true); - setFolderAsNormalAction->setChecked(false); - setFolderAsMangaAction->setChecked(false); - setFolderAsWesternMangaAction->setChecked(false); - setFolderAsWebComicAction->setChecked(false); - setFolderAsYonkomaAction->setChecked(false); + actions.setFolderAsNormalAction->setChecked(false); + actions.setFolderAsMangaAction->setChecked(false); + actions.setFolderAsWesternMangaAction->setChecked(false); + actions.setFolderAsWebComicAction->setChecked(false); + actions.setFolderAsYonkomaAction->setChecked(false); switch (type) { case FileType::Comic: - setFolderAsNormalAction->setChecked(true); + actions.setFolderAsNormalAction->setChecked(true); break; case FileType::Manga: - setFolderAsMangaAction->setChecked(true); + actions.setFolderAsMangaAction->setChecked(true); break; case FileType::WesternManga: - setFolderAsWesternMangaAction->setChecked(true); + actions.setFolderAsWesternMangaAction->setChecked(true); break; case FileType::WebComic: - setFolderAsWebComicAction->setChecked(true); + actions.setFolderAsWebComicAction->setChecked(true); break; case FileType::Yonkoma: - setFolderAsYonkomaAction->setChecked(true); + actions.setFolderAsYonkomaAction->setChecked(true); break; } QMenu menu; - menu.addAction(openContainingFolderAction); - menu.addAction(updateFolderAction); + menu.addAction(actions.openContainingFolderAction); + menu.addAction(actions.updateFolderAction); menu.addSeparator(); //------------------------------- - menu.addAction(rescanXMLFromCurrentFolderAction); + menu.addAction(actions.rescanXMLFromCurrentFolderAction); menu.addSeparator(); //------------------------------- if (isCompleted) - menu.addAction(setFolderAsNotCompletedAction); + menu.addAction(actions.setFolderAsNotCompletedAction); else - menu.addAction(setFolderAsCompletedAction); + menu.addAction(actions.setFolderAsCompletedAction); menu.addSeparator(); //------------------------------- if (isRead) - menu.addAction(setFolderAsUnreadAction); + menu.addAction(actions.setFolderAsUnreadAction); else - menu.addAction(setFolderAsReadAction); + menu.addAction(actions.setFolderAsReadAction); menu.addSeparator(); //------------------------------- auto typeMenu = new QMenu(tr("Set type")); menu.addMenu(typeMenu); - typeMenu->addAction(setFolderAsNormalAction); - typeMenu->addAction(setFolderAsMangaAction); - typeMenu->addAction(setFolderAsWesternMangaAction); - typeMenu->addAction(setFolderAsWebComicAction); - typeMenu->addAction(setFolderAsYonkomaAction); + typeMenu->addAction(actions.setFolderAsNormalAction); + typeMenu->addAction(actions.setFolderAsMangaAction); + typeMenu->addAction(actions.setFolderAsWesternMangaAction); + typeMenu->addAction(actions.setFolderAsWebComicAction); + typeMenu->addAction(actions.setFolderAsYonkomaAction); menu.exec(foldersView->mapToGlobal(point)); } diff --git a/YACReaderLibrary/library_window.h b/YACReaderLibrary/library_window.h index 95ae0b0a..c4b35db3 100644 --- a/YACReaderLibrary/library_window.h +++ b/YACReaderLibrary/library_window.h @@ -6,6 +6,7 @@ #include #include +#include "library_window_actions.h" #include "yacreader_global.h" #include "yacreader_global_gui.h" #include "yacreader_libraries.h" @@ -158,99 +159,7 @@ public: int i; - QAction *backAction; - QAction *forwardAction; - - QAction *openComicAction; - QAction *createLibraryAction; - QAction *openLibraryAction; - - QAction *exportComicsInfoAction; - QAction *importComicsInfoAction; - - QAction *exportLibraryAction; - QAction *importLibraryAction; - - QAction *rescanLibraryForXMLInfoAction; - - QAction *updateLibraryAction; - QAction *removeLibraryAction; - QAction *helpAboutAction; - QAction *renameLibraryAction; -#ifndef Q_OS_MACOS - QAction *toggleFullScreenAction; -#endif - QAction *optionsAction; - QAction *serverConfigAction; - QAction *toggleComicsViewAction; - // QAction * socialAction; - - // tree actions - QAction *addFolderAction; - QAction *deleteFolderAction; - //-- - QAction *setRootIndexAction; - QAction *expandAllNodesAction; - QAction *colapseAllNodesAction; - - QAction *openContainingFolderAction; - QAction *saveCoversToAction; - //-- - QAction *setFolderAsNotCompletedAction; - QAction *setFolderAsCompletedAction; - //-- - QAction *setFolderAsReadAction; - QAction *setFolderAsUnreadAction; - //-- - QAction *setFolderAsMangaAction; - QAction *setFolderAsNormalAction; - QAction *setFolderAsWesternMangaAction; - QAction *setFolderAsWebComicAction; - QAction *setFolderAsYonkomaAction; - - QAction *openContainingFolderComicAction; - QAction *setAsReadAction; - QAction *setAsNonReadAction; - - QAction *setMangaAction; - QAction *setNormalAction; - QAction *setWesternMangaAction; - QAction *setWebComicAction; - QAction *setYonkomaAction; - - QAction *showHideMarksAction; - QAction *getInfoAction; // comic vine - QAction *resetComicRatingAction; - - QAction *toogleShowRecentIndicatorAction; - - // edit info actions - QAction *selectAllComicsAction; - QAction *editSelectedComicsAction; - QAction *asignOrderAction; - QAction *forceCoverExtractedAction; - QAction *deleteComicsAction; - QAction *deleteMetadataAction; - - QAction *focusSearchLineAction; - QAction *focusComicsViewAction; - - QAction *showEditShortcutsAction; - - QAction *quitAction; - - QAction *updateFolderAction; - QAction *updateCurrentFolderAction; - QAction *rescanXMLFromCurrentFolderAction; - - // reading lists actions - QAction *addReadingListAction; - QAction *deleteReadingListAction; - QAction *addLabelAction; - QAction *renameListAction; - //-- - QAction *addToMenuAction; - QAction *addToFavoritesAction; + LibraryWindowActions actions; #ifdef Y_MAC_UI YACReaderMacOSXToolbar *libraryToolBar; @@ -282,7 +191,6 @@ public: void createSettings(); void setupOpenglSetting(); void setupUI(); - void createActions(); void createToolBars(); void createMenus(); void createConnections(); @@ -292,14 +200,6 @@ public: void doModels(); void setupCoordinators(); - // ACTIONS MANAGEMENT - void disableComicsActions(bool disabled); - void disableLibrariesActions(bool disabled); - void disableNoUpdatedLibrariesActions(bool disabled); - void disableFoldersActions(bool disabled); - - void disableAllActions(); - QString currentPath(); QString currentFolderPath(); @@ -415,6 +315,7 @@ public slots: void reloadAfterCopyMove(const QModelIndex &mi); QModelIndex getCurrentFolderIndex(); void enableNeededActions(); + void disableComicsActions(bool disabled); void addFolderToCurrentIndex(); void deleteSelectedFolder(); void errorDeletingFolder(); diff --git a/YACReaderLibrary/library_window_actions.cpp b/YACReaderLibrary/library_window_actions.cpp new file mode 100644 index 00000000..9a098fb8 --- /dev/null +++ b/YACReaderLibrary/library_window_actions.cpp @@ -0,0 +1,744 @@ +#include "library_window_actions.h" + +#include "edit_shortcuts_dialog.h" +#include "library_window.h" +#include "shortcuts_manager.h" +#include "yacreader_history_controller.h" + +#include "help_about_dialog.h" +#include "export_library_dialog.h" +#include "yacreader_content_views_manager.h" +#include "server_config_dialog.h" +#include "yacreader_folders_view.h" +#include "yacreader_options_dialog.h" + +#include +#include + +LibraryWindowActions::LibraryWindowActions() +{ +} + +void LibraryWindowActions::createActions(LibraryWindow *window, QSettings *settings) +{ + auto tr = [](const char *text) { return QObject::tr(text); }; + + backAction = new QAction(window); + QIcon icoBackButton; + icoBackButton.addFile(addExtensionToIconPath(":/images/main_toolbar/back"), 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(window); + QIcon icoFordwardButton; + icoFordwardButton.addFile(addExtensionToIconPath(":/images/main_toolbar/forward"), 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); + + createLibraryAction = new QAction(window); + createLibraryAction->setToolTip(tr("Create a new library")); + createLibraryAction->setData(CREATE_LIBRARY_ACTION_YL); + createLibraryAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(CREATE_LIBRARY_ACTION_YL)); + createLibraryAction->setIcon(QIcon(addExtensionToIconPath(":/images/sidebar/newLibraryIcon"))); + + openLibraryAction = new QAction(window); + openLibraryAction->setToolTip(tr("Open an existing library")); + openLibraryAction->setData(OPEN_LIBRARY_ACTION_YL); + openLibraryAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(OPEN_LIBRARY_ACTION_YL)); + openLibraryAction->setIcon(QIcon(addExtensionToIconPath(":/images/sidebar/openLibraryIcon"))); + + exportComicsInfoAction = new QAction(tr("Export comics info"), window); + exportComicsInfoAction->setToolTip(tr("Export comics info")); + exportComicsInfoAction->setData(EXPORT_COMICS_INFO_ACTION_YL); + exportComicsInfoAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(EXPORT_COMICS_INFO_ACTION_YL)); + exportComicsInfoAction->setIcon(QIcon(":/images/menus_icons/exportComicsInfoIcon.svg")); + + importComicsInfoAction = new QAction(tr("Import comics info"), window); + importComicsInfoAction->setToolTip(tr("Import comics info")); + importComicsInfoAction->setData(IMPORT_COMICS_INFO_ACTION_YL); + importComicsInfoAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(IMPORT_COMICS_INFO_ACTION_YL)); + importComicsInfoAction->setIcon(QIcon(":/images/menus_icons/importComicsInfoIcon.svg")); + + exportLibraryAction = new QAction(tr("Pack covers"), window); + exportLibraryAction->setToolTip(tr("Pack the covers of the selected library")); + exportLibraryAction->setData(EXPORT_LIBRARY_ACTION_YL); + exportLibraryAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(EXPORT_LIBRARY_ACTION_YL)); + exportLibraryAction->setIcon(QIcon(":/images/menus_icons/exportLibraryIcon.svg")); + + importLibraryAction = new QAction(tr("Unpack covers"), window); + importLibraryAction->setToolTip(tr("Unpack a catalog")); + importLibraryAction->setData(IMPORT_LIBRARY_ACTION_YL); + importLibraryAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(IMPORT_LIBRARY_ACTION_YL)); + importLibraryAction->setIcon(QIcon(":/images/menus_icons/importLibraryIcon.svg")); + + updateLibraryAction = new QAction(tr("Update library"), window); + updateLibraryAction->setToolTip(tr("Update current library")); + updateLibraryAction->setData(UPDATE_LIBRARY_ACTION_YL); + updateLibraryAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(UPDATE_LIBRARY_ACTION_YL)); + updateLibraryAction->setIcon(QIcon(":/images/menus_icons/updateLibraryIcon.svg")); + + renameLibraryAction = new QAction(tr("Rename library"), window); + renameLibraryAction->setToolTip(tr("Rename current library")); + renameLibraryAction->setData(RENAME_LIBRARY_ACTION_YL); + renameLibraryAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(RENAME_LIBRARY_ACTION_YL)); + renameLibraryAction->setIcon(QIcon(":/images/menus_icons/editIcon.svg")); + + removeLibraryAction = new QAction(tr("Remove library"), window); + removeLibraryAction->setToolTip(tr("Remove current library from your collection")); + removeLibraryAction->setData(REMOVE_LIBRARY_ACTION_YL); + removeLibraryAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(REMOVE_LIBRARY_ACTION_YL)); + removeLibraryAction->setIcon(QIcon(":/images/menus_icons/removeLibraryIcon.svg")); + + rescanLibraryForXMLInfoAction = new QAction(tr("Rescan library for XML info"), window); + rescanLibraryForXMLInfoAction->setToolTip(tr("Tries to find XML info embedded in comic files. You only need to do this if the library was created with 9.8.2 or earlier versions or if you are using third party software to embed XML info in the files.")); + rescanLibraryForXMLInfoAction->setData(RESCAN_LIBRARY_XML_INFO_ACTION_YL); + rescanLibraryForXMLInfoAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(RESCAN_LIBRARY_XML_INFO_ACTION_YL)); + + openComicAction = new QAction(tr("Open current comic"), window); + openComicAction->setToolTip(tr("Open current comic on YACReader")); + openComicAction->setData(OPEN_COMIC_ACTION_YL); + openComicAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(OPEN_COMIC_ACTION_YL)); + openComicAction->setIcon(QIcon(":/images/comics_view_toolbar/openInYACReader.svg")); + + saveCoversToAction = new QAction(tr("Save selected covers to..."), window); + saveCoversToAction->setToolTip(tr("Save covers of the selected comics as JPG files")); + saveCoversToAction->setData(SAVE_COVERS_TO_ACTION_YL); + saveCoversToAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SAVE_COVERS_TO_ACTION_YL)); + + setAsReadAction = new QAction(tr("Set as read"), window); + setAsReadAction->setToolTip(tr("Set comic as read")); + setAsReadAction->setData(SET_AS_READ_ACTION_YL); + setAsReadAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_AS_READ_ACTION_YL)); + setAsReadAction->setIcon(QIcon(":/images/comics_view_toolbar/setReadButton.svg")); + + setAsNonReadAction = new QAction(tr("Set as unread"), window); + setAsNonReadAction->setToolTip(tr("Set comic as unread")); + setAsNonReadAction->setData(SET_AS_NON_READ_ACTION_YL); + setAsNonReadAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_AS_NON_READ_ACTION_YL)); + setAsNonReadAction->setIcon(QIcon(":/images/comics_view_toolbar/setUnread.svg")); + + setMangaAction = new QAction(tr("manga"), window); + setMangaAction->setToolTip(tr("Set issue as manga")); + setMangaAction->setData(SET_AS_MANGA_ACTION_YL); + setMangaAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_AS_MANGA_ACTION_YL)); + setMangaAction->setIcon(QIcon(":/images/comics_view_toolbar/setManga.svg")); + + setNormalAction = new QAction(tr("comic"), window); + setNormalAction->setToolTip(tr("Set issue as normal")); + setNormalAction->setData(SET_AS_NORMAL_ACTION_YL); + setNormalAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_AS_NORMAL_ACTION_YL)); + setNormalAction->setIcon(QIcon(":/images/comics_view_toolbar/setNormal.svg")); + + setWesternMangaAction = new QAction(tr("western manga"), window); + setWesternMangaAction->setToolTip(tr("Set issue as western manga")); + setWesternMangaAction->setData(SET_AS_WESTERN_MANGA_ACTION_YL); + setWesternMangaAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_AS_WESTERN_MANGA_ACTION_YL)); + // setWesternMangaAction->setIcon(QIcon(":/images/comics_view_toolbar/setWesternManga.svg")); + + setWebComicAction = new QAction(tr("web comic"), window); + setWebComicAction->setToolTip(tr("Set issue as web comic")); + setWebComicAction->setData(SET_AS_WEB_COMIC_ACTION_YL); + setWebComicAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_AS_WEB_COMIC_ACTION_YL)); + // setWebComicAction->setIcon(QIcon(":/images/comics_view_toolbar/setWebComic.svg")); + + setYonkomaAction = new QAction(tr("yonkoma"), window); + setYonkomaAction->setToolTip(tr("Set issue as yonkoma")); + setYonkomaAction->setData(SET_AS_YONKOMA_ACTION_YL); + setYonkomaAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_AS_YONKOMA_ACTION_YL)); + + showHideMarksAction = new QAction(tr("Show/Hide marks"), window); + showHideMarksAction->setToolTip(tr("Show or hide read marks")); + showHideMarksAction->setData(SHOW_HIDE_MARKS_ACTION_YL); + showHideMarksAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SHOW_HIDE_MARKS_ACTION_YL)); + showHideMarksAction->setCheckable(true); + showHideMarksAction->setIcon(QIcon(":/images/comics_view_toolbar/showMarks.svg")); + showHideMarksAction->setChecked(true); + + toogleShowRecentIndicatorAction = new QAction(tr("Show/Hide recent indicator"), window); + toogleShowRecentIndicatorAction->setToolTip(tr("Show or hide recent indicator")); + toogleShowRecentIndicatorAction->setData(SHOW_HIDE_RECENT_INDICATOR_ACTION_YL); + toogleShowRecentIndicatorAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SHOW_HIDE_RECENT_INDICATOR_ACTION_YL)); + toogleShowRecentIndicatorAction->setCheckable(true); + toogleShowRecentIndicatorAction->setIcon(QIcon(":/images/comics_view_toolbar/showRecentIndicator.svg")); + toogleShowRecentIndicatorAction->setChecked(settings->value(DISPLAY_RECENTLY_INDICATOR, true).toBool()); + +#ifndef Q_OS_MACOS + toggleFullScreenAction = new QAction(tr("Fullscreen mode on/off"), window); + 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.addFile(addExtensionToIconPath(":/images/main_toolbar/fullscreen"), QSize(), QIcon::Normal); + toggleFullScreenAction->setIcon(icoFullscreenButton); +#endif + helpAboutAction = new QAction(window); + 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(addExtensionToIconPath(":/images/main_toolbar/help"), QSize(), QIcon::Normal); + helpAboutAction->setIcon(icoHelpButton); + + addFolderAction = new QAction(tr("Add new folder"), window); + addFolderAction->setData(ADD_FOLDER_ACTION_YL); + addFolderAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(ADD_FOLDER_ACTION_YL)); + addFolderAction->setToolTip(tr("Add new folder to the current library")); + addFolderAction->setIcon(QIcon(addExtensionToIconPath(":/images/sidebar/addNew_sidebar"))); + + deleteFolderAction = new QAction(tr("Delete folder"), window); + deleteFolderAction->setData(REMOVE_FOLDER_ACTION_YL); + deleteFolderAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(REMOVE_FOLDER_ACTION_YL)); + deleteFolderAction->setToolTip(tr("Delete current folder from disk")); + deleteFolderAction->setIcon(QIcon(addExtensionToIconPath(":/images/sidebar/delete_sidebar"))); + + setRootIndexAction = new QAction(window); + setRootIndexAction->setData(SET_ROOT_INDEX_ACTION_YL); + setRootIndexAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_ROOT_INDEX_ACTION_YL)); + setRootIndexAction->setToolTip(tr("Select root node")); + setRootIndexAction->setIcon(QIcon(addExtensionToIconPath(":/images/sidebar/setRoot"))); + + expandAllNodesAction = new QAction(window); + expandAllNodesAction->setToolTip(tr("Expand all nodes")); + expandAllNodesAction->setData(EXPAND_ALL_NODES_ACTION_YL); + expandAllNodesAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(EXPAND_ALL_NODES_ACTION_YL)); + expandAllNodesAction->setIcon(QIcon(addExtensionToIconPath(":/images/sidebar/expand"))); + + colapseAllNodesAction = new QAction(window); + colapseAllNodesAction->setToolTip(tr("Collapse all nodes")); + colapseAllNodesAction->setData(COLAPSE_ALL_NODES_ACTION_YL); + colapseAllNodesAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(COLAPSE_ALL_NODES_ACTION_YL)); + colapseAllNodesAction->setIcon(QIcon(addExtensionToIconPath(":/images/sidebar/colapse"))); + + optionsAction = new QAction(window); + optionsAction->setToolTip(tr("Show options dialog")); + optionsAction->setData(OPTIONS_ACTION_YL); + optionsAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(OPTIONS_ACTION_YL)); + QIcon icoSettingsButton; + icoSettingsButton.addFile(addExtensionToIconPath(":/images/main_toolbar/settings"), QSize(), QIcon::Normal); + optionsAction->setIcon(icoSettingsButton); + + serverConfigAction = new QAction(window); + 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(addExtensionToIconPath(":/images/main_toolbar/server"), QSize(), QIcon::Normal); + serverConfigAction->setIcon(icoServerButton); + + toggleComicsViewAction = new QAction(tr("Change between comics views"), window); + toggleComicsViewAction->setToolTip(tr("Change between comics views")); + QIcon icoViewsButton; + + if (!settings->contains(COMICS_VIEW_STATUS) || settings->value(COMICS_VIEW_STATUS) == Flow) + icoViewsButton.addFile(addExtensionToIconPath(":/images/main_toolbar/grid"), QSize(), QIcon::Normal); + else if (settings->value(COMICS_VIEW_STATUS) == Grid) + icoViewsButton.addFile(addExtensionToIconPath(":/images/main_toolbar/info"), QSize(), QIcon::Normal); + else + icoViewsButton.addFile(addExtensionToIconPath(":/images/main_toolbar/flow"), QSize(), QIcon::Normal); + + toggleComicsViewAction->setData(TOGGLE_COMICS_VIEW_ACTION_YL); + toggleComicsViewAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(TOGGLE_COMICS_VIEW_ACTION_YL)); + toggleComicsViewAction->setIcon(icoViewsButton); + // socialAction = new QAction(this); + + //---- + + openContainingFolderAction = new QAction(window); + openContainingFolderAction->setText(tr("Open folder...")); + openContainingFolderAction->setData(OPEN_CONTAINING_FOLDER_ACTION_YL); + openContainingFolderAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(OPEN_CONTAINING_FOLDER_ACTION_YL)); + openContainingFolderAction->setIcon(QIcon(":/images/menus_icons/open_containing_folder.svg")); + + setFolderAsNotCompletedAction = new QAction(window); + setFolderAsNotCompletedAction->setText(tr("Set as uncompleted")); + setFolderAsNotCompletedAction->setData(SET_FOLDER_AS_NOT_COMPLETED_ACTION_YL); + setFolderAsNotCompletedAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_FOLDER_AS_NOT_COMPLETED_ACTION_YL)); + + setFolderAsCompletedAction = new QAction(window); + setFolderAsCompletedAction->setText(tr("Set as completed")); + setFolderAsCompletedAction->setData(SET_FOLDER_AS_COMPLETED_ACTION_YL); + setFolderAsCompletedAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_FOLDER_AS_COMPLETED_ACTION_YL)); + + setFolderAsReadAction = new QAction(window); + setFolderAsReadAction->setText(tr("Set as read")); + setFolderAsReadAction->setData(SET_FOLDER_AS_READ_ACTION_YL); + setFolderAsReadAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_FOLDER_AS_READ_ACTION_YL)); + + setFolderAsUnreadAction = new QAction(window); + setFolderAsUnreadAction->setText(tr("Set as unread")); + setFolderAsUnreadAction->setData(SET_FOLDER_AS_UNREAD_ACTION_YL); + setFolderAsUnreadAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_FOLDER_AS_UNREAD_ACTION_YL)); + + setFolderAsMangaAction = new QAction(window); + setFolderAsMangaAction->setText(tr("manga")); + setFolderAsMangaAction->setData(SET_FOLDER_AS_MANGA_ACTION_YL); + setFolderAsMangaAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_FOLDER_AS_MANGA_ACTION_YL)); + + setFolderAsNormalAction = new QAction(window); + setFolderAsNormalAction->setText(tr("comic")); + setFolderAsNormalAction->setData(SET_FOLDER_AS_NORMAL_ACTION_YL); + setFolderAsNormalAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_FOLDER_AS_NORMAL_ACTION_YL)); + + setFolderAsWesternMangaAction = new QAction(window); + setFolderAsWesternMangaAction->setText(tr("western manga (left to right)")); + setFolderAsWesternMangaAction->setData(SET_FOLDER_AS_WESTERN_MANGA_ACTION_YL); + setFolderAsWesternMangaAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_FOLDER_AS_WESTERN_MANGA_ACTION_YL)); + + setFolderAsWebComicAction = new QAction(window); + setFolderAsWebComicAction->setText(tr("web comic")); + setFolderAsWebComicAction->setData(SET_FOLDER_AS_WEB_COMIC_ACTION_YL); + setFolderAsWebComicAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_FOLDER_AS_WEB_COMIC_ACTION_YL)); + + setFolderAsYonkomaAction = new QAction(window); + setFolderAsYonkomaAction->setText(tr("yonkoma")); + setFolderAsYonkomaAction->setData(SET_FOLDER_AS_YONKOMA_ACTION_YL); + setFolderAsYonkomaAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_FOLDER_AS_YONKOMA_ACTION_YL)); + + //---- + + openContainingFolderComicAction = new QAction(window); + openContainingFolderComicAction->setText(tr("Open containing folder...")); + openContainingFolderComicAction->setData(OPEN_CONTAINING_FOLDER_COMIC_ACTION_YL); + openContainingFolderComicAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(OPEN_CONTAINING_FOLDER_COMIC_ACTION_YL)); + openContainingFolderComicAction->setIcon(QIcon(":/images/menus_icons/open_containing_folder.svg")); + + resetComicRatingAction = new QAction(window); + resetComicRatingAction->setText(tr("Reset comic rating")); + resetComicRatingAction->setData(RESET_COMIC_RATING_ACTION_YL); + resetComicRatingAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(RESET_COMIC_RATING_ACTION_YL)); + + // Edit comics actions------------------------------------------------------ + selectAllComicsAction = new QAction(window); + selectAllComicsAction->setText(tr("Select all comics")); + selectAllComicsAction->setData(SELECT_ALL_COMICS_ACTION_YL); + selectAllComicsAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SELECT_ALL_COMICS_ACTION_YL)); + selectAllComicsAction->setIcon(QIcon(":/images/comics_view_toolbar/selectAll.svg")); + + editSelectedComicsAction = new QAction(window); + editSelectedComicsAction->setText(tr("Edit")); + editSelectedComicsAction->setData(EDIT_SELECTED_COMICS_ACTION_YL); + editSelectedComicsAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(EDIT_SELECTED_COMICS_ACTION_YL)); + editSelectedComicsAction->setIcon(QIcon(":/images/comics_view_toolbar/editComic.svg")); + + asignOrderAction = new QAction(window); + asignOrderAction->setText(tr("Assign current order to comics")); + asignOrderAction->setData(ASIGN_ORDER_ACTION_YL); + asignOrderAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(ASIGN_ORDER_ACTION_YL)); + asignOrderAction->setIcon(QIcon(":/images/comics_view_toolbar/asignNumber.svg")); + + forceCoverExtractedAction = new QAction(window); + forceCoverExtractedAction->setText(tr("Update cover")); + forceCoverExtractedAction->setData(FORCE_COVER_EXTRACTED_ACTION_YL); + forceCoverExtractedAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(FORCE_COVER_EXTRACTED_ACTION_YL)); + forceCoverExtractedAction->setIcon(QIcon(":/images/importCover.png")); + + deleteComicsAction = new QAction(window); + deleteComicsAction->setText(tr("Delete selected comics")); + deleteComicsAction->setData(DELETE_COMICS_ACTION_YL); + deleteComicsAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(DELETE_COMICS_ACTION_YL)); + deleteComicsAction->setIcon(QIcon(":/images/comics_view_toolbar/trash.svg")); + + deleteMetadataAction = new QAction(window); + deleteMetadataAction->setText(tr("Delete metadata from selected comics")); + deleteMetadataAction->setData(DELETE_METADATA_FROM_COMICS_ACTION_YL); + deleteMetadataAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(DELETE_METADATA_FROM_COMICS_ACTION_YL)); + + getInfoAction = new QAction(window); + getInfoAction->setData(GET_INFO_ACTION_YL); + getInfoAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(GET_INFO_ACTION_YL)); + getInfoAction->setText(tr("Download tags from Comic Vine")); + getInfoAction->setIcon(QIcon(":/images/comics_view_toolbar/getInfo.svg")); + //------------------------------------------------------------------------- + + focusSearchLineAction = new QAction(tr("Focus search line"), window); + focusSearchLineAction->setData(FOCUS_SEARCH_LINE_ACTION_YL); + focusSearchLineAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(FOCUS_SEARCH_LINE_ACTION_YL)); + focusSearchLineAction->setIcon(QIcon(":/images/iconSearch.png")); + window->addAction(focusSearchLineAction); + + focusComicsViewAction = new QAction(tr("Focus comics view"), window); + focusComicsViewAction->setData(FOCUS_COMICS_VIEW_ACTION_YL); + focusComicsViewAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(FOCUS_COMICS_VIEW_ACTION_YL)); + window->addAction(focusComicsViewAction); + + showEditShortcutsAction = new QAction(tr("Edit shortcuts"), window); + showEditShortcutsAction->setData(SHOW_EDIT_SHORTCUTS_ACTION_YL); + showEditShortcutsAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SHOW_EDIT_SHORTCUTS_ACTION_YL)); + showEditShortcutsAction->setShortcutContext(Qt::ApplicationShortcut); + window->addAction(showEditShortcutsAction); + + quitAction = new QAction(tr("&Quit"), window); + quitAction->setIcon(QIcon(":/images/viewer_toolbar/close.svg")); + quitAction->setData(QUIT_ACTION_YL); + quitAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(QUIT_ACTION_YL)); + // TODO: is `quitAction->setMenuRole(QAction::QuitRole);` useful on macOS? + window->addAction(quitAction); + + updateFolderAction = new QAction(tr("Update folder"), window); + updateFolderAction->setIcon(QIcon(":/images/menus_icons/update_current_folder.svg")); + + updateCurrentFolderAction = new QAction(tr("Update current folder"), window); + updateCurrentFolderAction->setData(UPDATE_CURRENT_FOLDER_ACTION_YL); + updateCurrentFolderAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(UPDATE_CURRENT_FOLDER_ACTION_YL)); + updateCurrentFolderAction->setIcon(QIcon(":/images/menus_icons/update_current_folder.svg")); + + rescanXMLFromCurrentFolderAction = new QAction(tr("Scan legacy XML metadata"), window); + rescanXMLFromCurrentFolderAction->setData(SCAN_XML_FROM_CURRENT_FOLDER_ACTION_YL); + rescanXMLFromCurrentFolderAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SCAN_XML_FROM_CURRENT_FOLDER_ACTION_YL)); + + addReadingListAction = new QAction(tr("Add new reading list"), window); + addReadingListAction->setData(ADD_READING_LIST_ACTION_YL); + addReadingListAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(ADD_READING_LIST_ACTION_YL)); + addReadingListAction->setToolTip(tr("Add a new reading list to the current library")); + addReadingListAction->setIcon(QIcon(addExtensionToIconPath(":/images/sidebar/addNew_sidebar"))); + + deleteReadingListAction = new QAction(tr("Remove reading list"), window); + deleteReadingListAction->setData(REMOVE_READING_LIST_ACTION_YL); + deleteReadingListAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(REMOVE_READING_LIST_ACTION_YL)); + deleteReadingListAction->setToolTip(tr("Remove current reading list from the library")); + deleteReadingListAction->setIcon(QIcon(addExtensionToIconPath(":/images/sidebar/delete_sidebar"))); + + addLabelAction = new QAction(tr("Add new label"), window); + addLabelAction->setData(ADD_LABEL_ACTION_YL); + addLabelAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(ADD_LABEL_ACTION_YL)); + addLabelAction->setToolTip(tr("Add a new label to this library")); + addLabelAction->setIcon(QIcon(addExtensionToIconPath(":/images/sidebar/addLabelIcon"))); + + renameListAction = new QAction(tr("Rename selected list"), window); + renameListAction->setData(RENAME_LIST_ACTION_YL); + renameListAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(RENAME_LIST_ACTION_YL)); + renameListAction->setToolTip(tr("Rename any selected labels or lists")); + renameListAction->setIcon(QIcon(addExtensionToIconPath(":/images/sidebar/renameListIcon"))); + + //-- + addToMenuAction = new QAction(tr("Add to..."), window); + + addToFavoritesAction = new QAction(tr("Favorites"), window); + addToFavoritesAction->setData(ADD_TO_FAVORITES_ACTION_YL); + addToFavoritesAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(ADD_TO_FAVORITES_ACTION_YL)); + addToFavoritesAction->setToolTip(tr("Add selected comics to favorites list")); + addToFavoritesAction->setIcon(QIcon(":/images/lists/default_1.svg")); + + // actions not asigned to any widget + window->addAction(saveCoversToAction); + window->addAction(openContainingFolderAction); + window->addAction(updateCurrentFolderAction); + window->addAction(resetComicRatingAction); + window->addAction(setFolderAsCompletedAction); + window->addAction(setFolderAsNotCompletedAction); + window->addAction(setFolderAsReadAction); + window->addAction(setFolderAsUnreadAction); + window->addAction(setFolderAsMangaAction); + window->addAction(setFolderAsNormalAction); + window->addAction(setFolderAsWesternMangaAction); + window->addAction(setFolderAsWebComicAction); + window->addAction(setFolderAsYonkomaAction); + window->addAction(deleteMetadataAction); + window->addAction(rescanXMLFromCurrentFolderAction); +#ifndef Q_OS_MACOS + window->addAction(toggleFullScreenAction); +#endif + + // disable actions + disableAllActions(); +} + +void LibraryWindowActions::createConnections( + YACReaderHistoryController *historyController, + LibraryWindow *window, + HelpAboutDialog *had, + ExportLibraryDialog *exportLibraryDialog, + YACReaderContentViewsManager *contentViewsManager, + EditShortcutsDialog *editShortcutsDialog, + YACReaderFoldersView *foldersView, + YACReaderOptionsDialog *optionsDialog, + ServerConfigDialog *serverConfigDialog) +{ + // history navigation + QObject::connect(backAction, &QAction::triggered, historyController, &YACReaderHistoryController::backward); + QObject::connect(forwardAction, &QAction::triggered, historyController, &YACReaderHistoryController::forward); + //-- + QObject::connect(historyController, &YACReaderHistoryController::enabledBackward, backAction, &QAction::setEnabled); + QObject::connect(historyController, &YACReaderHistoryController::enabledForward, forwardAction, &QAction::setEnabled); + // connect(foldersView, SIGNAL(clicked(QModelIndex)), historyController, SLOT(updateHistory(QModelIndex))); + + // actions + QObject::connect(createLibraryAction, &QAction::triggered, window, &LibraryWindow::createLibrary); + QObject::connect(exportLibraryAction, &QAction::triggered, exportLibraryDialog, &ExportLibraryDialog::open); + QObject::connect(importLibraryAction, &QAction::triggered, window, &LibraryWindow::importLibraryPackage); + + QObject::connect(openLibraryAction, &QAction::triggered, window, &LibraryWindow::showAddLibrary); + QObject::connect(setAsReadAction, &QAction::triggered, window, &LibraryWindow::setCurrentComicReaded); + QObject::connect(setAsNonReadAction, &QAction::triggered, window, &LibraryWindow::setCurrentComicUnreaded); + + QObject::connect(setNormalAction, &QAction::triggered, window, [=]() { + window->setSelectedComicsType(FileType::Comic); + }); + QObject::connect(setMangaAction, &QAction::triggered, window, [=]() { + window->setSelectedComicsType(FileType::Manga); + }); + QObject::connect(setWesternMangaAction, &QAction::triggered, window, [=]() { + window->setSelectedComicsType(FileType::WesternManga); + }); + QObject::connect(setWebComicAction, &QAction::triggered, window, [=]() { + window->setSelectedComicsType(FileType::WebComic); + }); + QObject::connect(setYonkomaAction, &QAction::triggered, window, [=]() { + window->setSelectedComicsType(FileType::Yonkoma); + }); + + // comicsInfoManagement + QObject::connect(exportComicsInfoAction, &QAction::triggered, window, &LibraryWindow::showExportComicsInfo); + QObject::connect(importComicsInfoAction, &QAction::triggered, window, &LibraryWindow::showImportComicsInfo); + + // ContextMenus + QObject::connect(openContainingFolderComicAction, &QAction::triggered, window, &LibraryWindow::openContainingFolderComic); + QObject::connect(setFolderAsNotCompletedAction, &QAction::triggered, window, &LibraryWindow::setFolderAsNotCompleted); + QObject::connect(setFolderAsCompletedAction, &QAction::triggered, window, &LibraryWindow::setFolderAsCompleted); + QObject::connect(setFolderAsReadAction, &QAction::triggered, window, &LibraryWindow::setFolderAsRead); + QObject::connect(setFolderAsUnreadAction, &QAction::triggered, window, &LibraryWindow::setFolderAsUnread); + QObject::connect(openContainingFolderAction, &QAction::triggered, window, &LibraryWindow::openContainingFolder); + + QObject::connect(setFolderAsMangaAction, &QAction::triggered, window, [=]() { + window->setFolderType(FileType::Manga); + }); + QObject::connect(setFolderAsNormalAction, &QAction::triggered, window, [=]() { + window->setFolderType(FileType::Comic); + }); + QObject::connect(setFolderAsWesternMangaAction, &QAction::triggered, window, [=]() { + window->setFolderType(FileType::WesternManga); + }); + QObject::connect(setFolderAsWebComicAction, &QAction::triggered, window, [=]() { + window->setFolderType(FileType::WebComic); + }); + QObject::connect(setFolderAsYonkomaAction, &QAction::triggered, window, [=]() { + window->setFolderType(FileType::Yonkoma); + }); + + QObject::connect(resetComicRatingAction, &QAction::triggered, window, &LibraryWindow::resetComicRating); + + // Comicts edition + QObject::connect(editSelectedComicsAction, &QAction::triggered, window, &LibraryWindow::showProperties); + QObject::connect(asignOrderAction, &QAction::triggered, window, &LibraryWindow::asignNumbers); + + QObject::connect(deleteMetadataAction, &QAction::triggered, window, &LibraryWindow::deleteMetadataFromSelectedComics); + + QObject::connect(deleteComicsAction, &QAction::triggered, window, &LibraryWindow::deleteComics); + + QObject::connect(getInfoAction, &QAction::triggered, window, &LibraryWindow::showComicVineScraper); + + QObject::connect(focusComicsViewAction, &QAction::triggered, contentViewsManager, &YACReaderContentViewsManager::focusComicsViewViaShortcut); + + QObject::connect(showEditShortcutsAction, &QAction::triggered, editShortcutsDialog, &QWidget::show); + + QObject::connect(quitAction, &QAction::triggered, window, &LibraryWindow::closeApp); + + // update folders (partial updates) + QObject::connect(updateCurrentFolderAction, &QAction::triggered, window, &LibraryWindow::updateCurrentFolder); + QObject::connect(updateFolderAction, &QAction::triggered, window, &LibraryWindow::updateCurrentFolder); + + QObject::connect(rescanXMLFromCurrentFolderAction, &QAction::triggered, window, &LibraryWindow::rescanCurrentFolderForXMLInfo); + + // lists + QObject::connect(addReadingListAction, &QAction::triggered, window, &LibraryWindow::addNewReadingList); + QObject::connect(deleteReadingListAction, &QAction::triggered, window, &LibraryWindow::deleteSelectedReadingList); + QObject::connect(addLabelAction, &QAction::triggered, window, &LibraryWindow::showAddNewLabelDialog); + QObject::connect(renameListAction, &QAction::triggered, window, &LibraryWindow::showRenameCurrentList); + + QObject::connect(updateLibraryAction, &QAction::triggered, window, &LibraryWindow::updateLibrary); + QObject::connect(renameLibraryAction, &QAction::triggered, window, &LibraryWindow::renameLibrary); + // connect(deleteLibraryAction,SIGNAL(triggered()),window,SLOT(deleteLibrary())); + QObject::connect(removeLibraryAction, &QAction::triggered, window, &LibraryWindow::removeLibrary); + QObject::connect(rescanLibraryForXMLInfoAction, &QAction::triggered, window, &LibraryWindow::rescanLibraryForXMLInfo); + QObject::connect(openComicAction, &QAction::triggered, window, QOverload<>::of(&LibraryWindow::openComic)); + QObject::connect(helpAboutAction, &QAction::triggered, had, &QWidget::show); + QObject::connect(addFolderAction, &QAction::triggered, window, &LibraryWindow::addFolderToCurrentIndex); + QObject::connect(deleteFolderAction, &QAction::triggered, window, &LibraryWindow::deleteSelectedFolder); + QObject::connect(setRootIndexAction, &QAction::triggered, window, &LibraryWindow::setRootIndex); + QObject::connect(expandAllNodesAction, &QAction::triggered, foldersView, &QTreeView::expandAll); + QObject::connect(colapseAllNodesAction, &QAction::triggered, foldersView, &QTreeView::collapseAll); +#ifndef Q_OS_MACOS + QObject::connect(toggleFullScreenAction, &QAction::triggered, window, &LibraryWindow::toggleFullScreen); +#endif + QObject::connect(toggleComicsViewAction, &QAction::triggered, contentViewsManager, &YACReaderContentViewsManager::toggleComicsView); + QObject::connect(optionsAction, &QAction::triggered, optionsDialog, &QWidget::show); +#ifdef SERVER_RELEASE + QObject::connect(serverConfigAction, &QAction::triggered, serverConfigDialog, &QWidget::show); +#endif + + QObject::connect(addToFavoritesAction, &QAction::triggered, window, &LibraryWindow::addSelectedComicsToFavorites); + + // save covers + QObject::connect(saveCoversToAction, &QAction::triggered, window, &LibraryWindow::saveSelectedCoversTo); +} + +void LibraryWindowActions::setUpShortcutsManagement(EditShortcutsDialog *editShortcutsDialog) +{ + + QList allActions; + QList tmpList; + + editShortcutsDialog->addActionsGroup("Comics", QIcon(":/images/shortcuts_group_comics.svg"), + tmpList = QList() + << openComicAction + << saveCoversToAction + << setAsReadAction + << setAsNonReadAction + << setMangaAction + << setNormalAction + << openContainingFolderComicAction + << resetComicRatingAction + << selectAllComicsAction + << editSelectedComicsAction + << asignOrderAction + << deleteMetadataAction + << deleteComicsAction + << getInfoAction); + + allActions << tmpList; + + editShortcutsDialog->addActionsGroup("Folders", QIcon(":/images/shortcuts_group_folders.svg"), + tmpList = QList() + << addFolderAction + << deleteFolderAction + << setRootIndexAction + << expandAllNodesAction + << colapseAllNodesAction + << openContainingFolderAction + << setFolderAsNotCompletedAction + << setFolderAsCompletedAction + << setFolderAsReadAction + << setFolderAsUnreadAction + << setFolderAsMangaAction + << setFolderAsNormalAction + << updateCurrentFolderAction + << rescanXMLFromCurrentFolderAction); + allActions << tmpList; + + editShortcutsDialog->addActionsGroup("Lists", QIcon(":/images/shortcuts_group_folders.svg"), // TODO change icon + tmpList = QList() + << addReadingListAction + << deleteReadingListAction + << addLabelAction + << renameListAction); + allActions << tmpList; + + editShortcutsDialog->addActionsGroup("General", QIcon(":/images/shortcuts_group_general.svg"), + tmpList = QList() + << backAction + << forwardAction + << focusSearchLineAction + << focusComicsViewAction + << helpAboutAction + << optionsAction + << serverConfigAction + << showEditShortcutsAction + << quitAction); + + allActions << tmpList; + + editShortcutsDialog->addActionsGroup("Libraries", QIcon(":/images/shortcuts_group_libraries.svg"), + tmpList = QList() + << createLibraryAction + << openLibraryAction + << exportComicsInfoAction + << importComicsInfoAction + << exportLibraryAction + << importLibraryAction + << updateLibraryAction + << renameLibraryAction + << removeLibraryAction + << rescanLibraryForXMLInfoAction); + + allActions << tmpList; + + editShortcutsDialog->addActionsGroup("Visualization", QIcon(":/images/shortcuts_group_visualization.svg"), + tmpList = QList() + << showHideMarksAction + << toogleShowRecentIndicatorAction +#ifndef Q_OS_MACOS + << toggleFullScreenAction // Think about what to do in macos if the default theme is used +#endif + << toggleComicsViewAction); + + allActions << tmpList; + + ShortcutsManager::getShortcutsManager().registerActions(allActions); +} + +void LibraryWindowActions::disableComicsActions(bool disabled) +{ + // if there aren't comics, no fullscreen option will be available +#ifndef Q_OS_MACOS + toggleFullScreenAction->setDisabled(disabled); +#endif + // edit toolbar + openComicAction->setDisabled(disabled); + editSelectedComicsAction->setDisabled(disabled); + selectAllComicsAction->setDisabled(disabled); + asignOrderAction->setDisabled(disabled); + setAsReadAction->setDisabled(disabled); + setAsNonReadAction->setDisabled(disabled); + setNormalAction->setDisabled(disabled); + setMangaAction->setDisabled(disabled); + setWebComicAction->setDisabled(disabled); + setWesternMangaAction->setDisabled(disabled); + setYonkomaAction->setDisabled(disabled); + // setAllAsReadAction->setDisabled(disabled); + // setAllAsNonReadAction->setDisabled(disabled); + showHideMarksAction->setDisabled(disabled); + deleteMetadataAction->setDisabled(disabled); + deleteComicsAction->setDisabled(disabled); + // context menu + openContainingFolderComicAction->setDisabled(disabled); + resetComicRatingAction->setDisabled(disabled); + + getInfoAction->setDisabled(disabled); + + updateCurrentFolderAction->setDisabled(disabled); +} +void LibraryWindowActions::disableLibrariesActions(bool disabled) +{ + updateLibraryAction->setDisabled(disabled); + renameLibraryAction->setDisabled(disabled); + removeLibraryAction->setDisabled(disabled); + exportComicsInfoAction->setDisabled(disabled); + importComicsInfoAction->setDisabled(disabled); + exportLibraryAction->setDisabled(disabled); + rescanLibraryForXMLInfoAction->setDisabled(disabled); + // importLibraryAction->setDisabled(disabled); +} + +void LibraryWindowActions::disableNoUpdatedLibrariesActions(bool disabled) +{ + updateLibraryAction->setDisabled(disabled); + exportComicsInfoAction->setDisabled(disabled); + importComicsInfoAction->setDisabled(disabled); + exportLibraryAction->setDisabled(disabled); + rescanLibraryForXMLInfoAction->setDisabled(disabled); +} + +void LibraryWindowActions::disableFoldersActions(bool disabled) +{ + setRootIndexAction->setDisabled(disabled); + expandAllNodesAction->setDisabled(disabled); + colapseAllNodesAction->setDisabled(disabled); + + openContainingFolderAction->setDisabled(disabled); + + updateFolderAction->setDisabled(disabled); + rescanXMLFromCurrentFolderAction->setDisabled(disabled); +} + +void LibraryWindowActions::disableAllActions() +{ + disableComicsActions(true); + disableLibrariesActions(true); + disableFoldersActions(true); +} diff --git a/YACReaderLibrary/library_window_actions.h b/YACReaderLibrary/library_window_actions.h new file mode 100644 index 00000000..17fa1baf --- /dev/null +++ b/YACReaderLibrary/library_window_actions.h @@ -0,0 +1,137 @@ +#ifndef LIBRARY_WINDOW_ACTIONS_H +#define LIBRARY_WINDOW_ACTIONS_H + +#include +#include + +#include "qaction.h" + +class LibraryWindow; +class YACReaderHistoryController; +class EditShortcutsDialog; +class HelpAboutDialog; +class ExportLibraryDialog; +class YACReaderContentViewsManager; +class YACReaderFoldersView; +class YACReaderOptionsDialog; +class ServerConfigDialog; + +class LibraryWindowActions +{ +public: + QAction *backAction; + QAction *forwardAction; + + QAction *openComicAction; + QAction *createLibraryAction; + QAction *openLibraryAction; + + QAction *exportComicsInfoAction; + QAction *importComicsInfoAction; + + QAction *exportLibraryAction; + QAction *importLibraryAction; + + QAction *rescanLibraryForXMLInfoAction; + + QAction *updateLibraryAction; + QAction *removeLibraryAction; + QAction *helpAboutAction; + QAction *renameLibraryAction; +#ifndef Q_OS_MACOS + QAction *toggleFullScreenAction; +#endif + QAction *optionsAction; + QAction *serverConfigAction; + QAction *toggleComicsViewAction; + // QAction * socialAction; + + // tree actions + QAction *addFolderAction; + QAction *deleteFolderAction; + //-- + QAction *setRootIndexAction; + QAction *expandAllNodesAction; + QAction *colapseAllNodesAction; + + QAction *openContainingFolderAction; + QAction *saveCoversToAction; + //-- + QAction *setFolderAsNotCompletedAction; + QAction *setFolderAsCompletedAction; + //-- + QAction *setFolderAsReadAction; + QAction *setFolderAsUnreadAction; + //-- + QAction *setFolderAsMangaAction; + QAction *setFolderAsNormalAction; + QAction *setFolderAsWesternMangaAction; + QAction *setFolderAsWebComicAction; + QAction *setFolderAsYonkomaAction; + + QAction *openContainingFolderComicAction; + QAction *setAsReadAction; + QAction *setAsNonReadAction; + + QAction *setMangaAction; + QAction *setNormalAction; + QAction *setWesternMangaAction; + QAction *setWebComicAction; + QAction *setYonkomaAction; + + QAction *showHideMarksAction; + QAction *getInfoAction; // comic vine + QAction *resetComicRatingAction; + + QAction *toogleShowRecentIndicatorAction; + + // edit info actions + QAction *selectAllComicsAction; + QAction *editSelectedComicsAction; + QAction *asignOrderAction; + QAction *forceCoverExtractedAction; + QAction *deleteComicsAction; + QAction *deleteMetadataAction; + + QAction *focusSearchLineAction; + QAction *focusComicsViewAction; + + QAction *showEditShortcutsAction; + + QAction *quitAction; + + QAction *updateFolderAction; + QAction *updateCurrentFolderAction; + QAction *rescanXMLFromCurrentFolderAction; + + // reading lists actions + QAction *addReadingListAction; + QAction *deleteReadingListAction; + QAction *addLabelAction; + QAction *renameListAction; + //-- + QAction *addToMenuAction; + QAction *addToFavoritesAction; + + LibraryWindowActions(); + void createActions(LibraryWindow *window, QSettings *settings); + void createConnections( + YACReaderHistoryController *historyController, + LibraryWindow *window, + HelpAboutDialog *had, + ExportLibraryDialog *exportLibraryDialog, + YACReaderContentViewsManager *contentViewsManager, + EditShortcutsDialog *editShortcutsDialog, + YACReaderFoldersView *foldersView, + YACReaderOptionsDialog *optionsDialog, + ServerConfigDialog *serverConfigDialog); + + void disableComicsActions(bool disabled); + void disableLibrariesActions(bool disabled); + void disableNoUpdatedLibrariesActions(bool disabled); + void disableFoldersActions(bool disabled); + void disableAllActions(); + void setUpShortcutsManagement(EditShortcutsDialog *editShortcutsDialog); +}; + +#endif // LIBRARY_WINDOW_ACTIONS_H diff --git a/YACReaderLibrary/trayicon_controller.cpp b/YACReaderLibrary/trayicon_controller.cpp index efb17490..de7902ee 100644 --- a/YACReaderLibrary/trayicon_controller.cpp +++ b/YACReaderLibrary/trayicon_controller.cpp @@ -55,7 +55,7 @@ TrayIconController::TrayIconController(QSettings *settings, LibraryWindow *windo trayIconMenu = new QMenu(this->window); trayIconMenu->addAction(restoreAction); trayIconMenu->addSeparator(); - trayIconMenu->addAction(this->window->quitAction); + trayIconMenu->addAction(this->window->actions.quitAction); trayIcon.setContextMenu(trayIconMenu); diff --git a/YACReaderLibrary/yacreader_content_views_manager.cpp b/YACReaderLibrary/yacreader_content_views_manager.cpp index ce1ab49d..036f4be3 100644 --- a/YACReaderLibrary/yacreader_content_views_manager.cpp +++ b/YACReaderLibrary/yacreader_content_views_manager.cpp @@ -1,7 +1,5 @@ #include "yacreader_content_views_manager.h" -#include "yacreader_global.h" - #include "library_window.h" #include "classic_comics_view.h" @@ -47,7 +45,7 @@ YACReaderContentViewsManager::YACReaderContentViewsManager(QSettings *settings, doComicsViewConnections(); comicsViewStack->addWidget(comicsViewTransition = new ComicsViewTransition()); - comicsViewStack->addWidget(folderContentView = new FolderContentView(parent->toogleShowRecentIndicatorAction)); + comicsViewStack->addWidget(folderContentView = new FolderContentView(parent->actions.toogleShowRecentIndicatorAction)); comicsViewStack->addWidget(emptyLabelWidget = new EmptyLabelWidget()); comicsViewStack->addWidget(emptySpecialList = new EmptySpecialListWidget()); comicsViewStack->addWidget(emptyReadingList = new EmptyReadingListWidget()); @@ -163,10 +161,10 @@ void YACReaderContentViewsManager::focusComicsViewViaShortcut() void YACReaderContentViewsManager::disconnectComicsViewConnections(ComicsView *widget) { disconnect(widget, &ComicsView::comicRated, libraryWindow->comicsModel, &ComicModel::updateRating); - disconnect(libraryWindow->showHideMarksAction, &QAction::toggled, widget, &ComicsView::setShowMarks); + disconnect(libraryWindow->actions.showHideMarksAction, &QAction::toggled, widget, &ComicsView::setShowMarks); disconnect(widget, &ComicsView::selected, libraryWindow, QOverload<>::of(&LibraryWindow::openComic)); disconnect(widget, &ComicsView::openComic, libraryWindow, QOverload::of(&LibraryWindow::openComic)); - disconnect(libraryWindow->selectAllComicsAction, &QAction::triggered, widget, &ComicsView::selectAll); + disconnect(libraryWindow->actions.selectAllComicsAction, &QAction::triggered, widget, &ComicsView::selectAll); disconnect(comicsView, &ComicsView::copyComicsToCurrentFolder, libraryWindow, &LibraryWindow::copyAndImportComicsToCurrentFolder); disconnect(comicsView, &ComicsView::moveComicsToCurrentFolder, libraryWindow, &LibraryWindow::moveAndImportComicsToCurrentFolder); disconnect(comicsView, &ComicsView::customContextMenuViewRequested, libraryWindow, &LibraryWindow::showComicsViewContextMenu); @@ -176,11 +174,11 @@ void YACReaderContentViewsManager::disconnectComicsViewConnections(ComicsView *w void YACReaderContentViewsManager::doComicsViewConnections() { connect(comicsView, &ComicsView::comicRated, libraryWindow->comicsModel, &ComicModel::updateRating); - connect(libraryWindow->showHideMarksAction, &QAction::toggled, comicsView, &ComicsView::setShowMarks); + connect(libraryWindow->actions.showHideMarksAction, &QAction::toggled, comicsView, &ComicsView::setShowMarks); connect(comicsView, &ComicsView::selected, libraryWindow, QOverload<>::of(&LibraryWindow::openComic)); connect(comicsView, &ComicsView::openComic, libraryWindow, QOverload::of(&LibraryWindow::openComic)); - connect(libraryWindow->selectAllComicsAction, &QAction::triggered, comicsView, &ComicsView::selectAll); + connect(libraryWindow->actions.selectAllComicsAction, &QAction::triggered, comicsView, &ComicsView::selectAll); connect(comicsView, &ComicsView::customContextMenuViewRequested, libraryWindow, &LibraryWindow::showComicsViewContextMenu); connect(comicsView, &ComicsView::customContextMenuItemRequested, libraryWindow, &LibraryWindow::showComicsItemContextMenu); @@ -224,7 +222,7 @@ void YACReaderContentViewsManager::_toggleComicsView() case Flow: { QIcon icoViewsButton; icoViewsButton.addFile(addExtensionToIconPath(":/images/main_toolbar/info"), QSize(), QIcon::Normal); - libraryWindow->toggleComicsViewAction->setIcon(icoViewsButton); + libraryWindow->actions.toggleComicsViewAction->setIcon(icoViewsButton); #ifdef Y_MAC_UI libraryWindow->libraryToolBar->updateViewSelectorIcon(icoViewsButton); #endif @@ -241,7 +239,7 @@ void YACReaderContentViewsManager::_toggleComicsView() case Grid: { QIcon icoViewsButton; icoViewsButton.addFile(addExtensionToIconPath(":/images/main_toolbar/flow"), QSize(), QIcon::Normal); - libraryWindow->toggleComicsViewAction->setIcon(icoViewsButton); + libraryWindow->actions.toggleComicsViewAction->setIcon(icoViewsButton); #ifdef Y_MAC_UI libraryWindow->libraryToolBar->updateViewSelectorIcon(icoViewsButton); #endif @@ -257,7 +255,7 @@ void YACReaderContentViewsManager::_toggleComicsView() case Info: { QIcon icoViewsButton; icoViewsButton.addFile(addExtensionToIconPath(":/images/main_toolbar/grid"), QSize(), QIcon::Normal); - libraryWindow->toggleComicsViewAction->setIcon(icoViewsButton); + libraryWindow->actions.toggleComicsViewAction->setIcon(icoViewsButton); #ifdef Y_MAC_UI libraryWindow->libraryToolBar->updateViewSelectorIcon(icoViewsButton); #endif