Refactoring.

--HG--
branch : develop
This commit is contained in:
dismine 2013-10-27 10:10:39 +02:00
parent f2860076ee
commit 3b908ae328
14 changed files with 98 additions and 198 deletions

View file

@ -45,40 +45,35 @@
using a spin box widget.
*/
#include <QtGui>
#include "doubledelegate.h"
DoubleSpinBoxDelegate::DoubleSpinBoxDelegate(QObject *parent)
: QItemDelegate(parent)
{
}
QWidget *DoubleSpinBoxDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &/* option */,
const QModelIndex &/* index */) const{
QDoubleSpinBox *editor = new QDoubleSpinBox(parent);
editor->setMinimum(-10000.0);
editor->setMaximum(10000.0);
return editor;
}
void DoubleSpinBoxDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const{
qreal value = index.model()->data(index, Qt::EditRole).toDouble();
QDoubleSpinBox *spinBox = static_cast<QDoubleSpinBox*>(editor);
spinBox->setValue(value);
}
void DoubleSpinBoxDelegate::setModelData(QWidget *editor, QAbstractItemModel *model,
const QModelIndex &index) const{
QDoubleSpinBox *spinBox = static_cast<QDoubleSpinBox*>(editor);
spinBox->interpretText();
qreal value = spinBox->value();
model->setData(index, value, Qt::EditRole);
}
void DoubleSpinBoxDelegate::updateEditorGeometry(QWidget *editor,
const QStyleOptionViewItem &option, const QModelIndex &/* index */) const{
editor->setGeometry(option.rect);
QWidget *DoubleSpinBoxDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option,
const QModelIndex &index ) const{
Q_UNUSED(option);
Q_UNUSED(index);
QDoubleSpinBox *editor = new QDoubleSpinBox(parent);
editor->setMinimum(-10000.0);
editor->setMaximum(10000.0);
return editor;
}
void DoubleSpinBoxDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const{
qreal value = index.model()->data(index, Qt::EditRole).toDouble();
QDoubleSpinBox *spinBox = static_cast<QDoubleSpinBox*>(editor);
spinBox->setValue(value);
}
void DoubleSpinBoxDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const{
QDoubleSpinBox *spinBox = static_cast<QDoubleSpinBox*>(editor);
spinBox->interpretText();
qreal value = spinBox->value();
model->setData(index, value, Qt::EditRole);
}
void DoubleSpinBoxDelegate::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option,
const QModelIndex &index) const{
Q_UNUSED(index)
editor->setGeometry(option.rect);
}

View file

@ -42,26 +42,15 @@
#define DOUBLEDELEGATE_H
#include <QItemDelegate>
#include <QModelIndex>
#include <QObject>
#include <QSize>
#include <QSpinBox>
class DoubleSpinBoxDelegate : public QItemDelegate{
Q_OBJECT
public:
DoubleSpinBoxDelegate(QObject *parent = 0);
QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,
const QModelIndex &index) const;
void setEditorData(QWidget *editor, const QModelIndex &index) const;
void setModelData(QWidget *editor, QAbstractItemModel *model,
const QModelIndex &index) const;
void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option,
const QModelIndex &index) const;
DoubleSpinBoxDelegate(QObject *parent = 0): QItemDelegate(parent){}
QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const;
void setEditorData(QWidget *editor, const QModelIndex &index) const;
void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const;
void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const;
};
#endif

View file

@ -20,18 +20,12 @@
****************************************************************************/
#include "vapplication.h"
#include <QtGui>
#include <QMessageBox>
#include "exception/vexceptionobjecterror.h"
#include "exception/vexceptionbadid.h"
#include "exception/vexceptionconversionerror.h"
#include "exception/vexceptionemptyparameter.h"
#include "exception/vexceptionwrongparameterid.h"
VApplication::VApplication(int & argc, char ** argv) :
QApplication(argc, argv){
}
// reimplemented from QApplication so we can throw exceptions in slots
bool VApplication::notify(QObject *receiver, QEvent *event){
try {

View file

@ -3,12 +3,11 @@
#include <QApplication>
class VApplication : public QApplication
{
class VApplication : public QApplication{
Q_OBJECT
public:
VApplication(int &argc, char ** argv);
virtual ~VApplication() { }
VApplication(int &argc, char ** argv): QApplication(argc, argv){}
virtual ~VApplication() {}
virtual bool notify(QObject * receiver, QEvent * event);
};

View file

@ -20,10 +20,6 @@
****************************************************************************/
#include "vcontrolpointspline.h"
#include <QPen>
#include <QBrush>
#include <QGraphicsScene>
#include <QDebug>
VControlPointSpline::VControlPointSpline(const qint32 &indexSpline, SplinePoint::Position position,
const QPointF &controlPoint, const QPointF &splinePoint,

View file

@ -23,38 +23,35 @@
#define VCONTROLPOINTSPLINE_H
#include <QGraphicsEllipseItem>
#include <QGraphicsLineItem>
#include <QObject>
#include "geometry/vsplinepath.h"
class VControlPointSpline : public QObject, public QGraphicsEllipseItem
{
class VControlPointSpline : public QObject, public QGraphicsEllipseItem{
Q_OBJECT
public:
VControlPointSpline(const qint32 &indexSpline, SplinePoint::Position position,
const QPointF &controlPoint, const QPointF &splinePoint,
QGraphicsItem * parent = 0);
VControlPointSpline(const qint32 &indexSpline, SplinePoint::Position position,
const QPointF &controlPoint, const QPointF &splinePoint,
QGraphicsItem * parent = 0);
signals:
void ControlPointChangePosition(const qint32 &indexSpline, SplinePoint::Position position,
const QPointF pos);
void ControlPointChangePosition(const qint32 &indexSpline, SplinePoint::Position position,
const QPointF pos);
public slots:
void RefreshLine(const qint32 &indexSpline, SplinePoint::Position pos,
const QPointF &controlPoint, const QPointF &splinePoint);
void setEnabledPoint(bool enable);
void RefreshLine(const qint32 &indexSpline, SplinePoint::Position pos, const QPointF &controlPoint,
const QPointF &splinePoint);
void setEnabledPoint(bool enable);
protected:
qreal radius;
QGraphicsLineItem *controlLine;
virtual void hoverMoveEvent ( QGraphicsSceneHoverEvent * event );
virtual void hoverLeaveEvent ( QGraphicsSceneHoverEvent * event );
QVariant itemChange ( GraphicsItemChange change, const QVariant &value );
qreal radius;
QGraphicsLineItem *controlLine;
virtual void hoverMoveEvent ( QGraphicsSceneHoverEvent * event );
virtual void hoverLeaveEvent ( QGraphicsSceneHoverEvent * event );
QVariant itemChange ( GraphicsItemChange change, const QVariant &value );
private:
Q_DISABLE_COPY(VControlPointSpline)
qint32 indexSpline;
qint32 indexSpline;
SplinePoint::Position position;
qint32 LineIntersectCircle(QPointF center, qreal radius, QLineF line, QPointF &p1,
QPointF &p2) const;
QPointF ClosestPoint(QLineF line, QPointF p) const;
QPointF addVector (QPointF p, QPointF p1, QPointF p2, qreal k) const;
qint32 LineIntersectCircle(QPointF center, qreal radius, QLineF line, QPointF &p1, QPointF &p2) const;
QPointF ClosestPoint(QLineF line, QPointF p) const;
QPointF addVector (QPointF p, QPointF p1, QPointF p2, qreal k) const;
};

View file

@ -20,9 +20,6 @@
****************************************************************************/
#include "vgraphicssimpletextitem.h"
#include <QGraphicsScene>
#include <QEvent>
#include <QDebug>
VGraphicsSimpleTextItem::VGraphicsSimpleTextItem(QGraphicsItem * parent):QGraphicsSimpleTextItem(parent),
fontSize(0){

View file

@ -20,16 +20,6 @@
****************************************************************************/
#include "vitem.h"
#include <QGraphicsScene>
#include <QDebug>
#include "options.h"
VItem::VItem():numInOutList(0){
}
VItem::VItem ( int numInList, QGraphicsItem * parent ):QGraphicsPathItem ( parent ),
numInOutList(numInList){
}
VItem::VItem (const QPainterPath & path, int numInList, QGraphicsItem * parent ):
QGraphicsPathItem ( path, parent ), numInOutList(numInList){
@ -77,7 +67,3 @@ QVariant VItem::itemChange( GraphicsItemChange change, const QVariant &value ){
void VItem::LengthChanged(){
checkItemChange();
}
void VItem::SetIndexInList( qint32 index ){
numInOutList = index;
}

View file

@ -35,14 +35,14 @@ public:
* @brief VItem конструктор за замовчуванням
*Конструктор генерує пусту деталь з номером в списку, що дорівнює 0.
*/
VItem ();
VItem ():numInOutList(0){}
/**
* @brief VItem конструктор
* @param numInList номер в списку деталей, що передається у вікно де
*укладаються деталі.
* @param parent батьківський об'єкт на сцені для даного. За замовчуванням немає.
*/
VItem (int numInList, QGraphicsItem * parent = 0);
VItem (int numInList, QGraphicsItem * parent = 0):QGraphicsPathItem (parent), numInOutList(numInList){}
/**
* @brief VItem конструктор
* @param path зображення що буде показуватися на сцені - обєкт класу QPainterPath.
@ -50,22 +50,22 @@ public:
*укладаються деталі.
* @param parent батьківський об'єкт на сцені для даного. За замовчуванням немає.
*/
VItem ( const QPainterPath & path, int numInList, QGraphicsItem * parent = 0 );
VItem ( const QPainterPath & path, int numInList, QGraphicsItem * parent = 0 );
/**
* @brief Rotate повертає об'єкт на кут в градусах
* @param angle кут в градусах на який повертається деталь.
*/
void Rotate ( qreal angle );
void Rotate ( qreal angle );
public slots:
/**
* @brief LengthChanged слот який обробляє сигнал зміни довжини листа.
*/
void LengthChanged();
void LengthChanged();
/**
* @brief SetIndexInList встановлює номер деталі в списку деталей.
* @param index номер в списку.
*/
void SetIndexInList( qint32 index );
inline void SetIndexInList( qint32 index ) {numInOutList = index;}
protected:
/**
* @brief itemChange модифікація стандартного методу itemChange. Виконується перехоплення зміни
@ -74,12 +74,12 @@ protected:
* @param value
* @return
*/
QVariant itemChange ( GraphicsItemChange change, const QVariant &value );
QVariant itemChange ( GraphicsItemChange change, const QVariant &value );
/**
* @brief checkItemChange перевіряє вихід деталі за рамки листа і факт колізії. Посилає відповідні
*сигнали.
*/
void checkItemChange ();
void checkItemChange ();
private:
/**
* @brief numInOutList для зберігання інформації про колізії від кожної деталі необхідно знати її
@ -92,13 +92,13 @@ signals:
* @param numInOutList номер деталі яка вийшла за межі листа або тепер знаходиться в межах листа.
* @param flag був вихід чи ні.
*/
void itemOut ( int numInOutList, bool flag );
void itemOut ( int numInOutList, bool flag );
/**
* @brief itemColliding сигнал колізії деталі з іншими. Посилається як для додавання деталі до
*списку тих що перетинаються, так і для виключення його з такого.
* @param list список усіх деталей які приймають участь в колізії включаючи самого себе.
* @param number 1 - перетин є, 0 - перетину немає.
*/
void itemColliding ( QList<QGraphicsItem *> list, int number );
void itemColliding ( QList<QGraphicsItem *> list, int number );
};
#endif // VITEM_H

View file

@ -20,10 +20,6 @@
****************************************************************************/
#include "vmaingraphicsscene.h"
#include <QDebug>
#include <QApplication>
#include <QScrollBar>
#include <QGraphicsItem>
VMainGraphicsScene::VMainGraphicsScene():QGraphicsScene(), horScrollBar(0), verScrollBar(0), scaleFactor(1){
}
@ -46,27 +42,7 @@ void VMainGraphicsScene::ChoosedItem(qint64 id, Scene::Scenes type){
emit ChoosedObject(id, type);
}
void VMainGraphicsScene::RemoveTool(QGraphicsItem *tool){
this->removeItem(tool);
}
void VMainGraphicsScene::SetFactor(qreal factor){
scaleFactor=scaleFactor*factor;
emit NewFactor(scaleFactor);
}
qint32 VMainGraphicsScene::getVerScrollBar() const{
return verScrollBar;
}
void VMainGraphicsScene::setVerScrollBar(const qint32 &value){
verScrollBar = value;
}
qint32 VMainGraphicsScene::getHorScrollBar() const{
return horScrollBar;
}
void VMainGraphicsScene::setHorScrollBar(const qint32 &value){
horScrollBar = value;
}

View file

@ -23,38 +23,32 @@
#define VMAINGRAPHICSSCENE_H
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsSceneMouseEvent>
#include "options.h"
class VMainGraphicsScene : public QGraphicsScene
{
class VMainGraphicsScene : public QGraphicsScene{
Q_OBJECT
public:
VMainGraphicsScene();
VMainGraphicsScene(const QRectF & sceneRect, QObject * parent = 0);
qint32 getHorScrollBar() const;
void setHorScrollBar(const qint32 &value);
qint32 getVerScrollBar() const;
void setVerScrollBar(const qint32 &value);
VMainGraphicsScene();
VMainGraphicsScene(const QRectF & sceneRect, QObject * parent = 0);
inline qint32 getHorScrollBar() const {return horScrollBar;}
inline void setHorScrollBar(const qint32 &value) {horScrollBar = value;}
inline qint32 getVerScrollBar() const {return verScrollBar;}
inline void setVerScrollBar(const qint32 &value) {verScrollBar = value;}
public slots:
void ChoosedItem(qint64 id, Scene::Scenes type);
void RemoveTool(QGraphicsItem *tool);
void SetFactor(qreal factor);
void ChoosedItem(qint64 id, Scene::Scenes type);
inline void RemoveTool(QGraphicsItem *tool) {this->removeItem(tool);}
void SetFactor(qreal factor);
protected:
void mouseMoveEvent(QGraphicsSceneMouseEvent* event);
void mousePressEvent(QGraphicsSceneMouseEvent *event);
void mouseMoveEvent(QGraphicsSceneMouseEvent* event);
void mousePressEvent(QGraphicsSceneMouseEvent *event);
signals:
void mouseMove(QPointF scenePos);
void mousePress(QPointF scenePos);
void ChoosedObject(qint64 id, Scene::Scenes type);
void NewFactor(qreal factor);
void mouseMove(QPointF scenePos);
void mousePress(QPointF scenePos);
void ChoosedObject(qint64 id, Scene::Scenes type);
void NewFactor(qreal factor);
private:
qint32 horScrollBar;
qint32 verScrollBar;
qreal scaleFactor;
qint32 horScrollBar;
qint32 verScrollBar;
qreal scaleFactor;
};
#endif // VMAINGRAPHICSSCENE_H

View file

@ -20,10 +20,6 @@
****************************************************************************/
#include "vmaingraphicsview.h"
#include <QApplication>
#include <QWheelEvent>
#include <QScrollBar>
#include <QTimeLine>
VMainGraphicsView::VMainGraphicsView(QWidget *parent) :
QGraphicsView(parent), _numScheduledScalings(0){

View file

@ -20,11 +20,6 @@
****************************************************************************/
#include "vtablegraphicsview.h"
#include <QDebug>
#include <QGraphicsItem>
#include <QGuiApplication>
#include <QKeyEvent>
#include <QScrollBar>
VTableGraphicsView::VTableGraphicsView(QGraphicsScene* pScene, QWidget *parent) :
QGraphicsView(pScene, parent){
@ -43,10 +38,6 @@ void VTableGraphicsView::selectionChanged(){
}
}
void VTableGraphicsView::rotateItems(){
rotateIt();
}
void VTableGraphicsView::MirrorItem(){
QList<QGraphicsItem *> list = scene()->selectedItems();
if(list.size()>0){
@ -82,14 +73,6 @@ void VTableGraphicsView::MirrorItem(){
}
}
void VTableGraphicsView::ZoomIn(){
scale(1.1,1.1);
}
void VTableGraphicsView::ZoomOut(){
scale(1/1.1,1/1.1);
}
void VTableGraphicsView::wheelEvent(QWheelEvent *event){
if (QGuiApplication::keyboardModifiers() == Qt::ControlModifier){
// Если нажата клавиша CTRL этот код выполнится

View file

@ -24,70 +24,68 @@
#include <QGraphicsView>
class VTableGraphicsView : public QGraphicsView
{
class VTableGraphicsView : public QGraphicsView{
Q_OBJECT
public:
enum typeMove_e { Left, Right, Up, Down };
explicit VTableGraphicsView(QGraphicsScene* pScene, QWidget *parent = 0);
VTableGraphicsView(QGraphicsScene* pScene, QWidget *parent = 0);
signals:
/**
* @brief itemChect Сигнал, що посилається коли змінюється стан вибору деталі.
* @param flag Зберігає стан вибору деталі: false - знайдено, true - не знайдено.
*/
void itemChect( bool flag );
void itemChect( bool flag );
public slots:
/**
* @brief selectionChanged Слот виконується при зміні стану вибору деталей.
*/
void selectionChanged();
void selectionChanged();
/**
* @brief rotateItems слот, який виконується при натисненні кнопки повороту деталі.
*/
void rotateItems();
inline void rotateItems() {rotateIt();}
/**
* @brief MirrorItem дзеркалить об'єкт відносно вертикальної вісі семетрії об'єкта.
*/
void MirrorItem();
void MirrorItem();
/**
* @brief ZoomIn збільшує масштаб листа.
*/
void ZoomIn();
inline void ZoomIn() {scale(1.1,1.1);}
/**
* @brief ZoomOut зменшує масштаб листа.
*/
void ZoomOut();
inline void ZoomOut() {scale(1/1.1,1/1.1);}
protected:
/**
* @brief wheelEvent обробник повороту колеса мишки.
* @param event передається подія.
*/
void wheelEvent ( QWheelEvent * event );
void wheelEvent ( QWheelEvent * event );
/**
* @brief mousePressEvent обробник натиснення кнопки миші.
* @param mousePress передається подія.
*/
void mousePressEvent(QMouseEvent *mousePress);
void mousePressEvent(QMouseEvent *mousePress);
/**
* @brief mouseReleaseEvent обробник відпускання кнопки миші.
* @param event передається подія
*/
void mouseReleaseEvent ( QMouseEvent * event );
void mouseReleaseEvent ( QMouseEvent * event );
/**
* @brief keyPressEvent обробник натиснення клавіші.
* @param event передається подія.
*/
void keyPressEvent ( QKeyEvent * event );
void keyPressEvent ( QKeyEvent * event );
/**
* @brief rotateIt виконує поворот вибраних деталей на 180 градусів.
*/
void rotateIt();
void rotateIt();
/**
* @brief MoveItem переміщує виділені об'єкти сцени.
* @param move напрямок переміщення.
*/
void MoveItem( VTableGraphicsView::typeMove_e move );
void MoveItem( VTableGraphicsView::typeMove_e move );
};