0
0
mirror of https://github.com/fralx/LimeReport.git synced 2024-12-25 00:54:39 +03:00

Finish 1.4.115

This commit is contained in:
Arin Alexander 2019-01-16 20:26:34 +03:00
commit c7a589744e
3 changed files with 204 additions and 228 deletions

View File

@ -77,7 +77,7 @@ RCC_DIR = $${ARCH_DIR}/$${BUILD_TYPE}/rcc
LIMEREPORT_VERSION_MAJOR = 1
LIMEREPORT_VERSION_MINOR = 4
LIMEREPORT_VERSION_RELEASE = 113
LIMEREPORT_VERSION_RELEASE = 114
LIMEREPORT_VERSION = '\\"$${LIMEREPORT_VERSION_MAJOR}.$${LIMEREPORT_VERSION_MINOR}.$${LIMEREPORT_VERSION_RELEASE}\\"'
DEFINES += LIMEREPORT_VERSION_STR=\"$${LIMEREPORT_VERSION}\"

View File

@ -67,8 +67,6 @@ bool bandSortBandLessThen(const BandDesignIntf *c1, const BandDesignIntf *c2)
PageDesignIntf::PageDesignIntf(QObject *parent):
QGraphicsScene(parent),
m_pageSize(A4),
m_orientation(Portrait),
m_pageItem(0),
m_insertMode(false),
m_itemInsertRect(0),
@ -84,8 +82,6 @@ PageDesignIntf::PageDesignIntf(QObject *parent):
m_executingGroupCommand(false),
m_settings(0),
m_selectionRect(0),
//m_verticalGridStep(1*Const::mmFACTOR),
//m_horizontalGridStep(1*Const::mmFACTOR)
m_verticalGridStep(2),
m_horizontalGridStep(2),
m_updating(false),
@ -134,22 +130,22 @@ void PageDesignIntf::updatePageRect()
emit sceneRectChanged(sceneRect());
}
PageDesignIntf::Orientation PageDesignIntf::getOrientation()
{
return m_orientation;
}
//PageDesignIntf::Orientation PageDesignIntf::getOrientation()
//{
// return m_orientation;
//}
void PageDesignIntf::setPageSize(PageDesignIntf::PageSize sizeType, QSizeF sizeValue)
{
m_pageSize = sizeType;
m_pageSizeValue = sizeValue;
updatePageRect();
}
//void PageDesignIntf::setPageSize(PageDesignIntf::PageSize sizeType, QSizeF sizeValue)
//{
// m_pageSize = sizeType;
// m_pageSizeValue = sizeValue;
// updatePageRect();
//}
PageDesignIntf::PageSize PageDesignIntf::pageSize() const
{
return m_pageSize;
}
//PageDesignIntf::PageSize PageDesignIntf::pageSize() const
//{
// return m_pageSize;
//}
void PageDesignIntf::keyPressEvent(QKeyEvent *event)
{
@ -672,22 +668,22 @@ bool PageDesignIntf::isExistsObjectName(const QString &objectName, QList<QGraphi
return false;
}
QRectF PageDesignIntf::getRectByPageSize(PageDesignIntf::PageSize pageSize)
{
if (m_pageSize != Custom) {
QPrinter printer;
printer.setOutputFormat(QPrinter::PdfFormat);
printer.setOrientation((QPrinter::Orientation)getOrientation());
printer.setPageSize((QPrinter::PageSize)pageSize);
return QRectF(0, 0, printer.paperRect(QPrinter::Millimeter).width() * 10,
printer.paperSize(QPrinter::Millimeter).height() * 10);
}
//QRectF PageDesignIntf::getRectByPageSize(PageDesignIntf::PageSize pageSize)
//{
// if (m_pageSize != PageSize::Custom) {
// QPrinter printer;
// printer.setOutputFormat(QPrinter::PdfFormat);
// printer.setOrientation((QPrinter::Orientation)getOrientation());
// printer.setPageSize((QPrinter::PageSize)pageSize);
// return QRectF(0, 0, printer.paperRect(QPrinter::Millimeter).width() * 10,
// printer.paperSize(QPrinter::Millimeter).height() * 10);
// }
else {
return QRectF(0, 0, m_pageSizeValue.width() * 10,
m_pageSizeValue.height() * 10);
}
}
// else {
// return QRectF(0, 0, m_pageSizeValue.width() * 10,
// m_pageSizeValue.height() * 10);
// }
//}
bool PageDesignIntf::isLoading()
{

View File

@ -99,223 +99,203 @@ namespace LimeReport {
class PageDesignIntf : public QGraphicsScene, public ObjectLoadingStateIntf{
Q_OBJECT
Q_PROPERTY(QObject* pageItem READ pageItem())
public:
friend class PropertyChangedCommand;
friend class InsertHLayoutCommand;
enum Orientation {Portrait, Landscape};
enum PageSize {A4, B5, Letter, Legal, Executive,
A0, A1, A2, A3, A5, A6, A7, A8, A9, B0, B1,
B10, B2, B3, B4, B6, B7, B8, B9, C5E, Comm10E,
DLE, Folio, Ledger, Tabloid, Custom, NPageSize = Custom
};
public:
friend class PropertyChangedCommand;
friend class InsertHLayoutCommand;
explicit PageDesignIntf(QObject* parent = 0);
~PageDesignIntf();
void updatePageRect();
explicit PageDesignIntf(QObject* parent = 0);
~PageDesignIntf();
void updatePageRect();
Orientation getOrientation();
void startInsertMode(const QString& ItemType);
void startEditMode();
void setPageSize(PageSize sizeType, QSizeF sizeValue=QSizeF());
PageSize pageSize() const;
PageItemDesignIntf *pageItem();
void setPageItem(PageItemDesignIntf::Ptr pageItem);
void setPageItems(QList<PageItemDesignIntf::Ptr> pages);
QList<PageItemDesignIntf::Ptr> pageItems(){return m_reportPages;}
void startInsertMode(const QString& ItemType);
void startEditMode();
bool isItemInsertMode();
ReportEnginePrivate* reportEditor();
void setReportEditor(ReportEnginePrivate* value){m_reportEditor=value;}
PageItemDesignIntf *pageItem();
void setPageItem(PageItemDesignIntf::Ptr pageItem);
void setPageItems(QList<PageItemDesignIntf::Ptr> pages);
QList<PageItemDesignIntf::Ptr> pageItems(){return m_reportPages;}
QStringList possibleParentItems();
void registerItem(BaseDesignIntf* item);
void registerBand(BandDesignIntf* band);
void removeAllItems();
bool isItemInsertMode();
ReportEnginePrivate* reportEditor();
void setReportEditor(ReportEnginePrivate* value){m_reportEditor=value;}
void setItemMode(BaseDesignIntf::ItemMode state);
BaseDesignIntf::ItemMode itemMode(){return m_itemMode;}
BaseDesignIntf* reportItemByName(const QString& name);
QList<BaseDesignIntf *> reportItemsByName(const QString &name);
BaseDesignIntf* addReportItem(const QString& itemType, QPointF pos, QSizeF size);
BaseDesignIntf* addReportItem(const QString& itemType, QObject *owner=0, BaseDesignIntf *parent=0);
BaseDesignIntf* createReportItem(const QString& itemType, QObject *owner=0, BaseDesignIntf *parent=0);
void removeReportItem(BaseDesignIntf* item, bool createComand = true);
CommandIf::Ptr removeReportItemCommand(BaseDesignIntf *item);
bool saveCommand(CommandIf::Ptr command, bool runCommand = true);
QStringList possibleParentItems();
void registerItem(BaseDesignIntf* item);
void registerBand(BandDesignIntf* band);
void removeAllItems();
bool isCanRedo();
bool isCanUndo();
bool isHasChanges();
void setItemMode(BaseDesignIntf::ItemMode state);
BaseDesignIntf::ItemMode itemMode(){return m_itemMode;}
BaseDesignIntf* reportItemByName(const QString& name);
QList<BaseDesignIntf *> reportItemsByName(const QString &name);
BaseDesignIntf* addReportItem(const QString& itemType, QPointF pos, QSizeF size);
BaseDesignIntf* addReportItem(const QString& itemType, QObject *owner=0, BaseDesignIntf *parent=0);
BaseDesignIntf* createReportItem(const QString& itemType, QObject *owner=0, BaseDesignIntf *parent=0);
void removeReportItem(BaseDesignIntf* item, bool createComand = true);
CommandIf::Ptr removeReportItemCommand(BaseDesignIntf *item);
bool saveCommand(CommandIf::Ptr command, bool runCommand = true);
void reactivatePageItem(PageItemDesignIntf::Ptr pageItem);
bool isCanRedo();
bool isCanUndo();
bool isHasChanges();
void setSettings(QSettings* settings){ m_settings = settings;}
QSettings* settings(){ return m_settings;}
void reactivatePageItem(PageItemDesignIntf::Ptr pageItem);
QString genObjectName(const QObject& object);
void setSettings(QSettings* settings){ m_settings = settings;}
QSettings* settings(){ return m_settings;}
void animateItem(BaseDesignIntf* item);
void setSelectionRect(QRectF selectionRect);
void emitRegisterdItem(BaseDesignIntf *item);
void emitItemRemoved(BaseDesignIntf* item);
QString genObjectName(const QObject& object);
DataSourceManager* datasourceManager();
bool isSaved(){ return !m_hasHanges;}
void changeSelectedGrpoupTextAlignPropperty(const bool& horizontalAlign, Qt::AlignmentFlag flag);
void animateItem(BaseDesignIntf* item);
void setSelectionRect(QRectF selectionRect);
void emitRegisterdItem(BaseDesignIntf *item);
void emitItemRemoved(BaseDesignIntf* item);
int verticalGridStep() const;
void setVerticalGridStep(int verticalGridStep);
DataSourceManager* datasourceManager();
bool isSaved(){ return !m_hasHanges;}
void changeSelectedGrpoupTextAlignPropperty(const bool& horizontalAlign, Qt::AlignmentFlag flag);
int horizontalGridStep() const;
void setHorizontalGridStep(int horizontalGridStep);
int verticalGridStep() const;
void setVerticalGridStep(int verticalGridStep);
void beginUpdate(){m_updating = true;}
bool isUpdating(){return m_updating;}
void endUpdate();
int horizontalGridStep() const;
void setHorizontalGridStep(int horizontalGridStep);
void beginUpdate(){m_updating = true;}
bool isUpdating(){return m_updating;}
void endUpdate();
void itemMoved(BaseDesignIntf* item);
bool magneticMovement() const;
void setMagneticMovement(bool magneticMovement);
ReportSettings *getReportSettings() const;
void setReportSettings(ReportSettings *reportSettings);
void setPropertyToSelectedItems(const char *name, const QVariant &value);
void itemMoved(BaseDesignIntf* item);
bool magneticMovement() const;
void setMagneticMovement(bool magneticMovement);
ReportSettings *getReportSettings() const;
void setReportSettings(ReportSettings *reportSettings);
void setPropertyToSelectedItems(const char *name, const QVariant &value);
protected:
virtual void keyPressEvent(QKeyEvent *event);
virtual void keyReleaseEvent(QKeyEvent *event);
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
virtual void keyPressEvent(QKeyEvent *event);
virtual void keyReleaseEvent(QKeyEvent *event);
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event);
virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *);
virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event);
virtual void dropEvent(QGraphicsSceneDragDropEvent *event);
virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event);
virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *);
virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event);
virtual void dropEvent(QGraphicsSceneDragDropEvent *event);
LimeReport::BandDesignIntf::BandsType findPriorType(LimeReport::BandDesignIntf::BandsType bandType);
BaseDesignIntf *findDestObject(BaseDesignIntf *item);
LimeReport::BandDesignIntf::BandsType findPriorType(LimeReport::BandDesignIntf::BandsType bandType);
BaseDesignIntf *findDestObject(BaseDesignIntf *item);
bool isExistsObjectName (const QString& objectName, QList<QGraphicsItem *> &itemsList) const;
bool isExistsObjectName (const QString& objectName, QList<QGraphicsItem *> &itemsList) const;
QRectF getRectByPageSize(PageSize pageSize);
bool isLoading();
void objectLoadStarted();
void objectLoadFinished();
bool isLoading();
void objectLoadStarted();
void objectLoadFinished();
HorizontalLayout* internalAddHLayout();
QPointF placePosOnGrid(QPointF point);
QSizeF placeSizeOnGrid(QSizeF size);
HorizontalLayout* internalAddHLayout();
QPointF placePosOnGrid(QPointF point);
QSizeF placeSizeOnGrid(QSizeF size);
signals:
void geometryChanged(QRectF newGeometry);
void insertModeStarted();
void itemInserted(LimeReport::PageDesignIntf* report, QPointF pos, const QString& ItemType);
void itemInsertCanceled(const QString& ItemType);
void itemSelected(LimeReport::BaseDesignIntf *item);
void multiItemsSelected(QList<QObject*>* objectsList);
void miltiItemsSelectionFinished();
void commandHistoryChanged();
void itemPropertyChanged(const QString& objectName, const QString& propertyName, const QVariant& oldValue, const QVariant& newValue);
void itemAdded(LimeReport::PageDesignIntf* page, LimeReport::BaseDesignIntf* item);
void itemRemoved(LimeReport::PageDesignIntf* page, LimeReport::BaseDesignIntf* item);
void bandAdded(LimeReport::PageDesignIntf* page, LimeReport::BandDesignIntf* band);
void bandRemoved(LimeReport::PageDesignIntf* page, LimeReport::BandDesignIntf* band);
void pageUpdateFinished(LimeReport::PageDesignIntf* page);
public slots:
BaseDesignIntf* addBand(const QString& bandType);
BaseDesignIntf* addBand(BandDesignIntf::BandsType bandType);
void removeBand(LimeReport::BandDesignIntf* band);
void bandGeometryChanged(QObject* object, QRectF newGeometry, QRectF oldGeometry);
void bandPosChanged(QObject* object, QPointF newPos, QPointF oldPos);
void slotUpdateItemSize();
void undo();
void redo();
void copy();
void paste();
void deleteSelected();
void cut();
void setToSaved();
void bringToFront();
void sendToBack();
void alignToLeft();
void alignToRigth();
void alignToVCenter();
void alignToTop();
void alignToBottom();
void alignToHCenter();
void sameWidth();
void sameHeight();
void addHLayout();
void setFont(const QFont &font);
void setTextAlign(const Qt::Alignment& alignment);
void setBorders(const BaseDesignIntf::BorderLines& border);
private slots:
void slotPageGeometryChanged(QObject*, QRectF, QRectF );
void slotItemPropertyChanged(QString propertyName, const QVariant &oldValue, const QVariant &newValue);
void slotItemPropertyObjectNameChanged(const QString& oldName, const QString& newName);
void bandDeleted(QObject* band);
void slotPageItemLoaded(QObject *);
void slotSelectionChanged();
void slotAnimationStoped(QObject *animation);
private:
template <typename T>
BaseDesignIntf* internalAddBand(T bandType);
void finalizeInsertMode();
void saveSelectedItemsPos();
void saveSelectedItemsGeometry();
void checkSizeOrPosChanges();
CommandIf::Ptr createChangePosCommand();
CommandIf::Ptr createChangeSizeCommand();
void saveChangeProppertyCommand(const QString& objectName, const QString& propertyName, const QVariant& oldPropertyValue, const QVariant& newPropertyValue);
void changeSelectedGroupProperty(const QString& name,const QVariant& value);
private:
enum JoinType{Width, Height};
PageSize m_pageSize;
QSizeF m_pageSizeValue;
Orientation m_orientation;
QRectF m_geometry;
LimeReport::PageItemDesignIntf::Ptr m_pageItem;
QList<PageItemDesignIntf::Ptr> m_reportPages;
ReportEnginePrivate* m_reportEditor;
bool m_insertMode;
QGraphicsItem * m_itemInsertRect;
QString m_insertItemType;
BaseDesignIntf::ItemMode m_itemMode;
QGraphicsRectItem* m_cutterBorder;
QGraphicsRectItem* m_pageRect;
QVector<CommandIf::Ptr> m_commandsList;
QVector<ReportItemPos> m_positionStamp;
QVector<ReportItemSize> m_geometryStamp;
BaseDesignIntf* m_firstSelectedItem;
int m_currentCommand;
bool m_changeSizeMode;
bool m_changePosMode;
bool m_changePosOrSizeMode;
bool m_executingCommand;
bool m_hasHanges;
bool m_isLoading;
bool m_executingGroupCommand;
QSettings* m_settings;
QList<QObject*> m_animationList;
QPointF m_startSelectionPoint;
QGraphicsRectItem* m_selectionRect;
int m_verticalGridStep;
int m_horizontalGridStep;
bool m_updating;
int m_currentObjectIndex;
bool m_multiSelectStarted;
QList<ItemProjections> m_projections;
BaseDesignIntf* m_movedItem;
BaseDesignIntf* m_movedItemContainer;
BaseDesignIntf* m_joinItem;
JoinType m_joinType;
bool m_magneticMovement;
ReportSettings* m_reportSettings;
void geometryChanged(QRectF newGeometry);
void insertModeStarted();
void itemInserted(LimeReport::PageDesignIntf* report, QPointF pos, const QString& ItemType);
void itemInsertCanceled(const QString& ItemType);
void itemSelected(LimeReport::BaseDesignIntf *item);
void multiItemsSelected(QList<QObject*>* objectsList);
void miltiItemsSelectionFinished();
void commandHistoryChanged();
void itemPropertyChanged(const QString& objectName, const QString& propertyName, const QVariant& oldValue, const QVariant& newValue);
void itemAdded(LimeReport::PageDesignIntf* page, LimeReport::BaseDesignIntf* item);
void itemRemoved(LimeReport::PageDesignIntf* page, LimeReport::BaseDesignIntf* item);
void bandAdded(LimeReport::PageDesignIntf* page, LimeReport::BandDesignIntf* band);
void bandRemoved(LimeReport::PageDesignIntf* page, LimeReport::BandDesignIntf* band);
void pageUpdateFinished(LimeReport::PageDesignIntf* page);
public slots:
BaseDesignIntf* addBand(const QString& bandType);
BaseDesignIntf* addBand(BandDesignIntf::BandsType bandType);
void removeBand(LimeReport::BandDesignIntf* band);
void bandGeometryChanged(QObject* object, QRectF newGeometry, QRectF oldGeometry);
void bandPosChanged(QObject* object, QPointF newPos, QPointF oldPos);
void slotUpdateItemSize();
void undo();
void redo();
void copy();
void paste();
void deleteSelected();
void cut();
void setToSaved();
void bringToFront();
void sendToBack();
void alignToLeft();
void alignToRigth();
void alignToVCenter();
void alignToTop();
void alignToBottom();
void alignToHCenter();
void sameWidth();
void sameHeight();
void addHLayout();
void setFont(const QFont &font);
void setTextAlign(const Qt::Alignment& alignment);
void setBorders(const BaseDesignIntf::BorderLines& border);
private slots:
void slotPageGeometryChanged(QObject*, QRectF, QRectF );
void slotItemPropertyChanged(QString propertyName, const QVariant &oldValue, const QVariant &newValue);
void slotItemPropertyObjectNameChanged(const QString& oldName, const QString& newName);
void bandDeleted(QObject* band);
void slotPageItemLoaded(QObject *);
void slotSelectionChanged();
void slotAnimationStoped(QObject *animation);
private:
template <typename T>
BaseDesignIntf* internalAddBand(T bandType);
void finalizeInsertMode();
void saveSelectedItemsPos();
void saveSelectedItemsGeometry();
void checkSizeOrPosChanges();
CommandIf::Ptr createChangePosCommand();
CommandIf::Ptr createChangeSizeCommand();
void saveChangeProppertyCommand(const QString& objectName, const QString& propertyName, const QVariant& oldPropertyValue, const QVariant& newPropertyValue);
void changeSelectedGroupProperty(const QString& name,const QVariant& value);
private:
enum JoinType{Width, Height};
LimeReport::PageItemDesignIntf::Ptr m_pageItem;
QList<PageItemDesignIntf::Ptr> m_reportPages;
ReportEnginePrivate* m_reportEditor;
bool m_insertMode;
QGraphicsItem * m_itemInsertRect;
QString m_insertItemType;
BaseDesignIntf::ItemMode m_itemMode;
QGraphicsRectItem* m_cutterBorder;
QGraphicsRectItem* m_pageRect;
QVector<CommandIf::Ptr> m_commandsList;
QVector<ReportItemPos> m_positionStamp;
QVector<ReportItemSize> m_geometryStamp;
BaseDesignIntf* m_firstSelectedItem;
int m_currentCommand;
bool m_changeSizeMode;
bool m_changePosMode;
bool m_changePosOrSizeMode;
bool m_executingCommand;
bool m_hasHanges;
bool m_isLoading;
bool m_executingGroupCommand;
QSettings* m_settings;
QList<QObject*> m_animationList;
QPointF m_startSelectionPoint;
QGraphicsRectItem* m_selectionRect;
int m_verticalGridStep;
int m_horizontalGridStep;
bool m_updating;
int m_currentObjectIndex;
bool m_multiSelectStarted;
QList<ItemProjections> m_projections;
BaseDesignIntf* m_movedItem;
BaseDesignIntf* m_movedItemContainer;
BaseDesignIntf* m_joinItem;
JoinType m_joinType;
bool m_magneticMovement;
ReportSettings* m_reportSettings;
};
class AbstractPageCommand : public CommandIf{