diff --git a/cfilebrowser.cpp b/cfilebrowser.cpp index 8416554..b936ad1 100644 --- a/cfilebrowser.cpp +++ b/cfilebrowser.cpp @@ -1,5 +1,4 @@ #include "cfilebrowser.h" -#include "cfileviewer.h" #include "ui_cfilebrowser.h" @@ -42,6 +41,9 @@ cFileBrowser::cFileBrowser(QProgressBar* lpProgressBar, QList* lpIm m_lpFileListModel = new QStandardItemModel(0, 0); ui->m_lpFileList->setModel(m_lpFileListModel); + m_lpSelectedListModel = new QStandardItemModel(0, 0); + ui->m_lpSelectedList->setModel(m_lpSelectedListModel); + m_cacheDB = QSqlDatabase::addDatabase("QSQLITE", "cacheDB"); m_cacheDB.setHostName("localhost"); m_cacheDB.setDatabaseName(userDir() + "cache.db"); @@ -116,6 +118,35 @@ void cFileBrowser::onDirectoryChanged(const QItemSelection& selected, const QIte m_working = false; } +void cFileBrowser::onCountChanged(const QString& fileName, QPixmap pixmap, int count) +{ + cFileViewer* lpFileViewer; + + for(int x = 0;x < m_lpSelectedListModel->rowCount();x++) + { + lpFileViewer = static_cast(ui->m_lpSelectedList->indexWidget(m_lpSelectedListModel->index(x, 0))); + if(lpFileViewer) + { + if(lpFileViewer->fileName() == fileName) + { + if(count) + lpFileViewer->setCount(count); + else + m_lpSelectedListModel->removeRow(x); + return; + } + } + } + + QStandardItem* lpItem = new QStandardItem(""); + cFileViewer* lpFileViewer1 = new cFileViewer; + lpFileViewer1->setImage(fileName, pixmap); + lpFileViewer1->setCount(count); + + m_lpSelectedListModel->appendRow(lpItem); + ui->m_lpSelectedList->setIndexWidget(m_lpSelectedListModel->index(m_lpSelectedListModel->rowCount()-1, 0), lpFileViewer1); +} + void cFileBrowser::addFile(const QFileInfo& fileInfo) { cEXIF* lpExif = new cEXIF(&m_exifTAGList, &m_exifCompressionList, &m_exifLightSourceList, &m_exifFlashList, &m_iptcTagList, &m_xmpTagList); @@ -141,5 +172,6 @@ void cFileBrowser::addFile(const QFileInfo& fileInfo) m_lpFileListModel->appendRow(lpItem); ui->m_lpFileList->setIndexWidget(m_lpFileListModel->index(m_lpFileListModel->rowCount()-1, 0), lpFileViewer); + connect(lpFileViewer, &cFileViewer::countChanged, this, &cFileBrowser::onCountChanged); delete lpExif; } diff --git a/cfilebrowser.h b/cfilebrowser.h index 27b9c73..29fee31 100644 --- a/cfilebrowser.h +++ b/cfilebrowser.h @@ -4,6 +4,8 @@ #include "common.h" #include "cexif.h" +#include "cfileviewer.h" + #include #include @@ -32,6 +34,7 @@ private: Ui::cFileBrowser* ui; QFileSystemModel m_directoryListModel; QStandardItemModel* m_lpFileListModel; + QStandardItemModel* m_lpSelectedListModel; QProgressBar* m_lpProgressBar; QList* m_lpImageFormats; @@ -52,6 +55,7 @@ private: private slots: void onDirectoryChanged(const QItemSelection& selected, const QItemSelection& deselected); + void onCountChanged(const QString& fileName, QPixmap pixmap, int count); }; #endif // CFILEBROWSER_H diff --git a/cfilebrowser.ui b/cfilebrowser.ui index bb54346..0993de8 100644 --- a/cfilebrowser.ui +++ b/cfilebrowser.ui @@ -15,32 +15,67 @@ - - - Qt::Horizontal - - - - - QAbstractItemView::NoEditTriggers - - - QListView::LeftToRight - - - QListView::Adjust - - - - 202 - 236 - - - - QListView::IconMode - - - + + + + + Qt::Horizontal + + + + + QAbstractItemView::NoEditTriggers + + + QListView::LeftToRight + + + QListView::Adjust + + + + 202 + 236 + + + + QListView::IconMode + + + + + + + + + 0 + 244 + + + + + 16777215 + 244 + + + + QListView::Free + + + QListView::LeftToRight + + + QListView::Adjust + + + + 202 + 236 + + + + + diff --git a/cfileviewer.cpp b/cfileviewer.cpp index a6dce44..80b11b3 100644 --- a/cfileviewer.cpp +++ b/cfileviewer.cpp @@ -19,6 +19,8 @@ cFileViewer::cFileViewer(QWidget *parent) : setMinimumSize(THUMBNAIL_WIDTH+2, THUMBNAIL_WIDTH+34); setMaximumSize(THUMBNAIL_WIDTH+2, THUMBNAIL_WIDTH+34); resize(THUMBNAIL_WIDTH+2, THUMBNAIL_WIDTH+34); + + connect(ui->m_lpCount, QOverload::of(&QSpinBox::valueChanged), this, &cFileViewer::onCountChanged); } cFileViewer::~cFileViewer() @@ -34,3 +36,51 @@ void cFileViewer::setImage(const QString& fileName, const QPixmap& image) ui->m_lpImage->setPixmap(image); ui->m_lpFileName->setText(fileInfo.fileName()); } + +QPixmap cFileViewer::image() +{ + return(QPixmap(*ui->m_lpImage->pixmap())); +} + +QString cFileViewer::fileName() +{ + return(m_fileName); +} + +void cFileViewer::setCount(qint32 count) +{ + ui->m_lpCount->setValue(count); +} + +qint32 cFileViewer::count() +{ + return(ui->m_lpCount->value()); +} + +void cFileViewer::onCountChanged(int i) +{ + emit countChanged(m_fileName, image(), i); +} + +cFileViewer* cFileViewerList::add(const QString& fileName, const QPixmap& image) +{ + cFileViewer* lpNew = find(fileName); + if(lpNew) + return(nullptr); + + lpNew = new cFileViewer; + lpNew->setImage(fileName, image); + append(lpNew); + + return(lpNew); +} + +cFileViewer* cFileViewerList::find(const QString& fileName) +{ + for(cFileViewerList::iterator i = begin();i != end();i++) + { + if((*i)->fileName() == fileName) + return(*i); + } + return(nullptr); +} diff --git a/cfileviewer.h b/cfileviewer.h index 7c0d258..970e58f 100644 --- a/cfileviewer.h +++ b/cfileviewer.h @@ -3,6 +3,8 @@ #include +#include +#include namespace Ui { @@ -18,10 +20,31 @@ public: ~cFileViewer(); void setImage(const QString& fileName, const QPixmap& image); + QPixmap image(); + + QString fileName(); + + void setCount(qint32 count); + qint32 count(); private: Ui::cFileViewer* ui; QString m_fileName; + +public slots: + void onCountChanged(int i); + +signals: + void countChanged(const QString& fileName, QPixmap pixmap, int i); +}; + +Q_DECLARE_METATYPE(cFileViewer*) + +class cFileViewerList : public QList +{ +public: + cFileViewer* add(const QString& fileName, const QPixmap& image); + cFileViewer* find(const QString& fileName); }; #endif // CFILEVIEWER_H diff --git a/cfileviewer.ui b/cfileviewer.ui index 8771a0e..79c63e9 100644 --- a/cfileviewer.ui +++ b/cfileviewer.ui @@ -85,7 +85,7 @@ - +