[qet] [2488] image can be resized (not undo command and save to xml yet)

[ Thread Index | Date Index | More lists.tuxfamily.org/qet Archives ]


Revision: 2488
Author:   blacksun
Date:     2013-09-06 19:14:10 +0200 (Fri, 06 Sep 2013)
Log Message:
-----------
image can be resized (not undo command and save to xml yet)

Modified Paths:
--------------
    trunk/sources/diagramimageitem.cpp
    trunk/sources/diagramimageitem.h

Modified: trunk/sources/diagramimageitem.cpp
===================================================================
--- trunk/sources/diagramimageitem.cpp	2013-09-06 13:41:04 UTC (rev 2487)
+++ trunk/sources/diagramimageitem.cpp	2013-09-06 17:14:10 UTC (rev 2488)
@@ -219,15 +219,55 @@
 	@param event un QGraphicsSceneMouseEvent decrivant le double-clic
 */
 void DiagramImageItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) {
-	/*if (!(textInteractionFlags() & Qt::imageditable)) {
-		// rend le champ de image editable
-		setTextInteractionFlags(Qt::imageditorInteraction);
-		
-		// edite le champ de image
-		setFocus(Qt::MouseFocusReason);
-	} else {
-		QGraphicsPixmapItem::mouseDoubleClickEvent(event);
-	}*/
+	Q_UNUSED (event);
+	if (diagram() -> isReadOnly()) return;
+	//the range for scale image and divisor factor
+	int min_range = 1;
+	int max_range = 200;
+	int factor_range = 100;
+
+	//the dialog
+	QDialog property_dialog;
+	property_dialog.setWindowTitle(tr("\311diter les propri\351t\351s d'une image", "window title"));
+	//the main layout
+	QVBoxLayout *dialog_layout = new QVBoxLayout(&property_dialog);
+
+	//GroupBox for resizer image
+	QGroupBox *resize_groupe = new QGroupBox(tr("Dimension de l'image", "image size"));
+	dialog_layout -> addWidget(resize_groupe);
+	QHBoxLayout *resize_layout = new QHBoxLayout(resize_groupe);
+
+	//slider
+	QSlider *slider = new QSlider(Qt::Horizontal, &property_dialog);
+	slider->setRange(min_range, max_range);
+	qreal scale_= scale();
+	slider -> setValue(scale_*factor_range);
+	//spinbox
+	QSpinBox *spin_box = new QSpinBox(&property_dialog);
+	spin_box -> setRange(min_range, max_range);
+	spin_box -> setValue(scale_*factor_range);
+	spin_box -> setSuffix(" %");
+	//synchro slider with spinbox
+	connect(slider, SIGNAL(valueChanged(int)), spin_box, SLOT(setValue(int)));
+	connect(slider, SIGNAL(valueChanged(int)), this, SLOT(setScale(int)));
+	connect(spin_box, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int)));
+	//add slider and spinbox to layout
+	resize_layout -> addWidget(slider);
+	resize_layout -> addWidget(spin_box);
+
+	//dialog butto, box
+	QDialogButtonBox *dbb = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
+	dialog_layout -> addWidget(dbb);
+	connect(dbb, SIGNAL(accepted()), &property_dialog, SLOT(accept()));
+	connect(dbb, SIGNAL(rejected()), &property_dialog, SLOT(reject()));
+
+	if (property_dialog.exec() == QDialog::Accepted) {
+		qreal new_scale = slider -> value();
+		new_scale /= factor_range;
+		if (scale_ != new_scale) QGraphicsPixmapItem::setScale(new_scale);
+	}
+	else QGraphicsPixmapItem::setScale(scale_);
+	return;
 }
 
 /**
@@ -327,9 +367,16 @@
 	return(QGraphicsPixmapItem::pos());
 }
 
-/// Rend le champ de image non focusable
-void DiagramImageItem::setNonFocusable() {
-	setFlag(QGraphicsPixmapItem::ItemIsFocusable, false);
+/**
+ * @brief DiagramImageItem::setScale
+ * @param scale the value of @scale must be betwen 1 and 200
+ */
+void DiagramImageItem::setScale(int scale) {
+	if (scale >= 1 && scale <= 200) {
+		qreal new_scale = scale;
+		new_scale /= 100;
+		QGraphicsPixmapItem::setScale(new_scale);
+	}
 }
 
 /**

Modified: trunk/sources/diagramimageitem.h
===================================================================
--- trunk/sources/diagramimageitem.h	2013-09-06 13:41:04 UTC (rev 2487)
+++ trunk/sources/diagramimageitem.h	2013-09-06 17:14:10 UTC (rev 2488)
@@ -76,8 +76,8 @@
 	/// signal emitted after image was changed
 	void diagramImageChanged(DiagramImageItem *, const QString &, const QString &);
 	
-	public slots:
-	void setNonFocusable();
+	private slots:
+	void setScale(int);
 	
 	private:
 	bool first_move_;


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/