summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoram <am@f440f766-f032-0410-8965-dc7d17de2ca0>2009-10-24 15:25:10 +0000
committeram <am@f440f766-f032-0410-8965-dc7d17de2ca0>2009-10-24 15:25:10 +0000
commitc9497f0e16ad13493f59b835016d46d919378f6d (patch)
treeb89c9108a756ec9571b361dc929370b3aa5d90aa
parent3eab0ef961ff64e11ebfac655a4606e1b84b1083 (diff)
downloadSheMov-c9497f0e16ad13493f59b835016d46d919378f6d.tar.gz
SheMov-c9497f0e16ad13493f59b835016d46d919378f6d.tar.bz2
SheMov-c9497f0e16ad13493f59b835016d46d919378f6d.zip
-implemented play selected files
git-svn-id: file:///var/svn/repos2/shemov/trunk@420 f440f766-f032-0410-8965-dc7d17de2ca0
-rw-r--r--filesystemwidget.cpp27
-rw-r--r--filesystemwidget.h2
-rw-r--r--shemov.cpp5
-rw-r--r--shemov.h1
4 files changed, 35 insertions, 0 deletions
diff --git a/filesystemwidget.cpp b/filesystemwidget.cpp
index a944c13..e18528c 100644
--- a/filesystemwidget.cpp
+++ b/filesystemwidget.cpp
@@ -396,6 +396,19 @@ void FilesystemWidget::refreshDir(const QString &dir){
mModel->refresh(idx);
}
+void FilesystemWidget::playSelected(){
+ QStringList files = selectedFiles();
+ if(files.isEmpty()){
+ statusbarMessage(tr("Nothing selected."));
+ return;
+ }
+ QSettings s;
+ QString program = s.value("paths/movieviewer").toString();
+ QStringList programArgs = s.value("paths/movieviewerargs").toStringList();
+ programArgs << files;
+ QProcess::startDetached(program, programArgs);
+}
+
void FilesystemWidget::setWindowTitle(const QString &dir){
mWindowTitle = QString("%1 - %2").arg(qApp->applicationName()).arg(dir);
emit windowTitle(mWindowTitle);
@@ -466,6 +479,20 @@ void FilesystemWidget::expandParents(const QModelIndex &idx){
}
}
+QStringList FilesystemWidget::selectedFiles(){
+ QStringList retval;
+ QModelIndexList selected = fileView()->selectionModel()->selectedRows();
+ if(selected.isEmpty()){
+ return QStringList();
+ }
+ QSortFilterProxyModel *proxy = static_cast<QSortFilterProxyModel*>(fileView()->model());
+ foreach(QModelIndex idx, selected){
+ QModelIndex src = proxy->mapToSource(idx);
+ retval << mModel->filePath(src);
+ }
+ return retval;
+}
+
QAction * FilesystemWidget::action(QWidget *widget, const QVariant &data) const{
QAction *retval = 0;
foreach(QAction *a, widget->actions()){
diff --git a/filesystemwidget.h b/filesystemwidget.h
index c41f878..0191065 100644
--- a/filesystemwidget.h
+++ b/filesystemwidget.h
@@ -53,6 +53,7 @@ class FilesystemWidget : public QWidget {
void extract(const QString &destDir);
void archiveFiles();
void refreshDir(const QString &dir);
+ void playSelected();
private slots:
void doRenameFile();
@@ -62,6 +63,7 @@ class FilesystemWidget : public QWidget {
void deleteRecursive(const QFileInfo &start);
void copyRecursive(const QFileInfo &start, const QString &destdir);
void expandParents(const QModelIndex &idx);
+ QStringList selectedFiles();
QAction *action(QWidget *widget, const QVariant &data) const;
QDirModel *mModel;
QTreeView *mDirView;
diff --git a/shemov.cpp b/shemov.cpp
index 5b86fef..e45cbb7 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -251,6 +251,9 @@ void SheMov::createStatusbar(){
void SheMov::createActions(){
//File menu
+ mPlaySelectedA = new QAction(tr("Play selected movies..."), this);
+ connect(mPlaySelectedA, SIGNAL(triggered()), mFSWidget, SLOT(playSelected()));
+ mFSWidget->fileView()->addAction(mPlaySelectedA);
mQuitA = new QAction(tr("Quit"), this);
mQuitA->setShortcut(tr("CTRL+q"));
@@ -370,6 +373,8 @@ void SheMov::createActions(){
void SheMov::createMenus(){
QMenu *fileMenu = new QMenu(tr("&File"), this);
+ fileMenu->addAction(mPlaySelectedA);
+ fileMenu->addSeparator();
fileMenu->addAction(mQuitA);
mEditFSMenu = new QMenu(tr("&Edit"), this);
mEditFSMenu->addAction(mCdupA);
diff --git a/shemov.h b/shemov.h
index 890e18b..78cd664 100644
--- a/shemov.h
+++ b/shemov.h
@@ -82,6 +82,7 @@ class SheMov : public QMainWindow {
QAction *mAboutShemovA;
QAction *mAboutQtA;
QAction *mStatisticsA;
+ QAction *mPlaySelectedA;
QList<QAction*> mExtractToA;
//EndActions