From: APTX Date: Mon, 11 Jun 2012 12:39:16 +0000 (+0200) Subject: Add Open AniDB Page context menu option. X-Git-Url: https://gitweb.tyo.aptx.org/?a=commitdiff_plain;h=15a87b98bd66eb8286cc4e0f6e90000ad13f5051;p=localmylist.git Add Open AniDB Page context menu option. --- diff --git a/management-gui/mylistview.cpp b/management-gui/mylistview.cpp index ae3860e..368cb9f 100644 --- a/management-gui/mylistview.cpp +++ b/management-gui/mylistview.cpp @@ -4,6 +4,8 @@ #include "mylistmodel.h" #include +#include +#include MyListView::MyListView(QWidget *parent) : QTreeView(parent) @@ -13,10 +15,12 @@ MyListView::MyListView(QWidget *parent) : openAction = new QAction(tr("Open"), this); connect(openAction, SIGNAL(triggered()), this, SLOT(requestOpenFile())); - openNextAction = new QAction(tr("Open next"), this); + openNextAction = new QAction(tr("Open Next"), this); connect(openNextAction, SIGNAL(triggered()), this, SLOT(requestOpenFile())); markWatchedAction = new QAction(tr("Marked Watched"), this); connect(markWatchedAction, SIGNAL(triggered()), this, SLOT(markWatched())); + aniDBLinkAction = new QAction(tr("Open AniDB Page"), this); + connect(aniDBLinkAction, SIGNAL(triggered()), this, SLOT(openAnidbPage())); } LocalMyList::MyListModel *MyListView::myListModel() const @@ -33,19 +37,29 @@ void MyListView::showCustomContextMenu(const QPoint &pos) return; MyListModel::NodeType type = myListModel()->type(idx); - - //QAction a(tr("Dummyaction r=%1, c=%2").arg(idx.row()).arg(idx.column()), this); - - //QAction b(tr("%1 = %2").arg(type == MyListModel::Anime ? "aid" : type == MyListModel::Episode ? "eid" : type == MyListModel::File ? "fid" : "none").arg(myListModel()->id(idx)), this); + int id = myListModel()->id(idx); QList actions; - if (type == MyListModel::Anime) - actions << openNextAction; - else - actions << openAction; - if (type == MyListModel::File) - actions << markWatchedAction; + switch (type) + { + case MyListModel::Anime: + aniDBLinkAction->setText(tr("Open AniDB Page (%1%2)").arg('a').arg(id)); + actions << aniDBLinkAction + << openNextAction; + break; + case MyListModel::Episode: + aniDBLinkAction->setText(tr("Open AniDB Page (%1%2)").arg('e').arg(id)); + actions << aniDBLinkAction + << openAction; + break; + case MyListModel::File: + aniDBLinkAction->setText(tr("Open AniDB Page (%1%2)").arg('f').arg(id)); + actions << aniDBLinkAction + << openAction + << markWatchedAction; + break; + } if(actions.isEmpty()) return; @@ -66,3 +80,25 @@ void MyListView::markWatched() LocalMyList::instance()->markWatched(id); } + +void MyListView::openAnidbPage() +{ + using namespace LocalMyList; + + QString aniDBUrlBase = "http://anidb.net/%1%2"; + int id = myListModel()->id(customContextMenuIndex); + MyListModel::NodeType type = myListModel()->type(customContextMenuIndex); + + switch (type) + { + case MyListModel::Anime: + QDesktopServices::openUrl(QUrl(aniDBUrlBase.arg('a').arg(id))); + break; + case MyListModel::Episode: + QDesktopServices::openUrl(QUrl(aniDBUrlBase.arg('e').arg(id))); + break; + case MyListModel::File: + QDesktopServices::openUrl(QUrl(aniDBUrlBase.arg('f').arg(id))); + break; + } +} diff --git a/management-gui/mylistview.h b/management-gui/mylistview.h index b4371b9..8f30ad0 100644 --- a/management-gui/mylistview.h +++ b/management-gui/mylistview.h @@ -22,6 +22,7 @@ private slots: void showCustomContextMenu(const QPoint &pos); void requestOpenFile(); void markWatched(); + void openAnidbPage(); private: QModelIndex customContextMenuIndex; @@ -29,6 +30,7 @@ private: QAction *openAction; QAction *openNextAction; QAction *markWatchedAction; + QAction *aniDBLinkAction; }; #endif // MYLISTVIEW_H