summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoram <am@f440f766-f032-0410-8965-dc7d17de2ca0>2009-07-10 18:35:14 +0000
committeram <am@f440f766-f032-0410-8965-dc7d17de2ca0>2009-07-10 18:35:14 +0000
commitb700071a54e9ce9e9097a704fb1d71dc2a795bfb (patch)
tree07bcd0c87fa2a11400dda3447236a916ebbf2922
parent4f1e2ee030f01facefab808f687d301c37707f74 (diff)
downloadSheMov-b700071a54e9ce9e9097a704fb1d71dc2a795bfb.tar.gz
SheMov-b700071a54e9ce9e9097a704fb1d71dc2a795bfb.tar.bz2
SheMov-b700071a54e9ce9e9097a704fb1d71dc2a795bfb.zip
-fixed display of windowTitle
-focus FileView after startup and changing dir via directorybar -implemented createFolder -display action in statusBar() git-svn-id: file:///var/svn/repos2/shemov/trunk@383 f440f766-f032-0410-8965-dc7d17de2ca0
-rw-r--r--filesystemwidget.cpp10
-rw-r--r--filesystemwidget.h2
-rw-r--r--fileview.cpp36
-rw-r--r--fileview.h4
-rw-r--r--shemov.cpp23
-rw-r--r--shemov.h2
-rw-r--r--shemoviconprovider.cpp4
7 files changed, 70 insertions, 11 deletions
diff --git a/filesystemwidget.cpp b/filesystemwidget.cpp
index 365adaf..c424eaa 100644
--- a/filesystemwidget.cpp
+++ b/filesystemwidget.cpp
@@ -30,6 +30,7 @@ FilesystemWidget::FilesystemWidget(QWidget *parent) : QWidget(parent) {
mModel = new QDirModel;
mModel->setFilter(QDir::AllEntries | QDir::NoDotAndDotDot);
mModel->setSorting(QDir::DirsFirst | QDir::IgnoreCase);
+ mModel->setReadOnly(false);
SheMovIconProvider *p = new SheMovIconProvider;
mModel->setIconProvider(p);
@@ -90,6 +91,7 @@ FilesystemWidget::FilesystemWidget(QWidget *parent) : QWidget(parent) {
}
mFileView->resizeColumnToContents(0);
+ setWindowTitle(startDir);
QVBoxLayout *mainLayout = new QVBoxLayout;
QSplitter *splitter = new QSplitter;
@@ -108,7 +110,7 @@ void FilesystemWidget::directoryChanged(const QModelIndex &selected, const QMode
return;
}
mDirEdit->setText(mModel->filePath(real));
- windowTitle(mModel->filePath(real));
+ setWindowTitle(mModel->filePath(real));
QModelIndex oldSelected = mDirProxy->mapToSource(deselected);
mFileView->selectionModel()->setCurrentIndex(mFileProxy->mapFromSource(oldSelected), QItemSelectionModel::NoUpdate);
mFileView->setRootIndex(mFileProxy->mapFromSource(real));
@@ -123,10 +125,10 @@ void FilesystemWidget::directoryEdited(){
if(index.isValid()){
mDirView->setCurrentIndex(mDirProxy->mapFromSource(index));
}
+ mFileView->setFocus(Qt::ActiveWindowFocusReason);
}
void FilesystemWidget::fileViewActivated(const QModelIndex &idx){
- qDebug() << "trying to activate elem";
QModelIndex real = mFileProxy->mapToSource(idx);
if(mModel->isDir(real)){
mDirView->setCurrentIndex(mDirProxy->mapFromSource(real));
@@ -157,7 +159,7 @@ void FilesystemWidget::parentDir(){
}
void FilesystemWidget::setWindowTitle(const QString &dir){
- QString title = QString("%1 - %2").arg(qApp->applicationName(), dir);
- emit windowTitle(title);
+ mWindowTitle = QString("%1 - %2").arg(qApp->applicationName()).arg(dir);
+ emit windowTitle(mWindowTitle);
}
diff --git a/filesystemwidget.h b/filesystemwidget.h
index 916ca83..a5d89d7 100644
--- a/filesystemwidget.h
+++ b/filesystemwidget.h
@@ -24,6 +24,7 @@ class FilesystemWidget : public QWidget {
FilesystemWidget(QWidget *parent = 0);
~FilesystemWidget() {};
FileView *fileView() { return mFileView; };
+ const QString windowTitle() const { return mWindowTitle; };
signals:
void windowTitle(const QString &);
@@ -42,6 +43,7 @@ class FilesystemWidget : public QWidget {
FilesystemDirProxy *mDirProxy;
FilesystemFileProxy *mFileProxy;
QLineEdit *mDirEdit;
+ QString mWindowTitle;
};
#endif
diff --git a/fileview.cpp b/fileview.cpp
index 31c9aca..5995d60 100644
--- a/fileview.cpp
+++ b/fileview.cpp
@@ -22,6 +22,8 @@ FileView::FileView(QWidget *parent) : QTreeView(parent) {
setRootIsDecorated(false);
mMarkDialog = new MessageDialog(tr("Enter pattern to mark"), this);
connect(mMarkDialog, SIGNAL(accepted()), this, SLOT(doMark()));
+ mCreateFolderDialog = new MessageDialog(tr("Enter folder name"), this);
+ connect(mCreateFolderDialog, SIGNAL(accepted()), this, SLOT(doCreateFolder()));
}
void FileView::markFiles(){
@@ -32,6 +34,10 @@ void FileView::unmarkFiles(){
selectionModel()->clearSelection();
}
+void FileView::createFolder(){
+ mCreateFolderDialog->show();
+}
+
void FileView::doMark(){
int rowCount = model()->rowCount(rootIndex());
QString sRegex = mMarkDialog->text();
@@ -39,6 +45,7 @@ void FileView::doMark(){
QRegExp re(sRegex);
QSortFilterProxyModel *proxy = static_cast<QSortFilterProxyModel*>(model());
QDirModel *model = static_cast<QDirModel*>(proxy->sourceModel());
+ bool match(false);
for(int i = 0; i < rowCount; ++i){
QModelIndex cur = rootIndex().child(i, 0);
QModelIndex sCur = proxy->mapToSource(cur);
@@ -47,8 +54,35 @@ void FileView::doMark(){
}
if(re.indexIn(cur.data().toString()) != -1){
selectionModel()->select(cur, QItemSelectionModel::Select | QItemSelectionModel::Rows);
+ match = true;
}
}
+ if(match){
+ statusbarMessage(QString());
+ }else{
+ emit statusbarMessage(tr("No match found!"));
+ }
+ }else{
+ emit statusbarMessage(tr("Nothing to mark!"));
+ }
+}
+
+void FileView::doCreateFolder(){
+ QString folderName = mCreateFolderDialog->text();
+ if(folderName.isEmpty()){
+ emit statusbarMessage(tr("No foldername given!"));
+ return;
+ }
+ QSortFilterProxyModel *proxy = static_cast<QSortFilterProxyModel*>(model());
+ QDirModel *model = static_cast<QDirModel*>(proxy->sourceModel());
+ QModelIndex sRoot = proxy->mapToSource(rootIndex());
+ QModelIndex newIdx = model->mkdir(sRoot, folderName);
+ if(newIdx == QModelIndex()){
+ QString msg = QString(tr("Failed to create %1/%2")).arg(model->filePath(sRoot)).arg(folderName);
+ emit statusbarMessage(msg);
+ }else{
+ QString msg = QString(tr("Created folder %1")).arg(model->filePath(newIdx));
+ emit statusbarMessage(msg);
}
}
@@ -57,7 +91,7 @@ void FileView::contextMenuEvent(QContextMenuEvent *e){
int ctr(0);
foreach(QAction *a, actions()){
contextMenu.addAction(a);
- if(false){
+ if((ctr == 1)){
contextMenu.addSeparator();
}
++ctr;
diff --git a/fileview.h b/fileview.h
index 242f0a7..1b3649e 100644
--- a/fileview.h
+++ b/fileview.h
@@ -25,13 +25,16 @@ class FileView : public QTreeView {
signals:
void upDir();
void enterPressed(const QModelIndex &);
+ void statusbarMessage(const QString &);
public slots:
void markFiles();
void unmarkFiles();
+ void createFolder();
private slots:
void doMark();
+ void doCreateFolder();
protected:
virtual void contextMenuEvent(QContextMenuEvent *e);
@@ -40,6 +43,7 @@ class FileView : public QTreeView {
private:
MessageDialog *mMarkDialog;
+ MessageDialog *mCreateFolderDialog;
};
#endif
diff --git a/shemov.cpp b/shemov.cpp
index a005f8d..b76e1d1 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -22,6 +22,7 @@
SheMov::SheMov(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, flags) {
mFSWidget = new FilesystemWidget;
+ setWindowTitle(mFSWidget->windowTitle());
mTab = new QTabWidget;
mTab->addTab(mFSWidget, tr("Filemanager"));
@@ -35,12 +36,13 @@ SheMov::SheMov(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, fla
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 &)));
QWidget *centralWidget = new QWidget;
centralWidget->setLayout(mainLayout);
setCentralWidget(centralWidget);
- show();
-
+ showMaximized();
+ mFSWidget->fileView()->setFocus(Qt::ActiveWindowFocusReason);
}
void SheMov::updateSelectionCount(const QItemSelection & /* sel */, const QItemSelection & /* prev */){
@@ -51,6 +53,10 @@ void SheMov::newWindowTitle(const QString &title){
setWindowTitle(title);
}
+void SheMov::statusbarMessage(const QString &message){
+ statusBar()->showMessage(message);
+}
+
void SheMov::createStatusbar(){
QLabel *selCountL = new QLabel(tr("Sel. Items"));
mSelectedItems = new QLabel("0");
@@ -63,12 +69,18 @@ void SheMov::createActions(){
mQuitA = new QAction(tr("Quit"), this);
mQuitA->setShortcut(tr("CTRL+q"));
connect(mQuitA, SIGNAL(triggered()), qApp, SLOT(quit()));
- mMarkFilesA = new QAction(tr("Mark files"), this);
+ 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("Unmark all files"), this);
+ 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);
}
void SheMov::createMenus(){
@@ -77,6 +89,9 @@ void SheMov::createMenus(){
QMenu *editMenu = new QMenu(tr("&Edit"), this);
editMenu->addAction(mMarkFilesA);
editMenu->addAction(mUnmarkFilesA);
+ editMenu->addSeparator();
+ editMenu->addAction(mCreateFolderA);
+ editMenu->addSeparator();
menuBar()->addMenu(fileMenu);
menuBar()->addMenu(editMenu);
diff --git a/shemov.h b/shemov.h
index cc54643..51c1934 100644
--- a/shemov.h
+++ b/shemov.h
@@ -25,6 +25,7 @@ class SheMov : public QMainWindow {
private slots:
void updateSelectionCount(const QItemSelection &sel, const QItemSelection &prev);
void newWindowTitle(const QString &title);
+ void statusbarMessage(const QString &message);
private:
void createStatusbar();
@@ -38,6 +39,7 @@ class SheMov : public QMainWindow {
QAction *mQuitA;
QAction *mMarkFilesA;
QAction *mUnmarkFilesA;
+ QAction *mCreateFolderA;
//EndActions
QTabWidget *mTab;
diff --git a/shemoviconprovider.cpp b/shemoviconprovider.cpp
index ed3febb..f0ea01e 100644
--- a/shemoviconprovider.cpp
+++ b/shemoviconprovider.cpp
@@ -14,9 +14,9 @@
SheMovIconProvider::SheMovIconProvider() {};
QIcon SheMovIconProvider::icon(const QFileInfo &info) const {
- /*if(info.isDir()){
+ if(info.isDir()){
return QIcon(":/dildo.png");
- }*/
+ }
QString type = Helper::mimeType(info.absoluteFilePath());
if(type.toLower().startsWith("video")){
return QIcon(":/movie.svg");