diff options
author | Orgad Shaneh <orgads@gmail.com> | 2012-06-11 19:01:02 +0300 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2012-07-04 09:20:27 +0200 |
commit | cb8c8ca19eb15fb0e6d31c02cef21c090cc916f6 (patch) | |
tree | 03ca8fceba3a72a48c415cf7dba4f4c1d9f87e59 /src/plugins/git/gerrit/gerritdialog.cpp | |
parent | a8debd265f329ba0ac9195ff29bbddde7cacee3a (diff) | |
download | qt-creator-cb8c8ca19eb15fb0e6d31c02cef21c090cc916f6.tar.gz |
Gerrit: Allow custom query
Change-Id: I8ee0967a8f0013c785bc4d6e98ff7b634f488e97
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Diffstat (limited to 'src/plugins/git/gerrit/gerritdialog.cpp')
-rw-r--r-- | src/plugins/git/gerrit/gerritdialog.cpp | 47 |
1 files changed, 45 insertions, 2 deletions
diff --git a/src/plugins/git/gerrit/gerritdialog.cpp b/src/plugins/git/gerrit/gerritdialog.cpp index 9133795723..2af9e0f205 100644 --- a/src/plugins/git/gerrit/gerritdialog.cpp +++ b/src/plugins/git/gerrit/gerritdialog.cpp @@ -60,6 +60,38 @@ namespace Internal { static const int layoutSpacing = 5; static const int maxTitleWidth = 350; +QueryValidatingLineEdit::QueryValidatingLineEdit(QWidget *parent) + : Utils::FilterLineEdit(parent) + , m_valid(true) + , m_okTextColor(palette().color(QPalette::Active, QPalette::Text)) + , m_errorTextColor(Qt::red) +{ + connect(this, SIGNAL(textChanged(QString)), this, SLOT(setValid())); +} + +void QueryValidatingLineEdit::setTextColor(const QColor &c) +{ + QPalette pal = palette(); + pal.setColor(QPalette::Active, QPalette::Text, c); + setPalette(pal); +} + +void QueryValidatingLineEdit::setValid() +{ + if (!m_valid) { + m_valid = true; + setTextColor(m_okTextColor); + } +} + +void QueryValidatingLineEdit::setInvalid() +{ + if (m_valid) { + m_valid = false; + setTextColor(m_errorTextColor); + } +} + GerritDialog::GerritDialog(const QSharedPointer<GerritParameters> &p, QWidget *parent) : QDialog(parent) @@ -68,6 +100,7 @@ GerritDialog::GerritDialog(const QSharedPointer<GerritParameters> &p, , m_model(new GerritModel(p, this)) , m_treeView(new QTreeView) , m_detailsBrowser(new QTextBrowser) + , m_queryLineEdit(new QueryValidatingLineEdit) , m_filterLineEdit(new Utils::FilterLineEdit) , m_buttonBox(new QDialogButtonBox(QDialogButtonBox::Close)) { @@ -78,11 +111,20 @@ GerritDialog::GerritDialog(const QSharedPointer<GerritParameters> &p, QVBoxLayout *changesLayout = new QVBoxLayout(changesGroup); changesLayout->setMargin(layoutSpacing); QHBoxLayout *filterLayout = new QHBoxLayout; + QLabel *queryLabel = new QLabel(tr("&Query:")); + queryLabel->setBuddy(m_queryLineEdit); + m_queryLineEdit->setFixedWidth(400); + m_queryLineEdit->setPlaceholderText(tr("Change #, SHA-1, tr:id, owner:email or reviewer:email")); + filterLayout->addWidget(queryLabel); + filterLayout->addWidget(m_queryLineEdit); filterLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::MinimumExpanding, QSizePolicy::Ignored)); m_filterLineEdit->setFixedWidth(300); filterLayout->addWidget(m_filterLineEdit); connect(m_filterLineEdit, SIGNAL(filterChanged(QString)), m_filterModel, SLOT(setFilterFixedString(QString))); + connect(m_queryLineEdit, SIGNAL(returnPressed()), + this, SLOT(slotRefresh())); + connect(m_model, SIGNAL(queryError()), m_queryLineEdit, SLOT(setInvalid())); m_filterModel->setFilterCaseSensitivity(Qt::CaseInsensitive); changesLayout->addLayout(filterLayout); changesLayout->addWidget(m_treeView); @@ -130,9 +172,10 @@ GerritDialog::GerritDialog(const QSharedPointer<GerritParameters> &p, mainLayout->addWidget(m_buttonBox); slotCurrentChanged(); - m_model->refresh(); + slotRefresh(); resize(QSize(950, 600)); + m_treeView->setFocus(); } QPushButton *GerritDialog::addActionButton(const QString &text, const char *buttonSlot) @@ -182,7 +225,7 @@ void GerritDialog::slotFetchCheckout() void GerritDialog::slotRefresh() { - m_model->refresh(); + m_model->refresh(m_queryLineEdit->text()); } const QStandardItem *GerritDialog::itemAt(const QModelIndex &i, int column) const |