forked from qt-creator/qt-creator
Gerrit: Replace 'additional queries' with a query completer
Change-Id: Idbc3f0a0dc47c63eb02ee105965ec52fda712f84 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
This commit is contained in:
committed by
Friedemann Kleint
parent
cb8c8ca19e
commit
7c77331ea4
@@ -35,6 +35,7 @@
|
||||
#include "gerritparameters.h"
|
||||
|
||||
#include <utils/filterlineedit.h>
|
||||
#include <coreplugin/icore.h>
|
||||
|
||||
#include <QVBoxLayout>
|
||||
#include <QHBoxLayout>
|
||||
@@ -53,6 +54,8 @@
|
||||
#include <QClipboard>
|
||||
#include <QApplication>
|
||||
#include <QProcess>
|
||||
#include <QStringListModel>
|
||||
#include <QCompleter>
|
||||
|
||||
namespace Gerrit {
|
||||
namespace Internal {
|
||||
@@ -98,6 +101,7 @@ GerritDialog::GerritDialog(const QSharedPointer<GerritParameters> &p,
|
||||
, m_parameters(p)
|
||||
, m_filterModel(new QSortFilterProxyModel(this))
|
||||
, m_model(new GerritModel(p, this))
|
||||
, m_queryModel(new QStringListModel(this))
|
||||
, m_treeView(new QTreeView)
|
||||
, m_detailsBrowser(new QTextBrowser)
|
||||
, m_queryLineEdit(new QueryValidatingLineEdit)
|
||||
@@ -115,6 +119,10 @@ GerritDialog::GerritDialog(const QSharedPointer<GerritParameters> &p,
|
||||
queryLabel->setBuddy(m_queryLineEdit);
|
||||
m_queryLineEdit->setFixedWidth(400);
|
||||
m_queryLineEdit->setPlaceholderText(tr("Change #, SHA-1, tr:id, owner:email or reviewer:email"));
|
||||
m_queryModel->setStringList(m_parameters->savedQueries);
|
||||
QCompleter *completer = new QCompleter(this);
|
||||
completer->setModel(m_queryModel);
|
||||
m_queryLineEdit->setCompleter(completer);
|
||||
filterLayout->addWidget(queryLabel);
|
||||
filterLayout->addWidget(m_queryLineEdit);
|
||||
filterLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::MinimumExpanding, QSizePolicy::Ignored));
|
||||
@@ -185,6 +193,17 @@ QPushButton *GerritDialog::addActionButton(const QString &text, const char *butt
|
||||
return button;
|
||||
}
|
||||
|
||||
void GerritDialog::updateCompletions(const QString &query)
|
||||
{
|
||||
if (query.isEmpty())
|
||||
return;
|
||||
QStringList &queries = m_parameters->savedQueries;
|
||||
queries.removeAll(query);
|
||||
queries.prepend(query);
|
||||
m_queryModel->setStringList(queries);
|
||||
m_parameters->saveQueries(Core::ICore::instance()->settings());
|
||||
}
|
||||
|
||||
GerritDialog::~GerritDialog()
|
||||
{
|
||||
}
|
||||
@@ -225,7 +244,9 @@ void GerritDialog::slotFetchCheckout()
|
||||
|
||||
void GerritDialog::slotRefresh()
|
||||
{
|
||||
m_model->refresh(m_queryLineEdit->text());
|
||||
const QString &query = m_queryLineEdit->text().trimmed();
|
||||
updateCompletions(query);
|
||||
m_model->refresh(query);
|
||||
}
|
||||
|
||||
const QStandardItem *GerritDialog::itemAt(const QModelIndex &i, int column) const
|
||||
|
||||
@@ -44,6 +44,7 @@ class QLabel;
|
||||
class QModelIndex;
|
||||
class QSortFilterProxyModel;
|
||||
class QStandardItem;
|
||||
class QStringListModel;
|
||||
class QPushButton;
|
||||
class QDialogButtonBox;
|
||||
class QTextBrowser;
|
||||
@@ -99,10 +100,12 @@ private:
|
||||
const QStandardItem *itemAt(const QModelIndex &i, int column = 0) const;
|
||||
const QStandardItem *currentItem(int column = 0) const;
|
||||
QPushButton *addActionButton(const QString &text, const char *buttonSlot);
|
||||
void updateCompletions(const QString &query);
|
||||
|
||||
const QSharedPointer<GerritParameters> m_parameters;
|
||||
QSortFilterProxyModel *m_filterModel;
|
||||
GerritModel *m_model;
|
||||
QStringListModel *m_queryModel;
|
||||
QTreeView *m_treeView;
|
||||
QTextBrowser *m_detailsBrowser;
|
||||
QueryValidatingLineEdit *m_queryLineEdit;
|
||||
|
||||
@@ -434,13 +434,6 @@ void GerritModel::refresh(const QString &query)
|
||||
// For Review by:
|
||||
queries.push_back(statusOpenQuery + QLatin1String(" reviewer:") + m_parameters->user);
|
||||
}
|
||||
// Any custom queries?
|
||||
if (!m_parameters->additionalQueries.isEmpty()) {
|
||||
foreach (const QString &customQuery, m_parameters->additionalQueries.split(QString::SkipEmptyParts)) {
|
||||
if (!customQuery.trimmed().isEmpty())
|
||||
queries.push_back(customQuery);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_query = new QueryContext(queries, m_parameters, this);
|
||||
|
||||
@@ -93,7 +93,6 @@ GerritOptionsWidget::GerritOptionsWidget(QWidget *parent)
|
||||
, m_userLineEdit(new QLineEdit(this))
|
||||
, m_sshChooser(new Utils::PathChooser)
|
||||
, m_portSpinBox(new QSpinBox(this))
|
||||
, m_additionalQueriesLineEdit(new QLineEdit(this))
|
||||
, m_httpsCheckBox(new QCheckBox(tr("HTTPS")))
|
||||
{
|
||||
QFormLayout *formLayout = new QFormLayout(this);
|
||||
@@ -106,12 +105,6 @@ GerritOptionsWidget::GerritOptionsWidget(QWidget *parent)
|
||||
m_portSpinBox->setMinimum(1);
|
||||
m_portSpinBox->setMaximum(65535);
|
||||
formLayout->addRow(tr("&Port: "), m_portSpinBox);
|
||||
formLayout->addRow(tr("&Additional queries: "), m_additionalQueriesLineEdit);
|
||||
m_additionalQueriesLineEdit->setToolTip(tr(
|
||||
"A comma-separated list of additional queries.\n"
|
||||
"For example \"status:staged,status:integrating\""
|
||||
" can be used to show the status of the Continuous Integration\n"
|
||||
"of the Qt project."));
|
||||
formLayout->addRow(tr("P&rotocol:"), m_httpsCheckBox);
|
||||
m_httpsCheckBox->setToolTip(tr(
|
||||
"Determines the protocol used to form a URL in case\n"
|
||||
@@ -126,7 +119,6 @@ GerritParameters GerritOptionsWidget::parameters() const
|
||||
result.user = m_userLineEdit->text().trimmed();
|
||||
result.ssh = m_sshChooser->path();
|
||||
result.port = m_portSpinBox->value();
|
||||
result.additionalQueries = m_additionalQueriesLineEdit->text().trimmed();
|
||||
result.https = m_httpsCheckBox->isChecked();
|
||||
return result;
|
||||
}
|
||||
@@ -137,7 +129,6 @@ void GerritOptionsWidget::setParameters(const GerritParameters &p)
|
||||
m_userLineEdit->setText(p.user);
|
||||
m_sshChooser->setPath(p.ssh);
|
||||
m_portSpinBox->setValue(p.port);
|
||||
m_additionalQueriesLineEdit->setText(p.additionalQueries);
|
||||
m_httpsCheckBox->setChecked(p.https);
|
||||
}
|
||||
|
||||
|
||||
@@ -67,7 +67,6 @@ private:
|
||||
QLineEdit *m_userLineEdit;
|
||||
Utils::PathChooser *m_sshChooser;
|
||||
QSpinBox *m_portSpinBox;
|
||||
QLineEdit *m_additionalQueriesLineEdit;
|
||||
QCheckBox *m_httpsCheckBox;
|
||||
};
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ static const char sshKeyC[] = "Ssh";
|
||||
static const char httpsKeyC[] = "Https";
|
||||
static const char defaultHostC[] = "codereview.qt-project.org";
|
||||
static const char defaultSshC[] = "ssh";
|
||||
static const char additionalQueriesKeyC[] = "AdditionalQueries";
|
||||
static const char savedQueriesKeyC[] = "SavedQueries";
|
||||
|
||||
static const char defaultPortFlag[] = "-p";
|
||||
|
||||
@@ -121,8 +121,7 @@ QString GerritParameters::sshHostArgument() const
|
||||
bool GerritParameters::equals(const GerritParameters &rhs) const
|
||||
{
|
||||
return port == rhs.port && host == rhs.host && user == rhs.user
|
||||
&& ssh == rhs.ssh && additionalQueries == rhs.additionalQueries
|
||||
&& https == rhs.https;
|
||||
&& ssh == rhs.ssh && https == rhs.https;
|
||||
}
|
||||
|
||||
void GerritParameters::toSettings(QSettings *s) const
|
||||
@@ -133,11 +132,17 @@ void GerritParameters::toSettings(QSettings *s) const
|
||||
s->setValue(QLatin1String(portKeyC), port);
|
||||
s->setValue(QLatin1String(portFlagKeyC), portFlag);
|
||||
s->setValue(QLatin1String(sshKeyC), ssh);
|
||||
s->setValue(QLatin1String(additionalQueriesKeyC), additionalQueries);
|
||||
s->setValue(QLatin1String(httpsKeyC), https);
|
||||
s->endGroup();
|
||||
}
|
||||
|
||||
void GerritParameters::saveQueries(QSettings *s) const
|
||||
{
|
||||
s->beginGroup(QLatin1String(settingsGroupC));
|
||||
s->setValue(QLatin1String(savedQueriesKeyC), savedQueries.join(QLatin1String(",")));
|
||||
s->endGroup();
|
||||
}
|
||||
|
||||
void GerritParameters::fromSettings(const QSettings *s)
|
||||
{
|
||||
const QString rootKey = QLatin1String(settingsGroupC) + QLatin1Char('/');
|
||||
@@ -146,7 +151,8 @@ void GerritParameters::fromSettings(const QSettings *s)
|
||||
ssh = s->value(rootKey + QLatin1String(sshKeyC), QString()).toString();
|
||||
port = s->value(rootKey + QLatin1String(portKeyC), QVariant(int(defaultPort))).toInt();
|
||||
portFlag = s->value(rootKey + QLatin1String(portFlagKeyC), QLatin1String(defaultPortFlag)).toString();
|
||||
additionalQueries = s->value(rootKey + QLatin1String(additionalQueriesKeyC), QString()).toString();
|
||||
savedQueries = s->value(rootKey + QLatin1String(savedQueriesKeyC), QString()).toString()
|
||||
.split(QLatin1String(","));
|
||||
https = s->value(rootKey + QLatin1String(httpsKeyC), QVariant(true)).toBool();
|
||||
if (ssh.isEmpty())
|
||||
ssh = detectSsh();
|
||||
|
||||
@@ -50,6 +50,7 @@ public:
|
||||
bool isValid() const;
|
||||
bool equals(const GerritParameters &rhs) const;
|
||||
void toSettings(QSettings *) const;
|
||||
void saveQueries(QSettings *) const;
|
||||
void fromSettings(const QSettings *);
|
||||
void setPortFlagBySshType();
|
||||
|
||||
@@ -57,7 +58,7 @@ public:
|
||||
unsigned short port;
|
||||
QString user;
|
||||
QString ssh;
|
||||
QString additionalQueries;
|
||||
QStringList savedQueries;
|
||||
bool https;
|
||||
QString portFlag;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user