diff options
-rw-r--r-- | moviewidget.cpp | 22 | ||||
-rw-r--r-- | moviewidget.h | 3 |
2 files changed, 22 insertions, 3 deletions
diff --git a/moviewidget.cpp b/moviewidget.cpp index b689809..c07da0f 100644 --- a/moviewidget.cpp +++ b/moviewidget.cpp @@ -13,6 +13,7 @@ #include <QSettings> #include <QFileInfo> #include <QProcess> +#include <QClipboard> #include <QApplication> #include "moviewidget.h" @@ -93,10 +94,16 @@ void MovieWidget::setupWidget(){ mBottomProxy->setSourceModel(mBottomModel); mBottomView->setModel(mBottomProxy); connect(mBottomView, &SmView::doubleClicked, this, &MovieWidget::bottomDoubleClicked); - QAction *playSelectedA = new QAction(QIcon(":/spreadingpants.png"), tr("Play selected"), this); + QAction *playSelectedA = new QAction(QIcon(":/spreadingpants.png"), tr("Play selected..."), this); connect(playSelectedA, &QAction::triggered, this, &MovieWidget::playSelected); + QAction *filenameToClipA = new QAction(tr("Filename to clip"), this); + connect(filenameToClipA, &QAction::triggered, [=] { copyToClipboard(FilenameRole); }); + QAction *fullpathToClipA = new QAction(tr("Full path to clip"), this); + connect(fullpathToClipA, &QAction::triggered, [=] { copyToClipboard(FullPathRole); }); + QAction *md5ToClipA = new QAction(tr("MD5 to clip"), this); + connect(md5ToClipA, &QAction::triggered, [=] { copyToClipboard(MD5SumRole); }); - mBottomView->addActions(QList<QAction*>() << playSelectedA); + mBottomView->addActions(QList<QAction*>() << playSelectedA << Helper::createSeparator(this) << filenameToClipA << fullpathToClipA << md5ToClipA); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addLayout(topWL); @@ -353,6 +360,8 @@ void MovieWidget::topSelectionChanged(){ item->setForeground(currentBrush); item->setEditable(false); item->setData(fullPath, FullPathRole); + item->setData(md5, MD5SumRole); + item->setData(fileName, FilenameRole); items << item; } items[0]->setText(selectFilesQ.value(0).toString()); @@ -409,3 +418,12 @@ void MovieWidget::playSelected(){ args << files; QProcess::startDetached(playerData.first, args); } + +void MovieWidget::copyToClipboard(int role){ + QModelIndexList selected = mBottomView->selectionModel()->selectedRows(); + if(selected.isEmpty()){ + return; + } + QClipboard *clip = qApp->clipboard(); + clip->setText(selected.first().data(role).toString()); +} diff --git a/moviewidget.h b/moviewidget.h index 956830d..6201861 100644 --- a/moviewidget.h +++ b/moviewidget.h @@ -13,7 +13,7 @@ class SmView; class MovieWidget : public QWidget { Q_OBJECT public: - enum CustomRoles { SeriesPartIdRole = Qt::UserRole + 1, CountRole = Qt::UserRole + 2, MD5SumRole = Qt::UserRole + 3, SeriesNameRole = Qt::UserRole + 4, SubtitleRole = Qt::UserRole + 5, SeriesPartRole = Qt::UserRole + 6, FullPathRole = Qt::UserRole + 7 }; + enum CustomRoles { SeriesPartIdRole = Qt::UserRole + 1, CountRole = Qt::UserRole + 2, MD5SumRole = Qt::UserRole + 3, SeriesNameRole = Qt::UserRole + 4, SubtitleRole = Qt::UserRole + 5, SeriesPartRole = Qt::UserRole + 6, FullPathRole = Qt::UserRole + 7, FilenameRole = Qt::UserRole + 8 }; explicit MovieWidget(QWidget *parent = nullptr); ~MovieWidget(); @@ -29,6 +29,7 @@ class MovieWidget : public QWidget { void topSelectionChanged(); void bottomDoubleClicked(const QModelIndex &idx); void playSelected(); + void copyToClipboard(int role); private: void setupWidget(); |