insilmaril@829: #include insilmaril@829: #include 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@829: #include "mainwindow.h" insilmaril@808: insilmaril@808: insilmaril@811: extern QString iconPath; insilmaril@829: extern Main *mainWindow; 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@808: connect ( nextbutton, SIGNAL( clicked() ), this, SLOT( nextPressed() ) ); insilmaril@808: insilmaril@834: // QAction needed to only activate shortcut while FindWidget has focus insilmaril@834: QAction *a=new QAction (nextbutton->text(),this); insilmaril@834: a->setShortcut (Qt::Key_Return); insilmaril@834: a->setShortcutContext (Qt::WidgetWithChildrenShortcut); insilmaril@834: connect ( a, SIGNAL( triggered() ), this, SLOT( nextPressed() ) ); insilmaril@834: addAction (a); insilmaril@834: insilmaril@829: showAllButton = new QPushButton; insilmaril@829: showAllButton->setText (tr("Show all","Find widget")); insilmaril@829: connect ( showAllButton, SIGNAL( clicked() ), mainWindow, SLOT( editOpenFindWidget() ) ); insilmaril@829: insilmaril@808: row2Layout->addWidget (cancelbutton); insilmaril@810: row2Layout->addWidget (label); insilmaril@808: row2Layout->addWidget(findcombo); insilmaril@808: row2Layout->addWidget(nextbutton); insilmaril@829: row2Layout->addWidget(showAllButton); 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@829: emit (hideFindWidget() );//Restore focus 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@829: void FindWidget::setFocus() insilmaril@829: { insilmaril@829: findcombo->setFocus(); insilmaril@829: } insilmaril@829: 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: