WIP: Display cover when double-clicking preview
This commit is contained in:
parent
a3b8048156
commit
3437824e42
|
@ -17,7 +17,7 @@
|
||||||
#include <c++utilities/io/catchiofailure.h>
|
#include <c++utilities/io/catchiofailure.h>
|
||||||
|
|
||||||
#include <QEvent>
|
#include <QEvent>
|
||||||
#include <QGraphicsScene>
|
#include <QGraphicsSceneMouseEvent>
|
||||||
#include <QGraphicsTextItem>
|
#include <QGraphicsTextItem>
|
||||||
#include <QGraphicsRectItem>
|
#include <QGraphicsRectItem>
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
|
@ -43,6 +43,18 @@ using namespace ConversionUtilities;
|
||||||
|
|
||||||
namespace QtGui {
|
namespace QtGui {
|
||||||
|
|
||||||
|
void PicturePreviewScene::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent)
|
||||||
|
{
|
||||||
|
emit displayRequested();
|
||||||
|
mouseEvent->accept();
|
||||||
|
}
|
||||||
|
|
||||||
|
void PicturePreview::mousePressEvent(QMouseEvent *mouseEvent)
|
||||||
|
{
|
||||||
|
emit displayRequested();
|
||||||
|
mouseEvent->accept();
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Constructs a new PicturePreviewSelection for the specified \a tag and \a field.
|
* \brief Constructs a new PicturePreviewSelection for the specified \a tag and \a field.
|
||||||
*/
|
*/
|
||||||
|
@ -520,6 +532,21 @@ void PicturePreviewSelection::dropEvent(QDropEvent *event)
|
||||||
event->ignore();
|
event->ignore();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PicturePreviewSelection::mouseDoubleClickEvent(QMouseEvent *event)
|
||||||
|
{
|
||||||
|
displaySelected();
|
||||||
|
event->accept();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool PicturePreviewSelection::eventFilter(QObject *watched, QEvent *event)
|
||||||
|
{
|
||||||
|
if(watched == m_scene && event->type() == QEvent::MouseButtonDblClick) {
|
||||||
|
displaySelected();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return QWidget::eventFilter(watched, event);
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Handles selected type being switched.
|
* \brief Handles selected type being switched.
|
||||||
*/
|
*/
|
||||||
|
@ -569,8 +596,10 @@ void PicturePreviewSelection::updateDescription(int lastIndex, int newIndex)
|
||||||
void PicturePreviewSelection::updatePreview(int index)
|
void PicturePreviewSelection::updatePreview(int index)
|
||||||
{
|
{
|
||||||
if(!m_scene) {
|
if(!m_scene) {
|
||||||
m_scene = new QGraphicsScene(m_ui->previewGraphicsView);
|
m_scene = new PicturePreviewScene(m_ui->previewGraphicsView);
|
||||||
m_ui->previewGraphicsView->setScene(m_scene);
|
m_ui->previewGraphicsView->setScene(m_scene);
|
||||||
|
connect(m_scene, &PicturePreviewScene::displayRequested, this, &PicturePreviewSelection::displaySelected);
|
||||||
|
//m_scene->installEventFilter(this);
|
||||||
}
|
}
|
||||||
if(!m_textItem) {
|
if(!m_textItem) {
|
||||||
m_textItem = new QGraphicsTextItem;
|
m_textItem = new QGraphicsTextItem;
|
||||||
|
|
|
@ -6,11 +6,12 @@
|
||||||
#include <tagparser/tag.h>
|
#include <tagparser/tag.h>
|
||||||
|
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
#include <QGraphicsScene>
|
||||||
|
#include <QGraphicsView>
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
QT_FORWARD_DECLARE_CLASS(QEvent)
|
QT_FORWARD_DECLARE_CLASS(QEvent)
|
||||||
QT_FORWARD_DECLARE_CLASS(QGraphicsScene)
|
|
||||||
QT_FORWARD_DECLARE_CLASS(QGraphicsTextItem)
|
QT_FORWARD_DECLARE_CLASS(QGraphicsTextItem)
|
||||||
QT_FORWARD_DECLARE_CLASS(QGraphicsPixmapItem)
|
QT_FORWARD_DECLARE_CLASS(QGraphicsPixmapItem)
|
||||||
QT_FORWARD_DECLARE_CLASS(QGraphicsRectItem)
|
QT_FORWARD_DECLARE_CLASS(QGraphicsRectItem)
|
||||||
|
@ -29,6 +30,44 @@ namespace Ui {
|
||||||
class PicturePreviewSelection;
|
class PicturePreviewSelection;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class PicturePreviewScene : public QGraphicsScene
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
PicturePreviewScene(QObject *parent = nullptr);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void displayRequested();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent);
|
||||||
|
};
|
||||||
|
|
||||||
|
inline PicturePreviewScene::PicturePreviewScene(QObject *parent) :
|
||||||
|
QGraphicsScene(parent)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
class PicturePreview : public QGraphicsView
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
PicturePreview(QWidget *parent = nullptr);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void displayRequested();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void mousePressEvent(QMouseEvent *mouseEvent);
|
||||||
|
};
|
||||||
|
|
||||||
|
inline PicturePreview::PicturePreview(QWidget *parent) :
|
||||||
|
QGraphicsView(parent)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
class PicturePreviewSelection : public QWidget
|
class PicturePreviewSelection : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -62,6 +101,8 @@ protected:
|
||||||
void resizeEvent(QResizeEvent *event);
|
void resizeEvent(QResizeEvent *event);
|
||||||
void dragEnterEvent(QDragEnterEvent *event);
|
void dragEnterEvent(QDragEnterEvent *event);
|
||||||
void dropEvent(QDropEvent *event);
|
void dropEvent(QDropEvent *event);
|
||||||
|
void mouseDoubleClickEvent(QMouseEvent *event);
|
||||||
|
bool eventFilter(QObject *watched, QEvent *event);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void typeSwitched(int index);
|
void typeSwitched(int index);
|
||||||
|
@ -74,7 +115,7 @@ private:
|
||||||
void setup(PreviousValueHandling previousValueHandling = PreviousValueHandling::Clear);
|
void setup(PreviousValueHandling previousValueHandling = PreviousValueHandling::Clear);
|
||||||
|
|
||||||
std::unique_ptr<Ui::PicturePreviewSelection> m_ui;
|
std::unique_ptr<Ui::PicturePreviewSelection> m_ui;
|
||||||
QGraphicsScene *m_scene;
|
PicturePreviewScene *m_scene;
|
||||||
QGraphicsTextItem *m_textItem;
|
QGraphicsTextItem *m_textItem;
|
||||||
QPixmap m_pixmap;
|
QPixmap m_pixmap;
|
||||||
QGraphicsPixmapItem *m_pixmapItem;
|
QGraphicsPixmapItem *m_pixmapItem;
|
||||||
|
|
|
@ -2,6 +2,14 @@
|
||||||
<ui version="4.0">
|
<ui version="4.0">
|
||||||
<class>QtGui::PicturePreviewSelection</class>
|
<class>QtGui::PicturePreviewSelection</class>
|
||||||
<widget class="QWidget" name="QtGui::PicturePreviewSelection">
|
<widget class="QWidget" name="QtGui::PicturePreviewSelection">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>346</width>
|
||||||
|
<height>260</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>Form</string>
|
<string>Form</string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -79,7 +87,7 @@
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QGraphicsView" name="previewGraphicsView">
|
<widget class="PicturePreview" name="previewGraphicsView">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
|
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
|
@ -203,6 +211,11 @@
|
||||||
<extends>QLineEdit</extends>
|
<extends>QLineEdit</extends>
|
||||||
<header location="global">qtutilities/widgets/clearlineedit.h</header>
|
<header location="global">qtutilities/widgets/clearlineedit.h</header>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
|
<customwidget>
|
||||||
|
<class>PicturePreview</class>
|
||||||
|
<extends>QGraphicsView</extends>
|
||||||
|
<header>./picturepreview.h</header>
|
||||||
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
|
|
Loading…
Reference in New Issue