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

knode

  • sources
  • kde-4.12
  • kdepim
  • knode
kncollectionview.cpp
Go to the documentation of this file.
1 /*
2  KNode, the KDE newsreader
3  Copyright (c) 2004-2005 Volker Krause <vkrause@kde.org>
4  Copyright (c) 2009 Olivier Trichet <nive@nivalis.org>
5 
6  This program is free software; you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation; either version 2 of the License, or
9  (at your option) any later version.
10  You should have received a copy of the GNU General Public License
11  along with this program; if not, write to the Free Software Foundation,
12  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, US
13 */
14 
15 #include "kncollectionview.h"
16 
17 #include "knglobals.h"
18 #include "knconfig.h"
19 #include "knnntpaccount.h"
20 #include "knaccountmanager.h"
21 #include "kngroup.h"
22 #include "kngroupmanager.h"
23 #include "knfolder.h"
24 #include "knfoldermanager.h"
25 #include "kncollectionviewitem.h"
26 #include "settings.h"
27 
28 #include <kiconloader.h>
29 #include <klocale.h>
30 
31 #include <QDropEvent>
32 #include <QPainter>
33 
34 
35 
36 KNCollectionView::KNCollectionView( QWidget *parent ) :
37  FolderTreeWidget( parent ),
38  mActiveItem( 0 ),
39  mDragTargetItem( 0 )
40 {
41  setDragEnabled(true);
42  setDropIndicatorShown( false ); // We draw our own (see paintEvent)
43 
44  // add unread and total columns if necessary
45  loadLayout();
46 
47  readConfig();
48 
49  // load accounts and folders
50  reloadAccounts();
51  reloadFolders();
52 
53  // connect to the account manager
54  KNAccountManager* am = knGlobals.accountManager();
55  connect( am, SIGNAL(accountAdded(KNNntpAccount::Ptr)), SLOT(addAccount(KNNntpAccount::Ptr)) );
56  connect( am, SIGNAL(accountRemoved(KNNntpAccount::Ptr)), SLOT(removeAccount(KNNntpAccount::Ptr)) );
57  connect( am, SIGNAL(accountModified(KNNntpAccount::Ptr)), SLOT(updateAccount(KNNntpAccount::Ptr)) );
58 
59  // connect to the group manager
60  KNGroupManager* gm = knGlobals.groupManager();
61  connect( gm, SIGNAL(groupAdded(KNGroup::Ptr)), SLOT(addGroup(KNGroup::Ptr)) );
62  connect( gm, SIGNAL(groupRemoved(KNGroup::Ptr)), SLOT(removeGroup(KNGroup::Ptr)) );
63  connect( gm, SIGNAL(groupUpdated(KNGroup::Ptr)), SLOT(updateGroup(KNGroup::Ptr)) );
64 
65  // connect to the folder manager
66  KNFolderManager* fm = knGlobals.folderManager();
67  connect( fm, SIGNAL(folderAdded(KNFolder::Ptr)), SLOT(addPendingFolders()) );
68  connect( fm, SIGNAL(folderRemoved(KNFolder::Ptr)), SLOT(removeFolder(KNFolder::Ptr)) );
69  connect( fm, SIGNAL(folderActivated(KNFolder::Ptr)), SLOT(activateFolder(KNFolder::Ptr)) );
70 
71  // Edition of label
72  setEditTriggers( QAbstractItemView::NoEditTriggers );
73 }
74 
75 
76 KNCollectionView::~KNCollectionView()
77 {
78  writeConfig();
79 }
80 
81 
82 void KNCollectionView::loadLayout()
83 {
84  addLabelColumn( i18n("Name") );
85  addUnreadColumn( i18n("Unread") );
86  addTotalColumn( i18n("Total") );
87 
88  restoreLayout( knGlobals.config(), "GroupView" );
89 
90  if ( sortColumn() == -1 ) {
91  sortByColumn( labelColumnIndex(), Qt::AscendingOrder );
92  }
93 }
94 
95 void KNCollectionView::readConfig()
96 {
97  // font
98  setFont( knGlobals.settings()->groupListFont() );
99 }
100 
101 
102 void KNCollectionView::writeConfig()
103 {
104  saveLayout( knGlobals.config(), "GroupView" );
105 }
106 
107 
108 
109 void KNCollectionView::addAccount( KNNntpAccount::Ptr a )
110 {
111  // add account item
112  KNCollectionViewItem* item = new KNCollectionViewItem( this, FolderTreeWidgetItem::News );
113  a->setListItem( item );
114  item->setExpanded( a->wasOpen() );
115 
116  // add groups for this account
117  KNGroup::List groups = knGlobals.groupManager()->groupsOfAccount( a );
118  for ( KNGroup::List::Iterator it = groups.begin(); it != groups.end(); ++it ) {
119  KNCollectionViewItem *gitem = new KNCollectionViewItem( item, FolderTreeWidgetItem::News );
120  (*it)->setListItem( gitem );
121  (*it)->updateListItem();
122  }
123 }
124 
125 
126 void KNCollectionView::removeAccount( KNNntpAccount::Ptr a )
127 {
128  if(!a->listItem())
129  return;
130  KNCollectionViewItem *child = 0;
131  KNCollectionViewItem *aitem = a->listItem();
132  while ( ( child = static_cast<KNCollectionViewItem*>( aitem->takeChild( 0 ) ) ) ) {
133  removeGroup( boost::static_pointer_cast<KNGroup>( child->collection() ) );
134  }
135 
136  delete aitem;
137  a->setListItem(0);
138 }
139 
140 
141 void KNCollectionView::updateAccount( KNNntpAccount::Ptr a )
142 {
143  a->updateListItem();
144 }
145 
146 
147 void KNCollectionView::reloadAccounts()
148 {
149  KNNntpAccount::List list = knGlobals.accountManager()->accounts();
150  for ( KNNntpAccount::List::Iterator it = list.begin(); it != list.end(); ++it ) {
151  removeAccount( *it );
152  addAccount( *it );
153  }
154 }
155 
156 
157 
158 void KNCollectionView::addGroup( KNGroup::Ptr g )
159 {
160  if (!g->account()->listItem())
161  return;
162 
163  KNCollectionViewItem *gitem =
164  new KNCollectionViewItem( g->account()->listItem(), FolderTreeWidgetItem::News );
165  g->setListItem(gitem);
166  updateGroup(g);
167 }
168 
169 
170 void KNCollectionView::removeGroup( KNGroup::Ptr g )
171 {
172  if (!g->listItem())
173  return;
174 
175  g->listItem()->setHidden( true ); // work around bug 248256
176  delete g->listItem();
177  g->setListItem(0);
178 }
179 
180 
181 void KNCollectionView::updateGroup( KNGroup::Ptr g )
182 {
183  g->updateListItem();
184 }
185 
186 
187 
188 void KNCollectionView::addFolder( KNFolder::Ptr f )
189 {
190  KNCollectionViewItem *it;
191 
192  if (!f->parent()) {
193  // root folder
194  it = new KNCollectionViewItem(this, FolderTreeWidgetItem::Local);
195  } else {
196  // make sure the parent folder has already been added
197  if (!f->parent()->listItem())
198  addFolder( boost::static_pointer_cast<KNFolder>( f->parent() ) );
199  // handle special folders
200  FolderTreeWidgetItem::FolderType type = FolderTreeWidgetItem::Other;
201  switch ( f->id() ) {
202  case 1:
203  type = FolderTreeWidgetItem::Drafts; break;
204  case 2:
205  type = FolderTreeWidgetItem::Outbox; break;
206  case 3:
207  type = FolderTreeWidgetItem::SentMail; break;
208  }
209  it = new KNCollectionViewItem( f->parent()->listItem(), FolderTreeWidgetItem::Local, type );
210  }
211  f->setListItem( it );
212  updateFolder( f );
213 }
214 
215 
216 void KNCollectionView::removeFolder( KNFolder::Ptr f)
217 {
218  if(!f->listItem())
219  return;
220  KNCollectionViewItem *child = 0;
221  KNCollectionViewItem *it = f->listItem();
222  while ( ( child = static_cast<KNCollectionViewItem*>( it->takeChild( 0 ) ) ) ) {
223  removeFolder( boost::static_pointer_cast<KNFolder>( child->collection() ) );
224  }
225 
226  f->listItem()->setHidden( true ); // work around bug 248256
227  delete f->listItem();
228  f->setListItem(0);
229 }
230 
231 
232 void KNCollectionView::reloadFolders()
233 {
234  // remove existing folder items
235  removeFolder(knGlobals.folderManager()->root());
236 
237  // add folder items
238  addPendingFolders();
239 }
240 
241 
242 void KNCollectionView::addPendingFolders()
243 {
244  KNFolder::List folders = knGlobals.folderManager()->folders();
245  for ( KNFolder::List::Iterator it = folders.begin(); it != folders.end(); ++it )
246  if ( !(*it)->listItem() )
247  addFolder( (*it) );
248  // now open the folders if they were open in the last session
249  for ( KNFolder::List::Iterator it = folders.begin(); it != folders.end(); ++it ) {
250  if ( (*it)->listItem()) {
251  (*it)->listItem()->setExpanded( (*it)->wasOpen() );
252  }
253  }
254 }
255 
256 
257 void KNCollectionView::activateFolder( KNFolder::Ptr f )
258 {
259  if(f->listItem())
260  setActive( f->listItem() );
261 }
262 
263 
264 void KNCollectionView::updateFolder( KNFolder::Ptr f )
265 {
266  f->updateListItem();
267 }
268 
269 
270 void KNCollectionView::reload()
271 {
272  reloadAccounts();
273  reloadFolders();
274 }
275 
276 void KNCollectionView::setActive( QTreeWidgetItem *i )
277 {
278  if (!i || mActiveItem == i)
279  return;
280 
281  i->setSelected( true );
282  setCurrentItem( i );
283  mActiveItem = i;
284 }
285 
286 
287 void KNCollectionView::nextGroup()
288 {
289  incCurrentFolder();
290  setActive( currentItem() );
291 }
292 
293 
294 void KNCollectionView::prevGroup()
295 {
296  decCurrentFolder();
297  setActive( currentItem() );
298 }
299 
300 
301 void KNCollectionView::decCurrentFolder()
302 {
303  QTreeWidgetItemIterator it( currentItem() );
304  --it;
305  FolderTreeWidgetItem* fti = static_cast<FolderTreeWidgetItem*>( *it );
306  if (fti) {
307  setFocus();
308  setCurrentItem( fti );
309  }
310 }
311 
312 
313 void KNCollectionView::incCurrentFolder()
314 {
315  QTreeWidgetItemIterator it( currentItem() );
316  ++it;
317  FolderTreeWidgetItem* fti = static_cast<FolderTreeWidgetItem*>( *it );
318  if (fti) {
319  setFocus();
320  setCurrentItem( fti );
321  }
322 }
323 
324 
325 void KNCollectionView::selectCurrentFolder()
326 {
327  FolderTreeWidgetItem* fti = static_cast<FolderTreeWidgetItem*>( currentItem() );
328  if (fti) {
329  setActive( fti );
330  }
331 }
332 
333 void KNCollectionView::contextMenuEvent( QContextMenuEvent *event )
334 {
335  QTreeWidgetItem *item = itemAt( event->pos() );
336  if(item) {
337  emit contextMenu( item, event->globalPos() );
338  }
339 }
340 
341 
342 
343 void KNCollectionView::paintEvent( QPaintEvent *event )
344 {
345  FolderTreeWidget::paintEvent( event );
346 
347  if ( mDragTargetItem ) {
348  QRect rect = visualItemRect( mDragTargetItem );
349  if ( rect.isValid() ) {
350  QPainter p( viewport() );
351  QBrush brush = KColorScheme( QPalette::Active, KColorScheme::Selection ).decoration( KColorScheme::HoverColor ).color();
352  p.setPen( QPen( brush, 2 ) );
353  p.drawRect( rect );
354  }
355  }
356 }
357 
358 
359 void KNCollectionView::dragEnterEvent( QDragEnterEvent *event )
360 {
361  if ( event->mimeData() && event->mimeData()->hasFormat( "x-knode-drag/folder" ) ) {
362  event->accept();
363  } else {
364  event->ignore();
365  }
366 }
367 
368 void KNCollectionView::dragLeaveEvent( QDragLeaveEvent *event )
369 {
370  FolderTreeWidget::dragLeaveEvent( event );
371 
372  mDragTargetItem = 0;
373  viewport()->update(); // repaint
374 }
375 
376 void KNCollectionView::dragMoveEvent( QDragMoveEvent *event )
377 {
378  // Needed for auto-scrolling
379  FolderTreeWidget::dragMoveEvent( event );
380 
381  handleDragNDropEvent( event, false );
382 }
383 
384 void KNCollectionView::dropEvent( QDropEvent *event )
385 {
386  handleDragNDropEvent( event, true );
387 
388  mDragTargetItem = 0;
389  viewport()->update(); // repaint
390 }
391 
392 void KNCollectionView::handleDragNDropEvent( QDropEvent *event, bool enforceDrop )
393 {
394  QTreeWidgetItem *item = itemAt( event->pos() );
395  KNCollectionViewItem *fti = static_cast<KNCollectionViewItem*>( item );
396  bool accepted = false;
397  if ( fti && fti->collection() && fti->collection()->type()==KNCollection::CTfolder ) {
398  const QMimeData *md = event->mimeData();
399  if( md && md->hasFormat( "x-knode-drag/folder" ) ) {
400  KNFolder::Ptr dest = boost::static_pointer_cast<KNFolder>( fti->collection() );
401  KNFolderManager *folderManager = KNGlobals::self()->folderManager();
402  if ( !enforceDrop ) {
403  // Notify that the move is possible.
404  accepted = folderManager->canMoveFolder( folderManager->currentFolder(), dest );
405  } else {
406  // Informs whether the move succeeded.
407  accepted = folderManager->moveFolder( folderManager->currentFolder(), dest );
408  }
409  }
410  /* TODO: redo drag and drop of articles.
411  else if ( md && md->hasFormat( "message/news" ) ) {
412  if ( !static_cast<KNFolder*>( fti->collection() )->isRootFolder() ) { // don't drop articles on the root folder
413  if ( !enforceDrop ) {
414  accepted = true;
415  } else if(f_olManager->currentFolder()) {
416  if (e->dropAction() == Qt::MoveAction) {
417  KNLocalArticle::List l;
418  getSelectedArticles(l);
419  a_rtManager->moveIntoFolder(l, dest);
420  accepted = true;
421  } else {
422  KNArticle::List l;
423  getSelectedArticles(l);
424  a_rtManager->copyIntoFolder(l, dest);
425  accepted = true;
426  }
427  }
428  else if(g_rpManager->currentGroup()) {
429  KNArticle::List l;
430  getSelectedArticles(l);
431  a_rtManager->copyIntoFolder(l, dest);
432  accepted = true;
433  }
434  }
435  }
436  */
437  }
438 
439  // Trigger an update of the target item (drawing of target's borders)
440  bool repaintTarget = ( mDragTargetItem == item ) /* target changes */
441  || ( !accepted && mDragTargetItem ); /* just entered an invalid target */
442  mDragTargetItem = accepted ? item : 0;
443  if ( repaintTarget ) {
444  viewport()->update();
445  }
446 
447  event->setAccepted( accepted );
448 }
449 
450 QStringList KNCollectionView::mimeTypes() const
451 {
452  QStringList l;
453  l << "x-knode-drag/folder";
454  return l;
455 }
456 
457 void KNCollectionView::startDrag( Qt::DropActions supportedActions )
458 {
459  Q_UNUSED( supportedActions );
460 
461  KNCollectionViewItem *item = static_cast<KNCollectionViewItem*>( currentItem() );
462  // Only folders can be dragged
463  if ( !item || !item->collection() || item->collection()->type()!=KNCollection::CTfolder ) {
464  return;
465  }
466 
467  KNFolder::Ptr folder = boost::static_pointer_cast<KNFolder>( item->collection() );
468 
469  // Cannot drag special folders
470  if ( folder->isRootFolder() || folder->isStandardFolder() ) {
471  return;
472  }
473 
474  QMimeData *mimeData = new QMimeData();
475  const QByteArray id( QString::number( folder->id() ).toLatin1() );
476  mimeData->setData( "x-knode-drag/folder", id );
477 
478  QDrag *drag = new QDrag( this );
479  drag->setMimeData( mimeData );
480  drag->setPixmap( SmallIcon( "folder" ) );
481 
482  drag->exec( Qt::MoveAction );
483 }
484 
485 
486 #include "kncollectionview.moc"
KNCollectionView::selectCurrentFolder
void selectCurrentFolder()
Definition: kncollectionview.cpp:325
KNCollectionView::removeAccount
void removeAccount(KNNntpAccount::Ptr a)
Definition: kncollectionview.cpp:126
KPIM::FolderTreeWidget::addTotalColumn
int addTotalColumn(const QString &headerLabel)
Adds a special "Total" column to this view and returns its logical index.
Definition: foldertreewidget.cpp:261
KNCollectionView::contextMenu
void contextMenu(QTreeWidgetItem *item, const QPoint &position)
This signal is emitted when a context menu should be displayed for item as global position position...
KNCollectionView::addAccount
void addAccount(KNNntpAccount::Ptr a)
Definition: kncollectionview.cpp:109
KNCollectionView::dropEvent
virtual void dropEvent(QDropEvent *event)
Handles actual droping of articles or folder.
Definition: kncollectionview.cpp:384
KPIM::FolderTreeWidgetItem
A folder tree node to be used with FolderTreeWidget.
Definition: foldertreewidget.h:225
KPIM::FolderTreeWidget
A tree widget useful for displaying a tree of folders containing messages.
Definition: foldertreewidget.h:73
KNCollectionView::addPendingFolders
void addPendingFolders()
Definition: kncollectionview.cpp:242
knfolder.h
KNCollectionView::reload
void reload()
Definition: kncollectionview.cpp:270
KNCollectionView::paintEvent
virtual void paintEvent(QPaintEvent *event)
Definition: kncollectionview.cpp:343
QWidget
knaccountmanager.h
KNGlobals::self
static KNGlobals * self()
Return the KNGlobals instance.
Definition: knglobals.cpp:72
kngroupmanager.h
KNFolder::Ptr
boost::shared_ptr< KNFolder > Ptr
Shared pointer to a KNFolder.
Definition: knfolder.h:38
kngroup.h
KNNntpAccount::Ptr
boost::shared_ptr< KNNntpAccount > Ptr
Shared pointer to a KNNntpAccount.
Definition: knnntpaccount.h:62
KPIM::FolderTreeWidget::addUnreadColumn
int addUnreadColumn(const QString &headerLabel)
Adds a special "Unread" column to this view and returns its logical index.
Definition: foldertreewidget.cpp:275
KNCollectionView::decCurrentFolder
void decCurrentFolder()
Definition: kncollectionview.cpp:301
knnntpaccount.h
KNCollectionViewItem::collection
KNCollection::Ptr collection() const
Returns the collection this item represents.
Definition: kncollectionviewitem.h:46
KNCollectionView::reloadAccounts
void reloadAccounts()
Definition: kncollectionview.cpp:147
setCurrentItem
static int setCurrentItem(K3ListBox *box, const QString &s)
Definition: kscoringeditor.cpp:51
KPIM::FolderTreeWidgetItem::FolderType
FolderType
Folder type information Please note that this list should be kept in the order of items that one want...
Definition: foldertreewidget.h:245
KNCollectionView::dragLeaveEvent
virtual void dragLeaveEvent(QDragLeaveEvent *event)
Reimplemented to hide the drop indicator when the drag leave the view.
Definition: kncollectionview.cpp:368
KPIM::TreeWidget::restoreLayout
bool restoreLayout(KConfigGroup &group, const QString &keyName=QString())
Attempts to restore the layout of this tree from the specified key of the specified KConfigGroup...
Definition: treewidget.cpp:91
KNCollectionView::removeGroup
void removeGroup(KNGroup::Ptr g)
Definition: kncollectionview.cpp:170
kncollectionview.h
KNCollectionView::dragEnterEvent
virtual void dragEnterEvent(QDragEnterEvent *event)
Reimplement to only accept MIME types which are accepted in dropEvent.
Definition: kncollectionview.cpp:359
KNCollectionView::setActive
void setActive(QTreeWidgetItem *item)
Selects item and set it the current item.
Definition: kncollectionview.cpp:276
QMimeData
kncollectionviewitem.h
KNFolderManager
Folder manager.
Definition: knfoldermanager.h:28
KNCollectionView::startDrag
virtual void startDrag(Qt::DropActions supportedActions)
Reimplemented to perform the actual drag operations of folders.
Definition: kncollectionview.cpp:457
KNCollectionView::handleDragNDropEvent
void handleDragNDropEvent(QDropEvent *event, bool enforceDrop)
Called by dragMoveEvent() and dropEvent().
Definition: kncollectionview.cpp:392
KPIM::TreeWidget::saveLayout
bool saveLayout(KConfigGroup &group, const QString &keyName=QString()) const
Stores the layout of this tree view to the specified KConfigGroup.
Definition: treewidget.cpp:72
KNCollectionView::~KNCollectionView
~KNCollectionView()
Definition: kncollectionview.cpp:76
QTreeWidgetItem
KNCollectionView::dragMoveEvent
virtual void dragMoveEvent(QDragMoveEvent *event)
Reimplemented to accept the event only when the target folder can be dropped articles or folders...
Definition: kncollectionview.cpp:376
KNCollectionView::addFolder
void addFolder(KNFolder::Ptr f)
Definition: kncollectionview.cpp:188
KNCollectionView::incCurrentFolder
void incCurrentFolder()
Definition: kncollectionview.cpp:313
KNFolderManager::canMoveFolder
bool canMoveFolder(KNFolder::Ptr f, KNFolder::Ptr p)
Returns true if the folder f can be moved under a new parent p.
Definition: knfoldermanager.cpp:199
knglobals.h
KNCollectionView::prevGroup
void prevGroup()
Definition: kncollectionview.cpp:294
KNCollectionView::activateFolder
void activateFolder(KNFolder::Ptr f)
Definition: kncollectionview.cpp:257
KNCollectionView::reloadFolders
void reloadFolders()
Definition: kncollectionview.cpp:232
KNCollectionView::readConfig
void readConfig()
Definition: kncollectionview.cpp:95
knfoldermanager.h
settings.h
KNCollectionView::updateGroup
void updateGroup(KNGroup::Ptr g)
Definition: kncollectionview.cpp:181
KNCollectionView::updateAccount
void updateAccount(KNNntpAccount::Ptr a)
Definition: kncollectionview.cpp:141
KNCollection::CTfolder
Definition: kncollection.h:34
KNCollectionView::contextMenuEvent
virtual void contextMenuEvent(QContextMenuEvent *event)
Emits the signal contextMenu() to display a context menu on items of the view.
Definition: kncollectionview.cpp:333
KNFolder
Representation of a folder.
Definition: knfolder.h:30
KNGlobals::folderManager
KNFolderManager * folderManager()
Returns the folder manager.
Definition: knglobals.cpp:146
KNCollectionView::mimeTypes
virtual QStringList mimeTypes() const
Returns the "x-knode-drag/folder" mime-type for drag&droping of folders within this view...
Definition: kncollectionview.cpp:450
knconfig.h
KNAccountManager
Account manager.
Definition: knaccountmanager.h:33
KNCollectionView::KNCollectionView
KNCollectionView(QWidget *parent)
Definition: kncollectionview.cpp:36
KNCollectionView::writeConfig
void writeConfig()
Definition: kncollectionview.cpp:102
KNCollectionViewItem
Folder tree item.
Definition: kncollectionviewitem.h:25
knGlobals
#define knGlobals
Keep compatibility with the old way.
Definition: knglobals.h:28
KPIM::FolderTreeWidget::labelColumnIndex
int labelColumnIndex() const
Returns the logical index of the "Label" column or -1 if such a column has not been added (yet)...
Definition: foldertreewidget.h:108
KNGroupManager
Group manager.
Definition: kngroupmanager.h:83
KNCollectionView::removeFolder
void removeFolder(KNFolder::Ptr f)
Definition: kncollectionview.cpp:216
KNCollectionView::nextGroup
void nextGroup()
Definition: kncollectionview.cpp:287
KNCollectionView::addGroup
void addGroup(KNGroup::Ptr g)
Definition: kncollectionview.cpp:158
QList
KNGroup::Ptr
boost::shared_ptr< KNGroup > Ptr
Shared pointer to a KNGroup.
Definition: kngroup.h:47
KNCollectionView::updateFolder
void updateFolder(KNFolder::Ptr f)
Definition: kncollectionview.cpp:264
KPIM::FolderTreeWidget::addLabelColumn
int addLabelColumn(const QString &headerLabel)
Adds a special "Label" column to this view and returns its logical index.
Definition: foldertreewidget.cpp:244
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:58:36 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

knode

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

kdepim API Reference

Skip menu "kdepim API Reference"
  • akonadi_next
  • akregator
  • blogilo
  • calendarsupport
  • console
  •   kabcclient
  •   konsolekalendar
  • kaddressbook
  • kalarm
  •   lib
  • kdgantt2
  • kjots
  • kleopatra
  • kmail
  • knode
  • knotes
  • kontact
  • korgac
  • korganizer
  • ktimetracker
  • libkdepim
  • libkleo
  • libkpgp
  • mailcommon
  • messagelist
  • messageviewer

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