[qet] [2353] autonum widget: if user change type ( old type numeric to new type numeric) the value field isn't erase

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


Revision: 2353
Author:   blacksun
Date:     2013-06-28 13:29:36 +0200 (Fri, 28 Jun 2013)
Log Message:
-----------
autonum widget: if user change type (old type numeric to new type numeric) the value field isn't erase

Modified Paths:
--------------
    trunk/sources/ui/numparteditorw.cpp
    trunk/sources/ui/numparteditorw.h

Modified: trunk/sources/ui/numparteditorw.cpp
===================================================================
--- trunk/sources/ui/numparteditorw.cpp	2013-06-27 18:43:31 UTC (rev 2352)
+++ trunk/sources/ui/numparteditorw.cpp	2013-06-28 11:29:36 UTC (rev 2353)
@@ -11,7 +11,7 @@
 	intValidator (new QIntValidator(0,99999,this))
 {
 	ui -> setupUi(this);
-	setType(NumPartEditorW::unit);
+	setType(NumPartEditorW::unit, true);
 }
 
 /**
@@ -26,13 +26,13 @@
 	ui -> setupUi(this);
 
 	//if @context contains nothing build with default value
-	if(context.size()==0) setType(NumPartEditorW::unit);
+	if(context.size()==0) setType(NumPartEditorW::unit, true);
 
 	else {
 		QStringList strl = context.itemAt(i);
-		if (strl.at(0)=="unit") setType(NumPartEditorW::unit);
-		else if (strl.at(0)=="ten") setType(NumPartEditorW::ten);
-		else if (strl.at(0)=="hundred") setType(NumPartEditorW::hundred);
+		if (strl.at(0)=="unit") setType(NumPartEditorW::unit, true);
+		else if (strl.at(0)=="ten") setType(NumPartEditorW::ten, true);
+		else if (strl.at(0)=="hundred") setType(NumPartEditorW::hundred, true);
 		else if (strl.at(0)=="string") setType(NumPartEditorW::string);
 		else if (strl.at(0)== "folio") setType(NumPartEditorW::folio);
 		ui -> value_field -> setText(strl.at(1));
@@ -55,6 +55,24 @@
  */
 NumerotationContext NumPartEditorW::toNumContext() {
 	NumerotationContext nc;
+	QString type_str;
+	switch (type_) {
+		case unit:
+			type_str = "unit";
+			break;
+		case ten:
+			type_str = "ten";
+			break;
+		case hundred:
+			type_str = "hundred";
+			break;
+		case string:
+			type_str = "string";
+			break;
+		case folio:
+			type_str = "folio";
+			break;
+	}
 	nc.addValue(type_str, ui -> value_field -> displayText(), ui -> increase_spinBox -> value());
 	return nc;
 }
@@ -103,7 +121,7 @@
 
 /**
  * @brief NumPartEditorW::on_increase_spinBox_valueChanged
- *emit changed when @increase_spinBox value changed
+ * emit changed when @increase_spinBox value changed
  */
 void NumPartEditorW::on_increase_spinBox_valueChanged() {
 	if (!ui -> value_field -> text().isEmpty()) emit changed();
@@ -112,41 +130,33 @@
 /**
  * @brief NumPartEditorW::setType
  * Set good behavior by type @t
+ * @param t, type used
+ * @param fnum, force the behavior of numeric type
  */
-void NumPartEditorW::setType(NumPartEditorW::type t) {
+void NumPartEditorW::setType(NumPartEditorW::type t, bool fnum) {
 	ui -> type_combo -> setCurrentIndex(t);
-	ui -> value_field -> clear();
-	ui -> increase_spinBox -> setValue(1);
-	type_= t;
-	switch (t) {
-		case unit:
-			ui -> value_field -> setEnabled(true);
-			ui ->value_field -> setValidator(intValidator);
-			ui -> increase_spinBox -> setEnabled(true);
-			type_str = "unit";
-			break;
-		case ten:
-			ui -> value_field -> setEnabled(true);
-			ui ->value_field -> setValidator(intValidator);
-			ui -> increase_spinBox -> setEnabled(true);
-			type_str = "ten";
-			break;
-		case hundred:
-			ui -> value_field -> setEnabled(true);
-			ui ->value_field -> setValidator(intValidator);
-			ui -> increase_spinBox -> setEnabled(true);
-			type_str = "hundred";
-			break;
-		case string:
+
+	//if @t is a numeric type and preview type @type_ isn't a numeric type
+	//or @fnum is true, we set numeric behavior
+	if ( ((t==unit || t==ten || t==hundred) && (type_==string || type_==folio)) || fnum) {
+		ui -> value_field -> clear();
+		ui -> value_field -> setEnabled(true);
+		ui -> value_field -> setValidator(intValidator);
+		ui -> increase_spinBox -> setEnabled(true);
+		ui -> increase_spinBox -> setValue(1);
+	}
+	//@t isn't a numeric type
+	else if (t==string || t==folio) {
+		ui -> value_field -> clear();
+		ui -> increase_spinBox -> setDisabled(true);
+		if (t==string) {
 			ui -> value_field -> setValidator(0);
 			ui -> value_field -> setEnabled(true);
-			ui -> increase_spinBox -> setDisabled(true);
-			type_str = "string";
-			break;
-		case folio:
+		}
+		else if (t==folio) {
 			ui -> value_field -> setDisabled(true);
 			ui -> increase_spinBox -> setDisabled(true);
-			type_str = "folio";
-			break;
-	};
+		}
+	}
+	type_= t;
 }

Modified: trunk/sources/ui/numparteditorw.h
===================================================================
--- trunk/sources/ui/numparteditorw.h	2013-06-27 18:43:31 UTC (rev 2352)
+++ trunk/sources/ui/numparteditorw.h	2013-06-28 11:29:36 UTC (rev 2353)
@@ -5,6 +5,11 @@
 #include <QValidator>
 #include "numerotationcontext.h"
 
+/**
+ *This class represent a single part num widget. By this widget, we can define and edit
+ *how the num auto must work .
+ *This widget is called by selectautonumw.
+ */
 namespace Ui {
 	class NumPartEditorW;
 }
@@ -28,7 +33,7 @@
 	void on_type_combo_activated(int);
 	void on_value_field_textEdited();
 	void on_increase_spinBox_valueChanged();
-	void setType (NumPartEditorW::type t);
+	void setType (NumPartEditorW::type t, bool=false);
 
 	signals:
 	void changed ();
@@ -36,7 +41,6 @@
 	private:
 	Ui::NumPartEditorW *ui;
 	QValidator *intValidator;
-	QString type_str;
 	type type_;
 
 };


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