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

kontact

  • sources
  • kde-4.14
  • kdepim
  • kontact
  • plugins
  • summary
summaryview_part.cpp
Go to the documentation of this file.
1 /*
2  This file is part of KDE Kontact.
3 
4  Copyright (C) 2003 Sven Lüppken <sven@kde.org>
5  Copyright (C) 2003 Tobias König <tokoe@kde.org>
6  Copyright (C) 2003 Daniel Molkentin <molkentin@kde.org>
7  Copyright (C) 2008 Allen Winter <winter@kde.org>
8 
9  This library is free software; you can redistribute it and/or
10  modify it under the terms of the GNU Library General Public
11  License as published by the Free Software Foundation; either
12  version 2 of the License, or (at your option) any later version.
13 
14  This library is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17  Library General Public License for more details.
18 
19  You should have received a copy of the GNU Library General Public License
20  along with this library; see the file COPYING.LIB. If not, write to
21  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
22  Boston, MA 02110-1301, USA.
23 */
24 
25 #include "summaryview_part.h"
26 #include "dropwidget.h"
27 
28 #include <libkdepim/misc/broadcaststatus.h>
29 using KPIM::BroadcastStatus;
30 
31 #include <KPIMIdentities/Identity>
32 #include <KPIMIdentities/IdentityManager>
33 
34 #include <KontactInterface/Core>
35 #include <KontactInterface/Plugin>
36 #include <KontactInterface/Summary>
37 
38 #include <KAction>
39 #include <KActionCollection>
40 #include <KCMultiDialog>
41 #include <KComponentData>
42 #include <KConfigGroup>
43 #include <KDialog>
44 #include <KGlobalSettings>
45 #include <KIcon>
46 #include <KLocalizedString>
47 #include <KParts/PartActivateEvent>
48 
49 #include <QApplication>
50 #include <QDate>
51 #include <QHBoxLayout>
52 #include <QLabel>
53 #include <QScrollArea>
54 #include <QTimer>
55 #include <QVBoxLayout>
56 
57 SummaryViewPart::SummaryViewPart( KontactInterface::Core *core, const char *,
58  const KAboutData *aboutData, QObject *parent )
59  : KParts::ReadOnlyPart( parent ), mCore( core ), mFrame( 0 ), mConfigAction( 0 )
60 {
61  setComponentData( KComponentData( aboutData ) );
62 
63  loadLayout();
64 
65  initGUI( core );
66 
67  setDate( QDate::currentDate() );
68  connect( mCore, SIGNAL(dayChanged(QDate)), SLOT(setDate(QDate)) );
69 
70  mConfigAction = new KAction( KIcon( QLatin1String("configure") ), i18n( "&Configure Summary View..." ), this );
71  actionCollection()->addAction( QLatin1String("summaryview_configure"), mConfigAction );
72  connect( mConfigAction, SIGNAL(triggered(bool)), SLOT(slotConfigure()) );
73  mConfigAction->setHelpText( i18n( "Configure the summary view" ) );
74  mConfigAction->setWhatsThis(
75  i18nc( "@info:whatsthis",
76  "Choosing this will show a dialog where you can select which "
77  "summaries you want to see and also allow you to configure "
78  "the summaries to your liking." ) );
79 
80  setXMLFile( QLatin1String("kontactsummary_part.rc") );
81 
82  QTimer::singleShot( 0, this, SLOT(slotTextChanged()) );
83 }
84 
85 SummaryViewPart::~SummaryViewPart()
86 {
87  saveLayout();
88 }
89 
90 bool SummaryViewPart::openFile()
91 {
92  return true;
93 }
94 
95 void SummaryViewPart::partActivateEvent( KParts::PartActivateEvent *event )
96 {
97  // inform the plugins that the part has been activated so that they can
98  // update the displayed information
99  if ( event->activated() && ( event->part() == this ) ) {
100  updateSummaries();
101  }
102 
103  KParts::ReadOnlyPart::partActivateEvent( event );
104 }
105 
106 void SummaryViewPart::updateSummaries()
107 {
108  QMap<QString, KontactInterface::Summary*>::ConstIterator it;
109  QMap<QString, KontactInterface::Summary*>::ConstIterator end(mSummaries.constEnd());
110  for ( it = mSummaries.constBegin(); it != end; ++it ) {
111  it.value()->updateSummary( false );
112  }
113 }
114 
115 void SummaryViewPart::updateWidgets()
116 {
117  mMainWidget->setUpdatesEnabled( false );
118 
119  delete mFrame;
120 
121  KPIMIdentities::IdentityManager idm( true, this );
122  const KPIMIdentities::Identity &id = idm.defaultIdentity();
123 
124  QString currentUser = i18n( "Summary for %1", id.fullName() );
125  mUsernameLabel->setText( QString::fromLatin1( "<b>%1</b>" ).arg( currentUser ) );
126 
127  mSummaries.clear();
128 
129  mFrame = new DropWidget( mMainWidget );
130  connect( mFrame, SIGNAL(summaryWidgetDropped(QWidget*,QWidget*,int)),
131  this, SLOT(summaryWidgetMoved(QWidget*,QWidget*,int)) );
132 
133  mMainLayout->insertWidget( 2, mFrame );
134 
135  QStringList activeSummaries;
136 
137  KConfig config( QLatin1String("kontact_summaryrc") );
138  KConfigGroup grp( &config, QString() );
139  if ( !grp.hasKey( "ActiveSummaries" ) ) {
140  activeSummaries << QLatin1String("kontact_korganizerplugin");
141  activeSummaries << QLatin1String("kontact_todoplugin");
142  activeSummaries << QLatin1String("kontact_specialdatesplugin");
143  activeSummaries << QLatin1String("kontact_kmailplugin");
144  activeSummaries << QLatin1String("kontact_knotesplugin");
145  } else {
146  activeSummaries = grp.readEntry( "ActiveSummaries", QStringList() );
147  }
148 
149  // Collect all summary widgets with a summaryHeight > 0
150  QStringList loadedSummaries;
151 
152  QList<KontactInterface::Plugin*> plugins = mCore->pluginList();
153  QList<KontactInterface::Plugin*>::ConstIterator end = plugins.constEnd();
154  QList<KontactInterface::Plugin*>::ConstIterator it = plugins.constBegin();
155  for ( ; it != end; ++it ) {
156  KontactInterface::Plugin *plugin = *it;
157  if ( !activeSummaries.contains( plugin->identifier() ) ) {
158  continue;
159  }
160 
161  KontactInterface::Summary *summary = plugin->createSummaryWidget( mFrame );
162  if ( summary ) {
163  if ( summary->summaryHeight() > 0 ) {
164  mSummaries.insert( plugin->identifier(), summary );
165 
166  connect( summary, SIGNAL(message(QString)),
167  BroadcastStatus::instance(), SLOT(setStatusMsg(QString)) );
168  connect( summary, SIGNAL(summaryWidgetDropped(QWidget*,QWidget*,int)),
169  this, SLOT(summaryWidgetMoved(QWidget*,QWidget*,int)) );
170 
171  if ( !mLeftColumnSummaries.contains( plugin->identifier() ) &&
172  !mRightColumnSummaries.contains( plugin->identifier() ) ) {
173  mLeftColumnSummaries.append( plugin->identifier() );
174  }
175 
176  loadedSummaries.append( plugin->identifier() );
177  } else {
178  summary->hide();
179  }
180  }
181  }
182 
183  // Remove all unavailable summary widgets
184  {
185  QStringList::Iterator strIt;
186  for ( strIt = mLeftColumnSummaries.begin(); strIt != mLeftColumnSummaries.end(); ++strIt ) {
187  if ( !loadedSummaries.contains( *strIt ) ) {
188  strIt = mLeftColumnSummaries.erase( strIt );
189  --strIt;
190  }
191  }
192  for ( strIt = mRightColumnSummaries.begin(); strIt != mRightColumnSummaries.end(); ++strIt ) {
193  if ( !loadedSummaries.contains( *strIt ) ) {
194  strIt = mRightColumnSummaries.erase( strIt );
195  --strIt;
196  }
197  }
198  }
199 
200  // Add vertical line between the two rows of summary widgets.
201  QFrame *vline = new QFrame( mFrame );
202  vline->setFrameStyle( QFrame::VLine | QFrame::Plain );
203 
204  QHBoxLayout *layout = new QHBoxLayout( mFrame );
205 
206  int margin = 20; // margin width: insert margins so there is space to dnd a
207  // summary when either column is empty. looks nicer too.
208 
209  layout->insertSpacing( 0, margin );
210  mLeftColumn = new QVBoxLayout();
211  layout->addLayout( mLeftColumn );
212  mLeftColumn->setSpacing( KDialog::spacingHint() );
213  layout->addWidget( vline );
214  mRightColumn = new QVBoxLayout();
215  layout->addLayout( mRightColumn );
216  mRightColumn->setSpacing( KDialog::spacingHint() );
217  layout->insertSpacing( -1, margin );
218 
219  QStringList::ConstIterator strIt;
220  QStringList::ConstIterator strEnd(mLeftColumnSummaries.constEnd());
221  for ( strIt = mLeftColumnSummaries.constBegin(); strIt != strEnd; ++strIt ) {
222  if ( mSummaries.contains( *strIt ) ) {
223  mLeftColumn->addWidget( mSummaries[ *strIt ] );
224  }
225  }
226  strEnd = mRightColumnSummaries.constEnd();
227  for ( strIt = mRightColumnSummaries.constBegin(); strIt != strEnd; ++strIt ) {
228  if ( mSummaries.contains( *strIt ) ) {
229  mRightColumn->addWidget( mSummaries[ *strIt ] );
230  }
231  }
232 
233  QSpacerItem *lspacer = new QSpacerItem( 1, 10,
234  QSizePolicy::MinimumExpanding,
235  QSizePolicy::MinimumExpanding );
236  QSpacerItem *rspacer = new QSpacerItem( 1, 10,
237  QSizePolicy::MinimumExpanding,
238  QSizePolicy::MinimumExpanding );
239  mLeftColumn->addSpacerItem( lspacer );
240  mRightColumn->addSpacerItem( rspacer );
241 
242  mFrame->show();
243 
244  mMainWidget->setUpdatesEnabled( true );
245  mMainWidget->update();
246 
247  mLeftColumn->addStretch();
248  mRightColumn->addStretch();
249 }
250 
251 void SummaryViewPart::summaryWidgetMoved( QWidget *target, QWidget *widget, int alignment )
252 {
253  if ( target == widget ) {
254  return;
255  }
256 
257  if ( target == mFrame ) {
258  if ( mLeftColumn->indexOf( widget ) == -1 && mRightColumn->indexOf( widget ) == -1 ) {
259  return;
260  }
261  } else {
262  if ( ( mLeftColumn->indexOf( target ) == -1 && mRightColumn->indexOf( target ) == -1 ) ||
263  ( mLeftColumn->indexOf( widget ) == -1 && mRightColumn->indexOf( widget ) == -1 ) ) {
264  return;
265  }
266  }
267 
268  if ( !QApplication::isRightToLeft() ) {
269  drawLtoR( target, widget, alignment );
270  } else {
271  drawRtoL( target, widget, alignment );
272  }
273 }
274 
275 void SummaryViewPart::drawLtoR( QWidget *target, QWidget *widget, int alignment )
276 {
277  if ( mLeftColumn->indexOf( widget ) != -1 ) {
278  mLeftColumn->removeWidget( widget );
279  mLeftColumnSummaries.removeAll( widgetName( widget ) );
280  } else if ( mRightColumn->indexOf( widget ) != -1 ) {
281  mRightColumn->removeWidget( widget );
282  mRightColumnSummaries.removeAll( widgetName( widget ) );
283  }
284 
285  if ( target == mFrame ) {
286  int pos = 0;
287 
288  if ( alignment & Qt::AlignTop ) {
289  pos = 0;
290  }
291 
292  if ( alignment & Qt::AlignLeft ) {
293  if ( alignment & Qt::AlignBottom ) {
294  pos = mLeftColumnSummaries.count();
295  }
296 
297  mLeftColumn->insertWidget( pos, widget );
298  mLeftColumnSummaries.insert( pos, widgetName( widget ) );
299  } else {
300  if ( alignment & Qt::AlignBottom ) {
301  pos = mRightColumnSummaries.count();
302  }
303 
304  mRightColumn->insertWidget( pos, widget );
305  mRightColumnSummaries.insert( pos, widgetName( widget ) );
306  }
307 
308  mFrame->updateGeometry();
309  return;
310  }
311 
312  int targetPos = mLeftColumn->indexOf( target );
313  if ( targetPos != -1 ) {
314  if ( alignment == Qt::AlignBottom ) {
315  targetPos++;
316  }
317 
318  mLeftColumn->insertWidget( targetPos, widget );
319  mLeftColumnSummaries.insert( targetPos, widgetName( widget ) );
320  } else {
321  targetPos = mRightColumn->indexOf( target );
322 
323  if ( alignment == Qt::AlignBottom ) {
324  targetPos++;
325  }
326 
327  mRightColumn->insertWidget( targetPos, widget );
328  mRightColumnSummaries.insert( targetPos, widgetName( widget ) );
329  }
330  mFrame->updateGeometry();
331 }
332 
333 void SummaryViewPart::drawRtoL( QWidget *target, QWidget *widget, int alignment )
334 {
335  if ( mRightColumn->indexOf( widget ) != -1 ) {
336  mRightColumn->removeWidget( widget );
337  mRightColumnSummaries.removeAll( widgetName( widget ) );
338  } else if ( mLeftColumn->indexOf( widget ) != -1 ) {
339  mLeftColumn->removeWidget( widget );
340  mLeftColumnSummaries.removeAll( widgetName( widget ) );
341  }
342 
343  if ( target == mFrame ) {
344  int pos = 0;
345 
346  if ( alignment & Qt::AlignTop ) {
347  pos = 0;
348  }
349 
350  if ( alignment & Qt::AlignLeft ) {
351  if ( alignment & Qt::AlignBottom ) {
352  pos = mRightColumnSummaries.count();
353  }
354 
355  mRightColumn->insertWidget( pos, widget );
356  mRightColumnSummaries.insert( pos, widgetName( widget ) );
357  } else {
358  if ( alignment & Qt::AlignBottom ) {
359  pos = mLeftColumnSummaries.count();
360  }
361 
362  mLeftColumn->insertWidget( pos, widget );
363  mLeftColumnSummaries.insert( pos, widgetName( widget ) );
364  }
365 
366  mFrame->updateGeometry();
367  return;
368  }
369 
370  int targetPos = mRightColumn->indexOf( target );
371  if ( targetPos != -1 ) {
372  if ( alignment == Qt::AlignBottom ) {
373  targetPos++;
374  }
375 
376  mRightColumn->insertWidget( targetPos, widget );
377  mRightColumnSummaries.insert( targetPos, widgetName( widget ) );
378  } else {
379  targetPos = mLeftColumn->indexOf( target );
380 
381  if ( alignment == Qt::AlignBottom ) {
382  targetPos++;
383  }
384 
385  mLeftColumn->insertWidget( targetPos, widget );
386  mLeftColumnSummaries.insert( targetPos, widgetName( widget ) );
387  }
388  mFrame->updateGeometry();
389 }
390 
391 void SummaryViewPart::slotTextChanged()
392 {
393  emit textChanged( i18n( "What's next?" ) );
394 }
395 
396 void SummaryViewPart::slotAdjustPalette()
397 {
398  if ( !QApplication::isRightToLeft() ) {
399  mMainWidget->setStyleSheet(
400  QLatin1String("#mMainWidget { "
401  " background: palette(base);"
402  " color: palette(text);"
403  " background-image: url(:/summaryview/kontact_bg.png);"
404  " background-position: bottom right;"
405  " background-repeat: no-repeat; }"
406  "QLabel { "
407  " color: palette(text); }"
408  "KUrlLabel { "
409  " color: palette(link); }") );
410  } else {
411  mMainWidget->setStyleSheet(
412  QLatin1String("#mMainWidget { "
413  " background: palette(base);"
414  " color: palette(text);"
415  " background-image: url(:/summaryview/kontact_bg.png);"
416  " background-position: bottom left;"
417  " background-repeat: no-repeat; }"
418  "QLabel { "
419  " color: palette(text); }"
420  "KUrlLabel { "
421  " color: palette(link); }") );
422  }
423 }
424 
425 void SummaryViewPart::setDate( const QDate &newDate )
426 {
427  QString date( QLatin1String("<b>%1</b>") );
428  date = date.arg( KGlobal::locale()->formatDate( newDate ) );
429  mDateLabel->setText( date );
430 }
431 
432 void SummaryViewPart::slotConfigure()
433 {
434  KCMultiDialog dlg( mMainWidget );
435  dlg.setObjectName( QLatin1String("ConfigDialog") );
436  dlg.setModal( true );
437 
438  QStringList modules = configModules();
439  modules.prepend( QLatin1String("kcmkontactsummary.desktop") );
440  connect( &dlg, SIGNAL(configCommitted()),
441  this, SLOT(updateWidgets()) );
442 
443  QStringList::ConstIterator strIt;
444  QStringList::ConstIterator end(modules.constEnd());
445  for ( strIt = modules.constBegin(); strIt != end; ++strIt ) {
446  dlg.addModule( *strIt );
447  }
448 
449  dlg.exec();
450 }
451 
452 QStringList SummaryViewPart::configModules() const
453 {
454  QStringList modules;
455 
456  QMap<QString, KontactInterface::Summary*>::ConstIterator it;
457  QMap<QString, KontactInterface::Summary*>::ConstIterator end(mSummaries.constEnd());
458  for ( it = mSummaries.constBegin(); it != end; ++it ) {
459  QStringList cm = it.value()->configModules();
460  QStringList::ConstIterator strIt;
461  QStringList::ConstIterator strEnd(cm.constEnd());
462  for ( strIt = cm.constBegin(); strIt != strEnd; ++strIt ) {
463  if ( !(*strIt).isEmpty() && !modules.contains( *strIt ) ) {
464  modules.append( *strIt );
465  }
466  }
467  }
468 
469  return modules;
470 }
471 
472 void SummaryViewPart::initGUI( KontactInterface::Core *core )
473 {
474  QScrollArea *sa = new QScrollArea( core );
475 
476  sa->setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff );
477  sa->setFrameStyle( QFrame::StyledPanel | QFrame::Sunken );
478  sa->setWidgetResizable( true );
479 
480  mMainWidget = new QFrame;
481  mMainWidget->setObjectName( QLatin1String("mMainWidget") );
482  sa->setWidget( mMainWidget );
483  mMainWidget->setFocusPolicy( Qt::StrongFocus );
484  setWidget( sa );
485 
486  connect( KGlobalSettings::self(), SIGNAL(kdisplayPaletteChanged()), SLOT(slotAdjustPalette()) );
487  slotAdjustPalette();
488 
489  mMainLayout = new QVBoxLayout( mMainWidget );
490  mMainLayout->setSpacing( KDialog::spacingHint() );
491  mMainLayout->setMargin( KDialog::marginHint() );
492 
493  QHBoxLayout *hbl = new QHBoxLayout();
494  mMainLayout->addItem( hbl );
495  mUsernameLabel = new QLabel( mMainWidget );
496  mDateLabel = new QLabel( mMainWidget );
497  if ( !QApplication::isRightToLeft() ) {
498  mUsernameLabel->setAlignment( Qt::AlignLeft );
499  hbl->addWidget( mUsernameLabel );
500  mDateLabel->setAlignment( Qt::AlignRight );
501  hbl->addWidget( mDateLabel );
502  } else {
503  mDateLabel->setAlignment( Qt::AlignRight );
504  hbl->addWidget( mDateLabel );
505  mUsernameLabel->setAlignment( Qt::AlignLeft );
506  hbl->addWidget( mUsernameLabel );
507  }
508 
509  QFrame *hline = new QFrame( mMainWidget );
510  hline->setFrameStyle( QFrame::HLine | QFrame::Plain );
511  mMainLayout->insertWidget( 1, hline );
512 
513  mFrame = new DropWidget( mMainWidget );
514  mMainLayout->insertWidget( 2, mFrame );
515 
516  connect( mFrame, SIGNAL(summaryWidgetDropped(QWidget*,QWidget*,int)),
517  this, SLOT(summaryWidgetMoved(QWidget*,QWidget*,int)) );
518 
519  updateWidgets();
520 }
521 
522 void SummaryViewPart::loadLayout()
523 {
524  KConfig config( QLatin1String("kontact_summaryrc") );
525  KConfigGroup grp( &config, QString() );
526 
527  if ( !grp.hasKey( "LeftColumnSummaries" ) ) {
528  mLeftColumnSummaries << QLatin1String("kontact_korganizerplugin");
529  mLeftColumnSummaries << QLatin1String("kontact_todoplugin");
530  mLeftColumnSummaries << QLatin1String("kontact_specialdatesplugin");
531  } else {
532  mLeftColumnSummaries = grp.readEntry( "LeftColumnSummaries", QStringList() );
533  }
534 
535  if ( !grp.hasKey( "RightColumnSummaries" ) ) {
536  mRightColumnSummaries << QLatin1String("kontact_kmailplugin");
537  mRightColumnSummaries << QLatin1String("kontact_knotesplugin");
538  } else {
539  mRightColumnSummaries = grp.readEntry( "RightColumnSummaries", QStringList() );
540  }
541 }
542 
543 void SummaryViewPart::saveLayout()
544 {
545  KConfig config( QLatin1String("kontact_summaryrc") );
546  KConfigGroup grp( &config, QString() );
547 
548  grp.writeEntry( "LeftColumnSummaries", mLeftColumnSummaries );
549  grp.writeEntry( "RightColumnSummaries", mRightColumnSummaries );
550 
551  config.sync();
552 }
553 
554 QString SummaryViewPart::widgetName( QWidget *widget ) const
555 {
556  QMap<QString, KontactInterface::Summary*>::ConstIterator it;
557  QMap<QString, KontactInterface::Summary*>::ConstIterator end(mSummaries.constEnd());
558  for ( it = mSummaries.constBegin(); it != end; ++it ) {
559  if ( it.value() == widget ) {
560  return it.key();
561  }
562  }
563 
564  return QString();
565 }
566 
QSpacerItem
SummaryViewPart::SummaryViewPart
SummaryViewPart(KontactInterface::Core *core, const char *widgetName, const KAboutData *aboutData, QObject *parent=0)
Definition: summaryview_part.cpp:57
QWidget::setStyleSheet
void setStyleSheet(const QString &styleSheet)
SummaryViewPart::slotConfigure
void slotConfigure()
Definition: summaryview_part.cpp:432
QWidget
QApplication::isRightToLeft
bool isRightToLeft()
QScrollArea::setWidget
void setWidget(QWidget *widget)
QBoxLayout::insertSpacing
void insertSpacing(int index, int size)
QMap::contains
bool contains(const Key &key) const
QWidget::updateGeometry
void updateGeometry()
QBoxLayout::addSpacerItem
void addSpacerItem(QSpacerItem *spacerItem)
SummaryViewPart::updateWidgets
void updateWidgets()
Definition: summaryview_part.cpp:115
QWidget::setFocusPolicy
void setFocusPolicy(Qt::FocusPolicy policy)
date
time_t date() const
SummaryViewPart::textChanged
void textChanged(const QString &)
QMap::constBegin
const_iterator constBegin() const
QMap
QStringList::contains
bool contains(const QString &str, Qt::CaseSensitivity cs) const
QHBoxLayout
QLabel::setAlignment
void setAlignment(QFlags< Qt::AlignmentFlag >)
QList::erase
iterator erase(iterator pos)
QFrame::setFrameStyle
void setFrameStyle(int style)
QMap::clear
void clear()
QWidget::update
void update()
QLayout::indexOf
virtual int indexOf(QWidget *widget) const
QLayout::removeWidget
void removeWidget(QWidget *widget)
QBoxLayout::addWidget
void addWidget(QWidget *widget, int stretch, QFlags< Qt::AlignmentFlag > alignment)
QList::count
int count(const T &value) const
QList::append
void append(const T &value)
SummaryViewPart::~SummaryViewPart
~SummaryViewPart()
Definition: summaryview_part.cpp:85
QWidget::setUpdatesEnabled
void setUpdatesEnabled(bool enable)
QObject
QAbstractScrollArea::setHorizontalScrollBarPolicy
void setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy)
QBoxLayout::addItem
virtual void addItem(QLayoutItem *item)
QObject::setObjectName
void setObjectName(const QString &name)
QList::removeAll
int removeAll(const T &value)
QMap::constEnd
const_iterator constEnd() const
SummaryViewPart::openFile
virtual bool openFile()
Definition: summaryview_part.cpp:90
QVBoxLayout
QList::Iterator
typedef Iterator
QDate
QLabel::setText
void setText(const QString &)
QString
QList< KontactInterface::Plugin * >
SummaryViewPart::setDate
void setDate(const QDate &newDate)
Definition: summaryview_part.cpp:425
QLayout::setMargin
void setMargin(int margin)
QStringList
QList::end
iterator end()
QScrollArea::setWidgetResizable
void setWidgetResizable(bool resizable)
QFrame
DropWidget
Definition: dropwidget.h:30
QMap::key
const Key key(const T &value) const
KPIM::BroadcastStatus
summaryview_part.h
QLatin1String
QBoxLayout::addStretch
void addStretch(int stretch)
QList::insert
void insert(int i, const T &value)
SummaryViewPart::updateSummaries
void updateSummaries()
Definition: summaryview_part.cpp:106
QDate::currentDate
QDate currentDate()
SummaryViewPart::partActivateEvent
virtual void partActivateEvent(KParts::PartActivateEvent *event)
Definition: summaryview_part.cpp:95
QList::ConstIterator
typedef ConstIterator
dropwidget.h
QString::fromLatin1
QString fromLatin1(const char *str, int size)
QList::prepend
void prepend(const T &value)
QMap::insert
iterator insert(const Key &key, const T &value)
QBoxLayout::insertWidget
void insertWidget(int index, QWidget *widget, int stretch, QFlags< Qt::AlignmentFlag > alignment)
QWidget::show
void show()
SummaryViewPart::slotAdjustPalette
void slotAdjustPalette()
Definition: summaryview_part.cpp:396
QList::constEnd
const_iterator constEnd() const
QList::constBegin
const_iterator constBegin() const
QScrollArea
QLabel
broadcaststatus.h
QString::arg
QString arg(qlonglong a, int fieldWidth, int base, const QChar &fillChar) const
SummaryViewPart::slotTextChanged
void slotTextChanged()
Definition: summaryview_part.cpp:391
QList::begin
iterator begin()
QBoxLayout::setSpacing
void setSpacing(int spacing)
SummaryViewPart::summaryWidgetMoved
void summaryWidgetMoved(QWidget *target, QWidget *widget, int alignment)
Definition: summaryview_part.cpp:251
QBoxLayout::addLayout
void addLayout(QLayout *layout, int stretch)
QMap::value
const T value(const Key &key) const
QTimer::singleShot
singleShot
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:34:11 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kontact

Skip menu "kontact"
  • Main Page
  • Namespace List
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

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
  • pimprint

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