summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/plugins/coreplugin/editormanager/editormanager.cpp5
-rw-r--r--src/plugins/coreplugin/editormanager/stackededitorgroup.cpp36
-rw-r--r--src/plugins/coreplugin/editormanager/stackededitorgroup.h1
-rw-r--r--src/plugins/coreplugin/inavigationwidgetfactory.cpp10
-rw-r--r--src/plugins/coreplugin/inavigationwidgetfactory.h6
-rw-r--r--src/plugins/coreplugin/mainwindow.cpp2
-rw-r--r--src/plugins/coreplugin/navigationwidget.cpp20
-rw-r--r--src/plugins/coreplugin/navigationwidget.h5
-rw-r--r--src/plugins/cpptools/cpphoverhandler.cpp14
-rw-r--r--src/plugins/debugger/gdbengine.cpp12
-rw-r--r--src/plugins/find/findtoolbar.cpp13
-rw-r--r--src/plugins/find/findtoolbar.h3
-rw-r--r--src/plugins/projectexplorer/allprojectsfilter.h4
-rw-r--r--src/plugins/projectexplorer/currentprojectfilter.h4
-rw-r--r--src/plugins/projectexplorer/projectmodels.cpp10
-rw-r--r--src/plugins/projectexplorer/projectmodels.h3
-rw-r--r--src/plugins/projectexplorer/projecttreewidget.cpp55
-rw-r--r--src/plugins/projectexplorer/projecttreewidget.h6
-rw-r--r--src/plugins/quickopen/directoryfilter.cpp4
-rw-r--r--src/plugins/quickopen/filesystemfilter.cpp4
-rw-r--r--src/plugins/quickopen/filesystemfilter.h4
-rw-r--r--src/plugins/quickopen/iquickopenfilter.cpp24
-rw-r--r--src/plugins/quickopen/iquickopenfilter.h33
-rw-r--r--src/plugins/quickopen/quickopenfiltersfilter.cpp6
-rw-r--r--src/plugins/quickopen/quickopentoolwindow.cpp4
-rw-r--r--src/plugins/quickopen/settingspage.cpp5
26 files changed, 218 insertions, 75 deletions
diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp
index 1b4f04093f..44d05e3b68 100644
--- a/src/plugins/coreplugin/editormanager/editormanager.cpp
+++ b/src/plugins/coreplugin/editormanager/editormanager.cpp
@@ -871,6 +871,7 @@ IEditor *EditorManager::openEditor(const QString &fileName, const QString &edito
restoreEditorState(editor);
QApplication::restoreOverrideCursor();
ensureEditorManagerVisible();
+ setCurrentEditor(editor);
return editor;
}
@@ -1351,6 +1352,8 @@ bool EditorManager::restoreState(const QByteArray &state)
if (!success)
return false;
+ QApplication::setOverrideCursor(Qt::WaitCursor);
+
bool editorChangesSuppressed = m_d->m_suppressEditorChanges;
m_d->m_suppressEditorChanges = true;
@@ -1366,6 +1369,8 @@ bool EditorManager::restoreState(const QByteArray &state)
m_d->m_suppressEditorChanges = editorChangesSuppressed;
if (currentEditor())
setCurrentEditor(currentEditor());// looks like a null-op but is not
+
+ QApplication::restoreOverrideCursor();
return true;
}
diff --git a/src/plugins/coreplugin/editormanager/stackededitorgroup.cpp b/src/plugins/coreplugin/editormanager/stackededitorgroup.cpp
index c4dcffe91d..4e95697856 100644
--- a/src/plugins/coreplugin/editormanager/stackededitorgroup.cpp
+++ b/src/plugins/coreplugin/editormanager/stackededitorgroup.cpp
@@ -157,6 +157,7 @@ StackedEditorGroup::StackedEditorGroup(QWidget *parent) :
hbox->addWidget(closeButton);
+ m_infoWidget->setVisible(false);
tl->addWidget(m_infoWidget);
}
tl->addWidget(m_container);
@@ -166,8 +167,6 @@ StackedEditorGroup::StackedEditorGroup(QWidget *parent) :
l->setMargin(0);
l->addWidget(m_toplevel);
setLayout(l);
-
- m_toplevel->setVisible(false);
}
void StackedEditorGroup::showEditorInfoBar(const QString &kind,
@@ -226,12 +225,11 @@ void StackedEditorGroup::insertEditor(int index, IEditor *editor)
m_widgetEditorMap.insert(editor->widget(), editor);
QToolBar *toolBar = editor->toolBar();
- if (toolBar)
+ if (toolBar) {
+ toolBar->setVisible(false); // will be made visible in setCurrentEditor
m_toolBar->layout()->addWidget(toolBar);
- connect(editor, SIGNAL(changed()), this, SLOT(updateEditorStatus()));
-
- updateEditorStatus(editor);
- updateToolBar(editor);
+ }
+ connect(editor, SIGNAL(changed()), this, SLOT(checkEditorStatus()));
emit editorAdded(editor);
}
@@ -261,10 +259,6 @@ void StackedEditorGroup::removeEditor(IEditor *editor)
toolBar->setVisible(false);
toolBar->setParent(0);
}
- if (m_container->count() == 0) {
- m_toplevel->setVisible(false);
- setFocus();
- }
emit editorRemoved(editor);
}
}
@@ -281,7 +275,6 @@ void StackedEditorGroup::setCurrentEditor(IEditor *editor)
if (!editor || m_container->count() <= 0
|| m_container->indexOf(editor->widget()) == -1)
return;
- m_toplevel->setVisible(true);
const int idx = m_container->indexOf(editor->widget());
QTC_ASSERT(idx >= 0, return);
if (m_container->currentIndex() != idx) {
@@ -290,23 +283,26 @@ void StackedEditorGroup::setCurrentEditor(IEditor *editor)
const bool block = m_editorList->blockSignals(true);
m_editorList->setCurrentIndex(indexOf(editor));
m_editorList->blockSignals(block);
-
- updateEditorStatus(editor);
- updateToolBar(editor);
}
setEditorFocus(idx);
+
+ updateEditorStatus(editor);
+ updateToolBar(editor);
if (editor != m_editorForInfoWidget) {
m_infoWidget->hide();
m_editorForInfoWidget = 0;
}
}
-void StackedEditorGroup::updateEditorStatus(IEditor *editor)
+void StackedEditorGroup::checkEditorStatus()
{
- if (!editor)
- editor = qobject_cast<IEditor *>(sender());
- QTC_ASSERT(editor, return);
+ IEditor *editor = qobject_cast<IEditor *>(sender());
+ if (editor == currentEditor())
+ updateEditorStatus(editor);
+}
+void StackedEditorGroup::updateEditorStatus(IEditor *editor)
+{
static const QIcon lockedIcon(QLatin1String(":/qworkbench/images/locked.png"));
static const QIcon unlockedIcon(QLatin1String(":/qworkbench/images/unlocked.png"));
@@ -331,8 +327,8 @@ void StackedEditorGroup::updateToolBar(IEditor *editor)
toolBar = m_defaultToolBar;
if (m_activeToolBar == toolBar)
return;
- m_activeToolBar->setVisible(false);
toolBar->setVisible(true);
+ m_activeToolBar->setVisible(false);
m_activeToolBar = toolBar;
}
diff --git a/src/plugins/coreplugin/editormanager/stackededitorgroup.h b/src/plugins/coreplugin/editormanager/stackededitorgroup.h
index 1b93ec4732..40edfc0168 100644
--- a/src/plugins/coreplugin/editormanager/stackededitorgroup.h
+++ b/src/plugins/coreplugin/editormanager/stackededitorgroup.h
@@ -80,6 +80,7 @@ protected:
private slots:
void sendCloseRequest();
void updateEditorStatus(Core::IEditor *editor = 0);
+ void checkEditorStatus();
void setEditorFocus(int index);
void makeEditorWritable();
void listSelectionChanged(int index);
diff --git a/src/plugins/coreplugin/inavigationwidgetfactory.cpp b/src/plugins/coreplugin/inavigationwidgetfactory.cpp
index 7a043e4c9c..2de8e72fbe 100644
--- a/src/plugins/coreplugin/inavigationwidgetfactory.cpp
+++ b/src/plugins/coreplugin/inavigationwidgetfactory.cpp
@@ -48,3 +48,13 @@ QKeySequence INavigationWidgetFactory::activationSequence()
return QKeySequence();
}
+
+void INavigationWidgetFactory::saveSettings(int position, QWidget *widget)
+{
+
+}
+
+void INavigationWidgetFactory::restoreSettings(int position, QWidget *widget)
+{
+
+}
diff --git a/src/plugins/coreplugin/inavigationwidgetfactory.h b/src/plugins/coreplugin/inavigationwidgetfactory.h
index d4b3a84d3a..e858d2024c 100644
--- a/src/plugins/coreplugin/inavigationwidgetfactory.h
+++ b/src/plugins/coreplugin/inavigationwidgetfactory.h
@@ -65,6 +65,12 @@ public:
// and the docktoolbar widgets
// Similar to how IView
virtual NavigationView createWidget() = 0;
+
+ // Read and store settings for the widget, created by this factory
+ // and beeing at position position. (The position is important since
+ // a certain type of widget could exist multiple times.)
+ virtual void saveSettings(int position, QWidget *widget);
+ virtual void restoreSettings(int position, QWidget *widget);
};
} // namespace Core
diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp
index 228c58a94a..651e1d7383 100644
--- a/src/plugins/coreplugin/mainwindow.cpp
+++ b/src/plugins/coreplugin/mainwindow.cpp
@@ -997,7 +997,7 @@ void MainWindow::readSettings()
m_settings->endGroup();
m_editorManager->readSettings(m_settings);
- m_navigationWidget->readSettings(m_settings);
+ m_navigationWidget->restoreSettings(m_settings);
m_rightPaneWidget->readSettings(m_settings);
}
diff --git a/src/plugins/coreplugin/navigationwidget.cpp b/src/plugins/coreplugin/navigationwidget.cpp
index 8e84df3932..c5189e60ef 100644
--- a/src/plugins/coreplugin/navigationwidget.cpp
+++ b/src/plugins/coreplugin/navigationwidget.cpp
@@ -220,6 +220,8 @@ void NavigationWidget::close()
}
}
+
+
void NavigationWidget::saveSettings(QSettings *settings)
{
QStringList views;
@@ -230,9 +232,12 @@ void NavigationWidget::saveSettings(QSettings *settings)
settings->setValue("Navigation/Visible", isShown());
settings->setValue("Navigation/VerticalPosition", saveState());
settings->setValue("Navigation/Width", m_width);
+
+ for (int i=0; i<m_subWidgets.count(); ++i)
+ m_subWidgets.at(i)->saveSettings(i);
}
-void NavigationWidget::readSettings(QSettings *settings)
+void NavigationWidget::restoreSettings(QSettings *settings)
{
if (settings->contains("Navigation/Views")) {
QStringList views = settings->value("Navigation/Views").toStringList();
@@ -266,6 +271,9 @@ void NavigationWidget::readSettings(QSettings *settings)
if (NavigationWidgetPlaceHolder::m_current) {
NavigationWidgetPlaceHolder::m_current->applyStoredSize(m_width);
}
+
+ for (int i=0; i<m_subWidgets.count(); ++i)
+ m_subWidgets.at(i)->restoreSettings(i);
}
void NavigationWidget::setShown(bool b)
@@ -469,6 +477,16 @@ INavigationWidgetFactory *NavigationSubWidget::factory()
return m_navigationComboBox->itemData(index).value<INavigationWidgetFactory *>();
}
+void NavigationSubWidget::saveSettings(int position)
+{
+ factory()->saveSettings(position, m_navigationWidget);
+}
+
+void NavigationSubWidget::restoreSettings(int position)
+{
+ factory()->restoreSettings(position, m_navigationWidget);
+}
+
Core::ICommand *NavigationSubWidget::command(const QString &title) const
{
const QHash<QString, Core::ICommand*> commandMap = m_parentWidget->commandMap();
diff --git a/src/plugins/coreplugin/navigationwidget.h b/src/plugins/coreplugin/navigationwidget.h
index 96a64f4ac3..7ab27e28dd 100644
--- a/src/plugins/coreplugin/navigationwidget.h
+++ b/src/plugins/coreplugin/navigationwidget.h
@@ -84,7 +84,7 @@ public:
~NavigationWidget();
void saveSettings(QSettings *settings);
- void readSettings(QSettings *settings);
+ void restoreSettings(QSettings *settings);
bool isShown() const;
void setShown(bool b);
@@ -133,6 +133,9 @@ public:
void setFactory(const QString &name);
void setFocusWidget();
+ void saveSettings(int position);
+ void restoreSettings(int position);
+
Core::ICommand *command(const QString &title) const;
signals:
diff --git a/src/plugins/cpptools/cpphoverhandler.cpp b/src/plugins/cpptools/cpphoverhandler.cpp
index fab0d83b31..497ac78d74 100644
--- a/src/plugins/cpptools/cpphoverhandler.cpp
+++ b/src/plugins/cpptools/cpphoverhandler.cpp
@@ -177,14 +177,14 @@ void CppHoverHandler::updateHelpIdAndTooltip(TextEditor::ITextEditor *editor, in
break;
}
}
- }
- if (m_toolTip.isEmpty()) {
- unsigned lineno = tc.blockNumber() + 1;
- foreach (const Document::Include &incl, doc->includes()) {
- if (lineno == incl.line()) {
- m_toolTip = incl.fileName();
- break;
+ if (m_toolTip.isEmpty()) {
+ unsigned lineno = tc.blockNumber() + 1;
+ foreach (const Document::Include &incl, doc->includes()) {
+ if (lineno == incl.line()) {
+ m_toolTip = incl.fileName();
+ break;
+ }
}
}
}
diff --git a/src/plugins/debugger/gdbengine.cpp b/src/plugins/debugger/gdbengine.cpp
index 8347367478..5f7367b2e4 100644
--- a/src/plugins/debugger/gdbengine.cpp
+++ b/src/plugins/debugger/gdbengine.cpp
@@ -2941,6 +2941,8 @@ bool GdbEngine::isCustomValueDumperAvailable(const QString &type) const
}
if (tmplate == "std::list")
return true;
+ if (tmplate == "std::map")
+ return true;
if (tmplate == "std::vector" && inner != "bool")
return true;
if (tmplate == "std::basic_string") {
@@ -2962,6 +2964,8 @@ void GdbEngine::runCustomDumper(const WatchData & data0, bool dumpChildren)
QStringList inners = inner.split('@');
if (inners.at(0).isEmpty())
inners.clear();
+ for (int i = 0; i != inners.size(); ++i)
+ inners[i] = inners[i].simplified();
QString outertype = isTemplate ? tmplate : data.type;
@@ -3015,6 +3019,12 @@ void GdbEngine::runCustomDumper(const WatchData & data0, bool dumpChildren)
//extraArgs[extraArgCount++] = sizeofTypeExpression(data.type);
//extraArgs[extraArgCount++] = "(size_t)&(('" + data.type + "'*)0)->value";
}
+ } else if (outertype == "std::map") {
+ // We don't want the comparator and the allocator confuse gdb.
+ // But we need the offset of the second item in the value pair.
+ extraArgs[2] = "(size_t)&(('std::pair<const " + inners.at(0)
+ + "," + inners.at(1) + ">'*)0)->second";
+ extraArgs[3] = "0";
} else if (outertype == "std::basic_string") {
//qDebug() << "EXTRACT TEMPLATE: " << outertype << inners;
if (inners.at(0) == "char") {
@@ -3064,6 +3074,8 @@ void GdbEngine::runCustomDumper(const WatchData & data0, bool dumpChildren)
+ ',' + extraArgs[2]
+ ',' + extraArgs[3] + ')';
+ //qDebug() << "CMD: " << cmd;
+
sendSynchronizedCommand(cmd, WatchDumpCustomValue1, QVariant::fromValue(data));
q->showStatusMessage(
diff --git a/src/plugins/find/findtoolbar.cpp b/src/plugins/find/findtoolbar.cpp
index 6a28c4d93c..f87d9bf9e0 100644
--- a/src/plugins/find/findtoolbar.cpp
+++ b/src/plugins/find/findtoolbar.cpp
@@ -481,3 +481,16 @@ void FindToolBar::openFind()
m_currentDocumentFind->highlightAll(getFindText(), m_plugin->findFlags());
selectFindText();
}
+
+
+bool FindToolBar::focusNextPrevChild(bool next)
+{
+ // close tab order change
+ if (next && m_ui.replaceAllButton->hasFocus())
+ m_ui.findEdit->setFocus(Qt::TabFocusReason);
+ else if (!next && m_ui.findEdit->hasFocus())
+ m_ui.replaceAllButton->setFocus(Qt::TabFocusReason);
+ else
+ return QToolBar::focusNextPrevChild(next);
+ return true;
+}
diff --git a/src/plugins/find/findtoolbar.h b/src/plugins/find/findtoolbar.h
index 790a1e0300..4eeb4f8a2d 100644
--- a/src/plugins/find/findtoolbar.h
+++ b/src/plugins/find/findtoolbar.h
@@ -79,6 +79,9 @@ private slots:
void updateActions();
void findFlagsChanged();
+protected:
+ bool focusNextPrevChild(bool next);
+
private:
bool setFocusToCurrentFindSupport();
diff --git a/src/plugins/projectexplorer/allprojectsfilter.h b/src/plugins/projectexplorer/allprojectsfilter.h
index 3315e7b2de..448483c7a7 100644
--- a/src/plugins/projectexplorer/allprojectsfilter.h
+++ b/src/plugins/projectexplorer/allprojectsfilter.h
@@ -55,8 +55,8 @@ class AllProjectsFilter : public QuickOpen::BaseFileFilter
public:
AllProjectsFilter(ProjectExplorerPlugin *pe, Core::ICore *core);
- QString trName() const { return tr("File in any project"); }
- QString name() const { return "File in any project"; }
+ QString trName() const { return tr("Files in any project"); }
+ QString name() const { return "Files in any project"; }
QuickOpen::IQuickOpenFilter::Priority priority() const { return QuickOpen::IQuickOpenFilter::Low; }
void refresh(QFutureInterface<void> &future);
diff --git a/src/plugins/projectexplorer/currentprojectfilter.h b/src/plugins/projectexplorer/currentprojectfilter.h
index bacd3a73ea..3e5d216632 100644
--- a/src/plugins/projectexplorer/currentprojectfilter.h
+++ b/src/plugins/projectexplorer/currentprojectfilter.h
@@ -55,8 +55,8 @@ class CurrentProjectFilter : public QuickOpen::BaseFileFilter
public:
CurrentProjectFilter(ProjectExplorerPlugin *pe, Core::ICore *core);
- QString trName() const { return tr("File in current project"); }
- QString name() const { return "File in current project"; }
+ QString trName() const { return tr("Files in current project"); }
+ QString name() const { return "Files in current project"; }
QuickOpen::IQuickOpenFilter::Priority priority() const { return QuickOpen::IQuickOpenFilter::Low; }
void refresh(QFutureInterface<void> &future);
diff --git a/src/plugins/projectexplorer/projectmodels.cpp b/src/plugins/projectexplorer/projectmodels.cpp
index de4f851e5c..823244578e 100644
--- a/src/plugins/projectexplorer/projectmodels.cpp
+++ b/src/plugins/projectexplorer/projectmodels.cpp
@@ -926,6 +926,16 @@ void FlatModel::setGeneratedFilesFilterEnabled(bool filter)
reset();
}
+bool FlatModel::projectFilterEnabled()
+{
+ return m_filterProjects;
+}
+
+bool FlatModel::generatedFilesFilterEnabled()
+{
+ return m_filterGeneratedFiles;
+}
+
Node *FlatModel::nodeForIndex(const QModelIndex &index) const
{
if (index.isValid())
diff --git a/src/plugins/projectexplorer/projectmodels.h b/src/plugins/projectexplorer/projectmodels.h
index cb7376f932..35c575fe94 100644
--- a/src/plugins/projectexplorer/projectmodels.h
+++ b/src/plugins/projectexplorer/projectmodels.h
@@ -136,6 +136,9 @@ public:
ProjectExplorer::Node *nodeForIndex(const QModelIndex &index) const;
QModelIndex indexForNode(const Node *node);
+ bool projectFilterEnabled();
+ bool generatedFilesFilterEnabled();
+
public slots:
void setProjectFilterEnabled(bool filter);
void setGeneratedFilesFilterEnabled(bool filter);
diff --git a/src/plugins/projectexplorer/projecttreewidget.cpp b/src/plugins/projectexplorer/projecttreewidget.cpp
index c2197a2dc7..724ab9d579 100644
--- a/src/plugins/projectexplorer/projecttreewidget.cpp
+++ b/src/plugins/projectexplorer/projecttreewidget.cpp
@@ -42,6 +42,7 @@
#include <utils/qtcassert.h>
#include <QtCore/QDebug>
+#include <QtCore/QSettings>
#include <QtGui/QHeaderView>
#include <QtGui/QVBoxLayout>
@@ -156,7 +157,20 @@ ProjectTreeWidget::ProjectTreeWidget(Core::ICore *core, QWidget *parent)
connect(m_explorer->session(), SIGNAL(startupProjectChanged(ProjectExplorer::Project *)),
this, SLOT(startupProjectChanged(ProjectExplorer::Project *)));
- setAutoSynchronization(true);
+ m_toggleSync = new QToolButton;
+ m_toggleSync->setProperty("type", "dockbutton");
+ m_toggleSync->setIcon(QIcon(":/qworkbench/images/linkicon.png"));
+ m_toggleSync->setCheckable(true);
+ m_toggleSync->setChecked(autoSynchronization());
+ m_toggleSync->setToolTip(tr("Synchronize with Editor"));
+ connect(m_toggleSync, SIGNAL(clicked(bool)), this, SLOT(toggleAutoSynchronization()));
+
+ //setAutoSynchronization(true);
+}
+
+QToolButton *ProjectTreeWidget::toggleSync()
+{
+ return m_toggleSync;
}
void ProjectTreeWidget::toggleAutoSynchronization()
@@ -171,6 +185,7 @@ bool ProjectTreeWidget::autoSynchronization() const
void ProjectTreeWidget::setAutoSynchronization(bool sync, bool syncNow)
{
+ m_toggleSync->setChecked(sync);
if (sync == m_autoSync)
return;
@@ -296,6 +311,17 @@ void ProjectTreeWidget::setGeneratedFilesFilter(bool filter)
m_filterGeneratedFilesAction->setChecked(filter);
}
+bool ProjectTreeWidget::generatedFilesFilter()
+{
+ return m_model->generatedFilesFilterEnabled();
+}
+
+bool ProjectTreeWidget::projectFilter()
+{
+ return m_model->projectFilterEnabled();
+}
+
+
ProjectTreeWidgetFactory::ProjectTreeWidgetFactory(Core::ICore *core)
: m_core(core)
{
@@ -331,15 +357,24 @@ Core::NavigationView ProjectTreeWidgetFactory::createWidget()
filterMenu->addAction(ptw->m_filterGeneratedFilesAction);
filter->setMenu(filterMenu);
- QToolButton *toggleSync = new QToolButton;
- toggleSync->setProperty("type", "dockbutton");
- toggleSync->setIcon(QIcon(":/qworkbench/images/linkicon.png"));
- toggleSync->setCheckable(true);
- toggleSync->setChecked(ptw->autoSynchronization());
- toggleSync->setToolTip(tr("Synchronize with Editor"));
- connect(toggleSync, SIGNAL(clicked(bool)), ptw, SLOT(toggleAutoSynchronization()));
-
- n.doockToolBarWidgets << filter << toggleSync;
+ n.doockToolBarWidgets << filter << ptw->toggleSync();
return n;
}
+void ProjectTreeWidgetFactory::saveSettings(int position, QWidget *widget)
+{
+ ProjectTreeWidget *ptw = qobject_cast<ProjectTreeWidget *>(widget);
+ Q_ASSERT(ptw);
+ m_core->settings()->setValue("ProjectTreeWidget."+QString::number(position)+".ProjectFilter", ptw->projectFilter());
+ m_core->settings()->setValue("ProjectTreeWidget."+QString::number(position)+".GeneratedFilter", ptw->generatedFilesFilter());
+ m_core->settings()->setValue("ProjectTreeWidget."+QString::number(position)+".SyncWithEditor", ptw->autoSynchronization());
+}
+
+void ProjectTreeWidgetFactory::restoreSettings(int position, QWidget *widget)
+{
+ ProjectTreeWidget *ptw = qobject_cast<ProjectTreeWidget *>(widget);
+ Q_ASSERT(ptw);
+ ptw->setProjectFilter(m_core->settings()->value("ProjectTreeWidget."+QString::number(position)+".ProjectFilter", false).toBool());
+ ptw->setGeneratedFilesFilter(m_core->settings()->value("ProjectTreeWidget."+QString::number(position)+".GeneratedFilter", true).toBool());
+ ptw->setAutoSynchronization(m_core->settings()->value("ProjectTreeWidget."+QString::number(position)+".SyncWithEditor", true).toBool());
+}
diff --git a/src/plugins/projectexplorer/projecttreewidget.h b/src/plugins/projectexplorer/projecttreewidget.h
index dcb26c2d9a..85dc9801ab 100644
--- a/src/plugins/projectexplorer/projecttreewidget.h
+++ b/src/plugins/projectexplorer/projecttreewidget.h
@@ -60,6 +60,9 @@ public:
bool autoSynchronization() const;
void setAutoSynchronization(bool sync, bool syncNow = true);
+ bool projectFilter();
+ bool generatedFilesFilter();
+ QToolButton *toggleSync();
public slots:
void toggleAutoSynchronization();
@@ -84,6 +87,7 @@ private:
FlatModel *m_model;
QAction *m_filterProjectsAction;
QAction *m_filterGeneratedFilesAction;
+ QToolButton *m_toggleSync;
QModelIndex m_subIndex;
QString m_modelId;
@@ -100,6 +104,8 @@ public:
virtual QString displayName();
virtual QKeySequence activationSequence();
virtual Core::NavigationView createWidget();
+ void restoreSettings(int position, QWidget *widget);
+ void saveSettings(int position, QWidget *widget);
private:
Core::ICore *m_core;
};
diff --git a/src/plugins/quickopen/directoryfilter.cpp b/src/plugins/quickopen/directoryfilter.cpp
index afc22af054..30f7fc28fa 100644
--- a/src/plugins/quickopen/directoryfilter.cpp
+++ b/src/plugins/quickopen/directoryfilter.cpp
@@ -62,7 +62,7 @@ QByteArray DirectoryFilter::saveState() const
out << m_directories;
out << m_filters;
out << shortcutString();
- out << defaultActiveState();
+ out << isIncludedByDefault();
out << m_files;
return value;
}
@@ -120,7 +120,7 @@ bool DirectoryFilter::openConfigDialog(QWidget *parent, bool &needsRefresh)
m_ui.directoryList->addItems(m_directories);
m_ui.fileTypeEdit->setText(m_filters.join(tr(",")));
m_ui.shortcutEdit->setText(shortcutString());
- m_ui.defaultFlag->setChecked(!defaultActiveState());
+ m_ui.defaultFlag->setChecked(!isIncludedByDefault());
updateOptionButtons();
if (dialog.exec() == QDialog::Accepted) {
QMutexLocker locker(&m_lock);
diff --git a/src/plugins/quickopen/filesystemfilter.cpp b/src/plugins/quickopen/filesystemfilter.cpp
index 386523ebc4..4631a8d934 100644
--- a/src/plugins/quickopen/filesystemfilter.cpp
+++ b/src/plugins/quickopen/filesystemfilter.cpp
@@ -114,7 +114,7 @@ bool FileSystemFilter::openConfigDialog(QWidget *parent, bool &needsRefresh)
ui.setupUi(&dialog);
ui.hiddenFilesFlag->setChecked(m_includeHidden);
- ui.limitCheck->setChecked(!defaultActiveState());
+ ui.limitCheck->setChecked(!isIncludedByDefault());
ui.shortcutEdit->setText(shortcutString());
if (dialog.exec() == QDialog::Accepted) {
@@ -132,7 +132,7 @@ QByteArray FileSystemFilter::saveState() const
QDataStream out(&value, QIODevice::WriteOnly);
out << m_includeHidden;
out << shortcutString();
- out << defaultActiveState();
+ out << isIncludedByDefault();
return value;
}
diff --git a/src/plugins/quickopen/filesystemfilter.h b/src/plugins/quickopen/filesystemfilter.h
index 0e895a45aa..a404da038f 100644
--- a/src/plugins/quickopen/filesystemfilter.h
+++ b/src/plugins/quickopen/filesystemfilter.h
@@ -56,8 +56,8 @@ class FileSystemFilter : public QuickOpen::IQuickOpenFilter
public:
FileSystemFilter(Core::EditorManager *editorManager, QuickOpenToolWindow *toolWindow);
- QString trName() const { return tr("File in file system"); }
- QString name() const { return "File in file system"; }
+ QString trName() const { return tr("Files in file system"); }
+ QString name() const { return "Files in file system"; }
QuickOpen::IQuickOpenFilter::Priority priority() const { return QuickOpen::IQuickOpenFilter::Medium; }
QList<QuickOpen::FilterEntry> matchesFor(const QString &entry);
void accept(QuickOpen::FilterEntry selection) const;
diff --git a/src/plugins/quickopen/iquickopenfilter.cpp b/src/plugins/quickopen/iquickopenfilter.cpp
index ad6441ca28..82922e3ba2 100644
--- a/src/plugins/quickopen/iquickopenfilter.cpp
+++ b/src/plugins/quickopen/iquickopenfilter.cpp
@@ -43,7 +43,9 @@
using namespace QuickOpen;
IQuickOpenFilter::IQuickOpenFilter(QObject *parent):
- QObject(parent)
+ QObject(parent),
+ m_includedByDefault(false),
+ m_hidden(false)
{
}
@@ -62,7 +64,7 @@ QByteArray IQuickOpenFilter::saveState() const
QByteArray value;
QDataStream out(&value, QIODevice::WriteOnly);
out << shortcutString();
- out << defaultActiveState();
+ out << isIncludedByDefault();
return value;
}
@@ -91,7 +93,7 @@ bool IQuickOpenFilter::openConfigDialog(QWidget *parent, bool &needsRefresh)
QHBoxLayout *hlayout = new QHBoxLayout;
QLineEdit *shortcutEdit = new QLineEdit(shortcutString());
QCheckBox *limitCheck = new QCheckBox(tr("Limit to prefix"));
- limitCheck->setChecked(!defaultActiveState());
+ limitCheck->setChecked(!isIncludedByDefault());
hlayout->addWidget(new QLabel(tr("Prefix:")));
hlayout->addWidget(shortcutEdit);
@@ -120,12 +122,22 @@ bool IQuickOpenFilter::isConfigurable() const
return true;
}
-bool IQuickOpenFilter::defaultActiveState() const
+bool IQuickOpenFilter::isIncludedByDefault() const
{
- return m_default;
+ return m_includedByDefault;
}
void IQuickOpenFilter::setIncludedByDefault(bool includedByDefault)
{
- m_default = includedByDefault;
+ m_includedByDefault = includedByDefault;
+}
+
+bool IQuickOpenFilter::isHidden() const
+{
+ return m_hidden;
+}
+
+void IQuickOpenFilter::setHidden(bool hidden)
+{
+ m_hidden = hidden;
}
diff --git a/src/plugins/quickopen/iquickopenfilter.h b/src/plugins/quickopen/iquickopenfilter.h
index 376b0d0fe9..d5591ac940 100644
--- a/src/plugins/quickopen/iquickopenfilter.h
+++ b/src/plugins/quickopen/iquickopenfilter.h
@@ -87,26 +87,25 @@ public:
IQuickOpenFilter(QObject *parent = 0);
virtual ~IQuickOpenFilter() {}
- /* visible name */
+ /* Visible name. */
virtual QString trName() const = 0;
- /* internal name */
+ /* Internal name. */
virtual QString name() const = 0;
- /* selection list order in case of multiple active filters (high goes on top) */
+ /* Selection list order in case of multiple active filters (high goes on top). */
virtual Priority priority() const = 0;
- /* string to type to use this filter exclusively */
- virtual QString shortcutString() const;
- void setShortcutString(const QString &shortcut);
+ /* String to type to use this filter exclusively. */
+ QString shortcutString() const;
- /* list of matches for the given user entry */
+ /* List of matches for the given user entry. */
virtual QList<FilterEntry> matchesFor(const QString &entry) = 0;
- /* user has selected the given entry that belongs to this filter */
+ /* User has selected the given entry that belongs to this filter. */
virtual void accept(FilterEntry selection) const = 0;
- /* implement to update caches on user request, if that's a long operation */
+ /* Implement to update caches on user request, if that's a long operation. */
virtual void refresh(QFutureInterface<void> &future) = 0;
/* Saved state is used to restore the filter at start up. */
@@ -126,9 +125,11 @@ public:
* implementation returns true. */
virtual bool isConfigurable() const;
- /* is this filter used also when the shortcutString is not used? */
- virtual bool defaultActiveState() const;
- void setIncludedByDefault(bool includedByDefault);
+ /* Is this filter used also when the shortcutString is not used? */
+ bool isIncludedByDefault() const;
+
+ /* Returns whether the filter should be hidden from configuration and menus. */
+ bool isHidden() const;
static QString trimWildcards(const QString &str) {
if (str.isEmpty())
@@ -143,9 +144,15 @@ public:
return str.mid(first, last-first+1);
}
+protected:
+ void setShortcutString(const QString &shortcut);
+ void setIncludedByDefault(bool includedByDefault);
+ void setHidden(bool hidden);
+
private:
QString m_shortcut;
- bool m_default;
+ bool m_includedByDefault;
+ bool m_hidden;
};
} // namespace QuickOpen
diff --git a/src/plugins/quickopen/quickopenfiltersfilter.cpp b/src/plugins/quickopen/quickopenfiltersfilter.cpp
index e8a487c7d9..519c56daec 100644
--- a/src/plugins/quickopen/quickopenfiltersfilter.cpp
+++ b/src/plugins/quickopen/quickopenfiltersfilter.cpp
@@ -49,7 +49,7 @@ QuickOpenFiltersFilter::QuickOpenFiltersFilter(QuickOpenPlugin *plugin,
m_icon(QIcon(Core::Constants::ICON_NEXT))
{
setIncludedByDefault(true);
- setShortcutString(QString());
+ setHidden(true);
}
QString QuickOpenFiltersFilter::trName() const
@@ -71,8 +71,8 @@ QList<FilterEntry> QuickOpenFiltersFilter::matchesFor(const QString &entry)
{
QList<FilterEntry> entries;
if (entry.isEmpty()) {
- foreach (IQuickOpenFilter* filter, m_plugin->filter()) {
- if (!filter->shortcutString().isEmpty()) {
+ foreach (IQuickOpenFilter *filter, m_plugin->filter()) {
+ if (!filter->shortcutString().isEmpty() && !filter->isHidden()) {
FilterEntry entry(this,
filter->shortcutString(),
QVariant::fromValue(filter),
diff --git a/src/plugins/quickopen/quickopentoolwindow.cpp b/src/plugins/quickopen/quickopentoolwindow.cpp
index 211947be8d..9701923515 100644
--- a/src/plugins/quickopen/quickopentoolwindow.cpp
+++ b/src/plugins/quickopen/quickopentoolwindow.cpp
@@ -314,7 +314,7 @@ void QuickOpenToolWindow::updateFilterList()
{
m_filterMenu->clear();
foreach (IQuickOpenFilter *filter, m_quickOpenPlugin->filter()) {
- if (!filter->shortcutString().isEmpty()) {
+ if (!filter->shortcutString().isEmpty() && !filter->isHidden()) {
QAction *action = m_filterMenu->addAction(filter->trName(), this, SLOT(filterSelected()));
action->setData(qVariantFromValue(filter));
}
@@ -396,7 +396,7 @@ QList<IQuickOpenFilter*> QuickOpenToolWindow::filtersFor(const QString &text, QS
searchText = text;
QList<IQuickOpenFilter*> activeFilters;
foreach (IQuickOpenFilter *filter, filters)
- if (filter->defaultActiveState())
+ if (filter->isIncludedByDefault())
activeFilters << filter;
return activeFilters;
}
diff --git a/src/plugins/quickopen/settingspage.cpp b/src/plugins/quickopen/settingspage.cpp
index 76263c731b..4b1f81fc86 100644
--- a/src/plugins/quickopen/settingspage.cpp
+++ b/src/plugins/quickopen/settingspage.cpp
@@ -121,8 +121,11 @@ void SettingsPage::updateFilterList()
{
m_ui.filterList->clear();
foreach (IQuickOpenFilter *filter, m_filters) {
+ if (filter->isHidden())
+ continue;
+
QString title;
- if (filter->defaultActiveState())
+ if (filter->isIncludedByDefault())
title = filter->trName();
else
title = tr("%1 (Prefix: %2)").arg(filter->trName()).arg(filter->shortcutString());