00001
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef _LEVALUECOMBO_H_
00031 #define _LEVALUECOMBO_H_
00032
00033
00034
00035
00036
00037
00038 #include <qlineedit.h>
00039
00040
00041 #include "osbcombos.h"
00042
00043
00044
00045
00046
00047
00048 namespace OSB_GUI {
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00071 class LeCombo : public QLineEdit {
00072 Q_OBJECT
00073 public:
00075 explicit LeCombo(
00076 QWidget* parent,
00077 const char* name = "leCombo_",
00078 FocusOutCombo* combo = 0
00079 );
00081 virtual ~LeCombo();
00082 public:
00084 void setCombo(FocusOutCombo* combo);
00085 protected:
00094 virtual void setComboItem() const;
00095 protected slots:
00104 virtual void comboActivated(int index);
00105 private slots:
00109 void comboFocusOut(QFocusEvent* e);
00110 private:
00120 void focusInEvent(QFocusEvent* e);
00121
00127 void resizeEvent(QResizeEvent* e);
00129 virtual QSize sizeHint() const;
00131 virtual QSize minimumSizeHint() const;
00132 private:
00134 FocusOutCombo* combo_;
00136 QWidget* prevFocus_;
00138 QWidget* nextFocus_;
00139 };
00140
00144 template<typename Value>
00145 class LeValueCombo : public LeCombo {
00146 public:
00148 LeValueCombo(
00149 QWidget* parent,
00150 const char* name = "leValueCombo_",
00151 ValueCombo<Value>* combo = 0
00152 );
00153 public:
00155 const Value& getValue() const;
00157 void setCombo(ValueCombo<Value>* combo);
00159 void setValue(
00160 const Value& value,
00161 const std::string& text
00162 );
00163 private:
00165 void setComboItem() const;
00171 void comboActivated(int index);
00172 private:
00174 Value value_;
00176 ValueCombo<Value>* combo_;
00177 };
00178 }
00179
00180
00181
00182 namespace OSB_GUI {
00183
00184
00185
00186 template<typename Value>
00187 LeValueCombo<Value>::LeValueCombo(
00188 QWidget* parent,
00189 const char* name,
00190 ValueCombo<Value>* combo
00191 ) : LeCombo(parent, name, 0), combo_(combo)
00192 {
00193 setCombo(combo);
00194 }
00195
00196 template<typename Value>
00197 const Value& LeValueCombo<Value>::getValue() const
00198 {
00199 return value_;
00200 }
00201
00202 template<typename Value>
00203 void LeValueCombo<Value>::setCombo(ValueCombo<Value>* combo)
00204 {
00205 combo_ = combo;
00206 LeCombo::setCombo(combo_);
00207 if (0 != combo_) value_ = combo_->getValue();
00208 }
00209
00210 template<typename Value>
00211 void LeValueCombo<Value>::setValue(
00212 const Value& value,
00213 const std::string& text
00214 )
00215 {
00216 value_ = value;
00217 setText(text);
00218 }
00219
00220 template<typename Value>
00221 void LeValueCombo<Value>::setComboItem() const
00222 {
00223 if (0 != combo_) combo_->select(value_);
00224 }
00225
00226 template<typename Value>
00227 void LeValueCombo<Value>::comboActivated(int index)
00228 {
00229 if (0 == combo_) return;
00230 value_ = combo_->getValue(index);
00231 setText(combo_->text(index));
00232 }
00233 }
00234 #endif // #ifndef _LEVALUECOMBO_H_