Preparations for drawing
This commit is contained in:
parent
13be43186b
commit
3c92607727
@ -55,7 +55,8 @@ HEADERS += mainwindow.hpp \
|
|||||||
formatter.hpp \
|
formatter.hpp \
|
||||||
uploaders/customuploader.hpp \
|
uploaders/customuploader.hpp \
|
||||||
notifications.hpp \
|
notifications.hpp \
|
||||||
hotkeying.hpp
|
hotkeying.hpp \
|
||||||
|
cropeditor/drawing/drawitem.hpp
|
||||||
|
|
||||||
FORMS += mainwindow.ui
|
FORMS += mainwindow.ui
|
||||||
|
|
||||||
|
@ -8,14 +8,13 @@
|
|||||||
|
|
||||||
CropEditor::CropEditor(QPixmap *image, QObject *parent) : QObject(parent)
|
CropEditor::CropEditor(QPixmap *image, QObject *parent) : QObject(parent)
|
||||||
{
|
{
|
||||||
pixmap = image;
|
|
||||||
scene = new CropScene(parent);
|
scene = new CropScene(parent);
|
||||||
view = new CropView(scene);
|
view = new CropView(scene);
|
||||||
|
|
||||||
pixmapItem = new QGraphicsPixmapItem(*pixmap);
|
pixmapItem = new QGraphicsPixmapItem(*image);
|
||||||
pixmapItem->setZValue(-1);
|
pixmapItem->setZValue(-1);
|
||||||
scene->addItem(pixmapItem);
|
scene->addItem(pixmapItem);
|
||||||
scene->setSceneRect(pixmap->rect());
|
scene->setSceneRect(image->rect());
|
||||||
|
|
||||||
QTimer::singleShot(0, [&] { view->showFullScreen(); });
|
QTimer::singleShot(0, [&] { view->showFullScreen(); });
|
||||||
|
|
||||||
@ -29,8 +28,9 @@ CropEditor::~CropEditor()
|
|||||||
|
|
||||||
void CropEditor::crop(QRect rect)
|
void CropEditor::crop(QRect rect)
|
||||||
{
|
{
|
||||||
QPixmap crop = pixmap->copy(rect);
|
QPixmap map = QPixmap::grabWidget(view, rect);
|
||||||
QPixmap *cropp = new QPixmap;
|
QPixmap *cropp = new QPixmap;
|
||||||
crop.swap(*cropp);
|
map.swap(*cropp);
|
||||||
|
delete view;
|
||||||
emit cropped(cropp);
|
emit cropped(cropp);
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,6 @@ class CropEditor : public QObject
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void crop(QRect rect);
|
void crop(QRect rect);
|
||||||
QPixmap *pixmap = nullptr;
|
|
||||||
CropScene *scene = nullptr;
|
CropScene *scene = nullptr;
|
||||||
CropView *view = nullptr;
|
CropView *view = nullptr;
|
||||||
QGraphicsPixmapItem *pixmapItem = nullptr;
|
QGraphicsPixmapItem *pixmapItem = nullptr;
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
#include "cropscene.hpp"
|
#include "cropscene.hpp"
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QGraphicsPolygonItem>
|
#include <QGraphicsPolygonItem>
|
||||||
|
#include <QGraphicsSceneContextMenuEvent>
|
||||||
#include <QGraphicsView>
|
#include <QGraphicsView>
|
||||||
|
#include <QMenu>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
|
||||||
CropScene::CropScene(QObject *parent) : QGraphicsScene(parent), prevButtons(Qt::NoButton)
|
CropScene::CropScene(QObject *parent) : QGraphicsScene(parent), prevButtons(Qt::NoButton)
|
||||||
@ -81,6 +83,14 @@ void CropScene::keyReleaseEvent(QKeyEvent *event)
|
|||||||
if (event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter) done();
|
if (event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter) done();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CropScene::contextMenuEvent(QGraphicsSceneContextMenuEvent *e)
|
||||||
|
{
|
||||||
|
QMenu menu(e->widget());
|
||||||
|
|
||||||
|
menu.exec(e->screenPos());
|
||||||
|
e->accept();
|
||||||
|
}
|
||||||
|
|
||||||
void CropScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *e)
|
void CropScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *e)
|
||||||
{
|
{
|
||||||
done();
|
done();
|
||||||
@ -89,6 +99,5 @@ void CropScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *e)
|
|||||||
|
|
||||||
void CropScene::done()
|
void CropScene::done()
|
||||||
{
|
{
|
||||||
for (QGraphicsView *v : views()) v->close();
|
if (rect) emit closedWithRect(rect->rect().toRect());
|
||||||
emit closedWithRect(rect != nullptr ? rect->rect().toRect() : QRect());
|
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include <QGraphicsRectItem>
|
#include <QGraphicsRectItem>
|
||||||
#include <QGraphicsScene>
|
#include <QGraphicsScene>
|
||||||
|
#include <QGraphicsSceneContextMenuEvent>
|
||||||
#include <QGraphicsSceneMouseEvent>
|
#include <QGraphicsSceneMouseEvent>
|
||||||
#include <QKeyEvent>
|
#include <QKeyEvent>
|
||||||
|
|
||||||
@ -18,6 +19,7 @@ class CropScene : public QGraphicsScene
|
|||||||
void mouseMoveEvent(QGraphicsSceneMouseEvent *e) override;
|
void mouseMoveEvent(QGraphicsSceneMouseEvent *e) override;
|
||||||
void mouseReleaseEvent(QGraphicsSceneMouseEvent *e) override;
|
void mouseReleaseEvent(QGraphicsSceneMouseEvent *e) override;
|
||||||
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *e) override;
|
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *e) override;
|
||||||
|
void contextMenuEvent(QGraphicsSceneContextMenuEvent *e) override;
|
||||||
|
|
||||||
void keyReleaseEvent(QKeyEvent *e) override;
|
void keyReleaseEvent(QKeyEvent *e) override;
|
||||||
|
|
||||||
|
@ -1,4 +1,16 @@
|
|||||||
#ifndef DRAWITEM_HPP
|
#ifndef DRAWITEM_HPP
|
||||||
#define DRAWITEM_HPP
|
#define DRAWITEM_HPP
|
||||||
|
|
||||||
|
#include <QString>
|
||||||
|
#include <cropeditor/cropscene.hpp>
|
||||||
|
|
||||||
|
class DrawItem
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual QString name() = 0;
|
||||||
|
virtual void render(QPixmap *pixmap) = 0;
|
||||||
|
virtual void makeItem(CropScene *scene) = 0;
|
||||||
|
virtual void mouseDragEvent(QGraphicsSceneMoveEvent *e, CropScene *scene) = 0;
|
||||||
|
};
|
||||||
|
|
||||||
#endif // DRAWITEM_HPP
|
#endif // DRAWITEM_HPP
|
||||||
|
@ -262,6 +262,7 @@ void parseResult(QJsonDocument result, QString returnPathspec, QString name)
|
|||||||
{
|
{
|
||||||
if (result.isObject())
|
if (result.isObject())
|
||||||
{
|
{
|
||||||
|
qDebug() << result.object()[".url"];
|
||||||
QString url = parsePathspec(result, returnPathspec);
|
QString url = parsePathspec(result, returnPathspec);
|
||||||
if (!url.isEmpty())
|
if (!url.isEmpty())
|
||||||
{
|
{
|
||||||
@ -271,6 +272,8 @@ void parseResult(QJsonDocument result, QString returnPathspec, QString name)
|
|||||||
else
|
else
|
||||||
notifications::notify("KShare Custom Uploader " + name, "Upload done, but result empty!");
|
notifications::notify("KShare Custom Uploader " + name, "Upload done, but result empty!");
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
notifications::notify("KShare Custom Uploader " + name, "Upload done, but result is not JSON Object!");
|
||||||
}
|
}
|
||||||
|
|
||||||
void CustomUploader::doUpload(QPixmap *pixmap)
|
void CustomUploader::doUpload(QPixmap *pixmap)
|
||||||
|
Loading…
Reference in New Issue
Block a user