[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/work/kmldonkey/kmldonkey (silent)
From: Eduard Huguet <eduardhc () gmail ! com>
Date: 2011-03-31 22:15:43
Message-ID: 20110331221543.21E4BAC8CD () svn ! kde ! org
[Download RAW message or body]
SVN commit 1226672 by ehuguet:
Save / restore (part of) column layout
SVN_SILENT:
M +63 -38 infolist.cpp
--- branches/work/kmldonkey/kmldonkey/infolist.cpp #1226671:1226672
@@ -119,15 +119,6 @@
void
InfoList::initialise()
{
- KSharedConfigPtr conf = KGlobal::config();
-
- if ( !m_name.isEmpty() )
- {
- KConfigGroup group = conf->group( m_name );
- if ( group.hasKey( "HideHeader" ) )
- hideHeader = group.readEntry( "HideHeader", QStringList() );
- }
-
// initialize columns:
setColumnCount( m_columnCount );
@@ -138,38 +129,17 @@
hi->setText( i, m_columns[i] );
h->setResizeMode( i, m_columnResizeMode[i] );
h->resizeSection( i, m_columnWidth[i] );
-
- bool hidecol = m_headerMenu && hideHeader.indexOf( m_columns[i] ) >= 0;
- if ( m_headerMenu )
- {
- m_headerMenu->insertItem( m_columns[i], i );
- m_headerMenu->setItemChecked( i, ! hidecol );
}
- if ( hidecol )
- hideColumn( i );
- }
// event filter, used to detect mouse r-click on header:
// (see http://www.qtcentre.org/threads/25622-Capture-mouse-event-on-QHeaderView)
h->viewport()->installEventFilter( this );
+ // restore settings:
+ KSharedConfigPtr conf = KGlobal::config();
if ( !m_name.isEmpty() )
{
restoreLayout( conf.data(), m_name );
-
- KConfigGroup group = conf->group( m_name );
- QStringList cols = group.readEntry( "ColumnWidths", QStringList() );
- int i = 0;
-
- kDebug() << m_name;
-
- QStringList::ConstIterator it = cols.constBegin();
- const QStringList::ConstIterator itEnd = cols.constEnd();
- for ( ; it != itEnd; ++it )
- setColumnWidth( i++, (*it).toInt() );
-
- if ( sortColumn() >= header()->count() && header()->count() > 0 )
- sortByColumn( 0 ); // workaround
}
}
@@ -182,37 +152,92 @@
return;
saveLayout( conf.data(), m_name );
- KConfigGroup group = conf->group( m_name );
+}
+
+void InfoList::saveLayout( KSharedConfig * cfg, const QString &name )
+{
+ KConfigGroup group = cfg->group( name );
+
+ // save column widths;
QStringList widths;
const int colCount = model()->columnCount();
for ( int i = 0; i < colCount; ++i )
- widths << QString::number( columnWidth( i ) );
+ {
+ int w = 0;
+ if( isColumnHidden( i ) )
+ w = m_columnWidth[i]; // hidden columns return 0, so avoid it & store default width for it
+ else
+ w = columnWidth( i );
+ widths << QString::number( w );
+ }
+
group.writeEntry( "ColumnWidths", widths );
+ // save hide state:
if ( m_headerMenu )
{
QStringList hideHeader;
for ( int i = 0; i < m_columnCount; i++ )
+ {
if( isColumnHidden( i ))
hideHeader.append( m_columns[i] );
+ }
+
group.writeEntry( "HideHeader", hideHeader );
}
-}
+ // TODO: save column ordering
-void InfoList::saveLayout( KSharedConfig * cfg, const QString &name )
+ // save sorting order:
+ // TODO: save asc/desc order -> how can we to determine it...?
+ if( isSortingEnabled() )
{
- // TODO...
+ group.writeEntry( "SortColumn", sortColumn() );
}
+ else
+ group.writeEntry( "SortColumn", -1 );
+}
void InfoList::restoreLayout( const KSharedConfig * cfg, const QString &name )
{
- // TODO...
+ KConfigGroup group = cfg->group( name );
+ QStringList cols = group.readEntry( "ColumnWidths", QStringList() );
+ hideHeader = group.readEntry( "HideHeader", QStringList() );
+
+ // restore column widths & hide state:
+ QStringList::ConstIterator it = cols.constBegin();
+ const QStringList::ConstIterator itEnd = cols.constEnd();
+ int i = 0;
+ for ( ; it != itEnd; ++it, ++i )
+ {
+ setColumnWidth( i, (*it).toInt() );
+
+ bool hidecol = m_headerMenu && hideHeader.indexOf( m_columns[i] ) >= 0;
+ if ( m_headerMenu )
+ {
+ m_headerMenu->insertItem( m_columns[i], i );
+ m_headerMenu->setItemChecked( i, ! hidecol );
}
+ if ( hidecol )
+ hideColumn( i );
+ }
+ // restore sorting order:
+ int col = group.readEntry( "SortColumn", -1 );
+ if( col >= 0 )
+ {
+ if ( col >= header()->count() && header()->count() > 0 )
+ col = 0; // workaround
+ sortByColumn( col );
+ }
+
+ // TODO: restore column ordering
+}
+
+
QList<QTreeWidgetItem *>
InfoList::selectedItems() const
{
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic