annotate DataController.cpp @ 4:f489b0c9bf99

Refactored to allow commandline tools to use DataController.
author Tom Fredrik Blenning Klaussen <bfg@blenning.no>
date Tue, 21 Aug 2012 15:27:29 +0200
parents 7a44ba08673d
children 5e4985407feb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
1 #include "CompileTimeConstants.h"
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
2
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
3 #include "DataController.hpp"
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
4
1
aae83c0a771d Refactor:
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 0
diff changeset
5 #include "MemoryDBLink.hpp"
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
6 #include "SqliteDBLink.hpp"
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
7
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
8 #include "PermissionException.hpp"
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
9 #include "DataController.hpp"
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
10
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
11 #include <QtGui/QApplication>
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
12 #include <QtCore/QDir>
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
13
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
14 #include <QtCore/QDebug>
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
15 #include <QtCore/QTimer>
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
16 #include <QtCore/QCryptographicHash>
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
17 #include <QtCore/QDateTime>
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
18
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
19 #include <QtGui/QMainWindow>
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
20 #include <QtGui/QDesktopServices>
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
21 #include <QtGui/QTreeWidget>
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
22 #include <QtGui/QHeaderView>
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
23 #include <QtGui/QMenuBar>
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
24 #include <QtGui/QToolBar>
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
25 #include <QtGui/QDoubleSpinBox>
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
26 #include <QtGui/QLabel>
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
27 #include <QtGui/QHBoxLayout>
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
28 #include <QtGui/QProgressBar>
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
29
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
30 #include "EditDistance.hpp"
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
31
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
32 void DataController::findFiles(const QDir& dir, QStringList& list)
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
33 {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
34 foreach(QString filename, dir.entryList(QDir::NoDotAndDotDot | QDir::Dirs)) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
35 filename = dir.absoluteFilePath(filename);
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
36 findFiles(QDir(filename), list);
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
37 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
38
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
39 foreach(QString filename, dir.entryList(QDir::Files)) {
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
40 list << dir.absoluteFilePath(filename);
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
41 }
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
42 }
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
43
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
44 QStringList DataController::findFiles(const QDir& dir)
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
45 {
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
46 QStringList list;
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
47 findFiles(dir, list);
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
48 return list;
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
49 }
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
50
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
51 void DataController::findFiles(const QDir& dir, FileDBLink& dblink)
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
52 {
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
53 QStringList list = findFiles(dir);
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
54
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
55 QProgressBar bar;
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
56
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
57 QDateTime last = QDateTime::currentDateTime();
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
58
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
59 bar.resize(200,25);
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
60 bar.setValue(0);
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
61 bar.setMinimum(0);
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
62 bar.setMaximum(list.size());
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
63 bar.show();
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
64
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
65 connect(this, SIGNAL(populateProgress(int)), &bar, SLOT(setValue(int)));
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
66
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
67 int n = 0;
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
68 foreach(QString filename, findFiles(dir)) {
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
69 try {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
70 dblink.updateIfModified(filename);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
71 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
72 catch (const PermissionException& e) {
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
73 qDebug() << e.toString();
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
74 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
75 catch (Exception& e) {
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
76 qDebug() << e.toString();
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
77 exit(1);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
78 }
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
79
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
80 emit populateProgress(++n);
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
81
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
82 QDateTime now = QDateTime::currentDateTime();
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
83 if (last.msecsTo(now) > 500) {
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
84 QCoreApplication::processEvents();
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
85 last = now;
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
86 }
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
87 }
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
88
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
89 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
90
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
91
1
aae83c0a771d Refactor:
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 0
diff changeset
92 QTreeWidgetItem* DataController::createItem(const FileDBLink::DBInfo& info)
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
93 {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
94 QTreeWidgetItem* item = new QTreeWidgetItem();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
95 item->setData(0, Qt::DisplayRole, info.name());
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
96 item->setData(0, 32, info.path());
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
97 item->setData(0, 33, info.name());
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
98
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
99 item->setData(1, Qt::DisplayRole, info.size());
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
100 item->setData(2, Qt::DisplayRole, info.mtime());
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
101 item->setData(3, Qt::DisplayRole, info.checksum().toHex());
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
102 return item;
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
103 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
104
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
105 void DataController::delayPopulate()
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
106 {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
107 populateDelay->start();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
108 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
109
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
110
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
111 void DataController::populate()
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
112 {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
113 populate(nameFilter->isChecked(), sizeFilter->isChecked(), mtimeFilter->isChecked(),
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
114 checksumFilter->isChecked(), (100 - editCutoffSpin->value()) * .01);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
115 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
116
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
117 void DataController::populate(bool showNameDups, bool showSizeDups,
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
118 bool showMTimeDups, bool showCheckSumDups,
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
119 float editDistanceCutoff)
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
120 {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
121 tw->clear();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
122
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
123 const QList<QSharedPointer<FileDBLink::DBInfo> > elems = dblink->values(dir.path());
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
124
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
125 QProgressBar bar;
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
126
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
127 bar.resize(200,25);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
128 bar.setValue(0);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
129 bar.setMinimum(0);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
130 bar.setMaximum(elems.size());
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
131 bar.show();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
132
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
133 connect(this, SIGNAL(populateProgress(int)), &bar, SLOT(setValue(int)));
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
134
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
135 int n = 0;
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
136
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
137 tw->setUpdatesEnabled(false);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
138
3
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
139
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
140 QMultiMap<QString, QSharedPointer<FileDBLink::DBInfo> > nameLUP;
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
141 QMultiMap<quint64, QSharedPointer<FileDBLink::DBInfo> > sizeLUP;
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
142 QMultiMap<QDateTime, QSharedPointer<FileDBLink::DBInfo> > mtimeLUP;
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
143 QMultiMap<QByteArray, QSharedPointer<FileDBLink::DBInfo> > checksumLUP;
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
144
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
145 foreach(QSharedPointer<FileDBLink::DBInfo> line, elems) {
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
146 if (showNameDups) {
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
147 nameLUP.insertMulti(line->name(), line);
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
148 }
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
149 if (showSizeDups) {
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
150 sizeLUP.insertMulti(line->size(), line);
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
151 }
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
152 if (showMTimeDups) {
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
153 mtimeLUP.insertMulti(line->mtime(), line);
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
154 }
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
155 if (showCheckSumDups) {
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
156 checksumLUP.insertMulti(line->checksum(), line);
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
157 }
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
158 }
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
159
1
aae83c0a771d Refactor:
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 0
diff changeset
160 foreach(QSharedPointer<FileDBLink::DBInfo> line, elems) {
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
161 QTreeWidgetItem* item = 0;
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
162 bool anyAdded = false;
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
163
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
164 if (showNameDups) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
165 QTreeWidgetItem* topLevelItem = 0;
3
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
166 foreach(QSharedPointer<FileDBLink::DBInfo> dup, nameLUP.values(line->name())) {
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
167 if(dup != line) {
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
168 if (!topLevelItem) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
169 topLevelItem = new QTreeWidgetItem();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
170 topLevelItem->setData(0, Qt::DisplayRole, "Name");
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
171 if(!item)
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
172 item = createItem(*line);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
173 item->addChild(topLevelItem);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
174 anyAdded = true;
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
175 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
176 topLevelItem->addChild(createItem(*dup));
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
177 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
178 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
179 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
180
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
181 if (showSizeDups) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
182 QTreeWidgetItem* topLevelItem = 0;
3
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
183 foreach(QSharedPointer<FileDBLink::DBInfo> dup, sizeLUP.values(line->size())) {
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
184 if(dup != line ) {
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
185 if (!topLevelItem) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
186 topLevelItem = new QTreeWidgetItem();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
187 topLevelItem->setData(0, Qt::DisplayRole, "Size");
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
188 if(!item)
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
189 item = createItem(*line);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
190 item->addChild(topLevelItem);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
191 anyAdded = true;
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
192 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
193 topLevelItem->addChild(createItem(*dup));
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
194 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
195 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
196 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
197
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
198 if (showMTimeDups) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
199 QTreeWidgetItem* topLevelItem = 0;
3
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
200 foreach(QSharedPointer<FileDBLink::DBInfo> dup, mtimeLUP.values(line->mtime())) {
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
201 if(dup != line ) {
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
202 if (!topLevelItem) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
203 topLevelItem = new QTreeWidgetItem();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
204 topLevelItem->setData(0, Qt::DisplayRole, "MTime");
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
205 if(!item)
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
206 item = createItem(*line);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
207 item->addChild(topLevelItem);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
208 anyAdded = true;
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
209 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
210 topLevelItem->addChild(createItem(*dup));
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
211 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
212 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
213 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
214
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
215 if (showCheckSumDups) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
216 QTreeWidgetItem* topLevelItem = 0;
3
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
217 foreach(QSharedPointer<FileDBLink::DBInfo> dup, checksumLUP.values(line->checksum())) {
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
218 if(dup != line) {
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
219 if (!topLevelItem) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
220 topLevelItem = new QTreeWidgetItem();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
221 topLevelItem->setData(0, Qt::DisplayRole, "Checksum");
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
222 if(!item)
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
223 item = createItem(*line);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
224 item->addChild(topLevelItem);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
225 anyAdded = true;
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
226 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
227 topLevelItem->addChild(createItem(*dup));
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
228 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
229 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
230 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
231
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
232 if (editDistanceCutoff < 1.0) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
233 QTreeWidgetItem* topLevelItem = 0;
1
aae83c0a771d Refactor:
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 0
diff changeset
234 QMultiMap<int, QSharedPointer<FileDBLink::DBInfo> > oList;
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
235
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
236 int absoluteCutoff = line->name().length() * editDistanceCutoff;
1
aae83c0a771d Refactor:
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 0
diff changeset
237 foreach(QSharedPointer<FileDBLink::DBInfo> dup, elems) {
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
238 if(dup != line) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
239 int distance = EditDistance::Compute(line->name(), dup->name());
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
240
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
241 if (distance <= absoluteCutoff) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
242 oList.insert(distance, dup);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
243 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
244 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
245 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
246
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
247 if (oList.size() > 0 ) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
248 topLevelItem = new QTreeWidgetItem();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
249 topLevelItem->setData(0, Qt::DisplayRole, "Editdistance");
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
250 if(!item)
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
251 item = createItem(*line);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
252 item->addChild(topLevelItem);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
253 anyAdded = true;
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
254 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
255
1
aae83c0a771d Refactor:
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 0
diff changeset
256 foreach(QSharedPointer<FileDBLink::DBInfo> dup, oList.values()) {
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
257 topLevelItem->addChild(createItem(*dup));
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
258 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
259 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
260
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
261
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
262
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
263 if (item)
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
264 tw->addTopLevelItem(item);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
265 emit populateProgress(++n);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
266 if (n % 64 == 0) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
267 QCoreApplication::processEvents();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
268 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
269 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
270 tw->setUpdatesEnabled(true);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
271
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
272 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
273
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
274 void DataController::setDir(const QDir& dir)
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
275 {
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
276 this->dir = dir.absolutePath();
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
277 }
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
278
4
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
279 void DataController::buildDB(const QDir& dir)
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
280 {
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
281 findFiles(dir, *dblink);
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
282 }
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
283
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
284
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
285 void DataController::setupGUI()
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
286 {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
287 populateDelay = new QTimer(this);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
288 populateDelay->setSingleShot(true);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
289 populateDelay->setInterval(500);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
290 connect(populateDelay, SIGNAL(timeout()), this, SLOT(populate()));
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
291
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
292 mw = new QMainWindow();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
293 QMenuBar* mb = new QMenuBar();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
294
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
295 QMenu* menu = mb->addMenu("&View");
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
296 QAction* action = menu->addAction("Show full path");
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
297 action->setCheckable(true);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
298 connect(action, SIGNAL(toggled(bool)), this, SLOT(setShowFullPath(bool)));
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
299
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
300 mw->setMenuBar(mb);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
301
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
302 QToolBar* filterBar = new QToolBar("Filters");
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
303
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
304 nameFilter = filterBar->addAction("Name");
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
305 nameFilter->setCheckable(true);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
306 connect(nameFilter, SIGNAL(toggled(bool)), this, SLOT(delayPopulate()));
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
307
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
308 sizeFilter = filterBar->addAction("Size");
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
309 sizeFilter->setCheckable(true);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
310 connect(sizeFilter, SIGNAL(toggled(bool)), this, SLOT(delayPopulate()));
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
311
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
312 mtimeFilter = filterBar->addAction("MTime");
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
313 mtimeFilter->setCheckable(true);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
314 connect(mtimeFilter, SIGNAL(toggled(bool)), this, SLOT(delayPopulate()));
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
315
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
316 checksumFilter = filterBar->addAction("Checksum");
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
317 checksumFilter->setCheckable(true);
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
318 checksumFilter->setChecked(true);
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
319 connect(checksumFilter, SIGNAL(toggled(bool)), this, SLOT(delayPopulate()));
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
320
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
321 QWidget* widget = new QWidget();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
322 QLayout* layout = new QHBoxLayout();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
323 layout->setContentsMargins(0,0,0,0);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
324 widget->setLayout(layout);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
325 layout->addWidget(new QLabel("Edit distance", widget));
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
326 editCutoffSpin = new QSpinBox(widget);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
327 layout->addWidget(editCutoffSpin);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
328 editCutoffSpin->setMinimum(0);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
329 editCutoffSpin->setMaximum(100);
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
330 editCutoffSpin->setValue(0);
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
331 editCutoffSpin->setSingleStep(10);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
332 editCutoffSpin->setSuffix("%");
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
333 connect(editCutoffSpin, SIGNAL(valueChanged(int)), this, SLOT(delayPopulate()));
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
334 filterBar->addWidget(widget);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
335
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
336 mw->addToolBar(filterBar);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
337
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
338 tw = new QTreeWidget(mw);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
339 mw->setCentralWidget(tw);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
340 tw->setEditTriggers(QAbstractItemView::NoEditTriggers);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
341
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
342 tw->setHeaderLabels(QString("Path;Size;Date;Checksum").split(";"));
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
343
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
344 tw->setSortingEnabled(true);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
345 tw->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
346 tw->setSelectionBehavior(QAbstractItemView::SelectRows);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
347 //tw->resizeColumnsToContents();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
348 mw->resize(800,800);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
349 mw->show();
4
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
350 }
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
351
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
352
4
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
353 DataController::DataController(const QString& path, bool showGUI)
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
354 {
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
355 setup(QString(), path, showGUI);
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
356 }
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
357
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
358 DataController::DataController(bool showGUI)
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
359 {
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
360 setup(QString(), QString(), showGUI);
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
361 }
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
362
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
363 void DataController::setup(const QString& dbpath_in, const QString& searchPath_in, bool showGUI)
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
364 {
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
365 QString dbpath;
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
366 if (dbpath_in.size() > 0) {
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
367 dbpath = dbpath_in;
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
368 }
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
369 else {
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
370 dbpath = DB_DEFAULT_LOCATION;
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
371
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
372 dbpath.replace(QRegExp("^~/"),
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
373 QString("%1%2").arg(QDesktopServices::storageLocation(QDesktopServices::HomeLocation)).arg(QDir::separator()));
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
374 }
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
375
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
376 dblink = new SqliteDBLink(dbpath);
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
377
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
378 setDir((searchPath_in.size() > 0) ? searchPath_in : QDir("."));
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
379
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
380 showFullPath = false;
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
381
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
382 if (showGUI)
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
383 setupGUI();
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
384 buildDB(dir);
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
385 if (showGUI)
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
386 populate();
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
387
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
388 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
389
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
390 DataController::~DataController()
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
391 {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
392 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
393
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
394
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
395 void DataController::cellDoubleClicked(int row, int column)
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
396 {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
397 if(column == 0) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
398 toggleShowFullPath();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
399 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
400 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
401
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
402
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
403 void DataController::setShowFullPath(bool showFullPath)
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
404 {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
405 this->showFullPath = showFullPath;
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
406
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
407 tw->setSortingEnabled(false);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
408
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
409 int role = (showFullPath)?32:33;
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
410 for (int row = 0; row < tw->topLevelItemCount(); ++row) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
411 QTreeWidgetItem* pathItem = tw->topLevelItem(row);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
412 pathItem->setData(0, Qt::DisplayRole, pathItem->data(0,role));
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
413 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
414 tw->setSortingEnabled(true);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
415 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
416
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
417 bool DataController::toggleShowFullPath()
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
418 {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
419 bool showFullPath = ! this->showFullPath;
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
420 setShowFullPath(showFullPath);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
421 return showFullPath;
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
422 }