summaryrefslogtreecommitdiffstats
path: root/shemov.cpp
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2010-05-11 21:29:29 +0200
committerArno <am@disconnect.de>2010-05-11 21:29:29 +0200
commitd2d6656531e5ec5c088a30ecb93318956e8fb096 (patch)
tree9216e3afc93e8081d8f4195f947b9c4e96a4b7cb /shemov.cpp
parent73a1c0d8c76c5f6bd0213ad9c1bb759b1c86c2f8 (diff)
downloadSheMov-d2d6656531e5ec5c088a30ecb93318956e8fb096.tar.gz
SheMov-d2d6656531e5ec5c088a30ecb93318956e8fb096.tar.bz2
SheMov-d2d6656531e5ec5c088a30ecb93318956e8fb096.zip
Revamp actions for FilesystemWidget
Make actions for FilesystemWidget more Qt-like. Wrapped Rename menu into an Action and got rid of the ugly findAction(). Use signal instead. Also added actions for OpenWith.
Diffstat (limited to 'shemov.cpp')
-rw-r--r--shemov.cpp97
1 files changed, 73 insertions, 24 deletions
diff --git a/shemov.cpp b/shemov.cpp
index 53ae8de..4a6c94e 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -25,6 +25,7 @@
#include <QFontMetrics>
#include <QLocale>
#include <QCloseEvent>
+#include <QActionGroup>
#include <sys/vfs.h>
#include "shemov.h"
@@ -87,8 +88,6 @@ SheMov::SheMov(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, fla
createMenus();
setFsFree();
- mFSWidget->fileView()->findActions();
-
connect(mFSWidget->fileView()->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)), this, SLOT(updateSelectionCount(const QItemSelection &, const QItemSelection &)));
connect(mAVWidget->fileView()->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)), this, SLOT(updateSelectionCount(const QItemSelection &, const QItemSelection &)));
connect(mFSWidget, SIGNAL(windowTitle(const QString &)), this, SLOT(newWindowTitle(const QString &)));
@@ -260,82 +259,66 @@ 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"));
//Edit menu (FS)
mCdupA = new QAction(tr("Go up"), this);
connect(mCdupA, SIGNAL(triggered()), mFSWidget, SLOT(parentDir()));
- mFSWidget->fileView()->addAction(mCdupA);
connect(mQuitA, SIGNAL(triggered()), qApp, SLOT(quit()));
mMarkFilesA = new QAction(tr("Select files..."), this);
mMarkFilesA->setShortcut(tr("CTRL++"));
- mFSWidget->fileView()->addAction(mMarkFilesA);
connect(mMarkFilesA, SIGNAL(triggered()), mFSWidget->fileView(), SLOT(markFiles()));
mUnmarkFilesA = new QAction(tr("Deselect all files"), this);
mUnmarkFilesA->setShortcut(tr("CTRL+-"));
- mFSWidget->fileView()->addAction(mUnmarkFilesA);
connect(mUnmarkFilesA, SIGNAL(triggered()), mFSWidget->fileView(), SLOT(unmarkFiles()));
mCreateFolderA = new QAction(tr("Create folder..."), this);
mCreateFolderA->setShortcut(tr("CTRL+n"));
connect(mCreateFolderA, SIGNAL(triggered()), mFSWidget->fileView(), SLOT(createFolder()));
- mFSWidget->fileView()->addAction(mCreateFolderA);
mDeleteFilesA = new QAction(tr("Delete selected..."), this);
mDeleteFilesA->setShortcut(tr("CTRL+d"));
- mDeleteFilesA->setData("DA");
connect(mDeleteFilesA, SIGNAL(triggered()), mFSWidget, SLOT(deleteFiles()));
- mFSWidget->fileView()->addAction(mDeleteFilesA);
mRefreshA = new QAction(tr("Refresh"), this);
mRefreshA->setShortcut(Qt::Key_F4);
mRefreshA->setData("RE");
connect(mRefreshA, SIGNAL(triggered()), mFSWidget->fileView(), SLOT(refresh()));
connect(mRefreshA, SIGNAL(triggered()), this, SLOT(setFsFree()));
- mFSWidget->fileView()->addAction(mRefreshA);
mCopyA = new QAction(tr("Copy file(s)..."), this);
mCopyA->setShortcut(tr("CTRL+v"));
connect(mCopyA, SIGNAL(triggered()), mFSWidget, SLOT(copyFiles()));
- mFSWidget->fileView()->addAction(mCopyA);
mMoveA = new QAction(tr("Move file(s)..."), this);
mMoveA->setShortcut(tr("CTRL+m"));
connect(mMoveA, SIGNAL(triggered()), mFSWidget, SLOT(moveFiles()));
- mFSWidget->fileView()->addAction(mMoveA);
mRenameA = new QAction(tr("Rename file..."), this);
mRenameA->setShortcut(tr("CTRL+r"));
connect(mRenameA, SIGNAL(triggered()), mFSWidget, SLOT(renameFile()));
- mFSWidget->fileView()->addAction(mRenameA);
mConfigA = new QAction(tr("Configure..."), this);
connect(mConfigA, SIGNAL(triggered()), this, SLOT(configure()));
mArchiveA = new QAction(tr("Archive files..."), this);
mArchiveA->setShortcut(tr("CTRL+a"));
connect(mArchiveA, SIGNAL(triggered()), mFSWidget, SLOT(archiveFiles()));
- mFSWidget->fileView()->addAction(mArchiveA);
//Edit menu rename submenu
mTemplateA = new QAction(tr("Set as template"), this);
mTemplateA->setShortcut(tr("CTRL+t"));
connect(mTemplateA, SIGNAL(triggered()), mFSWidget, SLOT(setTemplate()));
mTemplateA->setData("RenameMenu");
- mFSWidget->fileView()->addAction(mTemplateA);
mRenameMapper = new QSignalMapper(this);
mRenameCoverFA = new QAction(tr("Rename to front cover"), this);
mRenameCoverFA->setShortcut(tr("CTRL+f"));
connect(mRenameCoverFA, SIGNAL(triggered()), mRenameMapper, SLOT(map()));
mRenameMapper->setMapping(mRenameCoverFA, tr("front"));
mRenameCoverFA->setData("RenameMenu");
- mFSWidget->fileView()->addAction(mRenameCoverFA);
mRenameCoverBA = new QAction(tr("Rename to back cover"), this);
mRenameCoverBA->setShortcut(tr("CTRL+b"));
connect(mRenameCoverBA, SIGNAL(triggered()), mRenameMapper, SLOT(map()));
mRenameMapper->setMapping(mRenameCoverBA, tr("back"));
mRenameCoverBA->setData("RenameMenu");
- mFSWidget->fileView()->addAction(mRenameCoverBA);
mRenameCoverCA = new QAction(tr("Rename to cover"), this);
mRenameCoverCA->setShortcut(tr("CTRL+c"));
connect(mRenameCoverCA, SIGNAL(triggered()), mRenameMapper, SLOT(map()));
mRenameMapper->setMapping(mRenameCoverCA, tr("cover"));
mRenameCoverCA->setData("RenameMenu");
- mFSWidget->fileView()->addAction(mRenameCoverCA);
connect(mRenameMapper, SIGNAL(mapped(const QString &)), mFSWidget, SLOT(renameCover(const QString &)));
//Edit menu extract submenu
@@ -376,6 +359,10 @@ void SheMov::createActions(){
connect(mAboutQtA, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
mStatisticsA = new QAction(tr("Some statistics..."), this);
connect(mStatisticsA, SIGNAL(triggered()), this, SLOT(showStatistics()));
+
+ // misc
+ mOpenWithGroup = new QActionGroup(this);
+ mOpenWithMapper = new QSignalMapper(this);
}
void SheMov::createMenus(){
@@ -396,12 +383,14 @@ void SheMov::createMenus(){
mEditFSMenu->addAction(mMoveA);
mEditFSMenu->addAction(mRenameA);
mEditFSMenu->addAction(mArchiveA);
- QMenu *renameMenu = new QMenu(tr("&Rename..."), this);
- renameMenu->addAction(mTemplateA);
- renameMenu->addAction(mRenameCoverFA);
- renameMenu->addAction(mRenameCoverBA);
- renameMenu->addAction(mRenameCoverCA);
- mEditFSMenu->addMenu(renameMenu);
+ mRenameMenu = new QMenu(tr("&Rename..."), this);
+ mRenameMenu->addAction(mTemplateA);
+ mRenameMenu->addAction(mRenameCoverFA);
+ mRenameMenu->addAction(mRenameCoverBA);
+ mRenameMenu->addAction(mRenameCoverCA);
+ mRenameMenuA = new QAction(tr("&Rename"), this);
+ mRenameMenuA->setMenu(mRenameMenu);
+ mEditFSMenu->addAction(mRenameMenuA);
mEditFSMenu->addSeparator();
mEditFSMenu->addMenu(mExtractMenu);
mEditFSMenu->addSeparator();
@@ -431,6 +420,66 @@ void SheMov::createMenus(){
helpMenu->addSeparator();
helpMenu->addAction(mStatisticsA);
menuBar()->addMenu(helpMenu);
+
+ // FilesystemWidget context menu
+ mOpenWithMenu = new QMenu(tr("Open with"), this);
+ mFSWidget->fileView()->addAction(mPlaySelectedA);
+ createOpenWithMenu();
+ mOpenWithMenuA = new QAction(tr("Open with"), this);
+ mOpenWithMenuA->setMenu(mOpenWithMenu);
+ mFSWidget->fileView()->addAction(mOpenWithMenuA);
+ QAction *sep1 = new QAction(this);
+ sep1->setSeparator(true);
+ mFSWidget->fileView()->addAction(sep1);
+ mFSWidget->fileView()->addAction(mCdupA);
+ 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(mCreateFolderA);
+ mFSWidget->fileView()->addAction(mDeleteFilesA);
+ mFSWidget->fileView()->addAction(mRefreshA);
+ mFSWidget->fileView()->addAction(mCopyA);
+ mFSWidget->fileView()->addAction(mMoveA);
+ mFSWidget->fileView()->addAction(mRenameMenuA);
+ QAction *sep4 = new QAction(this);
+ sep4->setSeparator(true);
+ mFSWidget->fileView()->addAction(sep4);
+ mFSWidget->fileView()->addAction(mArchiveA);
+}
+
+void SheMov::createOpenWithMenu(){
+ foreach(QAction *a, mOpenWithGroup->actions()){
+ mOpenWithMenu->removeAction(a);
+ mOpenWithGroup->removeAction(a);
+ delete a;
+ }
+ QSettings s;
+ QStringList moviePlayers = s.value("programs_movieviewer/data").toHash().keys();
+ moviePlayers.sort();
+ foreach(QString p, moviePlayers){
+ QAction *a = new QAction(p, this);
+ mOpenWithGroup->addAction(a);
+ mOpenWithMenu->addAction(a);
+ mOpenWithMapper->setMapping(a, p);
+ connect(a, SIGNAL(triggered()), mOpenWithMapper, SLOT(map()));
+ }
+ QAction *sep = new QAction(this);
+ sep->setSeparator(true);
+ mOpenWithMenu->addAction(sep);
+ QStringList picViewers = s.value("programs_pictureviewer/data").toHash().keys();
+ picViewers.sort();
+ foreach(QString p, picViewers){
+ QAction *a = new QAction(p, this);
+ mOpenWithGroup->addAction(a);
+ mOpenWithMenu->addAction(a);
+ mOpenWithMapper->setMapping(a, p);
+ connect(a, SIGNAL(triggered()), mOpenWithMapper, SLOT(map()));
+ }
}
void SheMov::createExtractMenu(){