initial commit
This commit is contained in:
+168
-15
@@ -1,16 +1,44 @@
|
||||
#include "cimportdialog.h"
|
||||
#include "ui_cimportdialog.h"
|
||||
|
||||
#include "common.h"
|
||||
|
||||
#include "cpicture.h"
|
||||
|
||||
#include <QSettings>
|
||||
#include <QDir>
|
||||
#include <QFileInfoList>
|
||||
#include <QFileDialog>
|
||||
|
||||
#include <QPainter>
|
||||
|
||||
#include <QMimeDatabase>
|
||||
#include <QMimeType>
|
||||
|
||||
#include <QMessageBox>
|
||||
#include <QDebug>
|
||||
|
||||
|
||||
cImportDialog::cImportDialog(QWidget *parent) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::cImportDialog)
|
||||
{
|
||||
initUI();
|
||||
createActions();
|
||||
}
|
||||
|
||||
cImportDialog::~cImportDialog()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void cImportDialog::initUI()
|
||||
{
|
||||
ui->setupUi(this);
|
||||
ui->m_lpProgress->setVisible(false);
|
||||
|
||||
m_lpImportListModel = new QStandardItemModel;
|
||||
ui->m_lpImportList->setModel(m_lpImportListModel);
|
||||
|
||||
QSettings settings;
|
||||
|
||||
@@ -26,24 +54,21 @@ cImportDialog::cImportDialog(QWidget *parent) :
|
||||
if(iX != -1 && iY != -1)
|
||||
move(iX, iY);
|
||||
}
|
||||
|
||||
qint32 iWidth1 = settings.value("import/splitter1", QVariant::fromValue(-1)).toInt();
|
||||
qint32 iWidth2 = settings.value("import/splitter2", QVariant::fromValue(-1)).toInt();
|
||||
|
||||
ui->m_lpSplitter->setSizes(QList<int>() << iWidth1 << iWidth2);
|
||||
|
||||
ui->m_lpPath->setText(settings.value("import/path", QDir::homePath()).toString());
|
||||
}
|
||||
|
||||
cImportDialog::~cImportDialog()
|
||||
void cImportDialog::createActions()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void cImportDialog::on_m_lpPathSelect_clicked()
|
||||
{
|
||||
QSettings settings;
|
||||
QString szPath = settings.value("import/path", QDir::homePath()).toString();
|
||||
szPath = QFileDialog::getExistingDirectory(this, tr("Import Directory"), szPath, QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
|
||||
|
||||
if(szPath.isEmpty())
|
||||
return;
|
||||
|
||||
ui->m_lpPath->setText(szPath);
|
||||
settings.setValue("import/path", szPath);
|
||||
connect(ui->m_lpPathSelect, &QPushButton::clicked, this, &cImportDialog::onPathSelect);
|
||||
connect(ui->m_lpRead, &QPushButton::clicked, this, &cImportDialog::onRead);
|
||||
connect(ui->m_lpImport, &QPushButton::clicked, this, &cImportDialog::onImport);
|
||||
connect(ui->m_lpImportList->selectionModel(), &QItemSelectionModel::selectionChanged, this, &cImportDialog::onThumbnailSelected);
|
||||
}
|
||||
|
||||
void cImportDialog::closeEvent(QCloseEvent *event)
|
||||
@@ -60,3 +85,131 @@ void cImportDialog::closeEvent(QCloseEvent *event)
|
||||
|
||||
event->accept();
|
||||
}
|
||||
|
||||
void cImportDialog::onPathSelect()
|
||||
{
|
||||
QSettings settings;
|
||||
QString szPath = settings.value("import/path", QDir::homePath()).toString();
|
||||
szPath = QFileDialog::getExistingDirectory(this, tr("Import Directory"), szPath, QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
|
||||
|
||||
if(szPath.isEmpty())
|
||||
return;
|
||||
|
||||
ui->m_lpPath->setText(szPath);
|
||||
settings.setValue("import/path", szPath);
|
||||
}
|
||||
|
||||
void cImportDialog::onThumbnailSelected(const QItemSelection& /*selection*/, const QItemSelection& /*previous*/)
|
||||
{
|
||||
cToolBoxInfo* lpToolBoxInfo = ui->m_lpInfo;
|
||||
|
||||
if(ui->m_lpImportList->selectionModel()->selectedIndexes().count() != 1)
|
||||
{
|
||||
lpToolBoxInfo->setPicture(nullptr);
|
||||
return;
|
||||
}
|
||||
|
||||
QStandardItem* lpItem = m_lpImportListModel->itemFromIndex(ui->m_lpImportList->currentIndex());
|
||||
cPicture* lpPicture = lpItem->data().value<cPicture*>();
|
||||
lpToolBoxInfo->setPicture(lpPicture);
|
||||
}
|
||||
|
||||
void cImportDialog::accept()
|
||||
{
|
||||
savePosition();
|
||||
QDialog::accept();
|
||||
}
|
||||
|
||||
void cImportDialog::reject()
|
||||
{
|
||||
savePosition();
|
||||
QDialog::reject();
|
||||
}
|
||||
|
||||
void cImportDialog::savePosition()
|
||||
{
|
||||
QSettings settings;
|
||||
|
||||
settings.setValue("import/width", QVariant::fromValue(size().width()));
|
||||
settings.setValue("import/height", QVariant::fromValue(size().height()));
|
||||
settings.setValue("import/x", QVariant::fromValue(x()));
|
||||
settings.setValue("import/y", QVariant::fromValue(y()));
|
||||
|
||||
QList<qint32> sizes = ui->m_lpSplitter->sizes();
|
||||
|
||||
for(int x = 0;x < sizes.count();x++)
|
||||
settings.setValue(QString("import/splitter%1").arg(x+1), QVariant::fromValue(sizes[x]));
|
||||
}
|
||||
|
||||
void cImportDialog::onRead()
|
||||
{
|
||||
if(ui->m_lpPath->text().isEmpty())
|
||||
{
|
||||
QMessageBox::critical(this, tr("Error"), tr("no path given!"));
|
||||
return;
|
||||
}
|
||||
|
||||
m_lpImportListModel->clear();
|
||||
|
||||
readDirectory(ui->m_lpPath->text(), ui->m_lpRecursive->isChecked());
|
||||
}
|
||||
|
||||
void cImportDialog::onImport()
|
||||
{
|
||||
}
|
||||
|
||||
void cImportDialog::readDirectory(const QString& szPath, bool bRecursive)
|
||||
{
|
||||
QMimeDatabase mimeDB;
|
||||
QDir dir(szPath);
|
||||
QStringList szDirs = dir.entryList(QDir::Dirs);
|
||||
QFileInfoList szFiles = dir.entryInfoList(QDir::Files);
|
||||
|
||||
if(bRecursive)
|
||||
{
|
||||
szDirs.removeAll(".");
|
||||
szDirs.removeAll("..");
|
||||
|
||||
for(int x = 0;x < szDirs.count();x++)
|
||||
readDirectory(szPath + QDir::separator() + szDirs[x], bRecursive);
|
||||
}
|
||||
|
||||
for(int x = 0;x < szFiles.count();x++)
|
||||
{
|
||||
QFileInfo fileInfo = szFiles[x];
|
||||
QMimeType mimeType = mimeDB.mimeTypeForFile(szFiles[x]);
|
||||
|
||||
if(mimeType.name().startsWith("image"))
|
||||
{
|
||||
ui->m_lpStatusText->setText(QString(tr("found %1")).arg(fileInfo.fileName()));
|
||||
qApp->processEvents();
|
||||
|
||||
cPicture* lpPicture = new cPicture;
|
||||
QIcon icon;
|
||||
|
||||
if(lpPicture->fromFile(fileInfo.filePath()))
|
||||
{
|
||||
if(lpPicture->thumbnail().width() != THUMBNAIL_WIDTH || lpPicture->thumbnail().height() != THUMBNAIL_HEIGHT)
|
||||
{
|
||||
QImage thumbnail(THUMBNAIL_WIDTH, THUMBNAIL_HEIGHT, lpPicture->thumbnail().format());
|
||||
thumbnail.fill(Qt::black);
|
||||
|
||||
QPainter painter(&thumbnail);
|
||||
painter.drawImage((THUMBNAIL_WIDTH-lpPicture->thumbnail().width())/2, (THUMBNAIL_HEIGHT-lpPicture->thumbnail().height())/2, lpPicture->thumbnail());
|
||||
painter.end();
|
||||
icon = QIcon(QPixmap::fromImage(thumbnail));
|
||||
}
|
||||
else
|
||||
icon = QIcon(QPixmap::fromImage(lpPicture->thumbnail()));
|
||||
|
||||
QStandardItem* lpItem = new QStandardItem(icon, lpPicture->fileName());
|
||||
lpItem->setTextAlignment(Qt::AlignCenter);
|
||||
lpItem->setData(QVariant::fromValue(lpPicture));
|
||||
m_lpImportListModel->appendRow(lpItem);
|
||||
qApp->processEvents();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ui->m_lpStatusText->setText("");
|
||||
}
|
||||
|
||||
+38
-2
@@ -3,7 +3,9 @@
|
||||
|
||||
|
||||
#include <QDialog>
|
||||
#include <QStandardItemModel>
|
||||
#include <QCloseEvent>
|
||||
#include <QItemSelection>
|
||||
|
||||
|
||||
namespace Ui {
|
||||
@@ -19,11 +21,45 @@ public:
|
||||
~cImportDialog();
|
||||
|
||||
private slots:
|
||||
void on_m_lpPathSelect_clicked();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn onPathSelect
|
||||
*/
|
||||
void onPathSelect();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn onRead
|
||||
*/
|
||||
void onRead();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn onImport
|
||||
*/
|
||||
void onImport();
|
||||
/*!
|
||||
\brief
|
||||
\param selection
|
||||
\param previous
|
||||
\fn onThumbnailSelected
|
||||
*/
|
||||
void onThumbnailSelected(const QItemSelection& selection, const QItemSelection& previous);
|
||||
|
||||
private:
|
||||
Ui::cImportDialog *ui;
|
||||
Ui::cImportDialog* ui;
|
||||
QStandardItemModel* m_lpImportListModel; /**< TODO: describe */
|
||||
|
||||
void initUI();
|
||||
void createActions();
|
||||
|
||||
void readDirectory(const QString& szPath, bool bRecursive);
|
||||
|
||||
void accept();
|
||||
void reject();
|
||||
|
||||
void savePosition();
|
||||
protected:
|
||||
/*!
|
||||
\brief
|
||||
|
||||
+101
-24
@@ -6,16 +6,16 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>653</width>
|
||||
<height>563</height>
|
||||
<width>449</width>
|
||||
<height>328</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Import</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<item row="0" column="0">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2" stretch="0,0,1,0,0">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
@@ -73,6 +73,20 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="m_lpRead">
|
||||
<property name="text">
|
||||
<string>read</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="m_lpImport">
|
||||
<property name="text">
|
||||
<string>import</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
@@ -89,35 +103,98 @@
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QListView" name="m_lpImportList">
|
||||
<property name="selectionMode">
|
||||
<enum>QAbstractItemView::ExtendedSelection</enum>
|
||||
<widget class="QSplitter" name="m_lpSplitter">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>160</width>
|
||||
<height>120</height>
|
||||
</size>
|
||||
<widget class="QListView" name="m_lpImportList">
|
||||
<property name="selectionMode">
|
||||
<enum>QAbstractItemView::ExtendedSelection</enum>
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>160</width>
|
||||
<height>120</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="resizeMode">
|
||||
<enum>QListView::Adjust</enum>
|
||||
</property>
|
||||
<property name="gridSize">
|
||||
<size>
|
||||
<width>180</width>
|
||||
<height>180</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="viewMode">
|
||||
<enum>QListView::IconMode</enum>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QScrollArea" name="scrollArea">
|
||||
<property name="widgetResizable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<widget class="QWidget" name="scrollAreaWidgetContents">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>69</width>
|
||||
<height>167</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="cToolBoxInfo" name="m_lpInfo" native="true"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3" stretch="1,1">
|
||||
<item>
|
||||
<widget class="QLabel" name="m_lpStatusText">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QProgressBar" name="m_lpProgress">
|
||||
<property name="value">
|
||||
<number>0</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QDialogButtonBox" name="m_lpButtonBox">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="viewMode">
|
||||
<enum>QListView::IconMode</enum>
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QDialogButtonBox" name="m_lpButtonBox">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>cToolBoxInfo</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>ctoolboxinfo.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
|
||||
+4
-41
@@ -29,32 +29,6 @@ cMainWindow::cMainWindow(cSplashScreen* lpSplashScreen, QWidget *parent) :
|
||||
loadData();
|
||||
|
||||
updateRecentFileActions();
|
||||
|
||||
// cPicture picture;
|
||||
// picture.fromFile(QDir::homePath() + "\\OneDrive - WINDESIGN\\exif-samples-master\\IMG_1371.CR2");
|
||||
// picture.toDB();
|
||||
// picture.fromFile(QDir::homePath() + "\\OneDrive - WINDESIGN\\exif-samples-master\\20181123_125857.jpg");
|
||||
// picture.toDB();
|
||||
// picture.fromFile(QDir::homePath() + "\\OneDrive - WINDESIGN\\exif-samples-master\\IMG_1371.CR2");
|
||||
// picture.toDB();
|
||||
// picture.fromFile(QDir::homePath() + "\\OneDrive - WINDESIGN\\exif-samples-master\\tiff\\BSG1.tiff");
|
||||
// picture.toDB();
|
||||
// picture.fromFile(QDir::homePath() + "\\OneDrive - WINDESIGN\\exif-samples-master\\IMG_3444.CR2");
|
||||
// picture.toDB();
|
||||
// picture.fromFile(QDir::homePath() + "\\OneDrive - WINDESIGN\\exif-samples-master\\IMG_0248_49_50_easyHDR-dramatic-strong.jpg");
|
||||
// picture.toDB();
|
||||
// picture.fromFile(QDir::homePath() + "\\OneDrive - WINDESIGN\\exif-samples-master\\IMG_3466_7_8_easyHDR-dramatic-dark.tif");
|
||||
// picture.toDB();
|
||||
// picture.fromFile(QDir::homePath() + "\\OneDrive - WINDESIGN\\exif-samples-master\\IMG_0248_49_50_easyHDR-dramatic-strong.jpg");
|
||||
// picture.toDB();
|
||||
// picture.fromFile(QDir::homePath() + "\\OneDrive - WINDESIGN\\exif-samples-master\\DSC_0214.NEF");
|
||||
// picture.toDB();
|
||||
// picture.fromFile(QDir::homePath() + "\\OneDrive - WINDESIGN\\exif-samples-master\\DSC_0215.NEF");
|
||||
// picture.toDB();
|
||||
// picture.fromFile(QDir::homePath() + "\\OneDrive - WINDESIGN\\exif-samples-master\\IMG_1652.JPG");
|
||||
// picture.toDB();
|
||||
// picture.fromFile(QDir::homePath() + "\\OneDrive - WINDESIGN\\exif-samples-master\\IMG_1657.JPG");
|
||||
// picture.toDB();
|
||||
}
|
||||
|
||||
cMainWindow::~cMainWindow()
|
||||
@@ -128,6 +102,9 @@ void cMainWindow::createActions()
|
||||
|
||||
void cMainWindow::loadData()
|
||||
{
|
||||
m_pictureList.clear();
|
||||
m_lpThumbnailViewModel->clear();
|
||||
|
||||
m_pictureList.load();
|
||||
|
||||
for(int x = 0;x < m_pictureList.count();x++)
|
||||
@@ -419,22 +396,8 @@ void cMainWindow::onFileImport()
|
||||
{
|
||||
cImportDialog importDialog(this);
|
||||
|
||||
QSettings settings;
|
||||
qint32 iX = settings.value("import/x", QVariant::fromValue(-1)).toInt();
|
||||
qint32 iY = settings.value("import/y", QVariant::fromValue(-1)).toInt();
|
||||
qint32 iWidth = settings.value("import/width", QVariant::fromValue(-1)).toInt();
|
||||
qint32 iHeight = settings.value("import/height", QVariant::fromValue(-1)).toInt();
|
||||
|
||||
if(iX != -1 && iY != -1)
|
||||
importDialog.move(iX, iY);
|
||||
if(iWidth != -1 && iHeight != -1)
|
||||
importDialog.resize(iWidth, iHeight);
|
||||
|
||||
if(importDialog.exec() == QDialog::Rejected)
|
||||
return;
|
||||
|
||||
settings.setValue("import/width", QVariant::fromValue(importDialog.size().width()));
|
||||
settings.setValue("import/height", QVariant::fromValue(importDialog.size().height()));
|
||||
settings.setValue("import/x", QVariant::fromValue(importDialog.x()));
|
||||
settings.setValue("import/y", QVariant::fromValue(importDialog.y()));
|
||||
loadData();
|
||||
}
|
||||
|
||||
+23
-6
@@ -13,6 +13,7 @@ cPicture::cPicture(qint32 iID, QObject *parent) :
|
||||
m_iID(iID),
|
||||
m_szFileName(""),
|
||||
m_szFilePath(""),
|
||||
m_iFileSize(0),
|
||||
m_imageWidth(0),
|
||||
m_imageHeight(0),
|
||||
m_cameraMake(""),
|
||||
@@ -35,14 +36,17 @@ cPicture::cPicture(qint32 iID, QObject *parent) :
|
||||
|
||||
bool cPicture::fromFile(const QString& szFileName)
|
||||
{
|
||||
cEXIF exif;
|
||||
cEXIF exif;
|
||||
QFileInfo fileInfo(szFileName);
|
||||
|
||||
if(!exif.fromFile(szFileName))
|
||||
return(false);
|
||||
|
||||
m_iID = -1;
|
||||
|
||||
m_szFileName = exif.fileName();
|
||||
m_szFileName = fileInfo.fileName();
|
||||
m_szFilePath = fileInfo.absolutePath();
|
||||
m_iFileSize = fileInfo.size();
|
||||
m_thumbnail = exif.thumbnail();
|
||||
m_imageWidth = exif.imageWidth();
|
||||
m_imageHeight = exif.imageHeight();
|
||||
@@ -67,7 +71,6 @@ bool cPicture::fromFile(const QString& szFileName)
|
||||
|
||||
if(!m_dateTime.isValid())
|
||||
{
|
||||
QFileInfo fileInfo(m_szFileName);
|
||||
setDateTime(fileInfo.birthTime());
|
||||
}
|
||||
|
||||
@@ -89,16 +92,18 @@ bool cPicture::toDB()
|
||||
}
|
||||
|
||||
if(!query.next())
|
||||
query.prepare("INSERT INTO picture (fileName, imageWidth, imageHeight, cameraMake, cameraModel, dateTime, fNumber, iso, flashID, focalLength, lensMake, lensModel, exposureTime, exposureBias, exifVersion, dateTimeOriginal, dateTimeDigitized, whiteBalance, focalLength35, gps, thumbnail) VALUES (:fileName, :imageWidth, :imageHeight, :cameraMake, :cameraModel, :dateTime, :fNumber, :iso, :flashID, :focalLength, :lensMake, :lensModel, :exposureTime, :exposureBias, :exifVersion, :dateTimeOriginal, :dateTimeDigitized, :whiteBalance, :focalLength35, :gps, :thumbnail);");
|
||||
query.prepare("INSERT INTO picture (fileName, filePath, fileSize, imageWidth, imageHeight, cameraMake, cameraModel, dateTime, fNumber, iso, flashID, focalLength, lensMake, lensModel, exposureTime, exposureBias, exifVersion, dateTimeOriginal, dateTimeDigitized, whiteBalance, focalLength35, gps, thumbnail) VALUES (:fileName, :filePath, :fileSize, :imageWidth, :imageHeight, :cameraMake, :cameraModel, :dateTime, :fNumber, :iso, :flashID, :focalLength, :lensMake, :lensModel, :exposureTime, :exposureBias, :exifVersion, :dateTimeOriginal, :dateTimeDigitized, :whiteBalance, :focalLength35, :gps, :thumbnail);");
|
||||
else
|
||||
query.prepare("UPDATE picture SET fileName = :fileName, imageWidth = :imageWidth, imageHeight = :imageHeight, cameraMake = :cameraMake, cameraModel = :cameraModel, dateTime = :dateTime, fNumber = :fNumber, iso = :iso, flashID = :flashID, focalLength = :focalLength, lensMake = :lensMake, lensModel = :lensModel, exposureTime = :exposureTime, exposureBias = :exposureBias, exifVersion = :exifVersion, dateTimeOriginal = :dateTimeOriginal, dateTimeDigitized = :dateTimeDigitized, whiteBalance = :whiteBalance, focalLength35 = :focalLength35, gps = :gps, thumbnail = :thumbnail WHERE id = :id;");
|
||||
query.prepare("UPDATE picture SET fileName=:fileName, filePath=:filePath, fileSize=:fileSize, imageWidth=:imageWidth, imageHeight=:imageHeight, cameraMake=:cameraMake, cameraModel=:cameraModel, dateTime=:dateTime, fNumber=:fNumber, iso=:iso, flashID=:flashID, focalLength=:focalLength, lensMake=:lensMake, lensModel=:lensModel, exposureTime=:exposureTime, exposureBias=:exposureBias, exifVersion=:exifVersion, dateTimeOriginal=:dateTimeOriginal, dateTimeDigitized=:dateTimeDigitized, whiteBalance=:whiteBalance, focalLength35=:focalLength35, gps=:gps, thumbnail=:thumbnail WHERE id=:id;");
|
||||
}
|
||||
else
|
||||
query.prepare("INSERT INTO picture (fileName, imageWidth, imageHeight, cameraMake, cameraModel, dateTime, fNumber, iso, flashID, focalLength, lensMake, lensModel, exposureTime, exposureBias, exifVersion, dateTimeOriginal, dateTimeDigitized, whiteBalance, focalLength35, gps, thumbnail) VALUES (:fileName, :imageWidth, :imageHeight, :cameraMake, :cameraModel, :dateTime, :fNumber, :iso, :flashID, :focalLength, :lensMake, :lensModel, :exposureTime, :exposureBias, :exifVersion, :dateTimeOriginal, :dateTimeDigitized, :whiteBalance, :focalLength35, :gps, :thumbnail);");
|
||||
query.prepare("INSERT INTO picture (fileName, filePath, fileSize, imageWidth, imageHeight, cameraMake, cameraModel, dateTime, fNumber, iso, flashID, focalLength, lensMake, lensModel, exposureTime, exposureBias, exifVersion, dateTimeOriginal, dateTimeDigitized, whiteBalance, focalLength35, gps, thumbnail) VALUES (:fileName, :filePath, :fileSize, :imageWidth, :imageHeight, :cameraMake, :cameraModel, :dateTime, :fNumber, :iso, :flashID, :focalLength, :lensMake, :lensModel, :exposureTime, :exposureBias, :exifVersion, :dateTimeOriginal, :dateTimeDigitized, :whiteBalance, :focalLength35, :gps, :thumbnail);");
|
||||
|
||||
|
||||
query.bindValue(":id", m_iID);
|
||||
query.bindValue(":fileName", m_szFileName);
|
||||
query.bindValue(":filePath", m_szFilePath);
|
||||
query.bindValue(":fileSize", m_iFileSize);
|
||||
query.bindValue(":imageWidth", m_imageWidth);
|
||||
query.bindValue(":imageHeight", m_imageHeight);
|
||||
query.bindValue(":cameraMake", m_cameraMake);
|
||||
@@ -375,6 +380,16 @@ QString cPicture::filePath()
|
||||
return(m_szFilePath);
|
||||
}
|
||||
|
||||
void cPicture::setFileSize(const qint64& fileSize)
|
||||
{
|
||||
m_iFileSize = fileSize;
|
||||
}
|
||||
|
||||
qint64 cPicture::fileSize()
|
||||
{
|
||||
return(m_iFileSize);
|
||||
}
|
||||
|
||||
void cPicture::setThumbnail(const QImage& thumbnail)
|
||||
{
|
||||
m_thumbnail = thumbnail;
|
||||
@@ -398,6 +413,7 @@ bool cPictureList::load()
|
||||
query.prepare("SELECT id, "
|
||||
" fileName, "
|
||||
" filePath, "
|
||||
" fileSize, "
|
||||
" imageWidth, "
|
||||
" imageHeight, "
|
||||
" cameraMake, "
|
||||
@@ -432,6 +448,7 @@ bool cPictureList::load()
|
||||
cPicture* lpPicture = add(query.value("id").toInt());
|
||||
lpPicture->setFileName(query.value("fileName").toString());
|
||||
lpPicture->setFilePath(query.value("filePath").toString());
|
||||
lpPicture->setFileSize(query.value("fileSize").toLongLong());
|
||||
lpPicture->setImageWidth(query.value("imageWidth").toInt());
|
||||
lpPicture->setImageHeight(query.value("imageHeight").toInt());
|
||||
lpPicture->setCameraMake(query.value("cameraMake").toString());
|
||||
|
||||
+14
@@ -335,6 +335,19 @@ public:
|
||||
*/
|
||||
QString filePath();
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param fileSize
|
||||
*/
|
||||
void setFileSize(const qint64& fileSize);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @return qint64
|
||||
*/
|
||||
qint64 fileSize();
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
@@ -356,6 +369,7 @@ private:
|
||||
qint32 m_iID; /**< TODO: describe */
|
||||
QString m_szFileName; /**< TODO: describe */
|
||||
QString m_szFilePath; /**< TODO: describe */
|
||||
qint64 m_iFileSize; /**< TODO: describe */
|
||||
QImage m_thumbnail; /**< TODO: describe */
|
||||
qint32 m_imageWidth; /**< TODO: describe */
|
||||
qint32 m_imageHeight; /**< TODO: describe */
|
||||
|
||||
@@ -110,6 +110,7 @@ bool cPictureLibrary::createDatabase()
|
||||
" id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE, "
|
||||
" fileName TEXT, "
|
||||
" filePath TEXT, "
|
||||
" fileSize BIGINT, "
|
||||
" imageWidth INTEGER, "
|
||||
" imageHeight INTEGER, "
|
||||
" cameraMake TEXT, "
|
||||
@@ -181,6 +182,8 @@ bool cPictureLibrary::updateDatabase3(qint32 version)
|
||||
if(!createTable("CREATE TABLE picture ( "
|
||||
" id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE, "
|
||||
" fileName TEXT, "
|
||||
" filePath TEXT, "
|
||||
" fileSize BIGINT, "
|
||||
" imageWidth INTEGER, "
|
||||
" imageHeight INTEGER, "
|
||||
" cameraMake TEXT, "
|
||||
|
||||
Reference in New Issue
Block a user