From ea844a04058c350e415ad2a788ac855ef9a42b85 Mon Sep 17 00:00:00 2001 From: Arin Alexander Date: Tue, 15 Aug 2017 01:21:59 +0300 Subject: [PATCH] Context menu for multi selected items has been fixed --- common.pri | 2 +- limereport/items/lrtextitem.cpp | 8 ++--- limereport/lrbanddesignintf.cpp | 53 ++++++++++++++++++++++++++++----- limereport/lrbanddesignintf.h | 2 +- limereport/lrpagedesignintf.cpp | 8 +++++ limereport/lrpagedesignintf.h | 2 ++ 6 files changed, 61 insertions(+), 14 deletions(-) diff --git a/common.pri b/common.pri index bbf28ba..b371859 100644 --- a/common.pri +++ b/common.pri @@ -62,7 +62,7 @@ RCC_DIR = $${ARCH_DIR}/$${BUILD_TYPE}/rcc LIMEREPORT_VERSION_MAJOR = 1 LIMEREPORT_VERSION_MINOR = 4 -LIMEREPORT_VERSION_RELEASE = 34 +LIMEREPORT_VERSION_RELEASE = 38 LIMEREPORT_VERSION = '\\"$${LIMEREPORT_VERSION_MAJOR}.$${LIMEREPORT_VERSION_MINOR}.$${LIMEREPORT_VERSION_RELEASE}\\"' DEFINES += LIMEREPORT_VERSION_STR=\"$${LIMEREPORT_VERSION}\" diff --git a/limereport/items/lrtextitem.cpp b/limereport/items/lrtextitem.cpp index 3144c66..c76185a 100644 --- a/limereport/items/lrtextitem.cpp +++ b/limereport/items/lrtextitem.cpp @@ -113,16 +113,16 @@ void TextItem::processPopUpAction(QAction *action) this->showEditorDialog(); } if (action->text().compare(tr("Auto height")) == 0){ - setProperty("autoHeight",action->isChecked()); + page()->setPropertyToSelectedItems("autoHeight",action->isChecked()); } if (action->text().compare(tr("Allow HTML")) == 0){ - setProperty("allowHTML",action->isChecked()); + page()->setPropertyToSelectedItems("allowHTML",action->isChecked()); } if (action->text().compare(tr("Allow HTML in fields")) == 0){ - setProperty("allowHTMLInFields",action->isChecked()); + page()->setPropertyToSelectedItems("allowHTMLInFields",action->isChecked()); } if (action->text().compare(tr("Stretch to max height")) == 0){ - setProperty("stretchToMaxHeight",action->isChecked()); + page()->setPropertyToSelectedItems("stretchToMaxHeight",action->isChecked()); } } diff --git a/limereport/lrbanddesignintf.cpp b/limereport/lrbanddesignintf.cpp index 26c1100..f68c61a 100644 --- a/limereport/lrbanddesignintf.cpp +++ b/limereport/lrbanddesignintf.cpp @@ -292,6 +292,14 @@ void BandDesignIntf::setDataSourceName(const QString &datasource){ m_dataSourceName=datasource; } +void BandDesignIntf::setKeepBottomSpaceOption(bool value){ + if (m_keepBottomSpace!=value){ + m_keepBottomSpace=value; + if (!isLoading()) + notify("keepBottomSpace",!value,value); + } +} + void BandDesignIntf::addChildBand(BandDesignIntf *band) { m_childBands.append(band); @@ -466,13 +474,25 @@ void BandDesignIntf::preparePopUpMenu(QMenu &menu) } menu.addSeparator(); - QAction* autoHeightAction = menu.addAction(tr("Auto height")); - autoHeightAction->setCheckable(true); - autoHeightAction->setChecked(autoHeight()); + QAction* currAction = menu.addAction(tr("Auto height")); + currAction->setCheckable(true); + currAction->setChecked(autoHeight()); - QAction* autoSplittableAction = menu.addAction(tr("Splittable")); - autoSplittableAction->setCheckable(true); - autoSplittableAction->setChecked(isSplittable()); + currAction = menu.addAction(tr("Splittable")); + currAction->setCheckable(true); + currAction->setChecked(isSplittable()); + + currAction = menu.addAction(tr("Keep bottom space")); + currAction->setCheckable(true); + currAction->setChecked(keepBottomSpaceOption()); + + currAction = menu.addAction(tr("Start from new page")); + currAction->setCheckable(true); + currAction->setChecked(startFromNewPage()); + + currAction = menu.addAction(tr("Start new page")); + currAction->setCheckable(true); + currAction->setChecked(startNewPage()); } void BandDesignIntf::processPopUpAction(QAction *action) @@ -483,6 +503,15 @@ void BandDesignIntf::processPopUpAction(QAction *action) if (action->text().compare(tr("Splittable")) == 0){ setProperty("splittable",action->isChecked()); } + if (action->text().compare(tr("Keep bottom space")) == 0){ + setProperty("keepBottomSpace",action->isChecked()); + } + if (action->text().compare(tr("Start new page")) == 0){ + setProperty("startNewPage",action->isChecked()); + } + if (action->text().compare(tr("Start from new page")) == 0){ + setProperty("startFromNewPage",action->isChecked()); + } } BaseDesignIntf* BandDesignIntf::cloneUpperPart(int height, QObject *owner, QGraphicsItem *parent) @@ -772,7 +801,11 @@ bool BandDesignIntf::startFromNewPage() const void BandDesignIntf::setStartFromNewPage(bool startWithNewPage) { - m_startFromNewPage = startWithNewPage; + if (m_startFromNewPage != startWithNewPage){ + m_startFromNewPage = startWithNewPage; + if (!isLoading()) + notify("startFromNewPage", !startWithNewPage, startWithNewPage); + } } bool BandDesignIntf::startNewPage() const @@ -782,7 +815,11 @@ bool BandDesignIntf::startNewPage() const void BandDesignIntf::setStartNewPage(bool startNewPage) { - m_startNewPage = startNewPage; + if (m_startNewPage != startNewPage){ + m_startNewPage = startNewPage; + if (!isLoading()) + notify("startNewPage", !startNewPage, startNewPage); + } } void BandDesignIntf::setAutoHeight(bool value){ diff --git a/limereport/lrbanddesignintf.h b/limereport/lrbanddesignintf.h index 5c4b1e3..f1cd43a 100644 --- a/limereport/lrbanddesignintf.h +++ b/limereport/lrbanddesignintf.h @@ -150,7 +150,7 @@ public: QString datasourceName(); void setDataSourceName(const QString& datasourceName); - void setKeepBottomSpaceOption(bool value){m_keepBottomSpace=value;} + void setKeepBottomSpaceOption(bool value); bool keepBottomSpaceOption() const {return m_keepBottomSpace;} void addChildBand(BandDesignIntf* band); diff --git a/limereport/lrpagedesignintf.cpp b/limereport/lrpagedesignintf.cpp index 2a3a068..67d8408 100644 --- a/limereport/lrpagedesignintf.cpp +++ b/limereport/lrpagedesignintf.cpp @@ -1071,6 +1071,14 @@ void PageDesignIntf::setReportSettings(ReportSettings *reportSettings) m_pageItem->setReportSettings(m_reportSettings); } +void PageDesignIntf::setPropertyToSelectedItems(const char* name, const QVariant& value) +{ + foreach(QGraphicsItem* gi, selectedItems()){ + BaseDesignIntf* item = dynamic_cast(gi); + if(item && item->metaObject()->indexOfProperty(name) != -1 ) item->setProperty(name,value); + } +} + bool PageDesignIntf::magneticMovement() const { return m_magneticMovement; diff --git a/limereport/lrpagedesignintf.h b/limereport/lrpagedesignintf.h index d2ff996..684df0b 100644 --- a/limereport/lrpagedesignintf.h +++ b/limereport/lrpagedesignintf.h @@ -182,6 +182,8 @@ namespace LimeReport { ReportSettings *getReportSettings() const; void setReportSettings(ReportSettings *reportSettings); + void setPropertyToSelectedItems(const char *name, const QVariant &value); + protected: virtual void keyPressEvent(QKeyEvent *event);