aboutsummaryrefslogtreecommitdiff
path: root/qdeduper/sigdb_qt.cpp
diff options
context:
space:
mode:
authorGravatar Chris Xiong <chirs241097@gmail.com> 2022-09-23 12:58:55 -0400
committerGravatar Chris Xiong <chirs241097@gmail.com> 2022-09-23 12:58:55 -0400
commitaa50f0049e6f81470fcda0935ca3da661bc7e37e (patch)
tree0e678011219dd0084c88e0d624931b14ac6f1e16 /qdeduper/sigdb_qt.cpp
parentb41305a7ef92977fe24d365393242e963ceed40f (diff)
downloaddeduper-aa50f0049e6f81470fcda0935ca3da661bc7e37e.tar.xz
Load database into in-memory database. Show the progress dialog while loading.
Diffstat (limited to 'qdeduper/sigdb_qt.cpp')
-rw-r--r--qdeduper/sigdb_qt.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/qdeduper/sigdb_qt.cpp b/qdeduper/sigdb_qt.cpp
index 733a198..45fc55a 100644
--- a/qdeduper/sigdb_qt.cpp
+++ b/qdeduper/sigdb_qt.cpp
@@ -48,6 +48,10 @@ SignatureDB::~SignatureDB()
void SignatureDB::create_priv_struct()
{
if (!valid()) return;
+ fmap.clear();
+ frmap.clear();
+ distmap.clear();
+ this->groups.clear();
auto ids = sdb->get_image_ids();
sdb->batch_get_signature_begin();
for (auto &id : ids)
@@ -63,7 +67,6 @@ void SignatureDB::create_priv_struct()
for (auto &dupe : dupes)
distmap[std::make_pair(dupe.id1, dupe.id2)] = dupe.distance;
- sdb->group_similar();
auto gps = sdb->groups_get();
gps.erase(std::remove_if(gps.begin(), gps.end(), [](std::vector<size_t> v){ return v.size() < 2; }), gps.end());
this->groups = std::move(gps);
@@ -89,6 +92,8 @@ void SignatureDB::scan_files(const std::vector<fs::path> &files, int njobs)
Q_EMIT image_scanned(~size_t(0));
+ sdb->group_similar();
+
create_priv_struct();
}
void SignatureDB::interrupt_scan()
@@ -156,7 +161,9 @@ size_t SignatureDB::get_path_id(const fs::path& p)
bool SignatureDB::load(const fs::path &p)
{
- return sdb->from_db_file(p);
+ bool ret = sdb->from_db_file(p);
+ create_priv_struct();
+ return ret;
}
bool SignatureDB::save(const fs::path &p)