From kde-commits Thu Dec 16 17:30:03 2010 From: =?utf-8?q?Aur=C3=A9lien=20G=C3=A2teau?= Date: Thu, 16 Dec 2010 17:30:03 +0000 To: kde-commits Subject: KDE/kdepim/akregator/src Message-Id: <20101216173003.A2E3FAC8AB () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=129252066211234 SVN commit 1207042 by gateau: Nicer subscription list columns - By default, only show title column - If unread column is not visible, append unread count to title column M +39 -0 subscriptionlistdelegate.cpp M +3 -0 subscriptionlistdelegate.h M +13 -5 subscriptionlistview.cpp M +1 -0 subscriptionlistview.h --- trunk/KDE/kdepim/akregator/src/subscriptionlistdelegate.cpp #1207041:1207042 @@ -30,6 +30,9 @@ #include #include +#include +#include + using namespace Akregator; @@ -81,4 +84,40 @@ } +void Akregator::SubscriptionListDelegate::initStyleOption( QStyleOptionViewItem *option, + const QModelIndex &index ) const +{ + QStyledItemDelegate::initStyleOption( option, index ); + + if ( index.column() != 0 ) + { + // Append unread count to the title column only (it is always the first + // one) + return; + } + + QTreeView *view = static_cast< QTreeView * >( parent() ); + if ( !view->header()->isSectionHidden( SubscriptionListModel::UnreadCountColumn ) ) + { + // Do not append unread count to the title if the unread count column + // is visible + return; + } + + QStyleOptionViewItemV4 *optionV4 = qstyleoption_cast< QStyleOptionViewItemV4 * >( option ); + if ( !optionV4 ) + { + // Should never happen, but play it safe + return; + } + + QModelIndex unreadIndex = index.sibling( index.row(), SubscriptionListModel::UnreadCountColumn ); + int unread = unreadIndex.data().toInt(); + if ( unread > 0 ) + { + optionV4->text += QString( " (%1)" ).arg( unread ); + } +} + + #include "subscriptionlistdelegate.moc" --- trunk/KDE/kdepim/akregator/src/subscriptionlistdelegate.h #1207041:1207042 @@ -47,6 +47,9 @@ const QStyleOptionViewItem &option, const QModelIndex &index ) const; + void initStyleOption( QStyleOptionViewItem *option, + const QModelIndex &index ) const; + private slots: void recalculateRowHeight(); --- trunk/KDE/kdepim/akregator/src/subscriptionlistview.cpp #1207041:1207042 @@ -151,11 +151,8 @@ QTreeView::setModel( m ); - if ( m ) { - header()->restoreState( m_headerState ); - // Always shows title column - header()->showSection( SubscriptionListModel::TitleColumn ); - } + if ( m ) + restoreHeaderState(); QStack stack; stack.push( rootIndex() ); @@ -222,10 +219,21 @@ { const KConfigGroup conf( Settings::self()->config(), "General" ); m_headerState = QByteArray::fromBase64( conf.readEntry( "SubscriptionListHeaders" ).toAscii() ); + restoreHeaderState(); +} + +void Akregator::SubscriptionListView::restoreHeaderState() +{ header()->restoreState( m_headerState ); // needed, even with Qt 4.5 // Always shows the title column header()->showSection( SubscriptionListModel::TitleColumn ); + if ( m_headerState.isEmpty() ) + { + // Default configuration: only show the title column + header()->hideSection( SubscriptionListModel::UnreadCountColumn ); + header()->hideSection( SubscriptionListModel::TotalCountColumn ); } +} void Akregator::SubscriptionListView::slotPrevFeed() { --- trunk/KDE/kdepim/akregator/src/subscriptionlistview.h #1207041:1207042 @@ -81,6 +81,7 @@ private: void saveHeaderSettings(); void loadHeaderSettings(); + void restoreHeaderState(); private Q_SLOTS: