diff --git a/YACReaderLibrary/grid_comics_view.cpp b/YACReaderLibrary/grid_comics_view.cpp index d8f5d0d8..8267e909 100644 --- a/YACReaderLibrary/grid_comics_view.cpp +++ b/YACReaderLibrary/grid_comics_view.cpp @@ -138,6 +138,34 @@ void GridComicsView::setViewActions(const QList &actions) //TODO generate QML Menu from actions QLOG_INFO() << "setViewActions"; this->addActions(actions); + + //TODO this is completely unsafe, but QActions can't be used directly in QML + if(actions.length()>17) + { + QQmlContext *ctxt = view->rootContext(); + + ctxt->setContextProperty("openComicAction",actions[0]); + + ctxt->setContextProperty("openContainingFolderComicAction",actions[2]); + + ctxt->setContextProperty("resetComicRatingAction",actions[4]); + + ctxt->setContextProperty("editSelectedComicsAction",actions[6]); + ctxt->setContextProperty("getInfoAction",actions[7]); + ctxt->setContextProperty("asignOrderAction",actions[8]); + + ctxt->setContextProperty("selectAllComicsAction",actions[10]); + + ctxt->setContextProperty("setAsReadAction",actions[12]); + ctxt->setContextProperty("setAsNonReadAction",actions[13]); + ctxt->setContextProperty("showHideMarksAction",actions[14]); + + ctxt->setContextProperty("deleteComicsAction",actions[16]); + + ctxt->setContextProperty("toggleFullScreenAction",actions[18]); + } + else + QLOG_ERROR() << "setViewActions invoked with the wrong number of actions"; } QSize GridComicsView::sizeHint() diff --git a/YACReaderLibrary/library_window.cpp b/YACReaderLibrary/library_window.cpp index 81fc2af4..84769b13 100644 --- a/YACReaderLibrary/library_window.cpp +++ b/YACReaderLibrary/library_window.cpp @@ -496,9 +496,9 @@ void LibraryWindow::createActions() editSelectedComicsAction->setText(tr("Edit")); editSelectedComicsAction->setIcon(QIcon(":/images/editComic.png")); - asignOrderActions = new QAction(this); - asignOrderActions->setText(tr("Asign current order to comics")); - asignOrderActions->setIcon(QIcon(":/images/asignNumber.png")); + asignOrderAction = new QAction(this); + asignOrderAction->setText(tr("Asign current order to comics")); + asignOrderAction->setIcon(QIcon(":/images/asignNumber.png")); forceConverExtractedAction = new QAction(this); forceConverExtractedAction->setText(tr("Update cover")); @@ -530,7 +530,7 @@ void LibraryWindow::disableComicsActions(bool disabled) openComicAction->setDisabled(disabled); editSelectedComicsAction->setDisabled(disabled); selectAllComicsAction->setDisabled(disabled); - asignOrderActions->setDisabled(disabled); + asignOrderAction->setDisabled(disabled); setAsReadAction->setDisabled(disabled); setAsNonReadAction->setDisabled(disabled); //setAllAsReadAction->setDisabled(disabled); @@ -635,7 +635,7 @@ void LibraryWindow::createToolBars() editInfoToolBar->addSeparator(); editInfoToolBar->addAction(editSelectedComicsAction); editInfoToolBar->addAction(getInfoAction); - editInfoToolBar->addAction(asignOrderActions); + editInfoToolBar->addAction(asignOrderAction); editInfoToolBar->addSeparator(); @@ -661,21 +661,19 @@ void LibraryWindow::createToolBars() void LibraryWindow::createMenus() { - QList itemActions; itemActions << openContainingFolderComicAction << YACReader::createSeparator() << resetComicRatingAction << YACReader::createSeparator() << editSelectedComicsAction << getInfoAction - << asignOrderActions + << asignOrderAction << YACReader::createSeparator() << setAsReadAction << setAsNonReadAction << YACReader::createSeparator() << deleteComicsAction; - QList viewActions; viewActions << openComicAction << YACReader::createSeparator() << openContainingFolderComicAction @@ -684,7 +682,7 @@ void LibraryWindow::createMenus() << YACReader::createSeparator() << editSelectedComicsAction << getInfoAction - << asignOrderActions + << asignOrderAction << YACReader::createSeparator() << selectAllComicsAction << YACReader::createSeparator() @@ -878,7 +876,7 @@ void LibraryWindow::createConnections() //connect(dm,SIGNAL(directoryLoaded(QString)),this,SLOT(updateFoldersView(QString))); //Comicts edition connect(editSelectedComicsAction,SIGNAL(triggered()),this,SLOT(showProperties())); - connect(asignOrderActions,SIGNAL(triggered()),this,SLOT(asignNumbers())); + connect(asignOrderAction,SIGNAL(triggered()),this,SLOT(asignNumbers())); connect(deleteComicsAction,SIGNAL(triggered()),this,SLOT(deleteComics())); @@ -1516,6 +1514,8 @@ void LibraryWindow::switchToComicsView(ComicsView * from, ComicsView * to) comicsView = to; doComicsViewConnections(); + to->setItemActions(itemActions); + to->setViewActions(viewActions); comicsView->setToolBar(editInfoToolBar); diff --git a/YACReaderLibrary/library_window.h b/YACReaderLibrary/library_window.h index 9e10d130..6228fc62 100644 --- a/YACReaderLibrary/library_window.h +++ b/YACReaderLibrary/library_window.h @@ -162,11 +162,14 @@ private: //edit info actions QAction * selectAllComicsAction; QAction * editSelectedComicsAction; - QAction * asignOrderActions; + QAction * asignOrderAction; QAction * forceConverExtractedAction; QAction * deleteComicsAction; QAction * hideComicViewAction; + QList itemActions; + QList viewActions; + #ifdef Q_OS_MAC QToolBar * libraryToolBar; #else diff --git a/YACReaderLibrary/qml/GridComicsView.qml b/YACReaderLibrary/qml/GridComicsView.qml index c3e4e515..36ee0cfb 100644 --- a/YACReaderLibrary/qml/GridComicsView.qml +++ b/YACReaderLibrary/qml/GridComicsView.qml @@ -81,21 +81,28 @@ Rectangle { } } - + //Menu emits the 'main' signals Menu { id: myContextMenu - MenuItem { text: "Open containing folder..."; onTriggered: display.setRandomName() } + MenuItem { text: "Open comic"; enabled: true; iconSource:"qrc:///images/openInYACReader.png"; onTriggered: openComicAction.trigger() } MenuSeparator{} - MenuItem { text: "Reset comic rating"; onTriggered: model1.removeRows(index, 1) } + MenuItem { text: "Open containing folder..."; enabled: true; iconSource: "qrc:///images/open.png"; onTriggered: openContainingFolderComicAction.trigger() } MenuSeparator{} - MenuItem { text: "Edit"; onTriggered: model1.removeRows(index, 1) } - MenuItem { text: "Download tags from Comic Vine"; onTriggered: model1.removeRows(index, 1) } - MenuItem { text: "Asign current order to comics"; onTriggered: model1.removeRows(index, 1) } + MenuItem { text: "Reset comic rating"; onTriggered: resetComicRatingAction.trigger() } MenuSeparator{} - MenuItem { text: "Set as read"; onTriggered: model1.removeRows(index, 1) } - MenuItem { text: "Set as unread"; onTriggered: model1.removeRows(index, 1) } + MenuItem { text: "Edit"; enabled: true; iconSource:"qrc:///images/editComic.png"; onTriggered: editSelectedComicsAction.trigger() } + MenuItem { text: "Download tags from Comic Vine"; enabled: true; iconSource:"qrc:///images/getInfo.png"; onTriggered: getInfoAction.trigger() } + MenuItem { text: "Asign current order to comics"; enabled: true; iconSource:"qrc:///images/asignNumber.png"; onTriggered: asignOrderAction.trigger() } MenuSeparator{} - MenuItem { text: "Delete selected comics"; onTriggered: model1.removeRows(index, 1) } + MenuItem { text: "Select all comics"; enabled: true; iconSource:"qrc:///images/selectAll.png"; onTriggered: selectAllComicsAction.trigger() } + MenuSeparator{} + MenuItem { text: "Set as read"; enabled: true; iconSource:"qrc:///images/setReadButton.png"; onTriggered: setAsReadAction.trigger() } + MenuItem { text: "Set as unread"; enabled: true; iconSource:"qrc:///images/setUnread.png"; onTriggered: setAsNonReadAction.trigger() } + MenuItem { text: "Show or hide read marks"; enabled: true; iconSource:"qrc:///images/showMarks.png"; onTriggered: showHideMarksAction.trigger() } + MenuSeparator{} + MenuItem { text: "Delete selected comics"; enabled: true; iconSource:"qrc:///images/trash.png"; onTriggered: deleteComicsAction.trigger() } + MenuSeparator{} + MenuItem { text: "Fullscreen mode on/off"; onTriggered: toggleFullScreenAction.trigger() } //MenuItem { text: "Show details"; onTriggered: cell.state = 'Details'; }