summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2012-08-29 17:05:42 +0200
committerArno <am@disconnect.de>2012-08-29 17:05:42 +0200
commite36afa2180ef93a1bbf0398b29be3d8c62ab90cc (patch)
treee113976315ac9793e03c3cfb60129b7110dbf687
parent61b5308d704af70fc133b37c21c730387c8a9cc3 (diff)
downloadSheMov-e36afa2180ef93a1bbf0398b29be3d8c62ab90cc.tar.gz
SheMov-e36afa2180ef93a1bbf0398b29be3d8c62ab90cc.tar.bz2
SheMov-e36afa2180ef93a1bbf0398b29be3d8c62ab90cc.zip
Play selected movies from archive
Well, it started out as a simple new QAction for the archive: Play selected movies, but ended up in cleaning up the context menu madness in shemov.cpp. Created a factory for context menu separators... Well, and we can now play selected movies from the FilesTreeWidget :)
-rw-r--r--filestreewidget.cpp59
-rw-r--r--filestreewidget.h2
-rw-r--r--shemov.cpp122
-rw-r--r--shemov.h2
4 files changed, 100 insertions, 85 deletions
diff --git a/filestreewidget.cpp b/filestreewidget.cpp
index 2d36fdc..d510312 100644
--- a/filestreewidget.cpp
+++ b/filestreewidget.cpp
@@ -283,7 +283,19 @@ void FilesTreeWidget::suggest(){
}
QString message = QString(tr("Selected %1 items: %2")).arg(QString::number(selectedFiles.count())).arg(selectedFiles.join(", "));
emit statusMessage(message);
- mView->scrollTo(last, QAbstractItemView::PositionAtCenter);
+ mView->scrollTo(last, QAbstractItemView::PositionAtCenter);
+}
+
+void FilesTreeWidget::playSelected(){
+ QStringList fullPaths;
+ QModelIndexList selected = mView->selectionModel()->selectedRows();
+ if(selected.isEmpty()){
+ return;
+ }
+ foreach(QModelIndex idx, selected){
+ fullPaths << idx.data(FilesTreeModel::FullPathRole).toString();
+ }
+ playItems(fullPaths);
}
void FilesTreeWidget::fileSelectionChanged(){
@@ -316,25 +328,36 @@ void FilesTreeWidget::itemDoubleClicked(const QModelIndex &index){
QString mimeType = Helper::mimeType(file);
if(mimeType.startsWith("image")){
mPictureViewer->setFile(file);
+ mPictureViewer->show();
return;
- }else{
- int dvdNo = index.data(FilesTreeModel::DvdNoRole).toInt();
- if(dvdNo != -1){
- QString msg = QString(tr("%1 is archived on DVD %2.")).arg(index.data(FilesTreeModel::FileNameRole).toString()).arg(QString::number(index.data(FilesTreeModel::DvdNoRole).toInt()));
- QMessageBox::critical(this, tr("Error"), msg);
- return;
- }
- QPair<QString, QStringList> data = Helper::programData("movieviewer", QString());
- if(data.first.isEmpty()){
- QMessageBox::critical(this, tr("Error"), tr("No viedeo viewer configured."));
- return;
- }
- QString program = data.first;
- QStringList args = data.second;
- args << file;
- QProcess::startDetached(program, args);
+ }else if(mimeType.startsWith("video")){
+ playItems(QStringList() << file);
}
- }
+ }else{
+ QString msg = QString(tr("File %1 not found!")).arg(file);
+ QMessageBox::critical(this, tr("Error"), msg);
+ }
+}
+
+void FilesTreeWidget::playItems(const QStringList &paths){
+ if(paths.isEmpty()){
+ return;
+ }
+ QStringList existing;
+ foreach(QString p, paths){
+ QFileInfo fi(p);
+ if(fi.exists()){
+ existing << p;
+ }
+ }
+ if(existing.isEmpty()){
+ return;
+ }
+ QPair<QString, QStringList> pData = Helper::programData("movieviewer", QString());
+ QString prog = pData.first;
+ QStringList args = pData.second;
+ args << existing;
+ QProcess::startDetached(prog, args);
}
FilesTreeView::FilesTreeView(QWidget *parent) : QTreeView(parent), mHoverPics(false){
diff --git a/filestreewidget.h b/filestreewidget.h
index 4a7e3f3..f6cd8e8 100644
--- a/filestreewidget.h
+++ b/filestreewidget.h
@@ -39,6 +39,7 @@ class FilesTreeWidget : public QWidget {
void fileProperties();
void edit(int column);
void suggest();
+ void playSelected();
private slots:
void fileSelectionChanged();
@@ -50,6 +51,7 @@ class FilesTreeWidget : public QWidget {
void statusMessage(QString);
private:
+ void playItems(const QStringList &paths);
FilesTreeView *mView;
FilesTreeModel *mModel;
FilesTreeSortModel *mProxy;
diff --git a/shemov.cpp b/shemov.cpp
index 162a6c8..6857b39 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -302,6 +302,12 @@ void SheMov::setSize(qint64 size){
mSelectedSize->setText(val);
}
+QAction *SheMov::createSeparator(){
+ QAction *tmp = new QAction(this);
+ tmp->setSeparator(true);
+ return tmp;
+}
+
void SheMov::createStatusbar(){
QLabel *selSizeL = new QLabel(tr("Sel. Size"));
mSelectedSize = new QLabel(tr("nothing selected yet"));
@@ -587,6 +593,8 @@ void SheMov::createActions(){
mSuggestFileA = new QAction(QIcon(":/analstretcher.png"), tr("Suggest file for burning"), this);
connect(mSuggestFileA, SIGNAL(triggered()), mATree->filesWidget(), SLOT(suggest()));
mShowTreeGroup->addAction(mSuggestFileA);
+ mPlaySelectedArchiveFilesA = new QAction(tr("Play selected...."), this);
+ connect(mPlaySelectedArchiveFilesA, SIGNAL(triggered()), mATree->filesWidget(), SLOT(playSelected()));
//picture widget
// delete + edit
@@ -716,9 +724,7 @@ void SheMov::createMenus(){
mEditAVMenu->addAction(a);
}
mEditAVMenuA = menuBar()->addMenu(mEditAVMenu);
- QAction *sep20 = new QAction(this);
- sep20->setSeparator(true);
- mEditAVMenu->addAction(sep20);
+ mEditAVMenu->addSeparator();
mEditAVMenu->addAction(mEditActorsA);
mEditAVMenu->addAction(mEditGenresA);
@@ -735,28 +741,24 @@ void SheMov::createMenus(){
mTreeViewMenu->addAction(mShowArchivedA);
mTreeViewMenu->addAction(mShowAllFilesA);
mTreeViewMenu->addAction(mSuggestFileA);
- QAction *sep14 = new QAction(this);
- sep14->setSeparator(true);
- mTreeViewMenu->addAction(sep14);
- mTreeHeaderMenu = new QMenu(tr("Show headers"), this);
+ mTreeViewMenu->addSeparator();
+
+ mTreeHeaderMenu = new QMenu(tr("Show headers"), this);
mTreeHeaderMenu->addActions(mFilesTreeHeadersGroup->actions());
mTreeViewMenu->addMenu(mTreeHeaderMenu);
- QAction *sep15 = new QAction(this);
- sep15->setSeparator(true);
- mTreeViewMenu->addAction(sep15);
+ mTreeViewMenu->addSeparator();
+
mTreeHoverMenu = new QMenu(tr("Hover over"), this);
mTreeHoverMenu->addActions(mHoverTreeGroup->actions());
mTreeViewMenu->addMenu(mTreeHoverMenu);
mViewAVMenuA = menuBar()->addMenu(mTreeViewMenu);
+ mTreeViewMenu->addSeparator();
+
mTreeFilterMenu = new QMenu(tr("Filter by"), this);
mTreeFilterMenu->addActions(mFilterGroup->actions());
- QAction *sep17 = new QAction(this);
- sep17->setSeparator(true);
- mTreeViewMenu->addAction(sep17);
mTreeViewMenu->addMenu(mTreeFilterMenu);
- QAction *sep18 = new QAction(this);
- sep18->setSeparator(true);
- mTreeViewMenu->addAction(sep18);
+ mTreeViewMenu->addSeparator();
+
mTreeViewMenu->addAction(mFilterFavoritesA);
//FileSystem view menu
@@ -790,36 +792,29 @@ void SheMov::createMenus(){
mOpenWithMenuFSA = new QAction(tr("Open with"), this);
mOpenWithMenuFSA->setMenu(mOpenWithMenuFS);
mFSWidget->fileView()->addAction(mOpenWithMenuFSA);
- QAction *sep1 = new QAction(this);
- sep1->setSeparator(true);
- mFSWidget->fileView()->addAction(sep1);
+ mFSWidget->fileView()->addAction(createSeparator());
+
mFSWidget->fileView()->addAction(mCdupA);
mFSWidget->fileView()->addAction(mBackDirA);
- QAction *sep2 = new QAction(this);
- sep2->setSeparator(true);
- mFSWidget->fileView()->addAction(sep2);
- mFSWidget->fileView()->addAction(mMarkFilesA);
- mFSWidget->fileView()->addAction(mUnmarkFilesA);
- QAction *sep3 = new QAction(this);
- sep3->setSeparator(true);
- mFSWidget->fileView()->addAction(sep3);
+ mFSWidget->fileView()->addAction(createSeparator());
+
+ mFSWidget->fileView()->addAction(mMarkFilesA); //Menu text: Select files...
+ mFSWidget->fileView()->addAction(mUnmarkFilesA); //Menu text: Deselect all files
+ mFSWidget->fileView()->addAction(createSeparator());
+
mFSWidget->fileView()->addAction(mCreateFolderA);
mFSWidget->fileView()->addAction(mDeleteFilesA);
mFSWidget->fileView()->addAction(mRenameA);
- //mFSWidget->fileView()->addAction(mRenameMenuA);
- QAction *sep16 = new QAction(this);
- sep16->setSeparator(true);
- mFSWidget->fileView()->addAction(sep16);
+ mFSWidget->fileView()->addAction(createSeparator());
+
mFSWidget->fileView()->addAction(mCopyA);
mFSWidget->fileView()->addAction(mCutA);
mFSWidget->fileView()->addAction(mPasteA);
- QAction *sep10 = new QAction(this);
- sep10->setSeparator(true);
- mFSWidget->fileView()->addAction(sep10);
+ mFSWidget->fileView()->addAction(createSeparator());
+
mFSWidget->fileView()->addAction(mMarkA);
- QAction *sep11 = new QAction(this);
- sep11->setSeparator(true);
- mFSWidget->fileView()->addAction(sep11);
+ mFSWidget->fileView()->addAction(createSeparator());
+
mFSWidget->fileView()->addAction(mNewPicsA);
mFSWidget->fileView()->addAction(mArchiveSelectedA);
@@ -827,63 +822,56 @@ void SheMov::createMenus(){
mATree->seriesWidget()->seriesTree()->addAction(mNewSeriesA);
mATree->seriesWidget()->seriesTree()->addAction(mDeleteFromSeriesA);
mATree->seriesWidget()->seriesTree()->addAction(mEditItemA);
- QAction *sep4 = new QAction(this);
- sep4->setSeparator(true);
- mATree->seriesWidget()->seriesTree()->addAction(sep4);
+ mATree->seriesWidget()->seriesTree()->addAction(createSeparator());
+
mOpenWithMenuAV = new QMenu(tr("Open with"), this);
mATree->seriesWidget()->seriesTree()->addAction(mPlaySelectedAVA);
createOpenWithMenuAV();
mOpenWithMenuAVA = new QAction(tr("Open with"), this);
mOpenWithMenuAVA->setMenu(mOpenWithMenuAV);
mATree->seriesWidget()->seriesTree()->addAction(mOpenWithMenuAVA);
- QAction *sep5 = new QAction(this);
- sep5->setSeparator(true);
- mATree->seriesWidget()->seriesTree()->addAction(sep5);
+ mATree->seriesWidget()->seriesTree()->addAction(createSeparator());
+
mATree->seriesWidget()->seriesTree()->addAction(mExpandCurrentA);
mATree->seriesWidget()->seriesTree()->addAction(mExpandAllSeriesA);
mATree->seriesWidget()->seriesTree()->addAction(mCollapseAllSeriesA);
- QAction *sep6 = new QAction(this);
- sep6->setSeparator(true);
- mATree->seriesWidget()->seriesTree()->addAction(sep6);
+ mATree->seriesWidget()->seriesTree()->addAction(createSeparator());
+
mATree->seriesWidget()->seriesTree()->addAction(mAddCoverA);
- QAction *sep19 = new QAction(this);
- sep19->setSeparator(true);
- mATree->seriesWidget()->seriesTree()->addAction(sep19);
+ mATree->seriesWidget()->seriesTree()->addAction(createSeparator());
+
mATree->seriesWidget()->seriesTree()->addAction(mToggleFavoriteA);
//ArchiveTreeView fileWidget context menu
+ mATree->filesWidget()->filesTree()->addAction(mPlaySelectedArchiveFilesA);
+ mATree->filesWidget()->filesTree()->addAction(createSeparator());
+
mATree->filesWidget()->filesTree()->addAction(mMoveToBurnA);
mATree->filesWidget()->filesTree()->addAction(mMoveFilesA);
- QAction *sep7 = new QAction(this);
- sep7->setSeparator(true);
- mATree->filesWidget()->filesTree()->addAction(sep7);
+ mATree->filesWidget()->filesTree()->addAction(createSeparator());
+
mATree->filesWidget()->filesTree()->addActions(mEditGroup->actions());
- QAction *sep21 = new QAction(this);
- sep21->setSeparator(true);
- mATree->filesWidget()->filesTree()->addAction(sep20);
+ mATree->filesWidget()->filesTree()->addAction(createSeparator());
+
mATree->filesWidget()->filesTree()->addAction(mShowAllFilesA);
mATree->filesWidget()->filesTree()->addAction(mSuggestFileA);
- QAction *sep8 = new QAction(this);
- sep8->setSeparator(true);
- mATree->filesWidget()->filesTree()->addAction(sep8);
+ mATree->filesWidget()->filesTree()->addAction(createSeparator());
+
mATree->filesWidget()->filesTree()->addAction(mDeleteFilesFromTreeA);
- QAction *sep9 = new QAction(this);
- sep9->setSeparator(true);
- mATree->filesWidget()->filesTree()->addAction(sep9);
+ mATree->filesWidget()->filesTree()->addAction(createSeparator());
+
QMenu *copyMenu = new QMenu(this);
copyMenu->addAction(mCopyUnixFullPathA);
copyMenu->addAction(mCopyUnixDirA);
- QAction *sep13 = new QAction(this);
- sep13->setSeparator(true);
- copyMenu->addAction(sep13);
+ copyMenu->addSeparator();
copyMenu->addAction(mCopyWindowsFullPathA);
copyMenu->addAction(mCopyWindowsDirA);
+
QAction *copyAction = new QAction(tr("Copy to clipboard"), this);
copyAction->setMenu(copyMenu);
mATree->filesWidget()->filesTree()->addAction(copyAction);
- QAction *sep12 = new QAction(this);
- sep12->setSeparator(true);
- mATree->filesWidget()->filesTree()->addAction(sep12);
+ mATree->filesWidget()->filesTree()->addAction(createSeparator());
+
mATree->filesWidget()->filesTree()->addAction(mFilePropertiesA);
}
diff --git a/shemov.h b/shemov.h
index c34487f..186a79f 100644
--- a/shemov.h
+++ b/shemov.h
@@ -61,6 +61,7 @@ class SheMov : public QMainWindow {
void configChanged();
private:
+ QAction *createSeparator();
void createStatusbar();
void createActions();
void createMenus();
@@ -155,6 +156,7 @@ class SheMov : public QMainWindow {
QAction *mCopyWindowsFullPathA;
QAction *mCopyWindowsDirA;
QAction *mSuggestFileA;
+ QAction *mPlaySelectedArchiveFilesA;
//Filesystem View Actions
QActionGroup *mFSHoverGroup;