summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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/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
9 files changed, 104 insertions, 13 deletions
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 82ed13a29e..bf78bf94f2 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)
@@ -465,6 +473,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/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;
};