[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/KDE/4.2/kdepim/akregator/src
From: Frank Osterfeld <frank.osterfeld () kdemail ! net>
Date: 2009-02-25 13:25:23
Message-ID: 1235568323.164283.17288.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 931550 by osterfeld:
backport:
------------------------------------------------------------------------
r918194 | marten | 2009-01-29 16:46:41 +0100 (Thu, 29 Jan 2009) | 3 lines
Maintain separate column states and sizes for the Group and Feed modes,
instead of simply hiding or showing the feed column.
------------------------------------------------------------------------
------------------------------------------------------------------------
r918196 | marten | 2009-01-29 17:03:24 +0100 (Thu, 29 Jan 2009) | 5 lines
Work around possible Qt 4.4 bug causing the last column to expand beyond
the viewport width. Re-evaluate this after the transition to Qt 4.5.
CCBUG:152702
------------------------------------------------------------------------
------------------------------------------------------------------------
r919567 | osterfeld | 2009-02-01 12:38:34 +0100 (Sun, 01 Feb 2009) | 6 lines
fix some issues I had with the feed/group settings separation:
Settings weren't saved when switching modes, also save state when saving settings
Remove useless "Unspecified" state and redundant m_aggregationMode flag.
CCBUG:152702
CCMAIL:jjm@keelhaul.me.uk
------------------------------------------------------------------------
M +48 -15 articlelistview.cpp
M +3 -4 articlelistview.h
--- branches/KDE/4.2/kdepim/akregator/src/articlelistview.cpp #931549:931550
@@ -201,16 +201,24 @@
void ArticleListView::saveHeaderSettings()
{
- if ( model() )
- m_headerState = header()->saveState();
+ if ( model() ) {
+ const QByteArray state = header()->saveState();
+ if ( m_columnMode == FeedMode )
+ m_feedHeaderState = state;
+ else
+ m_groupHeaderState = state;
+ }
+
KConfigGroup conf( Settings::self()->config(), "General" );
- conf.writeEntry( "ArticleListHeaders", m_headerState.toBase64() );
+ conf.writeEntry( "ArticleListFeedHeaders", m_feedHeaderState.toBase64() );
+ conf.writeEntry( "ArticleListGroupHeaders", m_groupHeaderState.toBase64() );
}
void ArticleListView::loadHeaderSettings()
{
KConfigGroup conf( Settings::self()->config(), "General" );
- m_headerState = QByteArray::fromBase64( conf.readEntry( "ArticleListHeaders" \
).toAscii() ); + m_feedHeaderState = QByteArray::fromBase64( conf.readEntry( \
"ArticleListFeedHeaders" ).toAscii() ); + m_groupHeaderState = \
QByteArray::fromBase64( conf.readEntry( "ArticleListGroupHeaders" ).toAscii() ); }
QItemSelectionModel* ArticleListView::articleSelectionModel() const
@@ -244,7 +252,19 @@
{
if ( m_columnMode == GroupMode )
return;
- setColumnHidden( ArticleListView::FeedTitleColumn, false );
+
+ // The next line (used three times in this file) is a workaround for a
+ // possible Qt 4.4.3 bug that causes the last column to expand beyond
+ // the viewport width. QHeaderViewPrivate::lastSectionSize may not be
+ // initialised when QHeaderViewPrivate::resizeSections() is called,
+ // doing the resizeSection() here ensures that it has a sensible value.
+ // This may not be necessary with Qt 4.5.
+ header()->resizeSection( header()->count() - 1, 1 );
+
+ if ( model() )
+ m_feedHeaderState = header()->saveState();
+
+ header()->restoreState( m_groupHeaderState );
m_columnMode = GroupMode;
}
@@ -252,7 +272,11 @@
{
if ( m_columnMode == FeedMode )
return;
- setColumnHidden( ArticleListView::FeedTitleColumn, true );
+
+ header()->resizeSection( header()->count() - 1, 1 );
+ if ( model() )
+ m_groupHeaderState = header()->saveState();
+ header()->restoreState( m_feedHeaderState );
m_columnMode = FeedMode;
}
@@ -263,9 +287,6 @@
void ArticleListView::setIsAggregation( bool aggregation )
{
- if ( aggregation == m_isAggregation )
- return;
- m_isAggregation = aggregation;
if ( aggregation )
setGroupMode();
else
@@ -274,8 +295,7 @@
ArticleListView::ArticleListView( QWidget* parent )
: QTreeView(parent),
- m_columnMode( Unspecified ),
- m_isAggregation( false )
+ m_columnMode( FeedMode )
{
setSortingEnabled( true );
setAlternatingRowColors( true );
@@ -377,13 +397,26 @@
}
-void ArticleListView::setModel( QAbstractItemModel* m ) {
+void ArticleListView::setModel( QAbstractItemModel* m )
+{
+ const bool groupMode = m_columnMode == GroupMode;
+
QAbstractItemModel* const oldModel = model();
- if ( oldModel )
- m_headerState = header()->saveState();
+ if ( oldModel ) {
+ const QByteArray state = header()->saveState();
+ if ( groupMode )
+ m_groupHeaderState = state;
+ else
+ m_feedHeaderState = state;
+ }
+
QTreeView::setModel( m );
+
if ( m )
- header()->restoreState( m_headerState );
+ {
+ header()->resizeSection( header()->count() - 1, 1 );
+ header()->restoreState( groupMode ? m_groupHeaderState : m_feedHeaderState \
); + }
}
void ArticleListView::slotClear()
--- branches/KDE/4.2/kdepim/akregator/src/articlelistview.h #931549:931550
@@ -159,13 +159,12 @@
private:
- enum Column { ItemTitleColumn=0, FeedTitleColumn, DateColumn, ColumnCount };
- enum ColumnMode { Unspecified, GroupMode, FeedMode };
+ enum ColumnMode { GroupMode, FeedMode };
ColumnMode m_columnMode;
- bool m_isAggregation;
QPointer<SortColorizeProxyModel> m_proxy;
std::vector<boost::shared_ptr<const Filters::AbstractMatcher> > m_matchers;
- QByteArray m_headerState;
+ QByteArray m_feedHeaderState;
+ QByteArray m_groupHeaderState;
};
} // namespace Akregator
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic