added full functional context menu to GridComcisView (ugly solution for the QAction/QML issue)

This commit is contained in:
Luis Ángel San Martín 2014-07-07 23:30:07 +02:00
parent 673deee27c
commit b860d8776a
4 changed files with 58 additions and 20 deletions

View File

@ -138,6 +138,34 @@ void GridComicsView::setViewActions(const QList<QAction *> &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()

View File

@ -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<QAction *> itemActions;
itemActions << openContainingFolderComicAction
<< YACReader::createSeparator()
<< resetComicRatingAction
<< YACReader::createSeparator()
<< editSelectedComicsAction
<< getInfoAction
<< asignOrderActions
<< asignOrderAction
<< YACReader::createSeparator()
<< setAsReadAction
<< setAsNonReadAction
<< YACReader::createSeparator()
<< deleteComicsAction;
QList<QAction *> 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);

View File

@ -162,11 +162,14 @@ private:
//edit info actions
QAction * selectAllComicsAction;
QAction * editSelectedComicsAction;
QAction * asignOrderActions;
QAction * asignOrderAction;
QAction * forceConverExtractedAction;
QAction * deleteComicsAction;
QAction * hideComicViewAction;
QList<QAction *> itemActions;
QList<QAction *> viewActions;
#ifdef Q_OS_MAC
QToolBar * libraryToolBar;
#else

View File

@ -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';
}