-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathIROOTMultiDirectorySearch.cpp
82 lines (74 loc) · 2.51 KB
/
IROOTMultiDirectorySearch.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include "IROOTMultiDirectorySearch.h"
#include "ui_IROOTMultiDirectorySearch.h"
IROOTMultiDirectorySearch::IROOTMultiDirectorySearch(QWidget *parent) :
QWidget(parent),
ui(new Ui::IROOTMultiDirectorySearch)
{
ui->setupUi(this);
setWindowFlags(Qt::FramelessWindowHint);
}
IROOTMultiDirectorySearch::~IROOTMultiDirectorySearch()
{
delete ui;
}
void IROOTMultiDirectorySearch::on_close_clicked()
{
hide();
}
QStringList IROOTMultiDirectorySearch::GetFiles(QStringList partfileNames, QStringList directoryList)
{
QStringList fileList;
for(int ii=0;ii<directoryList.count();ii++){
QFileInfoList fl = QDir(directoryList.at(ii)).entryInfoList();
for(int jj=0;jj<fl.count();jj++){
for(int kk=0;kk<partfileNames.count();kk++){
if(fl.at(jj).fileName().contains(partfileNames.at(kk))){
fileList.append(fl.at(jj).filePath());
break;
}
}
}
}
return fileList;
}
QStringList IROOTMultiDirectorySearch::GetDirectories(QStringList partDirNames, QStringList dirNames)
{
if(partDirNames.count()<1)
return dirNames;
QStringList dirList;
for(int ii=0;ii<dirNames.count();ii++){
for(int jj=0;jj<partDirNames.count();jj++){
if(dirNames.at(ii).contains(partDirNames.at(jj))){
dirList.append(dirNames.at(ii));
break;
}
}
}
return dirList;
}
void IROOTMultiDirectorySearch::on_openMultipleDirectories_clicked()
{
QFileDialog *fD = new QFileDialog();
fD->setFileMode(QFileDialog::DirectoryOnly);
fD->setOption(QFileDialog::DontUseNativeDialog,true);
QListView *l = fD->findChild<QListView*>("listView");
if (l) {
l->setSelectionMode(QAbstractItemView::MultiSelection);
}
QTreeView *t = fD->findChild<QTreeView*>();
if (t) {
t->setSelectionMode(QAbstractItemView::MultiSelection);
}
if ( fD->exec()){
QStringList dirNames = fD->selectedFiles();
close();
if(dirNames.count()<1) return;
if(ui->onlySelectedDirectories->isChecked()){
OpenFiles(GetFiles(ui->partFileNames->text().split(QRegExp("\\s+"), QString::SkipEmptyParts),
GetDirectories(ui->partDirNames->text().split(QRegExp("\\W+"), QString::SkipEmptyParts),dirNames))
);
}
else
OpenFiles(GetFiles(ui->partFileNames->text().split(QRegExp("\\s+"), QString::SkipEmptyParts),dirNames));
}
}