Compare commits

...

1 Commits

Author SHA1 Message Date
Martchus 3437824e42 WIP: Display cover when double-clicking preview 2017-08-15 18:17:11 +02:00
3 changed files with 88 additions and 5 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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/>