initial commit
@ -0,0 +1,844 @@
|
||||
/*!
|
||||
\file cexif.h
|
||||
|
||||
*/
|
||||
|
||||
#ifndef CEXIF_H
|
||||
#define CEXIF_H
|
||||
|
||||
#include <QString>
|
||||
#include <QVariant>
|
||||
#include <QDateTime>
|
||||
#include <QImage>
|
||||
|
||||
#include <QMetaType>
|
||||
#include <QList>
|
||||
|
||||
#include <QSqlDatabase>
|
||||
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\class cEXIFCompression cexif.h "cexif.h"
|
||||
*/
|
||||
class cEXIFCompression
|
||||
{
|
||||
public:
|
||||
cEXIFCompression(const qint32& iID, const QString& szCompression);
|
||||
|
||||
qint32 m_iID; /*!< TODO: describe */
|
||||
QString m_szCompression; /*!< TODO: describe */
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(cEXIFCompression*)
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\class cEXIFCompressionList cexif.h "cexif.h"
|
||||
*/
|
||||
class cEXIFCompressionList : public QList<cEXIFCompression*>
|
||||
{
|
||||
public:
|
||||
cEXIFCompressionList();
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn add
|
||||
\param iID
|
||||
\param szCompression
|
||||
\return cEXIFCompression
|
||||
*/
|
||||
cEXIFCompression* add(const qint32& iID, const QString& szCompression);
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn find
|
||||
\param iID
|
||||
\return cEXIFCompression
|
||||
*/
|
||||
cEXIFCompression* find(const qint32& iID);
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn compression
|
||||
\param iID
|
||||
\return QString
|
||||
*/
|
||||
QString compression(const qint32& iID);
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(cEXIFCompressionList)
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\class cEXIFLightSource cexif.h "cexif.h"
|
||||
*/
|
||||
class cEXIFLightSource
|
||||
{
|
||||
public:
|
||||
cEXIFLightSource(const qint32& iID, const QString& szLightSource);
|
||||
|
||||
qint32 m_iID; /*!< TODO: describe */
|
||||
QString m_szLightSource; /*!< TODO: describe */
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(cEXIFLightSource*)
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\class cEXIFLightSourceList cexif.h "cexif.h"
|
||||
*/
|
||||
class cEXIFLightSourceList : public QList<cEXIFLightSource*>
|
||||
{
|
||||
public:
|
||||
cEXIFLightSourceList();
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn add
|
||||
\param iID
|
||||
\param szLightSource
|
||||
\return cEXIFLightSource
|
||||
*/
|
||||
cEXIFLightSource* add(const qint32& iID, const QString& szLightSource);
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn find
|
||||
\param iID
|
||||
\return cEXIFLightSource
|
||||
*/
|
||||
cEXIFLightSource* find(const qint32& iID);
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn lightSource
|
||||
\param iID
|
||||
\return QString
|
||||
*/
|
||||
QString lightSource(const qint32& iID);
|
||||
};
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\class cEXIFFlash cexif.h "cexif.h"
|
||||
*/
|
||||
class cEXIFFlash
|
||||
{
|
||||
public:
|
||||
cEXIFFlash(const qint32& iID, const QString& szFlash);
|
||||
|
||||
qint32 m_iID; /*!< TODO: describe */
|
||||
QString m_szFlash; /*!< TODO: describe */
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(cEXIFFlash*)
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\class cEXIFFlashList cexif.h "cexif.h"
|
||||
*/
|
||||
class cEXIFFlashList : public QList<cEXIFFlash*>
|
||||
{
|
||||
public:
|
||||
cEXIFFlashList();
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn add
|
||||
\param iID
|
||||
\param szFlash
|
||||
\return cEXIFFlash
|
||||
*/
|
||||
cEXIFFlash* add(const qint32& iID, const QString& szFlash);
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn find
|
||||
\param iID
|
||||
\return cEXIFFlash
|
||||
*/
|
||||
cEXIFFlash* find(const qint32& iID);
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn flash
|
||||
\param iID
|
||||
\return QString
|
||||
*/
|
||||
QString flash(const qint32& iID);
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
*/
|
||||
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 */
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(cEXIFTag*)
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\class cEXIFTagList cexif.h "cexif.h"
|
||||
*/
|
||||
class cEXIFTagList : public QList<cEXIFTag*>
|
||||
{
|
||||
public:
|
||||
cEXIFTagList();
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn add
|
||||
\param iTAGID
|
||||
\param szTAGName
|
||||
\param iIFDID
|
||||
\param iTypeID
|
||||
\param szDescription
|
||||
\return cEXIFTag
|
||||
*/
|
||||
cEXIFTag* add(const qint32& iTAGID, const QString& szTAGName, const qint32& iIFDID, const qint32& iTypeID, const QString& szDescription);
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn find
|
||||
\param iTAGID
|
||||
\param iIFDID
|
||||
\return cEXIFTag
|
||||
*/
|
||||
cEXIFTag* find(const qint32& iTAGID, const qint32& iIFDID);
|
||||
};
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
*/
|
||||
class cEXIFValue
|
||||
{
|
||||
public:
|
||||
cEXIFValue(cEXIFTag* lpEXIFTag);
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn exifTag
|
||||
\return cEXIFTag
|
||||
*/
|
||||
cEXIFTag* exifTag();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn setValue
|
||||
\param szValue
|
||||
\param iTypeId
|
||||
\param iCount
|
||||
*/
|
||||
void setValue(const QString& szValue, qint32 iTypeId, qint32 iCount = 1);
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn value
|
||||
\return QVariant
|
||||
*/
|
||||
QVariant value();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn valueList
|
||||
\return QList<QVariant>
|
||||
*/
|
||||
QList<QVariant> valueList();
|
||||
|
||||
private:
|
||||
cEXIFTag* m_lpEXIFTag; /*!< TODO: describe */
|
||||
QList<QVariant> m_valueList; /*!< TODO: describe */
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn convertValue
|
||||
\param szValue
|
||||
\param iTypeId
|
||||
\return QVariant
|
||||
*/
|
||||
QVariant convertValue(const QString& szValue, qint32 iTypeId);
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(cEXIFValue*)
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\class cEXIFValueList cexif.h "cexif.h"
|
||||
*/
|
||||
class cEXIFValueList : public QList<cEXIFValue*>
|
||||
{
|
||||
public:
|
||||
cEXIFValueList();
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn add
|
||||
\param lpEXIFTag
|
||||
\return cEXIFValue
|
||||
*/
|
||||
cEXIFValue* add(cEXIFTag* lpEXIFTag);
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn find
|
||||
\param lpEXIFTag
|
||||
\return cEXIFValue
|
||||
*/
|
||||
cEXIFValue* find(cEXIFTag* lpEXIFTag);
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
*/
|
||||
class cIPTCTag
|
||||
{
|
||||
public:
|
||||
cIPTCTag(const qint32& iTAGID, const QString& szTAGName, const qint32& iTypeID, const QString& szDescription);
|
||||
|
||||
qint32 m_iTAGID; /*!< TODO: describe */
|
||||
QString m_szTAGName; /*!< TODO: describe */
|
||||
qint32 m_iTypeID; /*!< TODO: describe */
|
||||
QString m_szDescription; /*!< TODO: describe */
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(cIPTCTag*)
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\class cIPTCTagList cexif.h "cexif.h"
|
||||
*/
|
||||
class cIPTCTagList : public QList<cIPTCTag*>
|
||||
{
|
||||
public:
|
||||
cIPTCTagList();
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn add
|
||||
\param iTAGID
|
||||
\param szTAGName
|
||||
\param iTypeID
|
||||
\param szDescription
|
||||
\return cIPTCTag
|
||||
*/
|
||||
cIPTCTag* add(const qint32& iTAGID, const QString& szTAGName, const qint32& iTypeID, const QString& szDescription);
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn find
|
||||
\param iTAGID
|
||||
\return cIPTCTag
|
||||
*/
|
||||
cIPTCTag* find(const qint32& iTAGID);
|
||||
};
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
*/
|
||||
class cIPTCValue
|
||||
{
|
||||
public:
|
||||
cIPTCValue(cIPTCTag* lpIPTCTag);
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn iptcTag
|
||||
\return cIPTCTag
|
||||
*/
|
||||
cIPTCTag* iptcTag();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn setValue
|
||||
\param szValue
|
||||
\param iTypeId
|
||||
\param iCount
|
||||
*/
|
||||
void setValue(const QString& szValue, qint32 iTypeId, qint32 iCount = 1);
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn value
|
||||
\return QVariant
|
||||
*/
|
||||
QVariant value();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn valueList
|
||||
\return QList<QVariant>
|
||||
*/
|
||||
QList<QVariant> valueList();
|
||||
|
||||
private:
|
||||
cIPTCTag* m_lpIPTCTag; /*!< TODO: describe */
|
||||
QList<QVariant> m_valueList; /*!< TODO: describe */
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn convertValue
|
||||
\param szValue
|
||||
\param iTypeId
|
||||
\return QVariant
|
||||
*/
|
||||
QVariant convertValue(const QString& szValue, qint32 iTypeId);
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(cIPTCValue*)
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\class cIPTCValueList cexif.h "cexif.h"
|
||||
*/
|
||||
class cIPTCValueList : public QList<cIPTCValue*>
|
||||
{
|
||||
public:
|
||||
cIPTCValueList();
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn add
|
||||
\param lpIPTCTag
|
||||
\return cIPTCValue
|
||||
*/
|
||||
cIPTCValue* add(cIPTCTag* lpIPTCTag);
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn find
|
||||
\param lpIPTCTag
|
||||
\return cIPTCValue
|
||||
*/
|
||||
cIPTCValue* find(cIPTCTag* lpIPTCTag);
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
*/
|
||||
class cXMPTag
|
||||
{
|
||||
public:
|
||||
cXMPTag(const QString& szTAGName, const qint32& iTypeID, const QString& szDescription);
|
||||
|
||||
QString m_szTAGName; /*!< TODO: describe */
|
||||
qint32 m_iTypeID; /*!< TODO: describe */
|
||||
QString m_szDescription; /*!< TODO: describe */
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(cXMPTag*)
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\class cXMPTagList cexif.h "cexif.h"
|
||||
*/
|
||||
class cXMPTagList : public QList<cXMPTag*>
|
||||
{
|
||||
public:
|
||||
cXMPTagList();
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn add
|
||||
\param szTAGName
|
||||
\param iTypeID
|
||||
\param szDescription
|
||||
\return cXMPTag
|
||||
*/
|
||||
cXMPTag* add(const QString& szTAGName, const qint32& iTypeID, const QString& szDescription);
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn find
|
||||
\param szTAGName
|
||||
\return cXMPTag
|
||||
*/
|
||||
cXMPTag* find(const QString& szTAGName);
|
||||
};
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
*/
|
||||
class cXMPValue
|
||||
{
|
||||
public:
|
||||
cXMPValue(cXMPTag* lpXMPTag);
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn exifTag
|
||||
\return cXMPTag
|
||||
*/
|
||||
cXMPTag* xmpTag();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn setValue
|
||||
\param szValue
|
||||
\param iTypeId
|
||||
\param iCount
|
||||
*/
|
||||
void setValue(const QString& szValue, qint32 iTypeId, qint32 iCount = 1);
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn value
|
||||
\return QVariant
|
||||
*/
|
||||
QVariant value();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn valueList
|
||||
\return QList<QVariant>
|
||||
*/
|
||||
QList<QVariant> valueList();
|
||||
|
||||
private:
|
||||
cXMPTag* m_lpXMPTag; /*!< TODO: describe */
|
||||
QList<QVariant> m_valueList; /*!< TODO: describe */
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn convertValue
|
||||
\param szValue
|
||||
\param iTypeId
|
||||
\return QVariant
|
||||
*/
|
||||
QVariant convertValue(const QString& szValue, qint32 iTypeId);
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(cXMPValue*)
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\class cXMPValueList cexif.h "cexif.h"
|
||||
*/
|
||||
class cXMPValueList : public QList<cXMPValue*>
|
||||
{
|
||||
public:
|
||||
cXMPValueList();
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn add
|
||||
\param lpXMPTag
|
||||
\return cXMPValue
|
||||
*/
|
||||
cXMPValue* add(cXMPTag* lpXMPTag);
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn find
|
||||
\param lpXMPTag
|
||||
\return cXMPValue
|
||||
*/
|
||||
cXMPValue* find(cXMPTag* lpXMPTag);
|
||||
};
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\class cEXIF cexif.h "cexif.h"
|
||||
*/
|
||||
class cEXIF
|
||||
{
|
||||
public:
|
||||
cEXIF();
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn fromFile
|
||||
\param szFileName
|
||||
\return bool
|
||||
*/
|
||||
bool fromFile(const QString& szFileName);
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn mimeType
|
||||
\return QString
|
||||
*/
|
||||
QString mimeType();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn imageWidth
|
||||
\return qint32
|
||||
*/
|
||||
qint32 imageWidth();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn imageHeight
|
||||
\return qint32
|
||||
*/
|
||||
qint32 imageHeight();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn imageOrientation
|
||||
\return qint16
|
||||
*/
|
||||
qint16 imageOrientation();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn cameraMake
|
||||
\return QString
|
||||
*/
|
||||
QString cameraMake();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn cameraModel
|
||||
\return QString
|
||||
*/
|
||||
QString cameraModel();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn dateTime
|
||||
\return QDateTime
|
||||
*/
|
||||
QDateTime dateTime();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn fNumber
|
||||
\return QString
|
||||
*/
|
||||
QString fNumber();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn iso
|
||||
\return qint32
|
||||
*/
|
||||
qint32 iso();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn flash
|
||||
\return QString
|
||||
*/
|
||||
QString flash();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn flashID
|
||||
\return qint32
|
||||
*/
|
||||
qint32 flashID();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn focalLength
|
||||
\return qreal
|
||||
*/
|
||||
qreal focalLength();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn lensMake
|
||||
\return QString
|
||||
*/
|
||||
QString lensMake();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn lensModel
|
||||
\return QString
|
||||
*/
|
||||
QString lensModel();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn exposureTime
|
||||
\return QString
|
||||
*/
|
||||
QString exposureTime();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn exposureBias
|
||||
\return qint32
|
||||
*/
|
||||
qint32 exposureBias();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn exifVersion
|
||||
\return QString
|
||||
*/
|
||||
QString exifVersion();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn dateTimeOriginal
|
||||
\return QDateTime
|
||||
*/
|
||||
QDateTime dateTimeOriginal();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn dateTimeDigitized
|
||||
\return QDateTime
|
||||
*/
|
||||
QDateTime dateTimeDigitized();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn whiteBalance
|
||||
\return qint32
|
||||
*/
|
||||
qint32 whiteBalance();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn focalLength35
|
||||
\return qreal
|
||||
*/
|
||||
qreal focalLength35();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn gps
|
||||
\return QString
|
||||
*/
|
||||
QString gps();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn duration
|
||||
\return QString
|
||||
*/
|
||||
QString duration();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn fileName
|
||||
\return QString
|
||||
*/
|
||||
QString fileName();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn previewList
|
||||
\return QList<QImage>
|
||||
*/
|
||||
QList<QImage> previewList();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn thumbnail
|
||||
\return QImage
|
||||
*/
|
||||
QImage thumbnail();
|
||||
|
||||
private:
|
||||
cEXIFValueList m_exifValueList; /*!< TODO: describe */
|
||||
cIPTCValueList m_iptcValueList; /*!< TODO: describe */
|
||||
cXMPValueList m_xmpValueList; /*!< TODO: describe */
|
||||
QString m_szMimeType; /*!< TODO: describe */
|
||||
qint32 m_iWidth; /*!< TODO: describe */
|
||||
qint32 m_iHeight; /*!< TODO: describe */
|
||||
QString m_szFileName; /*!< TODO: describe */
|
||||
QList<QImage> m_previewList; /*!< TODO: describe */
|
||||
QImage m_thumbnail; /*!< TODO: describe */
|
||||
|
||||
cEXIFCompressionList m_exifCompressionList; /*!< TODO: describe */
|
||||
cEXIFLightSourceList m_exifLightSourceList; /*!< TODO: describe */
|
||||
cEXIFFlashList m_exifFlashList; /*!< TODO: describe */
|
||||
cEXIFTagList m_exifTagList; /*!< TODO: describe */
|
||||
|
||||
cIPTCTagList m_iptcTagList; /*!< TODO: describe */
|
||||
|
||||
cXMPTagList m_xmpTagList; /*!< TODO: describe */
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn getEXIFTag
|
||||
\param iTAGID
|
||||
\param iIFDID
|
||||
\return QVariant
|
||||
*/
|
||||
QVariant getEXIFTag(qint32 iTAGID, qint32 iIFDID);
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn getIPTCTag
|
||||
\param iTAGID
|
||||
\return QVariant
|
||||
*/
|
||||
QVariant getIPTCTag(qint32 iTAGID);
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn getXMPTag
|
||||
\param szTAGName
|
||||
\return QVariant
|
||||
*/
|
||||
QVariant getXMPTag(const QString& szTAGName);
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn getTagList
|
||||
\param iTAGID
|
||||
\param iIFDID
|
||||
\return QList<QVariant>
|
||||
*/
|
||||
QList<QVariant> getTagList(qint32 iTAGID, qint32 iIFDID);
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(cEXIF*)
|
||||
|
||||
#endif // CEXIF_H
|
||||
@ -0,0 +1,22 @@
|
||||
#include "cexportdialog.h"
|
||||
#include "ui_cexportdialog.h"
|
||||
|
||||
|
||||
cExportDialog::cExportDialog(QWidget *parent) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::cExportDialog)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
connect(ui->m_lpQualityValue, &QSlider::valueChanged, this, &cExportDialog::onQualityChanged);
|
||||
}
|
||||
|
||||
cExportDialog::~cExportDialog()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void cExportDialog::onQualityChanged(int value)
|
||||
{
|
||||
ui->m_lpQualityValue->setNum(value);
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
#ifndef CEXPORTDIALOG_H
|
||||
#define CEXPORTDIALOG_H
|
||||
|
||||
#include <QDialog>
|
||||
|
||||
namespace Ui {
|
||||
class cExportDialog;
|
||||
}
|
||||
|
||||
class cExportDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit cExportDialog(QWidget *parent = nullptr);
|
||||
~cExportDialog();
|
||||
|
||||
private:
|
||||
Ui::cExportDialog *ui;
|
||||
|
||||
private slots:
|
||||
void onQualityChanged(int value);
|
||||
};
|
||||
|
||||
#endif // CEXPORTDIALOG_H
|
||||
@ -0,0 +1,136 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>cExportDialog</class>
|
||||
<widget class="QDialog" name="cExportDialog">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<height>135</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Dialog</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<item row="0" column="0">
|
||||
<layout class="QGridLayout" name="gridLayout" columnstretch="0,0">
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>quality:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>file format:</string>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>m_lpFileFormat</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QComboBox" name="m_lpFileFormat"/>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>destination path:</string>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>m_lpDestinationPath</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<item>
|
||||
<widget class="QSlider" name="m_lpQuality">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="tickPosition">
|
||||
<enum>QSlider::TicksBelow</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="m_lpQualityValue">
|
||||
<property name="text">
|
||||
<string>0</string>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>m_lpQuality</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3" stretch="0,0">
|
||||
<item>
|
||||
<widget class="QLineEdit" name="m_lpDestinationPath"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="m_lpDestinationPathBrowse">
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QDialogButtonBox" name="buttonBox">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>accepted()</signal>
|
||||
<receiver>cExportDialog</receiver>
|
||||
<slot>accept()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>227</x>
|
||||
<y>117</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>157</x>
|
||||
<y>134</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>rejected()</signal>
|
||||
<receiver>cExportDialog</receiver>
|
||||
<slot>reject()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>295</x>
|
||||
<y>123</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>286</x>
|
||||
<y>134</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
</ui>
|
||||
@ -0,0 +1,147 @@
|
||||
/*!
|
||||
\file cimage.cpp
|
||||
|
||||
*/
|
||||
|
||||
#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,133 @@
|
||||
/*!
|
||||
\file cimage.h
|
||||
|
||||
*/
|
||||
|
||||
#ifndef CIMAGE_H
|
||||
#define CIMAGE_H
|
||||
|
||||
|
||||
#include <QImage>
|
||||
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\class cImage cimage.h "cimage.h"
|
||||
*/
|
||||
class cImage : public QImage
|
||||
{
|
||||
public:
|
||||
cImage();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn cImage
|
||||
\param size
|
||||
\param format
|
||||
*/
|
||||
cImage(const QSize &size, QImage::Format format);
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn cImage
|
||||
\param width
|
||||
\param height
|
||||
\param format
|
||||
*/
|
||||
cImage(int width, int height, QImage::Format format);
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn cImage
|
||||
\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
|
||||
|
||||
\fn cImage
|
||||
\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
|
||||
|
||||
\fn cImage
|
||||
\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
|
||||
|
||||
\fn cImage
|
||||
\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
|
||||
|
||||
\fn cImage
|
||||
\param fileName
|
||||
\param format
|
||||
*/
|
||||
cImage(const QString &fileName, const char *format = nullptr);
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn cImage
|
||||
\param image
|
||||
*/
|
||||
cImage(const QImage &image);
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn cImage
|
||||
\param other
|
||||
*/
|
||||
cImage(QImage &&other);
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn load
|
||||
\param fileName
|
||||
\param format
|
||||
\return bool
|
||||
*/
|
||||
bool load(const QString &fileName, const char *format = nullptr);
|
||||
|
||||
private:
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn loadRAW
|
||||
\param fileName
|
||||
\return bool
|
||||
*/
|
||||
bool loadRAW(const QString &fileName);
|
||||
};
|
||||
|
||||
#endif // CIMAGE_H
|
||||
@ -0,0 +1,21 @@
|
||||
#ifndef COMMON_H
|
||||
#define COMMON_H
|
||||
|
||||
|
||||
#include <QDebug>
|
||||
|
||||
|
||||
#define THUMBNAIL_WIDTH 160
|
||||
#define THUMBNAIL_HEIGHT 120
|
||||
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define myDebug qDebug() << __FILE__ << "(" << __LINE__ << ") - " << __PRETTY_FUNCTION__ << ":"
|
||||
#elif __MINGW32__
|
||||
#define myDebug qDebug() << __FILE__ << "(" << __LINE__ << ") - " << __PRETTY_FUNCTION__ << ":"
|
||||
#else
|
||||
#define myDebug qDebug() << __FILE__ << "(" << __LINE__ << ") - " << __FUNCTION__ << ":"
|
||||
#endif
|
||||
|
||||
|
||||
#endif // COMMON_H
|
||||
@ -0,0 +1,68 @@
|
||||
/*!
|
||||
\file csplashscreen.cpp
|
||||
|
||||
*/
|
||||
|
||||
#include "csplashscreen.h"
|
||||
#include "common.h"
|
||||
|
||||
#include <QStyleOptionProgressBar>
|
||||
|
||||
|
||||
cSplashScreen::cSplashScreen(const QPixmap& pixmap, QFont& font) :
|
||||
QSplashScreen(pixmap),
|
||||
m_iMax(100),
|
||||
m_iProgress(0)
|
||||
{
|
||||
setFont(font);
|
||||
m_textDocument.setDefaultFont(font);
|
||||
}
|
||||
|
||||
void cSplashScreen::setMax(qint32 max)
|
||||
{
|
||||
m_iMax = max;
|
||||
}
|
||||
|
||||
void cSplashScreen::drawContents(QPainter *painter)
|
||||
{
|
||||
painter->translate(m_rect.topLeft());
|
||||
m_textDocument.setHtml(m_szMessage);
|
||||
m_textDocument.drawContents(painter);
|
||||
|
||||
QStyleOptionProgressBar pbstyle;
|
||||
pbstyle.initFrom(this);
|
||||
pbstyle.state = QStyle::State_Enabled;
|
||||
pbstyle.textVisible = false;
|
||||
pbstyle.minimum = 0;
|
||||
pbstyle.maximum = m_iMax;
|
||||
pbstyle.progress = m_iProgress;
|
||||
pbstyle.invertedAppearance = false;
|
||||
pbstyle.rect = QRect(0, 330, 390, 10); // Where is it.
|
||||
|
||||
// Draw it...
|
||||
style()->drawControl(QStyle::CE_ProgressBar, &pbstyle, painter, this);
|
||||
}
|
||||
|
||||
void cSplashScreen::showStatusMessage(const QString& message)
|
||||
{
|
||||
m_szMessage = message;
|
||||
showMessage(m_szMessage);
|
||||
}
|
||||
|
||||
void cSplashScreen::addStatusMessage(const QString& message)
|
||||
{
|
||||
m_szMessage.append(message);
|
||||
showMessage(m_szMessage);
|
||||
}
|
||||
|
||||
void cSplashScreen::setMessageRect(QRect rect)
|
||||
{
|
||||
m_rect = rect;
|
||||
m_textDocument.setTextWidth(rect.width());
|
||||
}
|
||||
|
||||
void cSplashScreen::setProgress(int value)
|
||||
{
|
||||
m_iProgress = value;
|
||||
update();
|
||||
}
|
||||
@ -0,0 +1,78 @@
|
||||
/*!
|
||||
\file csplashscreen.h
|
||||
|
||||
*/
|
||||
|
||||
#ifndef CSPLASHSCREEN_H
|
||||
#define CSPLASHSCREEN_H
|
||||
|
||||
|
||||
#include <QSplashScreen>
|
||||
#include <QPainter>
|
||||
#include <QTextDocument>
|
||||
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\class cSplashScreen csplashscreen.h "csplashscreen.h"
|
||||
*/
|
||||
class cSplashScreen : public QSplashScreen
|
||||
{
|
||||
public:
|
||||
cSplashScreen(const QPixmap& pixmap, QFont &font);
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn drawContents
|
||||
\param painter
|
||||
*/
|
||||
virtual void drawContents(QPainter *painter);
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn showStatusMessage
|
||||
\param message
|
||||
*/
|
||||
void showStatusMessage(const QString &message);
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn addStatusMessage
|
||||
\param message
|
||||
*/
|
||||
void addStatusMessage(const QString &message);
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn setMessageRect
|
||||
\param rect
|
||||
*/
|
||||
void setMessageRect(QRect rect);
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn setMax
|
||||
\param max
|
||||
*/
|
||||
void setMax(qint32 max);
|
||||
|
||||
private:
|
||||
QTextDocument m_textDocument; /*!< TODO: describe */
|
||||
QString m_szMessage; /*!< TODO: describe */
|
||||
QRect m_rect; /*!< TODO: describe */
|
||||
qint32 m_iMax; /*!< TODO: describe */
|
||||
qint32 m_iProgress; /*!< TODO: describe */
|
||||
public slots:
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn setProgress
|
||||
\param value
|
||||
*/
|
||||
void setProgress(int value);
|
||||
};
|
||||
|
||||
#endif // CSPLASHSCREEN_H
|
||||
@ -0,0 +1,48 @@
|
||||
#include "ctreeview.h"
|
||||
|
||||
#include <QDropEvent>
|
||||
#include <QMimeData>
|
||||
#include <QStandardItemModel>
|
||||
|
||||
#include <QDebug>
|
||||
|
||||
|
||||
cTreeView::cTreeView(QWidget* parent) :
|
||||
QTreeView(parent)
|
||||
{
|
||||
setAcceptDrops(true);
|
||||
}
|
||||
|
||||
void cTreeView::dragEnterEvent(QDragEnterEvent *event)
|
||||
{
|
||||
if(event->mimeData()->hasUrls())
|
||||
{
|
||||
event->acceptProposedAction();
|
||||
}
|
||||
}
|
||||
|
||||
void cTreeView::dropEvent(QDropEvent* event)
|
||||
{
|
||||
const QMimeData* mimeData = event->mimeData();
|
||||
|
||||
if(mimeData->hasUrls())
|
||||
{
|
||||
QStringList pathList;
|
||||
QList<QUrl> urlList = mimeData->urls();
|
||||
|
||||
for(int i = 0; i < urlList.size(); i++)
|
||||
emit addEntry(urlList[i].toLocalFile());
|
||||
}
|
||||
|
||||
event->acceptProposedAction();
|
||||
}
|
||||
|
||||
void cTreeView::dragMoveEvent(QDragMoveEvent *event)
|
||||
{
|
||||
event->acceptProposedAction();
|
||||
}
|
||||
|
||||
void cTreeView::dragLeaveEvent(QDragLeaveEvent *event)
|
||||
{
|
||||
event->accept();
|
||||
}
|
||||
@ -0,0 +1,35 @@
|
||||
#ifndef CTREEVIEW_H
|
||||
#define CTREEVIEW_H
|
||||
|
||||
|
||||
#include <QTreeView>
|
||||
#include <QMetaType>
|
||||
|
||||
#include <QMimeDatabase>
|
||||
|
||||
#include <QStandardItem>
|
||||
|
||||
|
||||
class cTreeView : public QTreeView
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
cTreeView(QWidget* parent = Q_NULLPTR);
|
||||
|
||||
protected:
|
||||
void dragEnterEvent(QDragEnterEvent *event) override;
|
||||
void dropEvent(QDropEvent *event) override;
|
||||
void dragMoveEvent(QDragMoveEvent *event) override;
|
||||
void dragLeaveEvent(QDragLeaveEvent *event) override;
|
||||
|
||||
private:
|
||||
|
||||
signals:
|
||||
void addEntry(const QString& path);
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(cTreeView*)
|
||||
|
||||
|
||||
#endif // CTREEVIEW_H
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 796 B |
|
After Width: | Height: | Size: 897 B |
|
After Width: | Height: | Size: 686 B |
|
After Width: | Height: | Size: 628 B |
|
After Width: | Height: | Size: 477 B |
|
After Width: | Height: | Size: 672 B |
|
After Width: | Height: | Size: 684 B |
|
After Width: | Height: | Size: 779 B |
|
After Width: | Height: | Size: 544 B |
|
After Width: | Height: | Size: 464 B |
|
After Width: | Height: | Size: 756 B |
|
After Width: | Height: | Size: 866 B |
|
After Width: | Height: | Size: 911 B |
|
After Width: | Height: | Size: 773 B |
|
After Width: | Height: | Size: 498 B |
|
After Width: | Height: | Size: 807 B |
|
After Width: | Height: | Size: 680 B |
|
After Width: | Height: | Size: 776 B |
|
After Width: | Height: | Size: 617 B |
|
After Width: | Height: | Size: 561 B |
|
After Width: | Height: | Size: 591 B |
|
After Width: | Height: | Size: 441 B |
|
After Width: | Height: | Size: 650 B |
|
After Width: | Height: | Size: 635 B |
|
After Width: | Height: | Size: 436 B |
|
After Width: | Height: | Size: 435 B |
|
After Width: | Height: | Size: 330 B |
|
After Width: | Height: | Size: 317 B |
|
After Width: | Height: | Size: 324 B |
|
After Width: | Height: | Size: 342 B |
|
After Width: | Height: | Size: 705 B |
|
After Width: | Height: | Size: 619 B |
|
After Width: | Height: | Size: 611 B |
|
After Width: | Height: | Size: 673 B |
|
After Width: | Height: | Size: 663 B |
|
After Width: | Height: | Size: 683 B |
|
After Width: | Height: | Size: 666 B |
|
After Width: | Height: | Size: 606 B |
|
After Width: | Height: | Size: 723 B |
|
After Width: | Height: | Size: 685 B |
|
After Width: | Height: | Size: 676 B |
|
After Width: | Height: | Size: 655 B |
|
After Width: | Height: | Size: 636 B |
|
After Width: | Height: | Size: 652 B |
|
After Width: | Height: | Size: 323 B |
|
After Width: | Height: | Size: 247 B |
|
After Width: | Height: | Size: 681 B |
|
After Width: | Height: | Size: 882 B |
|
After Width: | Height: | Size: 756 B |
|
After Width: | Height: | Size: 619 B |
|
After Width: | Height: | Size: 868 B |
|
After Width: | Height: | Size: 693 B |
|
After Width: | Height: | Size: 540 B |
|
After Width: | Height: | Size: 628 B |
|
After Width: | Height: | Size: 464 B |
|
After Width: | Height: | Size: 660 B |
|
After Width: | Height: | Size: 429 B |
|
After Width: | Height: | Size: 653 B |
|
After Width: | Height: | Size: 764 B |
|
After Width: | Height: | Size: 782 B |
|
After Width: | Height: | Size: 770 B |
|
After Width: | Height: | Size: 771 B |
|
After Width: | Height: | Size: 820 B |
|
After Width: | Height: | Size: 764 B |
|
After Width: | Height: | Size: 799 B |
|
After Width: | Height: | Size: 935 B |
|
After Width: | Height: | Size: 534 B |
|
After Width: | Height: | Size: 514 B |
|
After Width: | Height: | Size: 650 B |
|
After Width: | Height: | Size: 912 B |
|
After Width: | Height: | Size: 583 B |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 686 B |
|
After Width: | Height: | Size: 558 B |
|
After Width: | Height: | Size: 574 B |
|
After Width: | Height: | Size: 932 B |
|
After Width: | Height: | Size: 422 B |
|
After Width: | Height: | Size: 550 B |
|
After Width: | Height: | Size: 474 B |
|
After Width: | Height: | Size: 928 B |
|
After Width: | Height: | Size: 603 B |
|
After Width: | Height: | Size: 652 B |
|
After Width: | Height: | Size: 720 B |
|
After Width: | Height: | Size: 553 B |