diff --git a/cimportdialog.ui b/cimportdialog.ui
index 6dd6bd5..f96cc31 100644
--- a/cimportdialog.ui
+++ b/cimportdialog.ui
@@ -148,11 +148,17 @@
Qt::Horizontal
+
+ Qt::CustomContextMenu
+
false
+
+ Qt::CustomContextMenu
+
QAbstractItemView::ExtendedSelection
diff --git a/cmainwindow.cpp b/cmainwindow.cpp
index ed5fdb6..1b46357 100644
--- a/cmainwindow.cpp
+++ b/cmainwindow.cpp
@@ -3,6 +3,8 @@
#include "cmainwindow.h"
#include "cimportdialog.h"
+#include "cdatetimepicker.h"
+
#include "ui_cmainwindow.h"
#include
@@ -93,9 +95,19 @@ void cMainWindow::createActions()
setToolButtonStyle(Qt::ToolButtonFollowStyle);
createFileActions();
+ createContextActions();
+
+ connect(ui->m_lpThumbnailView->selectionModel(), &QItemSelectionModel::selectionChanged, this, &cMainWindow::onThumbnailSelected);
+ connect(ui->m_lpFolderView->selectionModel(), &QItemSelectionModel::selectionChanged, this, &cMainWindow::onFolderSelected);
- connect(ui->m_lpThumbnailView->selectionModel(), &QItemSelectionModel::selectionChanged, this, &cMainWindow::onThumbnailSelected);
- connect(ui->m_lpFolderView->selectionModel(), &QItemSelectionModel::selectionChanged, this, &cMainWindow::onFolderSelected);
+ connect(ui->m_lpThumbnailView, &QListView::customContextMenuRequested, this, &cMainWindow::onThumbnailViewContextMenu);
+}
+
+void cMainWindow::createContextActions()
+{
+ m_lpChangeDateAction = new QAction(tr("change date"), this);
+ m_lpChangeDateAction->setStatusTip(tr("change the date of this picture"));
+ connect(m_lpChangeDateAction, &QAction::triggered, this, &cMainWindow::onChangeDate);
}
void cMainWindow::loadData(bool bProgressBar)
@@ -401,3 +413,42 @@ void cMainWindow::onFileImport()
m_lpProgressBar->setVisible(false);
}
}
+
+void cMainWindow::onThumbnailViewContextMenu(const QPoint& pos)
+{
+ QMenu menu(this);
+
+ if(ui->m_lpThumbnailView->selectionModel()->selectedIndexes().count() != 1)
+ return;
+
+ menu.addAction(m_lpChangeDateAction);
+ menu.exec(ui->m_lpThumbnailView->mapToGlobal(pos));
+}
+
+void cMainWindow::onChangeDate()
+{
+ if(ui->m_lpThumbnailView->selectionModel()->selectedIndexes().count() != 1)
+ return;
+
+ QModelIndex index = ui->m_lpThumbnailView->selectionModel()->selectedIndexes()[0];
+ if(!index.isValid())
+ return;
+
+ cPicture* lpPicture = m_lpThumbnailFilterProxyModel->data(index, Qt::UserRole+1).value();
+
+ if(lpPicture->dateTime().isValid())
+ {
+ cDateTimePicker dateTimePicker;
+ dateTimePicker.setWindowTitle("Date");
+ dateTimePicker.setText(QString(tr("Please set a new date for \"%1\".").arg(lpPicture->filePath() + QDir::separator() + lpPicture->fileName())));
+ dateTimePicker.setImage(lpPicture->thumbnail());
+
+ dateTimePicker.setDateTime(lpPicture->dateTime());
+ if(dateTimePicker.exec() == QDialog::Rejected)
+ return;
+
+ lpPicture->setDateTime(dateTimePicker.dateTime());
+
+ m_lpThumbnailFilterProxyModel->submit();
+ }
+}
diff --git a/cmainwindow.h b/cmainwindow.h
index 18276fb..a335687 100644
--- a/cmainwindow.h
+++ b/cmainwindow.h
@@ -77,6 +77,8 @@ private:
enum { MaxRecentFiles = 5 }; /*!< TODO: describe */
QAction* m_lpRecentFileAction[MaxRecentFiles]; /*!< TODO: describe */
+ QAction* m_lpChangeDateAction; /*!< TODO: describe */
+
/*!
\brief
@@ -95,6 +97,12 @@ private:
\fn createFileActions
*/
void createFileActions();
+ /*!
+ \brief
+
+ \fn createContextActions
+ */
+ void createContextActions();
/*!
\brief
@@ -165,6 +173,21 @@ private slots:
\fn onFileImport
*/
void onFileImport();
+
+ /*!
+ \brief
+
+ \fn onThumbnailViewContextMenu
+ \param pos
+ */
+ void onThumbnailViewContextMenu(const QPoint& pos);
+
+ /*!
+ \brief
+
+ \fn onChangeDate
+ */
+ void onChangeDate();
};
#endif // CMAINWINDOW_H
diff --git a/cmainwindow.ui b/cmainwindow.ui
index 22fc0d0..8e8a9b5 100644
--- a/cmainwindow.ui
+++ b/cmainwindow.ui
@@ -39,6 +39,9 @@
0
+
+ Qt::CustomContextMenu
+
true
@@ -53,6 +56,9 @@
0
+
+ Qt::CustomContextMenu
+
QAbstractItemView::NoEditTriggers