28
28
#include <KToggleAction>
30
30
#include <QtCore/QAbstractItemModel>
31
#include <QtGui/QAbstractProxyModel>
32
#include <QtGui/QItemSelectionModel>
33
#include <QtGui/QTabBar>
34
#include <QtGui/QToolButton>
35
#include <QtGui/QMouseEvent>
31
#include <QAbstractProxyModel>
32
#include <QItemSelectionModel>
34
#include <QToolButton>
35
#include <QMouseEvent>
36
#include <QHeaderView>
38
#include <akonadi/etmviewstatesaver.h>
37
40
#include "storagemodel.h"
38
41
#include "widget.h"
153
156
setTabsClosable( Core::Settings::self()->tabsHaveCloseButton() );
154
157
connect( this, SIGNAL(closeRequest(QWidget*)), SLOT(closeTab(QWidget*)) );
157
160
setMovable( true );
159
162
connect( d->mSelectionModel, SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
206
210
d->mActionMenu = new KActionMenu( KIcon(), i18n( "Message List" ), this );
207
211
d->mXmlGuiClient->actionCollection()->addAction( QLatin1String( "view_message_list" ), d->mActionMenu );
208
const Widget * const w = static_cast<Widget*>( currentWidget() );
209
w->view()->fillViewMenu( d->mActionMenu->menu() );
212
MessageList::Util::fillViewMenu( d->mActionMenu->menu(), this );
211
214
KAction *action = new KAction( i18n("Create new tab"), this );
212
215
action->setShortcut( QKeySequence( Qt::ALT + Qt::Key_T ) );
405
408
void Pane::Private::onSelectionChanged( const QItemSelection &selected, const QItemSelection &deselected )
408
QItemSelectionModel *s = 0;
409
410
if ( mPreferEmptyTab ) {
410
411
q->createNewTab();
413
w = static_cast<Widget*>( q->currentWidget() );
414
s = mWidgetSelectionHash[w];
414
Widget *w = static_cast<Widget*>( q->currentWidget() );
415
QItemSelectionModel * s = mWidgetSelectionHash[w];
416
417
s->select( mapSelectionToSource( selected ), QItemSelectionModel::Select );
417
418
s->select( mapSelectionToSource( deselected ), QItemSelectionModel::Deselect );
420
QIcon icon = KIcon( QLatin1String( "folder" ) );
422
423
foreach ( const QModelIndex &index, s->selectedRows() ) {
423
424
label+= index.data( Qt::DisplayRole ).toString()+QLatin1String( ", " );
435
436
toolTip = idx.data().toString() + QLatin1Char( '/' ) + toolTip;
436
437
idx = idx.parent();
440
icon = KIcon( QLatin1String( "folder" ) );
440
int index = q->indexOf( w );
443
const int index = q->indexOf( w );
441
444
q->setTabText( index, label );
442
445
q->setTabIcon( index, icon );
443
446
q->setTabToolTip( index, toolTip);
591
594
QTabBar *bar = q->tabBar();
592
595
if ( q->count() <= 1 ) return;
594
int index = bar->tabAt( bar->mapFrom( q, pos ) );
595
if ( index == -1 ) return;
597
const int indexBar = bar->tabAt( bar->mapFrom( q, pos ) );
598
if ( indexBar == -1 ) return;
597
Widget *w = qobject_cast<Widget *>( q->widget( index ) );
600
Widget *w = qobject_cast<Widget *>( q->widget( indexBar ) );
598
601
if ( !w ) return;
615
618
if ( action == allOther ) { // Close all other tabs
616
619
QList<Widget *> widgets;
617
int index = q->indexOf( w );
620
const int index = q->indexOf( w );
619
622
for ( int i=0; i<q->count(); i++ ) {
620
623
if ( i==index) continue; // Skip the current one
966
void Pane::writeConfig()
968
KConfigGroup conf( MessageList::Core::Settings::self()->config(),"MessageListPane");
970
//Delete liste before
971
const QStringList list = conf.groupList().filter( QRegExp( QLatin1String("MessageListTab\\d+") ) );
972
foreach ( const QString &group, list ) {
973
conf.deleteGroup( group );
976
conf.writeEntry(QLatin1String("currentIndex"),currentIndex());
977
conf.writeEntry(QLatin1String("tabNumber"),count());
979
for ( int i=0; i<count(); i++ ) {
980
Widget *w = qobject_cast<Widget *>( widget( i ) );
981
KConfigGroup grp(MessageList::Core::Settings::self()->config(),QString::fromLatin1("MessageListTab%1").arg(i));
982
grp.writeEntry(QLatin1String("collectionId"),w->currentCollection().id());
983
grp.writeEntry(QLatin1String("HeaderState"), w->view()->header()->saveState());
989
void Pane::readConfig()
991
if(MessageList::Core::Settings::self()->config()->hasGroup(QLatin1String("MessageListPane"))) {
992
KConfigGroup conf( MessageList::Core::Settings::self()->config(),"MessageListPane");
993
const int numberOfTab = conf.readEntry(QLatin1String("tabNumber"),0);
994
if(numberOfTab == 0) {
997
for(int i = 0; i<numberOfTab; ++i)
999
KConfigGroup grp(MessageList::Core::Settings::self()->config(),QString::fromLatin1("MessageListTab%1").arg(i));
1000
QItemSelectionModel *selectionModel = createNewTab();
1002
Akonadi::Collection::Id id = grp.readEntry(QLatin1String("collectionId"),-1);
1003
ETMViewStateSaver *saver = new ETMViewStateSaver;
1004
saver->setSelectionModel(selectionModel);
1007
ETMViewStateSaver *saver = new ETMViewStateSaver;
1008
saver->setSelectionModel(selectionModel);
1009
saver->restoreState( grp );
1010
saver->selectCollections(Akonadi::Collection::List()<<Akonadi::Collection(id));
1013
Widget *w = qobject_cast<Widget *>( widget( i ) );
1014
w->view()->header()->restoreState(grp.readEntry(QLatin1String("HeaderState"),QByteArray()));
1016
setCurrentIndex(conf.readEntry(QLatin1String("currentIndex"),0));
963
1024
bool Pane::searchEditHasFocus() const
1033
void Pane::sortOrderMenuAboutToShow()
1035
KMenu * menu = dynamic_cast< KMenu * >( sender() );
1038
const Widget * const w = static_cast<Widget*>( currentWidget() );
1039
w->view()->sortOrderMenuAboutToShow(menu);
1042
void Pane::aggregationMenuAboutToShow()
1044
KMenu * menu = dynamic_cast< KMenu * >( sender() );
1047
const Widget * const w = static_cast<Widget*>( currentWidget() );
1048
w->view()->aggregationMenuAboutToShow(menu);
1051
void Pane::themeMenuAboutToShow()
1053
KMenu * menu = dynamic_cast< KMenu * >( sender() );
1056
const Widget * const w = static_cast<Widget*>( currentWidget() );
1057
w->view()->themeMenuAboutToShow(menu);
971
1061
#include "pane.moc"