insilmaril@808: #include insilmaril@808: #include insilmaril@808: #include insilmaril@808: insilmaril@825: #include insilmaril@825: #include insilmaril@825: #include insilmaril@825: #include insilmaril@825: insilmaril@825: insilmaril@808: #include "findwidget.h" insilmaril@808: insilmaril@808: insilmaril@811: extern QString iconPath; insilmaril@808: insilmaril@810: FindWidget::FindWidget(QWidget *) insilmaril@808: { insilmaril@808: QVBoxLayout* mainLayout = new QVBoxLayout; insilmaril@808: QHBoxLayout *row2Layout = new QHBoxLayout; insilmaril@808: insilmaril@808: // Create Buttons insilmaril@808: cancelbutton = new QPushButton; insilmaril@811: //cancelbutton->setText(tr("Cancel")); insilmaril@811: cancelbutton->setIcon (QIcon (iconPath+"fileclose.png")); insilmaril@808: cancelbutton->setShortcut (Qt::Key_Escape); insilmaril@808: connect ( cancelbutton, SIGNAL( clicked() ), this, SLOT( cancelPressed() ) ); insilmaril@808: insilmaril@810: QLabel *label=new QLabel; insilmaril@810: label->setText (tr("Find:","FindWidget")); insilmaril@810: insilmaril@808: // Create LineEdit (here QComboBox) insilmaril@808: findcombo = new QComboBox; insilmaril@808: findcombo->setMinimumWidth(250); insilmaril@808: findcombo->setEditable(true); insilmaril@811: insilmaril@811: QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); insilmaril@811: findcombo->setSizePolicy(sizePolicy); insilmaril@808: connect ( findcombo, SIGNAL( highlighted(int) ), insilmaril@808: this, SLOT( nextPressed() ) ); insilmaril@808: connect ( findcombo, SIGNAL( textChanged(const QString &) ), insilmaril@808: this, SLOT( findTextChanged(const QString&) ) ); insilmaril@808: insilmaril@808: nextbutton = new QPushButton; insilmaril@808: nextbutton->setText (tr("Next","Find widget")); insilmaril@810: nextbutton->setDefault (true); insilmaril@810: nextbutton->setShortcut (Qt::Key_Return); insilmaril@810: //nextbutton->setShortcutContext (Qt::WidgetShortcut); insilmaril@808: connect ( nextbutton, SIGNAL( clicked() ), this, SLOT( nextPressed() ) ); insilmaril@808: insilmaril@808: row2Layout->addWidget (cancelbutton); insilmaril@810: row2Layout->addWidget (label); insilmaril@808: row2Layout->addWidget(findcombo); insilmaril@808: row2Layout->addWidget(nextbutton); insilmaril@808: insilmaril@808: mainLayout->addLayout (row2Layout); insilmaril@808: insilmaril@808: setLayout (mainLayout); insilmaril@811: status=Undefined; insilmaril@808: } insilmaril@808: insilmaril@808: void FindWidget::popup() insilmaril@808: { insilmaril@808: show(); insilmaril@808: findcombo->lineEdit()->selectAll(); insilmaril@808: findcombo->setFocus(); insilmaril@811: setStatus (Undefined); insilmaril@808: } insilmaril@808: insilmaril@808: void FindWidget::cancelPressed() insilmaril@808: { insilmaril@808: hide(); insilmaril@812: emit (hideFindWidget() ); insilmaril@808: } insilmaril@808: insilmaril@808: void FindWidget::nextPressed() insilmaril@808: { insilmaril@808: emit (nextButton(findcombo->currentText() ) ); insilmaril@808: } insilmaril@808: insilmaril@808: void FindWidget::findTextChanged(const QString&) insilmaril@808: { insilmaril@811: setStatus (Undefined); insilmaril@808: } insilmaril@808: insilmaril@810: void FindWidget::setStatus (Status st) insilmaril@810: { insilmaril@811: if (st==status) return; insilmaril@811: insilmaril@811: status=st; insilmaril@810: QPalette p=palette(); insilmaril@810: QColor c; insilmaril@810: switch (st) insilmaril@810: { insilmaril@811: case Success: c=QColor (120,255,120); break; insilmaril@811: case Failed: c=QColor (255,120,120); break; insilmaril@810: default: c=QColor (255,255,255); insilmaril@810: } insilmaril@810: p.setColor(QPalette::Active, static_cast(9), c); insilmaril@810: p.setColor(QPalette::Inactive, static_cast(9), c); insilmaril@810: findcombo->setPalette(p); insilmaril@810: } insilmaril@810: