From bd10a28d5189a3d15bb34de22333730974f8e4fb Mon Sep 17 00:00:00 2001 From: "Robert C. Helling" Date: Mon, 23 Feb 2015 14:50:11 +0100 Subject: [PATCH 4/4] Add UI for update image hash Signed-off-by: Robert C. Helling --- qt-ui/divepicturewidget.cpp | 2 +- qt-ui/mainwindow.cpp | 20 +++++++++++++++++++- qt-ui/mainwindow.h | 1 + qt-ui/mainwindow.ui | 8 +++++++- qthelper.cpp | 2 ++ 5 files changed, 30 insertions(+), 3 deletions(-) diff --git a/qt-ui/divepicturewidget.cpp b/qt-ui/divepicturewidget.cpp index 9a4a7e3..20f5fa0 100644 --- a/qt-ui/divepicturewidget.cpp +++ b/qt-ui/divepicturewidget.cpp @@ -45,7 +45,7 @@ SPixmap scaleImages(picturepointer picture) static QHash cache; SPixmap ret; ret.first = picture; - if (cache.contains(picture->filename)) { + if (cache.contains(picture->filename) && !cache.value(picture->filename).isNull()) { ret.second = cache.value(picture->filename); } else { int dim = defaultIconMetrics().sz_pic; diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp index a0fbaeb..f2d7869 100644 --- a/qt-ui/mainwindow.cpp +++ b/qt-ui/mainwindow.cpp @@ -38,6 +38,7 @@ #include #include #include +#include MainWindow *MainWindow::m_Instance = NULL; @@ -52,7 +53,6 @@ MainWindow::MainWindow() : QMainWindow(), m_Instance = this; ui.setupUi(this); read_hashes(); - learnImages(QDir("/Users/helling/Pictures/subsurfaceimages.away"), 3); // Define the States of the Application Here, Currently the states are situations where the different // widgets will change on the mainwindow. @@ -319,6 +319,24 @@ void MainWindow::on_actionSaveAs_triggered() file_save_as(); } +void MainWindow::on_actionHash_images_triggered() +{ + QFileDialog dialog(this, tr("Traverse image directories"), lastUsedDir(), filter()); + dialog.setFileMode(QFileDialog::Directory); + dialog.setViewMode(QFileDialog::Detail); + dialog.setLabelText(QFileDialog::Accept, tr("Scan")); + dialog.setLabelText(QFileDialog::Reject, tr("Cancel")); + QStringList dirnames; + if (dialog.exec()) + dirnames = dialog.selectedFiles(); + if (dirnames.isEmpty()) + return; + foreach (QString dir, dirnames) { + QtConcurrent::run(learnImages, QDir(dir), 10); + } + +} + ProfileWidget2 *MainWindow::graphics() const { return qobject_cast(applicationState["Default"].topRight->layout()->itemAt(1)->widget()); diff --git a/qt-ui/mainwindow.h b/qt-ui/mainwindow.h index 1782953..55f08ef 100644 --- a/qt-ui/mainwindow.h +++ b/qt-ui/mainwindow.h @@ -107,6 +107,7 @@ slots: void on_actionPrint_triggered(); void on_actionPreferences_triggered(); void on_actionQuit_triggered(); + void on_actionHash_images_triggered(); /* log menu actions */ void on_actionDownloadDC_triggered(); diff --git a/qt-ui/mainwindow.ui b/qt-ui/mainwindow.ui index b6cd4a3..41a85bf 100644 --- a/qt-ui/mainwindow.ui +++ b/qt-ui/mainwindow.ui @@ -50,7 +50,7 @@ 0 0 861 - 25 + 22 @@ -67,6 +67,7 @@ + @@ -690,6 +691,11 @@ Ctrl+Shift+Z + + + Hash images + + diff --git a/qthelper.cpp b/qthelper.cpp index a784e57..09d84d8 100644 --- a/qthelper.cpp +++ b/qthelper.cpp @@ -26,6 +26,7 @@ #include #include #include +#include "divepicturewidget.h" #include @@ -480,4 +481,5 @@ void learnImages(const QDir &dir, int maxdepth) } QtConcurrent::blockingMap(files, learnImage); + DivePictureModel::instance()->updateDivePictures(); } -- 1.9.3 (Apple Git-50)