[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_;
};