summaryrefslogtreecommitdiffstats
path: root/fileview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'fileview.cpp')
-rw-r--r--fileview.cpp45
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);
+ }
+}
+