/* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. */ #include #include #include #include #include #include #include #include #include #include #include #include "shemov.h" #include "filesystemwidget.h" #include "fileview.h" SheMov::SheMov(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, flags) { mFSWidget = new FilesystemWidget; setWindowTitle(mFSWidget->windowTitle()); mTab = new QTabWidget; mTab->addTab(mFSWidget, tr("Filemanager")); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(mTab); createStatusbar(); createActions(); createMenus(); mFSWidget->fileView()->findActions(); connect(mFSWidget->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 &))); connect(mFSWidget->fileView(), SIGNAL(statusbarMessage(const QString &)), this, SLOT(statusbarMessage(const QString &))); connect(mFSWidget, SIGNAL(statusbarMessage(const QString &)), this, SLOT(statusbarMessage(const QString &))); connect(mFSWidget, SIGNAL(newTemplate(const QString &)), this, SLOT(setTemplate(const QString &))); QWidget *centralWidget = new QWidget; centralWidget->setLayout(mainLayout); setCentralWidget(centralWidget); showMaximized(); mFSWidget->fileView()->setFocus(Qt::ActiveWindowFocusReason); } void SheMov::updateSelectionCount(const QItemSelection & /* sel */, const QItemSelection & /* prev */){ mSelectedItems->setText(QString::number(mFSWidget->fileView()->selectionModel()->selectedRows().count())); } void SheMov::newWindowTitle(const QString &title){ setWindowTitle(title); } void SheMov::statusbarMessage(const QString &message){ statusBar()->showMessage(message); } void SheMov::setTemplate(const QString &newTemplate){ mTemplate->setText(newTemplate); } void SheMov::createStatusbar(){ QLabel *selCountL = new QLabel(tr("Sel. Items")); mSelectedItems = new QLabel("0"); mSelectedItems->setFrameStyle(QFrame::Panel | QFrame::Sunken); statusBar()->addPermanentWidget(selCountL); statusBar()->addPermanentWidget(mSelectedItems); QLabel *templateL = new QLabel(tr("Template")); mTemplate = new QLabel(tr("No template set")); mTemplate->setFrameStyle(QFrame::Panel | QFrame::Sunken); statusBar()->addPermanentWidget(templateL); statusBar()->addPermanentWidget(mTemplate); } void SheMov::createActions(){ //File menu mQuitA = new QAction(tr("Quit"), this); mQuitA->setShortcut(tr("CTRL+q")); //Edit menu 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())); 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); //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 &))); } void SheMov::createMenus(){ QMenu *fileMenu = new QMenu(tr("&File"), this); fileMenu->addAction(mQuitA); QMenu *editMenu = new QMenu(tr("&Edit"), this); editMenu->addAction(mCdupA); editMenu->addSeparator(); editMenu->addAction(mMarkFilesA); editMenu->addAction(mUnmarkFilesA); editMenu->addSeparator(); editMenu->addAction(mCreateFolderA); editMenu->addAction(mDeleteFilesA); editMenu->addSeparator(); editMenu->addAction(mCopyA); editMenu->addAction(mMoveA); editMenu->addAction(mRenameA); QMenu *renameMenu = new QMenu(tr("&Rename..."), this); renameMenu->addAction(mTemplateA); renameMenu->addAction(mRenameCoverFA); renameMenu->addAction(mRenameCoverBA); renameMenu->addAction(mRenameCoverCA); editMenu->addMenu(renameMenu); editMenu->addSeparator(); editMenu->addAction(mRefreshA); menuBar()->addMenu(fileMenu); menuBar()->addMenu(editMenu); }