X-Git-Url: https://git.sven.stormbind.net/?a=blobdiff_plain;f=src%2Ffindwidget.cpp;fp=src%2Ffindwidget.cpp;h=47d1771ee1d47ea33f30bad6cfa21280096d317a;hb=d483bd8e6523c23c6f1d8908a2e0611c2bc9ff4f;hp=0000000000000000000000000000000000000000;hpb=7dfa3fe589d1722d49681f42cdb0bf1e6efb5223;p=sven%2Fvym.git diff --git a/src/findwidget.cpp b/src/findwidget.cpp new file mode 100644 index 0000000..47d1771 --- /dev/null +++ b/src/findwidget.cpp @@ -0,0 +1,121 @@ +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "findwidget.h" +#include "mainwindow.h" + +extern Main *mainWindow; +extern bool usingDarkTheme; + +FindWidget::FindWidget(QWidget *) +{ + QVBoxLayout *mainLayout = new QVBoxLayout; + QHBoxLayout *row2Layout = new QHBoxLayout; + + QLabel *label = new QLabel; + label->setText(tr("Find:", "FindWidget")); + + // Create LineEdit (here QComboBox) + findcombo = new QComboBox; + findcombo->setMinimumWidth(250); + findcombo->setEditable(true); + + QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + findcombo->setSizePolicy(sizePolicy); + connect(findcombo, SIGNAL(highlighted(int)), this, SLOT(nextPressed())); + connect(findcombo, SIGNAL(editTextChanged(const QString &)), this, + SLOT(findTextChanged(const QString &))); + + nextButton = new QPushButton; + nextButton->setIcon(QPixmap(":/find.png")); + // nextButton->setText (tr("Find","Find widget")); + connect(nextButton, SIGNAL(clicked()), this, SLOT(nextPressed())); + + // QAction needed to only activate shortcut while FindWidget has focus + QAction *a = new QAction(nextButton->text(), this); + a->setShortcut(Qt::Key_Return); + a->setShortcutContext(Qt::WidgetWithChildrenShortcut); + connect(a, SIGNAL(triggered()), this, SLOT(nextPressed())); + addAction(a); + + filterNotesButton = new QPushButton; + filterNotesButton->setIcon(QPixmap(":/flag-note.svg")); + filterNotesButton->setCheckable(true); + filterNotesButton->setChecked(true); + connect(filterNotesButton, SIGNAL(clicked()), this, SLOT(nextPressed())); + + row2Layout->addWidget(label); + row2Layout->addWidget(findcombo); + row2Layout->addWidget(nextButton); + row2Layout->addWidget(filterNotesButton); + + mainLayout->addLayout(row2Layout); + + setLayout(mainLayout); + status = Undefined; +} + +QString FindWidget::getFindText() { return findcombo->currentText(); } + +void FindWidget::cancelPressed() +{ + hide(); + emit(hideFindWidget()); // Restore focus +} + +void FindWidget::nextPressed() +{ + emit(nextButtonPressed(findcombo->currentText(), + filterNotesButton->isChecked())); +} + +void FindWidget::findTextChanged(const QString &) { setStatus(Undefined); } + +void FindWidget::setFocus() +{ + findcombo->lineEdit()->selectAll(); + findcombo->lineEdit()->setFocus(); +} + +void FindWidget::setStatus(Status st) +{ + if (st == status) + return; + + status = st; + QPalette p = palette(); + QColor c; + if (usingDarkTheme) + switch (st) { + case Success: + c = QColor(0, 170, 0); + break; + case Failed: + c = QColor(170, 0, 0); + break; + default: + c = p.color(QPalette::Base); + } + else + switch (st) { + case Success: + c = QColor(120, 255, 120); + break; + case Failed: + c = QColor(255, 120, 120); + break; + default: + c = p.color(QPalette::Base); + } + p.setColor(QPalette::Active, static_cast(9), c); + p.setColor(QPalette::Inactive, static_cast(9), c); + findcombo->setPalette(p); +}