diff options
author | am <am@f440f766-f032-0410-8965-dc7d17de2ca0> | 2009-07-08 15:40:49 +0000 |
---|---|---|
committer | am <am@f440f766-f032-0410-8965-dc7d17de2ca0> | 2009-07-08 15:40:49 +0000 |
commit | a12045635b23c80e3dd9f51212c6ea89c240b94e (patch) | |
tree | 1663feef335d9a5545b2085c03b55488d41d8216 /fileview.cpp | |
parent | 1b18f70862f62f8783976407057ea5a5cf88bdac (diff) | |
download | SheMov-a12045635b23c80e3dd9f51212c6ea89c240b94e.tar.gz SheMov-a12045635b23c80e3dd9f51212c6ea89c240b94e.tar.bz2 SheMov-a12045635b23c80e3dd9f51212c6ea89c240b94e.zip |
-added messagedialog
-worked on keyboard navigation and selecting items, items can now be selected like in mc
git-svn-id: file:///var/svn/repos2/shemov/trunk@380 f440f766-f032-0410-8965-dc7d17de2ca0
Diffstat (limited to 'fileview.cpp')
-rw-r--r-- | fileview.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/fileview.cpp b/fileview.cpp index 541d071..db34e0a 100644 --- a/fileview.cpp +++ b/fileview.cpp @@ -9,11 +9,47 @@ #include <QMenu> #include <QAction> #include <QKeyEvent> +#include <QModelIndex> +#include <QRegExp> +#include <QDirModel> +#include <QSortFilterProxyModel> +#include <QDebug> #include "fileview.h" +#include "messagedialog.h" FileView::FileView(QWidget *parent) : QTreeView(parent) { setRootIsDecorated(false); + mMarkDialog = new MessageDialog(tr("Enter pattern to mark"), this); + connect(mMarkDialog, SIGNAL(accepted()), this, SLOT(doMark())); +} + +void FileView::markFiles(){ + mMarkDialog->show(); +} + +void FileView::unmarkFiles(){ + selectionModel()->clearSelection(); +} + +void FileView::doMark(){ + int rowCount = model()->rowCount(rootIndex()); + QString sRegex = mMarkDialog->text(); + if(rowCount && !sRegex.isEmpty()){ + QRegExp re(sRegex); + QSortFilterProxyModel *proxy = static_cast<QSortFilterProxyModel*>(model()); + QDirModel *model = static_cast<QDirModel*>(proxy->sourceModel()); + for(int i = 0; i < rowCount; ++i){ + QModelIndex cur = rootIndex().child(i, 0); + QModelIndex sCur = proxy->mapToSource(cur); + if(model->isDir(sCur)){ + continue; + } + if(re.indexIn(cur.data().toString()) != -1){ + selectionModel()->select(cur, QItemSelectionModel::Select | QItemSelectionModel::Rows); + } + } + } } void FileView::contextMenuEvent(QContextMenuEvent *e){ @@ -39,3 +75,12 @@ void FileView::keyPressEvent(QKeyEvent *e){ QTreeView::keyPressEvent(e); } } + +void FileView::resizeEvent(QResizeEvent *e){ + if(e->size().width() != e->oldSize().width()){ + int width = e->size().width(); + int c1width = width / 2; // * 2; + setColumnWidth(0, c1width); + } +} + |