26 #define SEND_SELECTION_CHANGED_EVENT 0
30 #include <qcombobox.h>
31 #include <qlineedit.h>
33 #define YUILogComponent "qt-ui"
34 #include <yui/YUILog.h>
38 #include <yui/YEvent.h>
39 #include "QY2CharValidator.h"
40 #include "YQComboBox.h"
41 #include "YQSignalBlocker.h"
42 #include "YQWidgetCaption.h"
43 #include <QVBoxLayout>
47 const std::string & label,
49 : QFrame( (QWidget *) parent->widgetRep() )
50 , YComboBox( parent, label, editable )
53 QVBoxLayout* layout =
new QVBoxLayout(
this );
57 layout->setSpacing( YQWidgetSpacing );
58 layout->setMargin ( YQWidgetMargin );
61 YUI_CHECK_NEW( _caption );
62 layout->addWidget( _caption );
64 _qt_comboBox =
new QComboBox(
this);
65 _qt_comboBox->setEditable(editable);
66 YUI_CHECK_NEW( _caption );
67 layout->addWidget( _qt_comboBox );
69 _caption->setBuddy( _qt_comboBox );
71 #if SEND_SELECTION_CHANGED_EVENT
72 connect( _qt_comboBox, SIGNAL( highlighted (
int) ),
76 connect( _qt_comboBox, SIGNAL( activated ( QString ) ),
79 connect( _qt_comboBox, SIGNAL( editTextChanged( QString ) ),
92 return toUTF8( _qt_comboBox->currentText() );
98 QString
text = fromUTF8( newValue );
103 int index = _qt_comboBox->findText( text );
105 _qt_comboBox->setEditText( text );
107 _qt_comboBox->setCurrentIndex( index );
108 _qt_comboBox->setItemText(index, text );
113 yuiError() <<
this <<
": Rejecting invalid value \"" << newValue <<
"\"" << std::endl;
120 YComboBox::addItem( item );
123 if ( item->hasIconName() )
125 string iconName = iconFullPath( item );
126 icon = QIcon( iconName.c_str() );
129 yuiWarning() <<
"Can't load icon \"" << iconName <<
"\"" << std::endl;
133 _qt_comboBox->addItem( fromUTF8( item->label() ) );
135 _qt_comboBox->addItem( icon, fromUTF8( item->label() ) );
137 if ( item->selected() )
149 _qt_comboBox->clear();
150 YComboBox::deleteAllItems();
157 YComboBox::setLabel( label );
163 if ( ! _qt_comboBox->isEditable() )
165 yuiWarning() <<
this <<
": Setting ValidChars is useless on a combo box that isn't editable!" << std::endl;
176 _qt_comboBox->setValidator( _validator );
182 if ( !
isValidText( _qt_comboBox->currentText() ) )
184 yuiError() <<
this <<
": Old value \"" << _qt_comboBox->currentText()
185 <<
" \" invalid according to new ValidChars \""<< newValidChars <<
"\" - deleting"
187 _qt_comboBox->setItemText(_qt_comboBox->currentIndex(),
"");
190 YComboBox::setValidChars( newValidChars );
202 return _validator->
validate( text, pos ) == QValidator::Acceptable;
210 if ( !
YQUI::ui()->eventPendingFor(
this ) )
229 _qt_comboBox->lineEdit()->setMaxLength( len );
230 YComboBox::setInputMaxLength( len );
236 return sizeHint().width();
242 return sizeHint().height();
248 resize( newWidth, newHeight );
254 _caption->setEnabled( enabled );
255 _qt_comboBox->setEnabled( enabled );
256 YWidget::setEnabled( enabled );
262 _qt_comboBox->setFocus();
268 #include "YQComboBox.moc"
virtual void setValidChars(const std::string &validChars)
virtual std::string text()
virtual void setLabel(const std::string &label)
void textChanged(QString)
virtual void setEnabled(bool enabled)
virtual State validate(QString &input, int &pos) const
YQComboBox(YWidget *parent, const std::string &label, bool editable)
void sendEvent(YEvent *event)
virtual void addItem(YItem *item)
virtual void deleteAllItems()
bool isValidText(const QString &txt) const
void setValidChars(const QString &newValidChars)
virtual bool setKeyboardFocus()
virtual int preferredWidth()
virtual void setSize(int newWidth, int newHeight)
virtual int preferredHeight()
virtual void setInputMaxLength(int numberOfChars)
virtual void setText(const std::string &newText)