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 <QEvent>
|
||||
#include <QGraphicsScene>
|
||||
#include <QGraphicsSceneMouseEvent>
|
||||
#include <QGraphicsTextItem>
|
||||
#include <QGraphicsRectItem>
|
||||
#include <QFile>
|
||||
|
@ -43,6 +43,18 @@ using namespace ConversionUtilities;
|
|||
|
||||
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.
|
||||
*/
|
||||
|
@ -520,6 +532,21 @@ void PicturePreviewSelection::dropEvent(QDropEvent *event)
|
|||
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.
|
||||
*/
|
||||
|
@ -569,8 +596,10 @@ void PicturePreviewSelection::updateDescription(int lastIndex, int newIndex)
|
|||
void PicturePreviewSelection::updatePreview(int index)
|
||||
{
|
||||
if(!m_scene) {
|
||||
m_scene = new QGraphicsScene(m_ui->previewGraphicsView);
|
||||
m_scene = new PicturePreviewScene(m_ui->previewGraphicsView);
|
||||
m_ui->previewGraphicsView->setScene(m_scene);
|
||||
connect(m_scene, &PicturePreviewScene::displayRequested, this, &PicturePreviewSelection::displaySelected);
|
||||
//m_scene->installEventFilter(this);
|
||||
}
|
||||
if(!m_textItem) {
|
||||
m_textItem = new QGraphicsTextItem;
|
||||
|
|
|
@ -6,11 +6,12 @@
|
|||
#include <tagparser/tag.h>
|
||||
|
||||
#include <QWidget>
|
||||
#include <QGraphicsScene>
|
||||
#include <QGraphicsView>
|
||||
|
||||
#include <memory>
|
||||
|
||||
QT_FORWARD_DECLARE_CLASS(QEvent)
|
||||
QT_FORWARD_DECLARE_CLASS(QGraphicsScene)
|
||||
QT_FORWARD_DECLARE_CLASS(QGraphicsTextItem)
|
||||
QT_FORWARD_DECLARE_CLASS(QGraphicsPixmapItem)
|
||||
QT_FORWARD_DECLARE_CLASS(QGraphicsRectItem)
|
||||
|
@ -29,6 +30,44 @@ namespace Ui {
|
|||
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
|
||||
{
|
||||
Q_OBJECT
|
||||
|
@ -62,6 +101,8 @@ protected:
|
|||
void resizeEvent(QResizeEvent *event);
|
||||
void dragEnterEvent(QDragEnterEvent *event);
|
||||
void dropEvent(QDropEvent *event);
|
||||
void mouseDoubleClickEvent(QMouseEvent *event);
|
||||
bool eventFilter(QObject *watched, QEvent *event);
|
||||
|
||||
private slots:
|
||||
void typeSwitched(int index);
|
||||
|
@ -74,7 +115,7 @@ private:
|
|||
void setup(PreviousValueHandling previousValueHandling = PreviousValueHandling::Clear);
|
||||
|
||||
std::unique_ptr<Ui::PicturePreviewSelection> m_ui;
|
||||
QGraphicsScene *m_scene;
|
||||
PicturePreviewScene *m_scene;
|
||||
QGraphicsTextItem *m_textItem;
|
||||
QPixmap m_pixmap;
|
||||
QGraphicsPixmapItem *m_pixmapItem;
|
||||
|
|
|
@ -2,6 +2,14 @@
|
|||
<ui version="4.0">
|
||||
<class>QtGui::PicturePreviewSelection</class>
|
||||
<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">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
|
@ -79,7 +87,7 @@
|
|||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QGraphicsView" name="previewGraphicsView">
|
||||
<widget class="PicturePreview" name="previewGraphicsView">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
|
||||
<horstretch>0</horstretch>
|
||||
|
@ -203,6 +211,11 @@
|
|||
<extends>QLineEdit</extends>
|
||||
<header location="global">qtutilities/widgets/clearlineedit.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>PicturePreview</class>
|
||||
<extends>QGraphicsView</extends>
|
||||
<header>./picturepreview.h</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
|
|
Loading…
Reference in New Issue