initial commit
This commit is contained in:
@@ -2320,7 +2320,7 @@ UML_LIMIT_NUM_FIELDS = 10
|
||||
# The default value is: NO.
|
||||
# This tag requires that the tag HAVE_DOT is set to YES.
|
||||
|
||||
TEMPLATE_RELATIONS = NO
|
||||
TEMPLATE_RELATIONS = YES
|
||||
|
||||
# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
|
||||
# YES then doxygen will generate a graph for each documented file showing the
|
||||
@@ -2350,7 +2350,7 @@ INCLUDED_BY_GRAPH = YES
|
||||
# The default value is: NO.
|
||||
# This tag requires that the tag HAVE_DOT is set to YES.
|
||||
|
||||
CALL_GRAPH = NO
|
||||
CALL_GRAPH = YES
|
||||
|
||||
# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
|
||||
# dependency graph for every global function or class method.
|
||||
@@ -2362,7 +2362,7 @@ CALL_GRAPH = NO
|
||||
# The default value is: NO.
|
||||
# This tag requires that the tag HAVE_DOT is set to YES.
|
||||
|
||||
CALLER_GRAPH = NO
|
||||
CALLER_GRAPH = YES
|
||||
|
||||
# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
|
||||
# hierarchy of all classes instead of a textual one.
|
||||
|
||||
@@ -21,8 +21,8 @@ class cEXIFCompression
|
||||
public:
|
||||
cEXIFCompression(const qint32& iID, const QString& szCompression);
|
||||
|
||||
qint32 m_iID; /**< TODO: describe */
|
||||
QString m_szCompression; /**< TODO: describe */
|
||||
qint32 m_iID; /**< TODO: describe */
|
||||
QString m_szCompression; /**< TODO: describe */
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(cEXIFCompression*)
|
||||
@@ -72,8 +72,8 @@ class cEXIFLightSource
|
||||
public:
|
||||
cEXIFLightSource(const qint32& iID, const QString& szLightSource);
|
||||
|
||||
qint32 m_iID; /**< TODO: describe */
|
||||
QString m_szLightSource; /**< TODO: describe */
|
||||
qint32 m_iID; /**< TODO: describe */
|
||||
QString m_szLightSource; /**< TODO: describe */
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(cEXIFLightSource*)
|
||||
@@ -121,8 +121,8 @@ class cEXIFFlash
|
||||
public:
|
||||
cEXIFFlash(const qint32& iID, const QString& szFlash);
|
||||
|
||||
qint32 m_iID; /**< TODO: describe */
|
||||
QString m_szFlash; /**< TODO: describe */
|
||||
qint32 m_iID; /**< TODO: describe */
|
||||
QString m_szFlash; /**< TODO: describe */
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(cEXIFFlash*)
|
||||
@@ -170,11 +170,11 @@ class cEXIFTag
|
||||
public:
|
||||
cEXIFTag(const qint32& iTAGID, const QString& szTAGName, const qint32& iIFDID, const qint32& iTypeID, const QString& szDescription);
|
||||
|
||||
qint32 m_iTAGID; /**< TODO: describe */
|
||||
QString m_szTAGName; /**< TODO: describe */
|
||||
qint32 m_iIFDID; /**< TODO: describe */
|
||||
qint32 m_iTypeID; /**< TODO: describe */
|
||||
QString m_szDescription; /**< TODO: describe */
|
||||
qint32 m_iTAGID; /**< TODO: describe */
|
||||
QString m_szTAGName; /**< TODO: describe */
|
||||
qint32 m_iIFDID; /**< TODO: describe */
|
||||
qint32 m_iTypeID; /**< TODO: describe */
|
||||
QString m_szDescription; /**< TODO: describe */
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(cEXIFTag*)
|
||||
@@ -246,8 +246,8 @@ public:
|
||||
QList<QVariant> valueList();
|
||||
|
||||
private:
|
||||
cEXIFTag* m_lpEXIFTag; /**< TODO: describe */
|
||||
QList<QVariant> m_valueList; /**< TODO: describe */
|
||||
cEXIFTag* m_lpEXIFTag; /**< TODO: describe */
|
||||
QList<QVariant> m_valueList; /**< TODO: describe */
|
||||
|
||||
/**
|
||||
* @brief
|
||||
|
||||
+142
@@ -0,0 +1,142 @@
|
||||
#include "cimage.h"
|
||||
|
||||
#include "libraw/libraw.h"
|
||||
|
||||
#include <QTransform>
|
||||
#include <QFileInfo>
|
||||
|
||||
|
||||
cImage::cImage() :
|
||||
QImage()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
cImage::cImage(const QSize &size, QImage::Format format) :
|
||||
QImage(size, format)
|
||||
{
|
||||
}
|
||||
|
||||
cImage::cImage(int width, int height, QImage::Format format) :
|
||||
QImage(width, height, format)
|
||||
{
|
||||
}
|
||||
|
||||
cImage::cImage(uchar *data, int width, int height, QImage::Format format, QImageCleanupFunction cleanupFunction, void *cleanupInfo) :
|
||||
QImage(data, width, height, format, cleanupFunction, cleanupInfo)
|
||||
{
|
||||
}
|
||||
|
||||
cImage::cImage(const uchar *data, int width, int height, QImage::Format format, QImageCleanupFunction cleanupFunction, void *cleanupInfo) :
|
||||
QImage(data, width, height, format, cleanupFunction, cleanupInfo)
|
||||
{
|
||||
}
|
||||
|
||||
cImage::cImage(uchar *data, int width, int height, int bytesPerLine, QImage::Format format, QImageCleanupFunction cleanupFunction, void *cleanupInfo) :
|
||||
QImage(data, width, height, bytesPerLine, format, cleanupFunction, cleanupInfo)
|
||||
{
|
||||
}
|
||||
|
||||
cImage::cImage(const uchar *data, int width, int height, int bytesPerLine, QImage::Format format, QImageCleanupFunction cleanupFunction, void *cleanupInfo) :
|
||||
QImage(data, width, height, bytesPerLine, format, cleanupFunction, cleanupInfo)
|
||||
{
|
||||
}
|
||||
|
||||
cImage::cImage(const QString &fileName, const char *format) :
|
||||
QImage()
|
||||
{
|
||||
load(fileName, format);
|
||||
}
|
||||
|
||||
cImage::cImage(const QImage &image) :
|
||||
QImage(image)
|
||||
{
|
||||
}
|
||||
|
||||
cImage::cImage(QImage &&other) :
|
||||
QImage(other)
|
||||
{
|
||||
}
|
||||
|
||||
bool cImage::load(const QString &fileName, const char *format)
|
||||
{
|
||||
QFileInfo fileInfo(fileName);
|
||||
|
||||
if(!fileInfo.suffix().compare("NEF", Qt::CaseInsensitive))
|
||||
return(loadRAW(fileName));
|
||||
|
||||
if(QImage::load(fileName, format))
|
||||
return(true);
|
||||
|
||||
return(loadRAW(fileName));
|
||||
}
|
||||
|
||||
bool cImage::loadRAW(const QString &fileName)
|
||||
{
|
||||
LibRaw rawProcessor;
|
||||
libraw_processed_image_t* lpOutput;
|
||||
|
||||
if(rawProcessor.open_file(fileName.toUtf8()) != LIBRAW_SUCCESS)
|
||||
return(false);
|
||||
|
||||
if(rawProcessor.unpack() != LIBRAW_SUCCESS)
|
||||
return(false);
|
||||
|
||||
rawProcessor.dcraw_process();
|
||||
lpOutput = rawProcessor.dcraw_make_mem_image();
|
||||
|
||||
const libraw_data_t& imgdata = rawProcessor.imgdata;
|
||||
uchar* pixels = nullptr;
|
||||
|
||||
if(lpOutput->type == LIBRAW_IMAGE_JPEG)
|
||||
{
|
||||
loadFromData(lpOutput->data, static_cast<int>(lpOutput->data_size), "JPEG");
|
||||
|
||||
if(imgdata.sizes.flip != 0)
|
||||
{
|
||||
QTransform rotation;
|
||||
int angle = 0;
|
||||
|
||||
if(imgdata.sizes.flip == 3)
|
||||
angle = 180;
|
||||
else if(imgdata.sizes.flip == 5)
|
||||
angle = -90;
|
||||
else if(imgdata.sizes.flip == 6)
|
||||
angle = 90;
|
||||
if(angle != 0)
|
||||
{
|
||||
rotation.rotate(angle);
|
||||
*this = transformed(rotation);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int numPixels = lpOutput->width * lpOutput->height;
|
||||
int colorSize = lpOutput->bits / 8;
|
||||
int pixelSize = lpOutput->colors * colorSize;
|
||||
pixels = new uchar[numPixels * 4];
|
||||
uchar* data = lpOutput->data;
|
||||
|
||||
for(int i = 0; i < numPixels; i++, data += pixelSize)
|
||||
{
|
||||
if(lpOutput->colors == 3)
|
||||
{
|
||||
pixels[i * 4] = data[2 * colorSize];
|
||||
pixels[i * 4 + 1] = data[1 * colorSize];
|
||||
pixels[i * 4 + 2] = data[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
pixels[i * 4] = data[0];
|
||||
pixels[i * 4 + 1] = data[0];
|
||||
pixels[i * 4 + 2] = data[0];
|
||||
}
|
||||
}
|
||||
*this = QImage(pixels, lpOutput->width, lpOutput->height, QImage::Format_RGB32);
|
||||
}
|
||||
|
||||
rawProcessor.recycle();
|
||||
|
||||
return(true);
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
#ifndef CIMAGE_H
|
||||
#define CIMAGE_H
|
||||
|
||||
|
||||
#include <QImage>
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
*/
|
||||
class cImage : public QImage
|
||||
{
|
||||
public:
|
||||
cImage();
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param size
|
||||
* @param format
|
||||
*/
|
||||
cImage(const QSize &size, QImage::Format format);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param width
|
||||
* @param height
|
||||
* @param format
|
||||
*/
|
||||
cImage(int width, int height, QImage::Format format);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param data
|
||||
* @param width
|
||||
* @param height
|
||||
* @param format
|
||||
* @param cleanupFunction
|
||||
* @param cleanupInfo
|
||||
*/
|
||||
cImage(uchar *data, int width, int height, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param data
|
||||
* @param width
|
||||
* @param height
|
||||
* @param format
|
||||
* @param cleanupFunction
|
||||
* @param cleanupInfo
|
||||
*/
|
||||
cImage(const uchar *data, int width, int height, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param data
|
||||
* @param width
|
||||
* @param height
|
||||
* @param bytesPerLine
|
||||
* @param format
|
||||
* @param cleanupFunction
|
||||
* @param cleanupInfo
|
||||
*/
|
||||
cImage(uchar *data, int width, int height, int bytesPerLine, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param data
|
||||
* @param width
|
||||
* @param height
|
||||
* @param bytesPerLine
|
||||
* @param format
|
||||
* @param cleanupFunction
|
||||
* @param cleanupInfo
|
||||
*/
|
||||
cImage(const uchar *data, int width, int height, int bytesPerLine, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param fileName
|
||||
* @param format
|
||||
*/
|
||||
cImage(const QString &fileName, const char *format = nullptr);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param image
|
||||
*/
|
||||
cImage(const QImage &image);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param other
|
||||
*/
|
||||
cImage(QImage &&other);
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param fileName
|
||||
* @param format
|
||||
* @return bool
|
||||
*/
|
||||
bool load(const QString &fileName, const char *format = nullptr);
|
||||
|
||||
private:
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param fileName
|
||||
* @return bool
|
||||
*/
|
||||
bool loadRAW(const QString &fileName);
|
||||
};
|
||||
|
||||
#endif // CIMAGE_H
|
||||
+20
-1
@@ -52,6 +52,7 @@ cMainWindow::cMainWindow(cSplashScreen* lpSplashScreen, QWidget *parent) :
|
||||
|
||||
cMainWindow::~cMainWindow()
|
||||
{
|
||||
delete m_lpThumbnailViewModel;
|
||||
delete ui;
|
||||
}
|
||||
|
||||
@@ -66,7 +67,8 @@ void cMainWindow::initUI()
|
||||
|
||||
void cMainWindow::createActions()
|
||||
{
|
||||
// setToolButtonStyle(Qt::ToolButtonFollowStyle);
|
||||
setToolButtonStyle(Qt::ToolButtonFollowStyle);
|
||||
|
||||
// createFileActions();
|
||||
// createEditActions();
|
||||
// createTextActions();
|
||||
@@ -76,6 +78,7 @@ void cMainWindow::createActions()
|
||||
|
||||
// createContextActions();
|
||||
|
||||
connect(ui->m_lpThumbnailView->selectionModel(), &QItemSelectionModel::selectionChanged, this, &cMainWindow::onThumbnailSelected);
|
||||
// connect(ui->m_lpMainTab, &QTabWidget::currentChanged, this, &cMainWindow::onMainTabCurrentChanged);
|
||||
// connect(ui->m_lpMainTab, &QTabWidget::tabCloseRequested, this, &cMainWindow::onMainTabTabCloseRequested);
|
||||
// connect(ui->m_lpMdiArea, &QMdiArea::subWindowActivated, this, &cMainWindow::onMdiAreaSubWindowActivated);
|
||||
@@ -118,6 +121,7 @@ void cMainWindow::loadData()
|
||||
|
||||
QStandardItem* lpItem = new QStandardItem(icon, m_pictureList[x]->fileName());
|
||||
lpItem->setTextAlignment(Qt::AlignCenter);
|
||||
lpItem->setData(QVariant::fromValue(m_pictureList[x]));
|
||||
m_lpThumbnailViewModel->appendRow(lpItem);
|
||||
}
|
||||
}
|
||||
@@ -136,3 +140,18 @@ void cMainWindow::closeEvent(QCloseEvent *event)
|
||||
|
||||
event->accept();
|
||||
}
|
||||
|
||||
void cMainWindow::onThumbnailSelected(const QItemSelection& /*selection*/, const QItemSelection& /*previous*/)
|
||||
{
|
||||
cToolBoxInfo* lpToolBoxInfo = static_cast<cToolBoxInfo*>(ui->m_lpToolBox->widget(0));
|
||||
|
||||
if(ui->m_lpThumbnailView->selectionModel()->selectedIndexes().count() != 1)
|
||||
{
|
||||
lpToolBoxInfo->setPicture(nullptr);
|
||||
return;
|
||||
}
|
||||
|
||||
QStandardItem* lpItem = m_lpThumbnailViewModel->itemFromIndex(ui->m_lpThumbnailView->currentIndex());
|
||||
cPicture* lpPicture = lpItem->data().value<cPicture*>();
|
||||
lpToolBoxInfo->setPicture(lpPicture);
|
||||
}
|
||||
|
||||
@@ -6,10 +6,13 @@
|
||||
#include "csplashscreen.h"
|
||||
#include "cpicture.h"
|
||||
|
||||
#include "ctoolboxinfo.h"
|
||||
|
||||
#include <QMainWindow>
|
||||
#include <QCloseEvent>
|
||||
|
||||
#include <QStandardItemModel>
|
||||
#include <QItemSelection>
|
||||
|
||||
|
||||
namespace Ui {
|
||||
@@ -72,6 +75,9 @@ protected:
|
||||
\param event
|
||||
*/
|
||||
void closeEvent(QCloseEvent* event);
|
||||
|
||||
private slots:
|
||||
void onThumbnailSelected(const QItemSelection& selection, const QItemSelection& previous);
|
||||
};
|
||||
|
||||
#endif // CMAINWINDOW_H
|
||||
|
||||
+107
-31
@@ -6,44 +6,112 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>646</width>
|
||||
<height>516</height>
|
||||
<width>927</width>
|
||||
<height>682</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string/>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralWidget">
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<item row="0" column="0">
|
||||
<widget class="QListView" name="m_lpThumbnailView">
|
||||
<property name="editTriggers">
|
||||
<set>QAbstractItemView::NoEditTriggers</set>
|
||||
</property>
|
||||
<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>
|
||||
<widget class="QSplitter" name="m_lpSplitter">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<widget class="QTreeView" name="m_lpFolderView">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>10</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="baseSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QListView" name="m_lpThumbnailView">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||
<horstretch>1</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="editTriggers">
|
||||
<set>QAbstractItemView::NoEditTriggers</set>
|
||||
</property>
|
||||
<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="m_lpInfoScrollArea">
|
||||
<property name="widgetResizable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<widget class="QWidget" name="scrollAreaWidgetContents">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>87</width>
|
||||
<height>609</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QToolBox" name="m_lpToolBox">
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<widget class="cToolBoxInfo" name="m_lpToolBoxInfo">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>69</width>
|
||||
<height>564</height>
|
||||
</rect>
|
||||
</property>
|
||||
<attribute name="label">
|
||||
<string>Information</string>
|
||||
</attribute>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
@@ -53,7 +121,7 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>646</width>
|
||||
<width>927</width>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
@@ -74,6 +142,14 @@
|
||||
</action>
|
||||
</widget>
|
||||
<layoutdefault spacing="6" margin="11"/>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>cToolBoxInfo</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>ctoolboxinfo.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
#include <QSqlQuery>
|
||||
#include <QSqlError>
|
||||
#include <QFileInfo>
|
||||
|
||||
|
||||
cPicture::cPicture(qint32 iID, QObject *parent) :
|
||||
@@ -64,6 +65,12 @@ bool cPicture::fromFile(const QString& szFileName)
|
||||
m_focalLength35 = exif.focalLength35();
|
||||
m_gps = exif.gps();
|
||||
|
||||
if(!m_dateTime.isValid())
|
||||
{
|
||||
QFileInfo fileInfo(m_szFileName);
|
||||
setDateTime(fileInfo.birthTime());
|
||||
}
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
|
||||
+247
@@ -42,75 +42,310 @@ public:
|
||||
bool toDB();
|
||||
|
||||
void setID(const qint32& id);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @return qint32
|
||||
*/
|
||||
qint32 id();
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param imageWidth
|
||||
*/
|
||||
void setImageWidth(const qint32& imageWidth);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @return qint32
|
||||
*/
|
||||
qint32 imageWidth();
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param imageHeight
|
||||
*/
|
||||
void setImageHeight(const qint32& imageHeight);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @return qint32
|
||||
*/
|
||||
qint32 imageHeight();
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param cameraMake
|
||||
*/
|
||||
void setCameraMake(const QString& cameraMake);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @return QString
|
||||
*/
|
||||
QString cameraMake();
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param cameraModel
|
||||
*/
|
||||
void setCameraModel(const QString& cameraModel);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @return QString
|
||||
*/
|
||||
QString cameraModel();
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param dateTime
|
||||
*/
|
||||
void setDateTime(const QDateTime& dateTime);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @return QDateTime
|
||||
*/
|
||||
QDateTime dateTime();
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param fNumber
|
||||
*/
|
||||
void setFNumber(const QString& fNumber);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @return QString
|
||||
*/
|
||||
QString fNumber();
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param iso
|
||||
*/
|
||||
void setISO(const qint32& iso);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @return qint32
|
||||
*/
|
||||
qint32 iso();
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param flash
|
||||
*/
|
||||
void setFlash(const QString& flash);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @return QString
|
||||
*/
|
||||
QString flash();
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param flashID
|
||||
*/
|
||||
void setFlashID(const qint32& flashID);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @return qint32
|
||||
*/
|
||||
qint32 flashID();
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param focalLength
|
||||
*/
|
||||
void setFocalLength(const qreal& focalLength);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @return qreal
|
||||
*/
|
||||
qreal focalLength();
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param lensMake
|
||||
*/
|
||||
void setLensMake(const QString& lensMake);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @return QString
|
||||
*/
|
||||
QString lensMake();
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param lensModel
|
||||
*/
|
||||
void setLensModel(const QString& lensModel);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @return QString
|
||||
*/
|
||||
QString lensModel();
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param exposureTime
|
||||
*/
|
||||
void setExposureTime(const QString& exposureTime);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @return QString
|
||||
*/
|
||||
QString exposureTime();
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param exposureBias
|
||||
*/
|
||||
void setExposureBias(const qint32& exposureBias);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @return qint32
|
||||
*/
|
||||
qint32 exposureBias();
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param exifVersion
|
||||
*/
|
||||
void setExifVersion(const QString& exifVersion);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @return QString
|
||||
*/
|
||||
QString exifVersion();
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param dateTimeOriginal
|
||||
*/
|
||||
void setDateTimeOriginal(const QDateTime& dateTimeOriginal);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @return QDateTime
|
||||
*/
|
||||
QDateTime dateTimeOriginal();
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param dateTimeDigitized
|
||||
*/
|
||||
void setDateTimeDigitized(const QDateTime& dateTimeDigitized);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @return QDateTime
|
||||
*/
|
||||
QDateTime dateTimeDigitized();
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param whiteBalance
|
||||
*/
|
||||
void setWhiteBalance(const qint32& whiteBalance);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @return qint32
|
||||
*/
|
||||
qint32 whiteBalance();
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param focalLength35
|
||||
*/
|
||||
void setFocalLength35(const qreal& focalLength35);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @return qreal
|
||||
*/
|
||||
qreal focalLength35();
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param gps
|
||||
*/
|
||||
void setGPS(const QString& gps);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @return QString
|
||||
*/
|
||||
QString gps();
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param fileName
|
||||
*/
|
||||
void setFileName(const QString& fileName);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @return QString
|
||||
*/
|
||||
QString fileName();
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param filePath
|
||||
*/
|
||||
void setFilePath(const QString& filePath);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @return QString
|
||||
*/
|
||||
QString filePath();
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param thumbnail
|
||||
*/
|
||||
void setThumbnail(const QImage& thumbnail);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @return QImage
|
||||
*/
|
||||
QImage thumbnail();
|
||||
|
||||
signals:
|
||||
@@ -163,7 +398,19 @@ public:
|
||||
|
||||
bool load();
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param iID
|
||||
* @return cPicture
|
||||
*/
|
||||
cPicture* add(qint32 iID = -1);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param iID
|
||||
* @return cPicture
|
||||
*/
|
||||
cPicture* find(qint32 iID);
|
||||
|
||||
signals:
|
||||
|
||||
@@ -7,10 +7,19 @@
|
||||
#include <QSqlDatabase>
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
*/
|
||||
class cPictureLibrary : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param parent
|
||||
*/
|
||||
explicit cPictureLibrary(QObject *parent = nullptr);
|
||||
|
||||
/*!
|
||||
|
||||
+27
-3
@@ -7,20 +7,44 @@
|
||||
#include <QTextDocument>
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
*/
|
||||
class cSplashScreen : public QSplashScreen
|
||||
{
|
||||
public:
|
||||
cSplashScreen(const QPixmap& pixmap, QFont &font);
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param painter
|
||||
*/
|
||||
virtual void drawContents(QPainter *painter);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param message
|
||||
*/
|
||||
void showStatusMessage(const QString &message);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param message
|
||||
*/
|
||||
void addStatusMessage(const QString &message);
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param rect
|
||||
*/
|
||||
void setMessageRect(QRect rect);
|
||||
|
||||
private:
|
||||
QTextDocument m_textDocument;
|
||||
QString m_szMessage;
|
||||
QRect m_rect;
|
||||
QTextDocument m_textDocument; /**< TODO: describe */
|
||||
QString m_szMessage; /**< TODO: describe */
|
||||
QRect m_rect; /**< TODO: describe */
|
||||
};
|
||||
|
||||
#endif // CSPLASHSCREEN_H
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
#include "ctoolboxinfo.h"
|
||||
#include "ui_ctoolboxinfo.h"
|
||||
|
||||
|
||||
cToolBoxInfo::cToolBoxInfo(QWidget *parent) :
|
||||
QWidget(parent),
|
||||
ui(new Ui::cToolBoxInfo)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
}
|
||||
|
||||
cToolBoxInfo::~cToolBoxInfo()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void cToolBoxInfo::setPicture(cPicture* lpPicture)
|
||||
{
|
||||
if(!lpPicture)
|
||||
{
|
||||
ui->m_lpFileName->setText("---");
|
||||
ui->m_lpDate->setText("---");
|
||||
ui->m_lpSize->setText("---");
|
||||
ui->m_lpCamera->setText("---");
|
||||
return;
|
||||
}
|
||||
|
||||
ui->m_lpFileName->setText(lpPicture->fileName());
|
||||
ui->m_lpDate->setText(lpPicture->dateTime().toString());
|
||||
ui->m_lpSize->setText(QString("%1x%2").arg(lpPicture->imageWidth()).arg(lpPicture->imageHeight()));
|
||||
ui->m_lpCamera->setText(QString("%1 %2").arg(lpPicture->cameraMake()).arg(lpPicture->cameraModel()));
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
#ifndef CTOOLBOXINFO_H
|
||||
#define CTOOLBOXINFO_H
|
||||
|
||||
|
||||
#include "cpicture.h"
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
|
||||
namespace Ui {
|
||||
class cToolBoxInfo;
|
||||
}
|
||||
|
||||
class cToolBoxInfo : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit cToolBoxInfo(QWidget *parent = nullptr);
|
||||
~cToolBoxInfo();
|
||||
|
||||
void setPicture(cPicture* lpPicture);
|
||||
private:
|
||||
Ui::cToolBoxInfo* ui;
|
||||
};
|
||||
|
||||
#endif // CTOOLBOXINFO_H
|
||||
+115
@@ -0,0 +1,115 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>cToolBoxInfo</class>
|
||||
<widget class="QWidget" name="cToolBoxInfo">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>261</width>
|
||||
<height>163</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<item row="0" column="0">
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>size:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>filename:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>date:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string>camera:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLabel" name="m_lpFileName">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLabel" name="m_lpSize">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QLabel" name="m_lpDate">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QLabel" name="m_lpCamera">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
+12
-9
@@ -20,25 +20,23 @@ TEMPLATE = app
|
||||
win32-msvc* {
|
||||
contains(QT_ARCH, i386) {
|
||||
message("msvc 32-bit")
|
||||
INCLUDEPATH += C:/dev/3rdParty/exiv2/include
|
||||
LIBS += -LC:\dev\3rdParty\exiv2\lib -lexiv2.dll
|
||||
} else {
|
||||
message("msvc 64-bit")
|
||||
INCLUDEPATH += C:/dev/3rdParty/exiv2/include
|
||||
LIBS += -LC:\dev\3rdParty\exiv2\lib -lexiv2.dll
|
||||
}
|
||||
}
|
||||
|
||||
win32-g++ {
|
||||
message("mingw")
|
||||
INCLUDEPATH += C:/dev/3rdParty/exiv2/include
|
||||
LIBS += -LC:\dev\3rdParty\exiv2\lib -lexiv2.dll
|
||||
INCLUDEPATH += C:\dev\3rdParty\exiv2\include C:\dev\3rdParty\libraw
|
||||
LIBS += -LC:\dev\3rdParty\exiv2\lib -lexiv2.dll -LC:\dev\3rdParty\libraw\lib -lraw -lws2_32
|
||||
}
|
||||
|
||||
unix {
|
||||
message("*nix")
|
||||
}
|
||||
|
||||
QMAKE_CXXFLAGS += -DLIBRAW_NODLL -DLIBRAW_NOTHREADS
|
||||
|
||||
# The following define makes your compiler emit warnings if you use
|
||||
# any feature of Qt which has been marked as deprecated (the exact warnings
|
||||
# depend on your compiler). Please consult the documentation of the
|
||||
@@ -60,7 +58,9 @@ SOURCES += \
|
||||
csplashscreen.cpp \
|
||||
common.cpp \
|
||||
cpicturelibrary.cpp \
|
||||
cpicture.cpp
|
||||
cpicture.cpp \
|
||||
cimage.cpp \
|
||||
ctoolboxinfo.cpp
|
||||
|
||||
HEADERS += \
|
||||
cmainwindow.h \
|
||||
@@ -68,10 +68,13 @@ HEADERS += \
|
||||
csplashscreen.h \
|
||||
common.h \
|
||||
cpicturelibrary.h \
|
||||
cpicture.h
|
||||
cpicture.h \
|
||||
cimage.h \
|
||||
ctoolboxinfo.h
|
||||
|
||||
FORMS += \
|
||||
cmainwindow.ui
|
||||
cmainwindow.ui \
|
||||
ctoolboxinfo.ui
|
||||
|
||||
# Default rules for deployment.
|
||||
qnx: target.path = /tmp/$${TARGET}/bin
|
||||
|
||||
Reference in New Issue
Block a user