annotate DataController.cpp @ 115:404795616b1e default tip

Added a lot of common files to ignore
author Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
date Sat, 25 Mar 2017 17:43:57 +0100
parents 95fb1bcf7e24
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
40
f711ddb56ae7 Sort up includes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 34
diff changeset
1 #include "DataController.hpp"
f711ddb56ae7 Sort up includes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 34
diff changeset
2
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
3 #include "CompileTimeConstants.h"
40
f711ddb56ae7 Sort up includes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 34
diff changeset
4 #include "ConfigurationProcessing.hpp"
78
9744ec195be3 Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 66
diff changeset
5 #include "CachedEditDistance.hpp"
40
f711ddb56ae7 Sort up includes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 34
diff changeset
6 #include "SqliteDBLink.hpp"
f711ddb56ae7 Sort up includes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 34
diff changeset
7
28
b2c2c2bf2bbd Refactor Exceptions into a separate directory.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 17
diff changeset
8 #include "Exception/PermissionException.hpp"
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
9
100
f4ebbfa3ffae Beautify progressreport update, and do lstat rather than stat when checking if a file is a link
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 96
diff changeset
10 #include <QtCore/QDebug>
9
b5943e4bf676 Fix up header includes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 8
diff changeset
11 #include <QtCore/QTimer>
5
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
12 #include <QtCore/QUrl>
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
13
9
b5943e4bf676 Fix up header includes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 8
diff changeset
14 #include <QtGui/QApplication>
b5943e4bf676 Fix up header includes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 8
diff changeset
15 #include <QtGui/QDesktopServices>
b5943e4bf676 Fix up header includes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 8
diff changeset
16 #include <QtGui/QDoubleSpinBox>
b5943e4bf676 Fix up header includes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 8
diff changeset
17 #include <QtGui/QHBoxLayout>
b5943e4bf676 Fix up header includes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 8
diff changeset
18 #include <QtGui/QLabel>
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
19 #include <QtGui/QMainWindow>
9
b5943e4bf676 Fix up header includes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 8
diff changeset
20 #include <QtGui/QMenuBar>
5
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
21 #include <QtGui/QMessageBox>
9
b5943e4bf676 Fix up header includes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 8
diff changeset
22 #include <QtGui/QProgressBar>
b5943e4bf676 Fix up header includes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 8
diff changeset
23 #include <QtGui/QToolBar>
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
24 #include <QtGui/QTreeWidget>
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
25
10
ec87a79770ee Use boost find, to work around problems with QDir.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 9
diff changeset
26 #include <boost/filesystem.hpp>
ec87a79770ee Use boost find, to work around problems with QDir.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 9
diff changeset
27
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
28 void DataController::findFiles(const QDir& dir, QStringList& list)
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
29 {
106
95fb1bcf7e24 Constant for turning follow symlinks on and off.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 104
diff changeset
30 const bool FOLLOW_SYMLINKS = false;
10
ec87a79770ee Use boost find, to work around problems with QDir.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 9
diff changeset
31 #if USE_BOOST_FIND
ec87a79770ee Use boost find, to work around problems with QDir.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 9
diff changeset
32 namespace fs = boost::filesystem;
ec87a79770ee Use boost find, to work around problems with QDir.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 9
diff changeset
33 fs::path someDir(dir.path().toStdString());
ec87a79770ee Use boost find, to work around problems with QDir.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 9
diff changeset
34 fs::directory_iterator end_iter;
84
848496a57039 If a filepath cannot be interpreted, make this a non-critical error.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 78
diff changeset
35 boost::system::error_code ec;
10
ec87a79770ee Use boost find, to work around problems with QDir.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 9
diff changeset
36
ec87a79770ee Use boost find, to work around problems with QDir.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 9
diff changeset
37 if ( fs::exists(someDir) && fs::is_directory(someDir)) {
84
848496a57039 If a filepath cannot be interpreted, make this a non-critical error.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 78
diff changeset
38 for( fs::directory_iterator dir_iter(someDir, ec) ;
64
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
39 dir_iter != end_iter ; ++dir_iter) {
84
848496a57039 If a filepath cannot be interpreted, make this a non-critical error.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 78
diff changeset
40 std::wstring wpath;
848496a57039 If a filepath cannot be interpreted, make this a non-critical error.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 78
diff changeset
41 try {
848496a57039 If a filepath cannot be interpreted, make this a non-critical error.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 78
diff changeset
42 wpath = dir_iter->path().wstring();
848496a57039 If a filepath cannot be interpreted, make this a non-critical error.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 78
diff changeset
43 }
848496a57039 If a filepath cannot be interpreted, make this a non-critical error.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 78
diff changeset
44 catch (boost::system::system_error &e) {
848496a57039 If a filepath cannot be interpreted, make this a non-critical error.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 78
diff changeset
45 printf("%s\n", dir_iter->path().c_str());
89
cfd2a417475a Avoid multiple filesystem searches.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 84
diff changeset
46 std::cout << e.what() << std::endl;
10
ec87a79770ee Use boost find, to work around problems with QDir.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 9
diff changeset
47 }
84
848496a57039 If a filepath cannot be interpreted, make this a non-critical error.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 78
diff changeset
48 if (!wpath.empty()) {
106
95fb1bcf7e24 Constant for turning follow symlinks on and off.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 104
diff changeset
49 if (fs::is_directory(FOLLOW_SYMLINKS?
95fb1bcf7e24 Constant for turning follow symlinks on and off.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 104
diff changeset
50 dir_iter->status():
95fb1bcf7e24 Constant for turning follow symlinks on and off.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 104
diff changeset
51 dir_iter->symlink_status())
95fb1bcf7e24 Constant for turning follow symlinks on and off.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 104
diff changeset
52 ) {
84
848496a57039 If a filepath cannot be interpreted, make this a non-critical error.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 78
diff changeset
53 findFiles(QString::fromStdWString(wpath), list);
848496a57039 If a filepath cannot be interpreted, make this a non-critical error.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 78
diff changeset
54 }
106
95fb1bcf7e24 Constant for turning follow symlinks on and off.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 104
diff changeset
55 else if (fs::is_regular_file(dir_iter->symlink_status()) ) {
84
848496a57039 If a filepath cannot be interpreted, make this a non-critical error.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 78
diff changeset
56 list << QString::fromStdWString(wpath);
848496a57039 If a filepath cannot be interpreted, make this a non-critical error.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 78
diff changeset
57 }
10
ec87a79770ee Use boost find, to work around problems with QDir.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 9
diff changeset
58 }
ec87a79770ee Use boost find, to work around problems with QDir.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 9
diff changeset
59 }
ec87a79770ee Use boost find, to work around problems with QDir.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 9
diff changeset
60 }
ec87a79770ee Use boost find, to work around problems with QDir.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 9
diff changeset
61 #else
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
62 foreach(QString filename, dir.entryList(QDir::NoDotAndDotDot | QDir::Dirs)) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
63 filename = dir.absoluteFilePath(filename);
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
64 findFiles(QDir(filename), list);
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
65 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
66
5
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
67 foreach(QString filename, dir.entryList(QDir::Files | QDir::NoSymLinks)) {
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
68 list << dir.absoluteFilePath(filename);
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
69 }
10
ec87a79770ee Use boost find, to work around problems with QDir.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 9
diff changeset
70 #endif
ec87a79770ee Use boost find, to work around problems with QDir.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 9
diff changeset
71
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
72 }
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
73
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
74 QStringList DataController::findFiles(const QDir& dir)
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
75 {
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
76 QStringList list;
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
77 findFiles(dir, list);
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
78 return list;
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
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
81 void DataController::findFiles(const QDir& dir, FileDBLink& dblink)
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
82 {
89
cfd2a417475a Avoid multiple filesystem searches.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 84
diff changeset
83 QStringList paths = findFiles(dir);
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
84
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
85 QDateTime last = QDateTime::currentDateTime();
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
86
100
f4ebbfa3ffae Beautify progressreport update, and do lstat rather than stat when checking if a file is a link
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 96
diff changeset
87 qDebug() << "Start Delete";
f4ebbfa3ffae Beautify progressreport update, and do lstat rather than stat when checking if a file is a link
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 96
diff changeset
88 dblink.keepOnlyFromPrefix(dir.path(), paths, true);
104
6bc013d5788b Avoid unnecessary updates.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 100
diff changeset
89 dblink.commit(dir.path(), false);
100
f4ebbfa3ffae Beautify progressreport update, and do lstat rather than stat when checking if a file is a link
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 96
diff changeset
90 qDebug() << "End Delete";
5
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
91
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
92 std::auto_ptr<QProgressBar> bar;
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
93
89
cfd2a417475a Avoid multiple filesystem searches.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 84
diff changeset
94 progressMax = paths.size();
5
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
95
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
96 if (showGUI) {
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
97 bar = std::auto_ptr<QProgressBar>(new QProgressBar());
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
98
5
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
99 bar->resize(200,25);
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
100 bar->setValue(0);
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
101 bar->setMinimum(0);
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
102 bar->setMaximum(progressMax);
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
103 bar->show();
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
104
64
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
105 connect(this, SIGNAL(populateProgress(int)),
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
106 bar.get(), SLOT(setValue(int)));
5
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
107 }
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
108
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
109 int n = 0;
93
308a718812ba Small refactoring to allow lazy commits.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 89
diff changeset
110 int max = paths.size();
308a718812ba Small refactoring to allow lazy commits.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 89
diff changeset
111 emit populateProgress(n, max);
89
cfd2a417475a Avoid multiple filesystem searches.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 84
diff changeset
112
cfd2a417475a Avoid multiple filesystem searches.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 84
diff changeset
113 foreach(QString filename, paths) {
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
114 try {
93
308a718812ba Small refactoring to allow lazy commits.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 89
diff changeset
115 dblink.updateIfModified(filename, true);
0
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 catch (const PermissionException& e) {
14
e60d6caceb62 Fix error in boost findfile traversal.
Tom Fredrik Blenning Klaussen <bfg@sim.no>
parents: 10
diff changeset
118 dblink.deleteFileFromDB(filename);
e60d6caceb62 Fix error in boost findfile traversal.
Tom Fredrik Blenning Klaussen <bfg@sim.no>
parents: 10
diff changeset
119 }
e60d6caceb62 Fix error in boost findfile traversal.
Tom Fredrik Blenning Klaussen <bfg@sim.no>
parents: 10
diff changeset
120 catch (const IOException& e) {
64
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
121 //FIXME: We have some strange errors, avoid them by ignoring
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
122 //them for now
14
e60d6caceb62 Fix error in boost findfile traversal.
Tom Fredrik Blenning Klaussen <bfg@sim.no>
parents: 10
diff changeset
123 dblink.deleteFileFromDB(filename);
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 catch (Exception& e) {
8
d7b384b4a834 Fix compilation problems.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 7
diff changeset
126 e.raise();
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
127 }
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
128
93
308a718812ba Small refactoring to allow lazy commits.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 89
diff changeset
129 emit populateProgress(++n, max);
34
fda70a362ed5 Remove whitespace.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 31
diff changeset
130
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
131 QDateTime now = QDateTime::currentDateTime();
66
a60c26e34d1a Avoid apprent hang in beginning, now application shows, but appears frosen.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 64
diff changeset
132 if (last.msecsTo(now) > 1000) {
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
133 QCoreApplication::processEvents();
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
134 last = now;
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
135 }
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
136 }
96
c7da835ea912 Support for prefix in commit.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 93
diff changeset
137 dblink.commit(dir.path());
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
138
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
139 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
140
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
141
1
aae83c0a771d Refactor:
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 0
diff changeset
142 QTreeWidgetItem* DataController::createItem(const FileDBLink::DBInfo& info)
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
143 {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
144 QTreeWidgetItem* item = new QTreeWidgetItem();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
145 item->setData(0, Qt::DisplayRole, info.name());
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
146 item->setData(0, 32, info.path());
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
147 item->setData(0, 33, info.name());
34
fda70a362ed5 Remove whitespace.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 31
diff changeset
148
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
149 item->setData(1, Qt::DisplayRole, info.size());
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
150 item->setData(2, Qt::DisplayRole, info.mtime());
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
151 item->setData(3, Qt::DisplayRole, info.checksum().toHex());
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
152 return item;
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
153 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
154
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
155 void DataController::delayPopulate()
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
156 {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
157 populateDelay->start();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
158 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
159
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
160
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
161 void DataController::populate()
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
162 {
64
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
163 populate(nameFilter->isChecked(), sizeFilter->isChecked(),
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
164 mtimeFilter->isChecked(),
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
165 checksumFilter->isChecked(),
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
166 (100 - editCutoffSpin->value()) * .01);
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
167 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
168
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
169 void DataController::populate(bool showNameDups, bool showSizeDups,
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
170 bool showMTimeDups, bool showCheckSumDups,
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
171 float editDistanceCutoff)
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
172 {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
173 tw->clear();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
174
64
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
175 const QList<QSharedPointer<FileDBLink::DBInfo> > elems =
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
176 dblink->values(dir.path());
0
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 QProgressBar bar;
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 bar.resize(200,25);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
181 bar.setValue(0);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
182 bar.setMinimum(0);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
183 bar.setMaximum(elems.size());
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
184 bar.show();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
185
64
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
186 connect(this, SIGNAL(populateProgress(int)),
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
187 &bar, SLOT(setValue(int)));
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
188
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
189 int n = 0;
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
190
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
191 tw->setUpdatesEnabled(false);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
192
34
fda70a362ed5 Remove whitespace.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 31
diff changeset
193
3
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
194 QMultiMap<QString, QSharedPointer<FileDBLink::DBInfo> > nameLUP;
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
195 QMultiMap<quint64, QSharedPointer<FileDBLink::DBInfo> > sizeLUP;
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
196 QMultiMap<QDateTime, QSharedPointer<FileDBLink::DBInfo> > mtimeLUP;
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
197 QMultiMap<QByteArray, QSharedPointer<FileDBLink::DBInfo> > checksumLUP;
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
198
93
308a718812ba Small refactoring to allow lazy commits.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 89
diff changeset
199 int max = elems.size() - 1;
308a718812ba Small refactoring to allow lazy commits.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 89
diff changeset
200
3
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
201 foreach(QSharedPointer<FileDBLink::DBInfo> line, elems) {
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
202 if (showNameDups) {
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
203 nameLUP.insertMulti(line->name(), line);
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
204 }
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
205 if (showSizeDups) {
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
206 sizeLUP.insertMulti(line->size(), line);
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
207 }
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
208 if (showMTimeDups) {
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
209 mtimeLUP.insertMulti(line->mtime(), line);
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
210 }
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
211 if (showCheckSumDups) {
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
212 checksumLUP.insertMulti(line->checksum(), line);
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
213 }
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
214 }
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
215
1
aae83c0a771d Refactor:
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 0
diff changeset
216 foreach(QSharedPointer<FileDBLink::DBInfo> line, elems) {
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
217 QTreeWidgetItem* item = 0;
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
218
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
219 if (showNameDups) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
220 QTreeWidgetItem* topLevelItem = 0;
64
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
221 foreach(QSharedPointer<FileDBLink::DBInfo> dup,
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
222 nameLUP.values(line->name())) {
3
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
223 if(dup != line) {
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
224 if (!topLevelItem) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
225 topLevelItem = new QTreeWidgetItem();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
226 topLevelItem->setData(0, Qt::DisplayRole, "Name");
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
227 if(!item)
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
228 item = createItem(*line);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
229 item->addChild(topLevelItem);
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 topLevelItem->addChild(createItem(*dup));
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
232 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
233 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
234 }
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 if (showSizeDups) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
237 QTreeWidgetItem* topLevelItem = 0;
64
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
238 foreach(QSharedPointer<FileDBLink::DBInfo> dup,
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
239 sizeLUP.values(line->size())) {
3
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
240 if(dup != line ) {
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
241 if (!topLevelItem) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
242 topLevelItem = new QTreeWidgetItem();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
243 topLevelItem->setData(0, Qt::DisplayRole, "Size");
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
244 if(!item)
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
245 item = createItem(*line);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
246 item->addChild(topLevelItem);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
247 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
248 topLevelItem->addChild(createItem(*dup));
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
249 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
250 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
251 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
252
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
253 if (showMTimeDups) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
254 QTreeWidgetItem* topLevelItem = 0;
64
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
255 foreach(QSharedPointer<FileDBLink::DBInfo> dup,
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
256 mtimeLUP.values(line->mtime())) {
3
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
257 if(dup != line ) {
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
258 if (!topLevelItem) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
259 topLevelItem = new QTreeWidgetItem();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
260 topLevelItem->setData(0, Qt::DisplayRole, "MTime");
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
261 if(!item)
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
262 item = createItem(*line);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
263 item->addChild(topLevelItem);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
264 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
265 topLevelItem->addChild(createItem(*dup));
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
266 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
267 }
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 if (showCheckSumDups) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
271 QTreeWidgetItem* topLevelItem = 0;
64
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
272 foreach(QSharedPointer<FileDBLink::DBInfo> dup,
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
273 checksumLUP.values(line->checksum())) {
3
7a44ba08673d Using LUTs for all filters.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 2
diff changeset
274 if(dup != line) {
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
275 if (!topLevelItem) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
276 topLevelItem = new QTreeWidgetItem();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
277 topLevelItem->setData(0, Qt::DisplayRole, "Checksum");
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
278 if(!item)
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
279 item = createItem(*line);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
280 item->addChild(topLevelItem);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
281 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
282 topLevelItem->addChild(createItem(*dup));
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
283 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
284 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
285 }
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 if (editDistanceCutoff < 1.0) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
288 QTreeWidgetItem* topLevelItem = 0;
1
aae83c0a771d Refactor:
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 0
diff changeset
289 QMultiMap<int, QSharedPointer<FileDBLink::DBInfo> > oList;
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
290
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
291 int absoluteCutoff = line->name().length() * editDistanceCutoff;
1
aae83c0a771d Refactor:
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 0
diff changeset
292 foreach(QSharedPointer<FileDBLink::DBInfo> dup, elems) {
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
293 if(dup != line) {
78
9744ec195be3 Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 66
diff changeset
294 int distance = CachedEditDistance::Compute(line->name(), dup->name());
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
295
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
296 if (distance <= absoluteCutoff) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
297 oList.insert(distance, dup);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
298 }
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 }
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 if (oList.size() > 0 ) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
303 topLevelItem = new QTreeWidgetItem();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
304 topLevelItem->setData(0, Qt::DisplayRole, "Editdistance");
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
305 if(!item)
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
306 item = createItem(*line);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
307 item->addChild(topLevelItem);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
308 }
34
fda70a362ed5 Remove whitespace.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 31
diff changeset
309
1
aae83c0a771d Refactor:
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 0
diff changeset
310 foreach(QSharedPointer<FileDBLink::DBInfo> dup, oList.values()) {
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
311 topLevelItem->addChild(createItem(*dup));
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
312 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
313 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
314
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
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
317 if (item)
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
318 tw->addTopLevelItem(item);
93
308a718812ba Small refactoring to allow lazy commits.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 89
diff changeset
319 emit populateProgress(++n, max);
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
320 if (n % 64 == 0) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
321 QCoreApplication::processEvents();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
322 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
323 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
324 tw->setUpdatesEnabled(true);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
325
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
326 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
327
5
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
328 void DataController::contextMenuRequested(const QPoint& point)
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
329 {
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
330 contextMenuItem = tw->itemAt(point);
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
331 if (!contextMenu) {
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
332 contextMenu = new QMenu(tw);
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
333 QAction* deleteAction = contextMenu->addAction("Delete");
34
fda70a362ed5 Remove whitespace.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 31
diff changeset
334 connect(deleteAction, SIGNAL(triggered()), this, SLOT(deleteFile()));
5
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
335 }
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
336 contextMenu->popup(tw->mapToGlobal(point));
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
337 }
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
338
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
339
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
340 void DataController::setDir(const QDir& dir)
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
341 {
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
342 this->dir = dir.absolutePath();
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
343 }
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
344
4
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
345 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
346 {
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
347 findFiles(dir, *dblink);
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
348 }
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
349
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
350
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
351 void DataController::setupGUI()
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
352 {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
353 populateDelay = new QTimer(this);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
354 populateDelay->setSingleShot(true);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
355 populateDelay->setInterval(500);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
356 connect(populateDelay, SIGNAL(timeout()), this, SLOT(populate()));
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
357
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
358 mw = new QMainWindow();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
359 QMenuBar* mb = new QMenuBar();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
360
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
361 QMenu* menu = mb->addMenu("&View");
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
362 QAction* action = menu->addAction("Show full path");
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
363 action->setCheckable(true);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
364 connect(action, SIGNAL(toggled(bool)), this, SLOT(setShowFullPath(bool)));
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
365
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
366 mw->setMenuBar(mb);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
367
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
368 QToolBar* filterBar = new QToolBar("Filters");
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
369
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
370 nameFilter = filterBar->addAction("Name");
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
371 nameFilter->setCheckable(true);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
372 connect(nameFilter, SIGNAL(toggled(bool)), this, SLOT(delayPopulate()));
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
373
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
374 sizeFilter = filterBar->addAction("Size");
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
375 sizeFilter->setCheckable(true);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
376 connect(sizeFilter, SIGNAL(toggled(bool)), this, SLOT(delayPopulate()));
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
377
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
378 mtimeFilter = filterBar->addAction("MTime");
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
379 mtimeFilter->setCheckable(true);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
380 connect(mtimeFilter, SIGNAL(toggled(bool)), this, SLOT(delayPopulate()));
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
381
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
382 checksumFilter = filterBar->addAction("Checksum");
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
383 checksumFilter->setCheckable(true);
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
384 checksumFilter->setChecked(true);
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
385 connect(checksumFilter, SIGNAL(toggled(bool)), this, SLOT(delayPopulate()));
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
386
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
387 QWidget* widget = new QWidget();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
388 QLayout* layout = new QHBoxLayout();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
389 layout->setContentsMargins(0,0,0,0);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
390 widget->setLayout(layout);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
391 layout->addWidget(new QLabel("Edit distance", widget));
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
392 editCutoffSpin = new QSpinBox(widget);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
393 layout->addWidget(editCutoffSpin);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
394 editCutoffSpin->setMinimum(0);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
395 editCutoffSpin->setMaximum(100);
2
2833b7f8884a Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 1
diff changeset
396 editCutoffSpin->setValue(0);
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
397 editCutoffSpin->setSingleStep(10);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
398 editCutoffSpin->setSuffix("%");
64
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
399 connect(editCutoffSpin, SIGNAL(valueChanged(int)),
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
400 this, SLOT(delayPopulate()));
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
401 filterBar->addWidget(widget);
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 mw->addToolBar(filterBar);
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 tw = new QTreeWidget(mw);
5
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
406 tw->setContextMenuPolicy( Qt::CustomContextMenu);
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
407 connect(tw, SIGNAL(customContextMenuRequested (const QPoint&)),
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
408 this, SLOT(contextMenuRequested(const QPoint&)));
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
409 connect(tw, SIGNAL(itemDoubleClicked(QTreeWidgetItem*, int)),
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
410 this, SLOT(itemDoubleClicked(QTreeWidgetItem*, int)));
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
411
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
412 mw->setCentralWidget(tw);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
413 tw->setEditTriggers(QAbstractItemView::NoEditTriggers);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
414
34
fda70a362ed5 Remove whitespace.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 31
diff changeset
415 tw->setHeaderLabels(QString("Path;Size;Date;Checksum").split(";"));
0
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 tw->setSortingEnabled(true);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
418 tw->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
419 tw->setSelectionBehavior(QAbstractItemView::SelectRows);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
420 //tw->resizeColumnsToContents();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
421 mw->resize(800,800);
66
a60c26e34d1a Avoid apprent hang in beginning, now application shows, but appears frosen.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 64
diff changeset
422 mw->setEnabled(false);
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
423 mw->show();
4
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
424 }
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
425
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
426
4
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
427 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
428 {
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
429 setup(QString(), path, showGUI);
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
430 }
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
431
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
432 DataController::DataController(bool showGUI)
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
433 {
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
434 setup(QString(), QString(), showGUI);
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
435 }
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
436
93
308a718812ba Small refactoring to allow lazy commits.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 89
diff changeset
437 void DataController::progressUpdate(int p, int max)
5
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
438 {
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
439 QString str;
100
f4ebbfa3ffae Beautify progressreport update, and do lstat rather than stat when checking if a file is a link
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 96
diff changeset
440 if (max == 0) {
f4ebbfa3ffae Beautify progressreport update, and do lstat rather than stat when checking if a file is a link
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 96
diff changeset
441 str.sprintf("Progress %6.2f%%", 100.0);
8
d7b384b4a834 Fix compilation problems.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 7
diff changeset
442 }
d7b384b4a834 Fix compilation problems.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 7
diff changeset
443 else {
100
f4ebbfa3ffae Beautify progressreport update, and do lstat rather than stat when checking if a file is a link
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 96
diff changeset
444 if (p == 0)
f4ebbfa3ffae Beautify progressreport update, and do lstat rather than stat when checking if a file is a link
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 96
diff changeset
445 str.sprintf("Progress %6.2f%%", p * 100.0 / max);
f4ebbfa3ffae Beautify progressreport update, and do lstat rather than stat when checking if a file is a link
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 96
diff changeset
446 else if (p == max) {
f4ebbfa3ffae Beautify progressreport update, and do lstat rather than stat when checking if a file is a link
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 96
diff changeset
447 str.sprintf("\b\b\b\b\b\b\b%6.2f%%\n", 100.0);
f4ebbfa3ffae Beautify progressreport update, and do lstat rather than stat when checking if a file is a link
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 96
diff changeset
448 }
f4ebbfa3ffae Beautify progressreport update, and do lstat rather than stat when checking if a file is a link
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 96
diff changeset
449 else {
f4ebbfa3ffae Beautify progressreport update, and do lstat rather than stat when checking if a file is a link
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 96
diff changeset
450 str.sprintf("\b\b\b\b\b\b\b%6.2f%%", p * 100.0 / max);
f4ebbfa3ffae Beautify progressreport update, and do lstat rather than stat when checking if a file is a link
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 96
diff changeset
451 }
f4ebbfa3ffae Beautify progressreport update, and do lstat rather than stat when checking if a file is a link
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 96
diff changeset
452 }
f4ebbfa3ffae Beautify progressreport update, and do lstat rather than stat when checking if a file is a link
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 96
diff changeset
453 if (p == max) {
f4ebbfa3ffae Beautify progressreport update, and do lstat rather than stat when checking if a file is a link
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 96
diff changeset
454 str+="\n";
8
d7b384b4a834 Fix compilation problems.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 7
diff changeset
455 }
5
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
456 std::cout<<str.toStdString();
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
457 std::cout.flush();
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
458 }
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
459
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
460
93
308a718812ba Small refactoring to allow lazy commits.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 89
diff changeset
461 void DataController::progressUpdate(int p)
308a718812ba Small refactoring to allow lazy commits.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 89
diff changeset
462 {
308a718812ba Small refactoring to allow lazy commits.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 89
diff changeset
463 progressUpdate(p, progressMax);
308a718812ba Small refactoring to allow lazy commits.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 89
diff changeset
464 }
308a718812ba Small refactoring to allow lazy commits.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 89
diff changeset
465
308a718812ba Small refactoring to allow lazy commits.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 89
diff changeset
466
5
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
467 void DataController::deleteFile()
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
468 {
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
469 QString path = contextMenuItem->data(0, 32).toString();
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
470 QMessageBox::StandardButton button =
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
471 QMessageBox::question(tw, "Confirm delete",
64
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
472 QString("Do you really want to delete \"%1\"?")
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
473 .arg(path),
5
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
474 QMessageBox::Cancel | QMessageBox::Ok,
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
475 QMessageBox::Cancel);
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
476 if (button == QMessageBox::Ok) {
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
477 QFile file(path);
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
478 if (file.remove()) {
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
479 dblink->deleteFileFromDB(path);
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
480 populate();
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
481 }
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
482 else {
64
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
483 QMessageBox::warning(tw, "Delete failed",
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
484 QString("Could not delete \"%1\"?")
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
485 .arg(file.fileName()));
5
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
486 }
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
487 }
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
488 }
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
489
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
490
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
491 void DataController::itemDoubleClicked (QTreeWidgetItem * item, int column)
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
492 {
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
493 QUrl url = QUrl::fromLocalFile(item->data(0, 32).toString());
34
fda70a362ed5 Remove whitespace.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 31
diff changeset
494 QDesktopServices::openUrl(url);
5
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
495 }
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
496
64
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
497 void DataController::setup(const QString& dbpath_in,
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
498 const QString& searchPath_in, bool showGUI)
4
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
499 {
5
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
500 this->showGUI = showGUI;
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
501
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
502 contextMenu = 0;
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
503
93
308a718812ba Small refactoring to allow lazy commits.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 89
diff changeset
504 connect(this, SIGNAL(populateProgress(int, int)),
64
b9515dc35fe4 Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
505 this, SLOT(progressUpdate(int)));
5
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
506
4
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
507 QString dbpath;
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
508 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
509 dbpath = dbpath_in;
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
510 }
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
511 else {
16
06166d6c083b Add configuration processing.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 14
diff changeset
512 dbpath = processSetupVariables(DB_DEFAULT_LOCATION);
4
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
513 }
7
d6fdca3bf24e Make sure everything works for MemoryDBLink.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 5
diff changeset
514
d6fdca3bf24e Make sure everything works for MemoryDBLink.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 5
diff changeset
515 #if 1
4
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
516 dblink = new SqliteDBLink(dbpath);
7
d6fdca3bf24e Make sure everything works for MemoryDBLink.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 5
diff changeset
517 #else
d6fdca3bf24e Make sure everything works for MemoryDBLink.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 5
diff changeset
518 dblink = new MemoryDBLink();
d6fdca3bf24e Make sure everything works for MemoryDBLink.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 5
diff changeset
519 #endif
4
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
520
93
308a718812ba Small refactoring to allow lazy commits.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 89
diff changeset
521 connect(dblink, SIGNAL(progressUpdate(int, int)),
308a718812ba Small refactoring to allow lazy commits.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 89
diff changeset
522 this, SLOT(progressUpdate(int, int)));
308a718812ba Small refactoring to allow lazy commits.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 89
diff changeset
523
308a718812ba Small refactoring to allow lazy commits.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 89
diff changeset
524
308a718812ba Small refactoring to allow lazy commits.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 89
diff changeset
525
4
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
526 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
527
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
528 showFullPath = false;
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
529
66
a60c26e34d1a Avoid apprent hang in beginning, now application shows, but appears frosen.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 64
diff changeset
530 if (showGUI) {
4
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
531 setupGUI();
78
9744ec195be3 Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 66
diff changeset
532
66
a60c26e34d1a Avoid apprent hang in beginning, now application shows, but appears frosen.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 64
diff changeset
533 QTimer* populator = new QTimer(this);
a60c26e34d1a Avoid apprent hang in beginning, now application shows, but appears frosen.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 64
diff changeset
534 populator->setSingleShot(true);
a60c26e34d1a Avoid apprent hang in beginning, now application shows, but appears frosen.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 64
diff changeset
535 populator->setInterval(50);
a60c26e34d1a Avoid apprent hang in beginning, now application shows, but appears frosen.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 64
diff changeset
536 connect(populator, SIGNAL(timeout()), this, SLOT(initialPopulate()));
a60c26e34d1a Avoid apprent hang in beginning, now application shows, but appears frosen.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 64
diff changeset
537 populator->start();
a60c26e34d1a Avoid apprent hang in beginning, now application shows, but appears frosen.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 64
diff changeset
538 }
a60c26e34d1a Avoid apprent hang in beginning, now application shows, but appears frosen.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 64
diff changeset
539 else {
a60c26e34d1a Avoid apprent hang in beginning, now application shows, but appears frosen.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 64
diff changeset
540 buildDB(dir);
a60c26e34d1a Avoid apprent hang in beginning, now application shows, but appears frosen.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 64
diff changeset
541 }
a60c26e34d1a Avoid apprent hang in beginning, now application shows, but appears frosen.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 64
diff changeset
542 }
a60c26e34d1a Avoid apprent hang in beginning, now application shows, but appears frosen.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 64
diff changeset
543
a60c26e34d1a Avoid apprent hang in beginning, now application shows, but appears frosen.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 64
diff changeset
544 void DataController::initialPopulate()
a60c26e34d1a Avoid apprent hang in beginning, now application shows, but appears frosen.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 64
diff changeset
545 {
4
f489b0c9bf99 Refactored to allow commandline tools to use DataController.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
546 buildDB(dir);
66
a60c26e34d1a Avoid apprent hang in beginning, now application shows, but appears frosen.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 64
diff changeset
547 populate();
a60c26e34d1a Avoid apprent hang in beginning, now application shows, but appears frosen.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents: 64
diff changeset
548 mw->setEnabled(true);
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
549 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
550
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
551 DataController::~DataController()
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
552 {
17
9a1825df8418 Plug memoryleaks.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 16
diff changeset
553 delete dblink;
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
554 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
555
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
556
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
557 void DataController::cellDoubleClicked(int row, int column)
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
558 {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
559 if(column == 0) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
560 toggleShowFullPath();
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
561 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
562 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
563
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
564
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
565 void DataController::setShowFullPath(bool showFullPath)
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
566 {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
567 this->showFullPath = showFullPath;
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
568
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
569 tw->setSortingEnabled(false);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
570
5
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
571 int role = (showFullPath) ? 32 : 33;
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
572 for (int row = 0; row < tw->topLevelItemCount(); ++row) {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
573 QTreeWidgetItem* pathItem = tw->topLevelItem(row);
5
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
574 pathItem->setData(0, Qt::DisplayRole, pathItem->data(0, role));
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
575 setShowFullPath(pathItem, showFullPath);
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
576 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
577 tw->setSortingEnabled(true);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
578 }
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
579
5
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
580 void DataController::setShowFullPath(QTreeWidgetItem* item, bool showFullPath)
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
581 {
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
582 int role = (showFullPath) ? 32 : 33;
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
583 for (int row = 0; row < item->childCount(); ++row) {
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
584 QTreeWidgetItem* child = item->child(row);
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
585 QVariant data = child->data(0,role);
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
586 if (data.isValid())
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
587 child->setData(0, Qt::DisplayRole, data);
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
588 setShowFullPath(child, showFullPath);
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
589 }
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
590 }
5e4985407feb Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
591
0
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
592 bool DataController::toggleShowFullPath()
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
593 {
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
594 bool showFullPath = ! this->showFullPath;
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
595 setShowFullPath(showFullPath);
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
596 return showFullPath;
a3834af36579 Working with memory backend.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
597 }