diff --git a/src/libs/utils/historycompleter.cpp b/src/libs/utils/historycompleter.cpp index 98d50dc8039905faa42dd00c5d8d1ad362254f7f..73306b28f3f3db3c0438f2498c6d6fbf7aa5f5a6 100644 --- a/src/libs/utils/historycompleter.cpp +++ b/src/libs/utils/historycompleter.cpp @@ -42,6 +42,8 @@ #include <QtGui/QPainter> #include <QtGui/QStyle> +static const char SETTINGS_PREFIX[] = "CompleterHistory/"; + namespace Utils { class HistoryListModel : public QAbstractListModel @@ -94,15 +96,14 @@ HistoryListModel::HistoryListModel(HistoryCompleter *parent) : QAbstractListModel(parent) , q(parent) , lastSeenWidget(0) - , settings(new QSettings(parent)) + , settings(0) , maxLines(30) { - settings->beginGroup(QLatin1String("CompleterHistory")); } void HistoryListModel::fetchHistory() { - if (!q->widget()) { + if (!q->widget() || !settings) { list.clear(); reset(); return; @@ -110,7 +111,7 @@ void HistoryListModel::fetchHistory() QString objectName = q->widget()->objectName(); if (objectName.isEmpty()) return; - list = settings->value(objectName).toStringList(); + list = settings->value(QLatin1String(SETTINGS_PREFIX) + objectName).toStringList(); reset(); } @@ -148,8 +149,11 @@ bool HistoryListModel::removeRows(int row, int count, const QModelIndex &parent) { beginRemoveRows (parent, row, row + count); list.removeAt(row); - QString objectName = q->widget()->objectName(); - settings->setValue(objectName, list); + if (settings) { + QString objectName = q->widget()->objectName(); + settings->setValue(QLatin1String(SETTINGS_PREFIX) + objectName, list); + } + endRemoveRows(); return true; } @@ -182,7 +186,8 @@ void HistoryListModel::saveEntry(const QString &str) list.prepend(str); list = list.mid(0, maxLines); endInsertRows(); - settings->setValue(objectName, list); + if (settings) + settings->setValue(QLatin1String(SETTINGS_PREFIX) + objectName, list); } bool HistoryListModel::eventFilter(QObject *obj, QEvent *event) @@ -195,10 +200,11 @@ bool HistoryListModel::eventFilter(QObject *obj, QEvent *event) } -HistoryCompleter::HistoryCompleter(QObject *parent) +HistoryCompleter::HistoryCompleter(QSettings *settings, QObject *parent) : QCompleter(parent) , d_ptr(new HistoryCompleterPrivate(this)) { + d_ptr->model->settings = settings; // make an assumption to allow pressing of the down // key, before the first model run: // parent is likely the lineedit @@ -208,7 +214,10 @@ HistoryCompleter::HistoryCompleter(QObject *parent) QString objectName = p->objectName(); if (objectName.isEmpty()) return; - d_ptr->model->list = d_ptr->model->settings->value(objectName).toStringList(); + if (d_ptr->model->settings) { + d_ptr->model->list = d_ptr->model->settings->value( + QLatin1String(SETTINGS_PREFIX) + objectName).toStringList(); + } } QLineEdit *l = qobject_cast<QLineEdit *>(parent); @@ -222,12 +231,6 @@ HistoryCompleter::HistoryCompleter(QObject *parent) view->setItemDelegate(delegate); } -QSettings *HistoryCompleter::settings() const -{ - Q_D(const HistoryCompleter); - return d->model->settings; -} - int HistoryCompleter::historySize() const { Q_D(const HistoryCompleter); diff --git a/src/libs/utils/historycompleter.h b/src/libs/utils/historycompleter.h index b45e2ad6fd006088c572830ac9675abf593d62e7..277821c0c4b48cd44f27a1bcdab7b83090c2e4bb 100644 --- a/src/libs/utils/historycompleter.h +++ b/src/libs/utils/historycompleter.h @@ -48,8 +48,7 @@ class QTCREATOR_UTILS_EXPORT HistoryCompleter : public QCompleter Q_OBJECT public: - HistoryCompleter(QObject *parent = 0); - QSettings *settings() const; + HistoryCompleter(QSettings *settings, QObject *parent); int historySize() const; int maximalHistorySize() const; void setMaximalHistorySize(int numberOfEntries); diff --git a/src/plugins/debugger/debuggerdialogs.cpp b/src/plugins/debugger/debuggerdialogs.cpp index 2a8cd70b248e6d764e5e516e6b3a11aa15e9c293..86da5fef117f9ce37a65521f5322915de961d56d 100644 --- a/src/plugins/debugger/debuggerdialogs.cpp +++ b/src/plugins/debugger/debuggerdialogs.cpp @@ -444,21 +444,22 @@ void AttachExternalDialog::accept() StartExternalDialog::StartExternalDialog(QWidget *parent) : QDialog(parent), m_ui(new Ui::StartExternalDialog) { + QSettings *settings = Core::ICore::instance()->settings(); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); m_ui->setupUi(this); m_ui->toolChainComboBox->init(true); m_ui->execFile->setExpectedKind(PathChooser::File); m_ui->execFile->setPromptDialogTitle(tr("Select Executable")); m_ui->execFile->lineEdit()->setCompleter( - new HistoryCompleter(m_ui->execFile->lineEdit())); + new HistoryCompleter(settings, m_ui->execFile->lineEdit())); connect(m_ui->execFile, SIGNAL(changed(QString)), this, SLOT(changed())); m_ui->buttonBox->button(QDialogButtonBox::Ok)->setDefault(true); m_ui->workingDirectory->setExpectedKind(PathChooser::ExistingDirectory); m_ui->workingDirectory->setPromptDialogTitle(tr("Select Working Directory")); m_ui->workingDirectory->lineEdit()->setCompleter( - new HistoryCompleter(m_ui->workingDirectory->lineEdit())); + new HistoryCompleter(settings, m_ui->workingDirectory->lineEdit())); - m_ui->argsEdit->setCompleter(new HistoryCompleter(m_ui->argsEdit)); + m_ui->argsEdit->setCompleter(new HistoryCompleter(settings, m_ui->argsEdit)); connect(m_ui->buttonBox, SIGNAL(accepted()), this, SLOT(accept())); connect(m_ui->buttonBox, SIGNAL(rejected()), this, SLOT(reject())); @@ -936,12 +937,13 @@ StartRemoteEngineDialog::StartRemoteEngineDialog(QWidget *parent) : QDialog(parent) , m_ui(new Ui::StartRemoteEngineDialog) { + QSettings *settings = Core::ICore::instance()->settings(); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); m_ui->setupUi(this); - m_ui->host->setCompleter(new HistoryCompleter(m_ui->host)); - m_ui->username->setCompleter(new HistoryCompleter(m_ui->username)); - m_ui->enginepath->setCompleter(new HistoryCompleter(m_ui->enginepath)); - m_ui->inferiorpath->setCompleter(new HistoryCompleter(m_ui->inferiorpath)); + m_ui->host->setCompleter(new HistoryCompleter(settings, m_ui->host)); + m_ui->username->setCompleter(new HistoryCompleter(settings, m_ui->username)); + m_ui->enginepath->setCompleter(new HistoryCompleter(settings, m_ui->enginepath)); + m_ui->inferiorpath->setCompleter(new HistoryCompleter(settings, m_ui->inferiorpath)); connect(m_ui->buttonBox, SIGNAL(accepted()), this, SLOT(accept())); connect(m_ui->buttonBox, SIGNAL(rejected()), this, SLOT(reject())); } diff --git a/src/plugins/debugger/logwindow.cpp b/src/plugins/debugger/logwindow.cpp index cf4741f54929daa324d779bfa892744e9c204c53..21f70818de26d1f5f9e0e0673a577d402bb9b385 100644 --- a/src/plugins/debugger/logwindow.cpp +++ b/src/plugins/debugger/logwindow.cpp @@ -53,6 +53,7 @@ #include <aggregation/aggregate.h> #include <coreplugin/findplaceholder.h> +#include <coreplugin/icore.h> #include <coreplugin/minisplitter.h> #include <find/basetextfind.h> @@ -363,7 +364,8 @@ LogWindow::LogWindow(QWidget *parent) m_commandEdit = new QLineEdit(this); m_commandEdit->setFrame(false); m_commandEdit->setObjectName("DebuggerInput"); - m_commandEdit->setCompleter(new Utils::HistoryCompleter(m_commandEdit)); + m_commandEdit->setCompleter(new Utils::HistoryCompleter( + Core::ICore::instance()->settings(), m_commandEdit)); QHBoxLayout *commandBox = new QHBoxLayout; commandBox->addWidget(m_commandLabel); commandBox->addWidget(m_commandEdit);