• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdelibs API Reference
  • KDE Home
  • Contact Us
 

KDEUI

Public Member Functions | Protected Member Functions | List of all members
KViewStateSaver Class Referenceabstract

#include <kviewstatesaver.h>

Inheritance diagram for KViewStateSaver:
Inheritance graph
[legend]

Public Member Functions

 KViewStateSaver (QObject *parent=0)
 
 ~KViewStateSaver ()
 
QString currentIndexKey () const
 
QStringList expansionKeys () const
 
void restoreCurrentItem (const QString &indexString)
 
void restoreExpanded (const QStringList &indexStrings)
 
void restoreScrollState (int verticalScoll, int horizontalScroll)
 
void restoreSelection (const QStringList &indexStrings)
 
void restoreState (const KConfigGroup &configGroup)
 
void saveState (KConfigGroup &configGroup)
 
QPair< int, int > scrollState () const
 
QStringList selectionKeys () const
 
QItemSelectionModel * selectionModel () const
 
void setSelectionModel (QItemSelectionModel *selectionModel)
 
void setView (QAbstractItemView *view)
 
QAbstractItemView * view () const
 

Protected Member Functions

virtual QModelIndex indexFromConfigString (const QAbstractItemModel *model, const QString &key) const =0
 
virtual QString indexToConfigString (const QModelIndex &index) const =0
 

Detailed Description

Object for saving and restoring state in QTreeViews and QItemSelectionModels.

Implement the indexFromConfigString and indexToConfigString methods to handle the model in the view whose state is being saved. These implementations can be quite trivial:

QModelIndex DynamicTreeStateSaver::indexFromConfigString(const QAbstractItemModel* model, const QString& key) const
{
QModelIndexList list = model->match(model->index(0, 0), DynamicTreeModel::DynamicTreeModelId, key.toInt(), 1, Qt::MatchRecursive);
if (list.isEmpty())
return QModelIndex();
return list.first();
}
QString DynamicTreeStateSaver::indexToConfigString(const QModelIndex& index) const
{
return index.data(DynamicTreeModel::DynamicTreeModelId).toString();
}

It is possible to restore the state of a QTreeView (that is, the expanded state and selected state of all indexes as well as the horizontal and vertical scroll state) by using setTreeView.

If there is no tree view state to restore (for example if using QML), the selection state of a QItemSelectionModel can be saved or restored instead.

The state of any QAbstractScrollArea can also be saved and restored.

A KViewStateSaver should be created on the stack when saving and on the heap when restoring. The model may be populated dynamically between several event loops, so it may not be immediate for the indexes that should be selected to be in the model. The saver should not be persisted as a member. The saver will destroy itself when it has completed the restoration specified in the config group, or a small amount of time has elapsed.

MyWidget::MyWidget(Qobject *parent)
: QWidget(parent)
{
...
m_view = new QTreeView(splitter);
m_view->setModel(model);
connect( model, SIGNAL(modelAboutToBeReset()), SLOT(saveState()) );
connect( model, SIGNAL(modelReset()), SLOT(restoreState()) );
connect( qApp, SIGNAL(aboutToQuit()), SLOT(saveState()) );
restoreState();
}
void StateSaverWidget::saveState()
{
ConcreteStateSaver saver;
saver.setTreeView(m_view);
KConfigGroup cfg( KGlobal::config(), "ExampleViewState" );
saver.saveState( cfg );
cfg.sync();
}
void StateSaverWidget::restoreState()
{
// Will delete itself.
ConcreteTreeStateSaver *saver = new ConcreteStateSaver();
saver->setTreeView(m_view);
KConfigGroup cfg( KGlobal::config(), "ExampleViewState" );
saver->restoreState( cfg );
}

After creating a saver, the state can be saved using a KConfigGroup.

It is also possible to save and restore state directly by using the restoreSelection, restoreExpanded etc methods. Note that the implementation of these methods should return strings that the indexFromConfigString implementation can handle.

class DynamicTreeStateSaver : public KViewStateSaver
{
Q_OBJECT
public:
// ...
void selectItems(const QList<qint64> &items)
{
QStringList itemStrings;
foreach(qint64 item, items)
itemStrings << QString::number(item);
restoreSelection(itemStrings);
}
void expandItems(const QList<qint64> &items)
{
QStringList itemStrings;
foreach(qint64 item, items)
itemStrings << QString::number(item);
restoreSelection(itemStrings);
}
};

Note that a single instance of this class should be used with only one widget. That is don't do this:

saver->setTreeView(treeView1);
saver->setSelectionModel(treeView2->selectionModel());
saver->setScrollArea(treeView3);

To save the state of 3 different widgets, use three savers, even if they operate on the same root model.

saver1->setTreeView(treeView1);
saver2->setSelectionModel(treeView2->selectionModel());
saver3->setScrollArea(treeView3);
Note
The KViewStateSaver does not take ownership of any widgets set on it.

It is recommended to restore the state on application startup and after the model has been reset, and to save the state on application close and before the model has been reset.

See also
QAbstractItemModel::modelAboutToBeReset QAbstractItemModel::modelReset
Author
Stephen Kelly steph.nosp@m.en@k.nosp@m.dab.c.nosp@m.om
Since
4.5

Definition at line 169 of file kviewstatesaver.h.

Constructor & Destructor Documentation

KViewStateSaver::KViewStateSaver ( QObject *  parent = 0)
explicit

Constructor.

Parameters
parentstandard parent object, but ignored since this object will delete itself

Definition at line 117 of file kviewstatesaver.cpp.

KViewStateSaver::~KViewStateSaver ( )

Destructor.

Definition at line 124 of file kviewstatesaver.cpp.

Member Function Documentation

QString KViewStateSaver::currentIndexKey ( ) const

Returns a QString describing the current index in the selection model.

Definition at line 367 of file kviewstatesaver.cpp.

QStringList KViewStateSaver::expansionKeys ( ) const

Returns a QStringList representing the expanded indexes in the QTreeView.

Definition at line 375 of file kviewstatesaver.cpp.

virtual QModelIndex KViewStateSaver::indexFromConfigString ( const QAbstractItemModel *  model,
const QString &  key 
) const
protectedpure virtual

Reimplement to return an index in the model described by the unique key key.

virtual QString KViewStateSaver::indexToConfigString ( const QModelIndex &  index) const
protectedpure virtual

Reimplement to return a unique string for the index.

void KViewStateSaver::restoreCurrentItem ( const QString &  indexString)

Make the index described by indexString the currentIndex in the selectionModel.

Definition at line 270 of file kviewstatesaver.cpp.

void KViewStateSaver::restoreExpanded ( const QStringList &  indexStrings)

Expand the indexes described by indexStrings in the QTreeView.

Definition at line 305 of file kviewstatesaver.cpp.

void KViewStateSaver::restoreScrollState ( int  verticalScoll,
int  horizontalScroll 
)

Restores the scroll state of the QAbstractScrollArea to the verticalScoll and horizontalScroll.

Definition at line 320 of file kviewstatesaver.cpp.

void KViewStateSaver::restoreSelection ( const QStringList &  indexStrings)

Select the indexes described by indexStrings.

Definition at line 351 of file kviewstatesaver.cpp.

void KViewStateSaver::restoreState ( const KConfigGroup &  configGroup)

Restores the state from the configGroup.

Definition at line 193 of file kviewstatesaver.cpp.

void KViewStateSaver::saveState ( KConfigGroup &  configGroup)

Saves the state to the configGroup.

Definition at line 230 of file kviewstatesaver.cpp.

QPair< int, int > KViewStateSaver::scrollState ( ) const

Returns the vertical and horizontal scroll of the QAbstractScrollArea.

Definition at line 398 of file kviewstatesaver.cpp.

QStringList KViewStateSaver::selectionKeys ( ) const

Returns a QStringList describing the selection in the selectionModel.

Definition at line 384 of file kviewstatesaver.cpp.

QItemSelectionModel * KViewStateSaver::selectionModel ( ) const

The QItemSelectionModel whose state is persisted.

Definition at line 149 of file kviewstatesaver.cpp.

void KViewStateSaver::setSelectionModel ( QItemSelectionModel *  selectionModel)

Sets the QItemSelectionModel whose state is persisted.

Definition at line 155 of file kviewstatesaver.cpp.

void KViewStateSaver::setView ( QAbstractItemView *  view)

Sets the view whose state is persisted.

Definition at line 129 of file kviewstatesaver.cpp.

QAbstractItemView * KViewStateSaver::view ( ) const

The view whose state is persisted.

Definition at line 143 of file kviewstatesaver.cpp.


The documentation for this class was generated from the following files:
  • kviewstatesaver.h
  • kviewstatesaver.cpp
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:49:18 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KDEUI

Skip menu "KDEUI"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Modules
  • Related Pages

kdelibs API Reference

Skip menu "kdelibs API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  • kjsembed
  •   WTF
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Nepomuk-Core
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal