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

messagelist

  • sources
  • kde-4.14
  • kdepim
  • messagelist
  • core
  • widgets
quicksearchline.cpp
Go to the documentation of this file.
1  /*
2  Copyright (c) 2014-2015 Montel Laurent <montel@kde.org>
3 
4  This library is free software; you can redistribute it and/or modify it
5  under the terms of the GNU Library General Public License as published by
6  the Free Software Foundation; either version 2 of the License, or (at your
7  option) any later version.
8 
9  This library is distributed in the hope that it will be useful, but WITHOUT
10  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
12  License for more details.
13 
14  You should have received a copy of the GNU Library General Public License
15  along with this library; see the file COPYING.LIB. If not, write to the
16  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
17  02110-1301, USA.
18 
19 */
20 
21 #include "quicksearchline.h"
22 #include "core/settings.h"
23 #include <akonadi/kmime/messagestatus.h>
24 #include "pimcommon/widgets/lineeditwithcompleter.h"
25 #include <KLocalizedString>
26 #include <KLineEdit>
27 #include <KComboBox>
28 #include <KStandardDirs>
29 #include <KIcon>
30 #include <KIconLoader>
31 #include <KPushButton>
32 
33 #include <QToolButton>
34 #include <QHBoxLayout>
35 #include <QPushButton>
36 #include <QButtonGroup>
37 #include <QLabel>
38 #include <QKeyEvent>
39 #include <QSignalMapper>
40 
41 
42 using namespace MessageList::Core;
43 QuickSearchLine::QuickSearchLine(QWidget *parent)
44  : QWidget(parent),
45  mContainsOutboundMessages(false),
46  mFilterStatusMapper(0)
47 {
48  QVBoxLayout *vbox = new QVBoxLayout;
49  vbox->setMargin(0);
50  vbox->setSpacing(0);
51  setLayout(vbox);
52 
53  QWidget *w = new QWidget;
54  QHBoxLayout *hbox = new QHBoxLayout;
55  hbox->setMargin(0);
56  hbox->setSpacing(0);
57  w->setLayout(hbox);
58  vbox->addWidget(w);
59 
60  mLockSearch = new QToolButton( this );
61  mLockSearch->setCheckable( true );
62  mLockSearch->setText( i18nc( "@action:button", "Lock search" ) );
63  mLockSearch->setFocusPolicy(Qt::StrongFocus);
64  mLockSearch->setWhatsThis(
65  i18nc( "@info:whatsthis",
66  "Toggle this button if you want to keep your quick search "
67  "locked when moving to other folders or when narrowing the search "
68  "by message status." ) );
69  slotLockSearchClicked(false);
70  connect( mLockSearch, SIGNAL(toggled(bool)), SLOT(slotLockSearchClicked(bool)));
71  hbox->addWidget( mLockSearch );
72 
73 
74 
75  mQuickSearchFilterWidget = new QWidget;
76  mQuickSearchFilterWidget->setObjectName(QLatin1String("quicksearchfilterwidget"));
77  QHBoxLayout *quickSearchButtonLayout = new QHBoxLayout;
78  mQuickSearchFilterWidget->setLayout(quickSearchButtonLayout);
79  quickSearchButtonLayout->addStretch(0);
80  QLabel *quickLab = new QLabel(i18n("Quick Filter:"));
81  quickSearchButtonLayout->addWidget(quickLab);
82  initializeStatusSearchButton(quickSearchButtonLayout);
83  vbox->addWidget(mQuickSearchFilterWidget);
84 
85  mSearchEdit = new PimCommon::LineEditWithCompleter( this );
86  mSearchEdit->setClickMessage( i18nc( "Search for messages.", "Search" ) );
87  mSearchEdit->setObjectName( QLatin1String( "quicksearch" ) );
88  mSearchEdit->setClearButtonShown( true );
89 
90  connect( mSearchEdit, SIGNAL(textChanged(QString)), this, SLOT(slotSearchEditTextEdited(QString)));
91  connect( mSearchEdit, SIGNAL(clearButtonClicked()), this, SLOT(slotClearButtonClicked()));
92 
93 
94  hbox->addWidget( mSearchEdit );
95 
96  mMoreOptions = new KPushButton(KIcon(QLatin1String("arrow-down-double")), i18n("More..."), this);
97  mMoreOptions->setObjectName(QLatin1String("moreoptions"));
98  mMoreOptions->setFlat(true);
99  mMoreOptions->setCheckable(true);
100  connect( mMoreOptions, SIGNAL(toggled(bool)), SLOT(slotMoreOptionClicked(bool)));
101  hbox->addWidget( mMoreOptions );
102 
103  // The status filter button. Will be populated later, as populateStatusFilterCombo() is virtual
104  mTagFilterCombo = new KComboBox( this ) ;
105  mTagFilterCombo->setMaximumWidth(300);
106  mTagFilterCombo->setMaximumWidth(200);
107  mTagFilterCombo->hide();
108  hbox->addWidget( mTagFilterCombo );
109 
110  //Be disable until we have a storageModel => logical that it's disable.
111  mSearchEdit->setEnabled( false );
112  mTagFilterCombo->setEnabled( false );
113 
114  mExtraOption = new QWidget;
115  mExtraOption->setObjectName(QLatin1String("extraoptions"));
116  hbox = new QHBoxLayout;
117  hbox->setMargin(0);
118  vbox->addWidget(mExtraOption);
119  mExtraOption->setLayout(hbox);
120  mExtraOption->hide();
121 
122  hbox->addStretch(0);
123  QLabel *lab = new QLabel(i18n("Filter message by:"));
124  hbox->addWidget(lab);
125 
126  mSearchEveryWhere = new QPushButton(i18n("Full Message"));
127  mSearchEveryWhere->setObjectName(QLatin1String("full_message"));
128  mSearchEveryWhere->setFlat(true);
129  mSearchEveryWhere->setCheckable(true);
130  mSearchEveryWhere->setChecked(true);
131  connect( mSearchEveryWhere, SIGNAL(clicked()), this, SLOT(slotSearchBy()) );
132  hbox->addWidget(mSearchEveryWhere);
133 
134  mSearchAgainstBody = new QPushButton(i18n("Body"));
135  mSearchAgainstBody->setObjectName(QLatin1String("body"));
136  mSearchAgainstBody->setFlat(true);
137  mSearchAgainstBody->setCheckable(true);
138  connect( mSearchAgainstBody, SIGNAL(clicked()), this, SLOT(slotSearchBy()) );
139  hbox->addWidget(mSearchAgainstBody);
140 
141  mSearchAgainstSubject = new QPushButton(i18n("Subject"));
142  mSearchAgainstSubject->setCheckable(true);
143  mSearchAgainstSubject->setFlat(true);
144  mSearchAgainstSubject->setObjectName(QLatin1String("subject"));
145  connect( mSearchAgainstSubject, SIGNAL(clicked()), this, SLOT(slotSearchBy()) );
146  hbox->addWidget(mSearchAgainstSubject);
147 
148  mSearchAgainstFromOrTo = new QPushButton;
149  changeSearchAgainstFromOrToText();
150  mSearchAgainstFromOrTo->setObjectName(QLatin1String("fromorto"));
151  mSearchAgainstFromOrTo->setCheckable(true);
152  mSearchAgainstFromOrTo->setFlat(true);
153  connect( mSearchAgainstFromOrTo, SIGNAL(clicked()), this, SLOT(slotSearchBy()) );
154  hbox->addWidget(mSearchAgainstFromOrTo);
155 
156  mSearchAgainstBcc = new QPushButton(i18n("Bcc"));
157  mSearchAgainstBcc->setObjectName(QLatin1String("bcc"));
158  mSearchAgainstBcc->setCheckable(true);
159  mSearchAgainstBcc->setFlat(true);
160  connect( mSearchAgainstBcc, SIGNAL(clicked()), this, SLOT(slotSearchBy()) );
161  hbox->addWidget(mSearchAgainstBcc);
162 
163  mQuickSearchFilterWidget->hide();
164 
165  installEventFilter(this);
166  mMoreOptions->installEventFilter(this);
167  mTagFilterCombo->installEventFilter(this);
168  mLockSearch->installEventFilter(this);
169  mSearchEveryWhere->installEventFilter(this);
170  mSearchAgainstBody->installEventFilter(this);
171  mSearchAgainstSubject->installEventFilter(this);
172  mSearchAgainstFromOrTo->installEventFilter(this);
173  mSearchAgainstBcc->installEventFilter(this);
174  mQuickSearchFilterWidget->installEventFilter(this);
175  mExtraOption->installEventFilter(this);
176  changeQuicksearchVisibility(Settings::self()->showQuickSearch());
177 }
178 
179 QuickSearchLine::~QuickSearchLine()
180 {
181 
182 }
183 
184 void QuickSearchLine::slotSearchBy()
185 {
186  QObject *button = sender();
187  if (mSearchEveryWhere != button) {
188  mSearchEveryWhere->setChecked(false);
189  }
190  if (mSearchAgainstBody != button) {
191  mSearchAgainstBody->setChecked(false);
192  }
193  if (mSearchAgainstSubject != button) {
194  mSearchAgainstSubject->setChecked(false);
195  }
196  if (mSearchAgainstFromOrTo != button) {
197  mSearchAgainstFromOrTo->setChecked(false);
198  }
199  if (mSearchAgainstBcc != button) {
200  mSearchAgainstBcc->setChecked(false);
201  }
202 
203  slotSearchOptionChanged();
204 }
205 
206 void QuickSearchLine::slotMoreOptionClicked(bool b)
207 {
208  mQuickSearchFilterWidget->setVisible(b);
209  if (b) {
210  mMoreOptions->setIcon(KIcon(QLatin1String("arrow-up-double")));
211  } else {
212  mMoreOptions->setIcon(KIcon(QLatin1String("arrow-down-double")));
213  }
214 }
215 
216 void QuickSearchLine::slotSearchEditTextEdited(const QString &text)
217 {
218  int minimumStringLength = 3;
219  if (text.startsWith(QLatin1Char('"')) && text.endsWith(QLatin1Char('"'))) {
220  minimumStringLength = 5;
221  }
222  if (!text.trimmed().isEmpty()) {
223  if (text.length() >= minimumStringLength) {
224  mExtraOption->show();
225  Q_EMIT searchEditTextEdited(text);
226  } else {
227  mExtraOption->hide();
228  }
229  } else {
230  slotClearButtonClicked();
231  }
232 }
233 
234 void QuickSearchLine::slotClearButtonClicked()
235 {
236  mExtraOption->hide();
237  mSearchEveryWhere->setChecked(true);
238  if (mTagFilterCombo->isVisible())
239  mTagFilterCombo->setCurrentIndex(0);
240  Q_EMIT clearButtonClicked();
241 }
242 
243 void QuickSearchLine::slotSearchOptionChanged()
244 {
245  Q_EMIT searchOptionChanged();
246 }
247 
248 QuickSearchLine::SearchOptions QuickSearchLine::searchOptions() const
249 {
250  QuickSearchLine::SearchOptions searchOptions;
251  if (mSearchEveryWhere->isChecked()) {
252  searchOptions |= SearchEveryWhere;
253  }
254  if (mSearchAgainstBody->isChecked()) {
255  searchOptions |= SearchAgainstBody;
256  }
257  if (mSearchAgainstSubject->isChecked()) {
258  searchOptions |= SearchAgainstSubject;
259  }
260  if (mSearchAgainstFromOrTo->isChecked()) {
261  if (mContainsOutboundMessages)
262  searchOptions |= SearchAgainstTo;
263  else
264  searchOptions |= SearchAgainstFrom;
265  }
266  if (mSearchAgainstBcc->isChecked()) {
267  searchOptions |= SearchAgainstBcc;
268  }
269  return searchOptions;
270 }
271 
272 void QuickSearchLine::focusQuickSearch(const QString &selectedText)
273 {
274  if (!selectedText.isEmpty()) {
275  mSearchEdit->setText(selectedText);
276  }
277  mSearchEdit->setFocus();
278 }
279 
280 KComboBox *QuickSearchLine::tagFilterComboBox() const
281 {
282  return mTagFilterCombo;
283 }
284 
285 KLineEdit *QuickSearchLine::searchEdit() const
286 {
287  return mSearchEdit;
288 }
289 
290 QToolButton *QuickSearchLine::lockSearch() const
291 {
292  return mLockSearch;
293 }
294 
295 void QuickSearchLine::slotLockSearchClicked( bool locked )
296 {
297  if ( locked ) {
298  mLockSearch->setIcon( KIcon( QLatin1String( "object-locked" ) ) );
299  mLockSearch->setToolTip( i18nc( "@info:tooltip", "Clear the quick search field when changing folders" ) );
300  } else {
301  mLockSearch->setIcon( KIcon( QLatin1String( "object-unlocked" ) ) );
302  mLockSearch->setToolTip( i18nc( "@info:tooltip",
303  "Prevent the quick search field from being cleared when changing folders" ) );
304  }
305 }
306 
307 void QuickSearchLine::resetFilter()
308 {
309  Q_FOREACH(QToolButton *button, mListStatusButton) {
310  button->setChecked(false);
311  }
312  if (mTagFilterCombo->isVisible())
313  mTagFilterCombo->setCurrentIndex( 0 );
314  mLockSearch->setChecked(false);
315  mSearchEveryWhere->setChecked(true);
316  mSearchAgainstBody->setChecked(false);
317  mSearchAgainstSubject->setChecked(false);
318  mSearchAgainstFromOrTo->setChecked(false);
319  mSearchAgainstBcc->setChecked(false);
320 
321  mExtraOption->hide();
322 }
323 
324 void QuickSearchLine::createQuickSearchButton(const QIcon &icon, const QString &text, int value, QLayout *quickSearchButtonLayout)
325 {
326  QToolButton *button = new QToolButton;
327  button->setIcon(icon);
328  button->setText(text);
329  button->setAutoRaise(true);
330  button->setToolTip(text);
331  button->setCheckable(true);
332  button->setChecked(false);
333  button->setProperty("statusvalue", value);
334  mFilterStatusMapper->setMapping(button, value);
335  connect( button, SIGNAL(clicked(bool)), mFilterStatusMapper, SLOT(map()) );
336  quickSearchButtonLayout->addWidget(button);
337  button->installEventFilter(this);
338  button->setFocusPolicy(Qt::StrongFocus);
339  mListStatusButton.append(button);
340 }
341 
342 bool QuickSearchLine::containsOutboundMessages() const
343 {
344  return mContainsOutboundMessages;
345 }
346 
347 void QuickSearchLine::setContainsOutboundMessages(bool containsOutboundMessages)
348 {
349  if (mContainsOutboundMessages != containsOutboundMessages) {
350  mContainsOutboundMessages = containsOutboundMessages;
351  changeSearchAgainstFromOrToText();
352  }
353 }
354 
355 void QuickSearchLine::changeSearchAgainstFromOrToText()
356 {
357  if (mContainsOutboundMessages) {
358  mSearchAgainstFromOrTo->setText(i18n("To"));
359  } else {
360  mSearchAgainstFromOrTo->setText(i18n("From"));
361  }
362 }
363 
364 void QuickSearchLine::initializeStatusSearchButton(QLayout *quickSearchButtonLayout)
365 {
366  //Bug Qt we can't use QButtonGroup + QToolButton + change focus. => use QSignalMapper();
367  mFilterStatusMapper = new QSignalMapper(this);
368  connect(mFilterStatusMapper, SIGNAL(mapped(int)), this, SIGNAL(statusButtonsClicked()));
369 
370  createQuickSearchButton(SmallIcon(QLatin1String( "mail-unread" )), i18nc( "@action:inmenu Status of a message", "Unread" ), Akonadi::MessageStatus::statusUnread().toQInt32(),quickSearchButtonLayout );
371 
372  createQuickSearchButton( SmallIcon(QLatin1String( "mail-replied" )),
373  i18nc( "@action:inmenu Status of a message", "Replied" ),
374  Akonadi::MessageStatus::statusReplied().toQInt32(), quickSearchButtonLayout );
375 
376  createQuickSearchButton( SmallIcon(QLatin1String( "mail-forwarded" )),
377  i18nc( "@action:inmenu Status of a message", "Forwarded" ),
378  Akonadi::MessageStatus::statusForwarded().toQInt32(), quickSearchButtonLayout );
379 
380  createQuickSearchButton( SmallIcon(QLatin1String( "emblem-important" )),
381  i18nc( "@action:inmenu Status of a message", "Important"),
382  Akonadi::MessageStatus::statusImportant().toQInt32(), quickSearchButtonLayout );
383 
384  createQuickSearchButton( SmallIcon(QLatin1String( "mail-task" )),
385  i18nc( "@action:inmenu Status of a message", "Action Item" ),
386  Akonadi::MessageStatus::statusToAct().toQInt32(), quickSearchButtonLayout );
387 
388  createQuickSearchButton( QIcon( KStandardDirs::locate( "data", QLatin1String( "messagelist/pics/mail-thread-watch.png" ) ) ),
389  i18nc( "@action:inmenu Status of a message", "Watched" ),
390  Akonadi::MessageStatus::statusWatched().toQInt32(), quickSearchButtonLayout );
391 
392  createQuickSearchButton( QIcon( KStandardDirs::locate( "data", QLatin1String( "messagelist/pics/mail-thread-ignored.png" ) ) ),
393  i18nc( "@action:inmenu Status of a message", "Ignored" ),
394  Akonadi::MessageStatus::statusIgnored().toQInt32(), quickSearchButtonLayout );
395 
396  createQuickSearchButton( SmallIcon(QLatin1String( "mail-attachment" )),
397  i18nc( "@action:inmenu Status of a message", "Has Attachment" ),
398  Akonadi::MessageStatus::statusHasAttachment().toQInt32(), quickSearchButtonLayout );
399 
400  createQuickSearchButton( SmallIcon(QLatin1String( "mail-invitation" )),
401  i18nc( "@action:inmenu Status of a message", "Has Invitation" ),
402  Akonadi::MessageStatus::statusHasInvitation().toQInt32(), quickSearchButtonLayout );
403 
404  createQuickSearchButton( SmallIcon(QLatin1String( "mail-mark-junk" )),
405  i18nc( "@action:inmenu Status of a message", "Spam" ),
406  Akonadi::MessageStatus::statusSpam().toQInt32(), quickSearchButtonLayout );
407 
408  createQuickSearchButton( SmallIcon(QLatin1String( "mail-mark-notjunk" )),
409  i18nc( "@action:inmenu Status of a message", "Ham" ),
410  Akonadi::MessageStatus::statusHam().toQInt32(), quickSearchButtonLayout );
411 }
412 
413 QList<Akonadi::MessageStatus> QuickSearchLine::status() const
414 {
415  QList<Akonadi::MessageStatus> lstStatus;
416 
417  Q_FOREACH(QToolButton *button, mListStatusButton) {
418  if (button->isChecked()) {
419  Akonadi::MessageStatus status;
420  status.fromQInt32( static_cast< qint32 >( button->property("statusvalue").toInt() ));
421  lstStatus.append(status);
422  }
423  }
424  return lstStatus;
425 }
426 
427 void QuickSearchLine::updateComboboxVisibility()
428 {
429  mTagFilterCombo->setVisible(!mSearchEdit->isHidden() && mTagFilterCombo->count());
430 }
431 
432 bool QuickSearchLine::eventFilter(QObject *object, QEvent *e)
433 {
434  const bool shortCutOverride = (e->type() == QEvent::ShortcutOverride);
435  if (shortCutOverride) {
436  e->accept();
437  return true;
438  }
439  return QWidget::eventFilter(object,e);
440 }
441 
442 void QuickSearchLine::changeQuicksearchVisibility(bool show)
443 {
444  mSearchEdit->setVisible( show );
445  mTagFilterCombo->setVisible( show && mTagFilterCombo->count());
446  mLockSearch->setVisible( show );
447  mMoreOptions->setVisible( show );
448 }
quicksearchline.h
MessageList::Core::QuickSearchLine::statusButtonsClicked
void statusButtonsClicked()
KPushButton
QEvent
QWidget
QEvent::type
Type type() const
MessageList::Core::QuickSearchLine::QuickSearchLine
QuickSearchLine(QWidget *parent=0)
Definition: quicksearchline.cpp:43
QWidget::setFocusPolicy
void setFocusPolicy(Qt::FocusPolicy policy)
QObject::sender
QObject * sender() const
QLayout
MessageList::Core::QuickSearchLine::containsOutboundMessages
bool containsOutboundMessages() const
Definition: quicksearchline.cpp:342
MessageList::Core::QuickSearchLine::changeQuicksearchVisibility
void changeQuicksearchVisibility(bool show)
Definition: quicksearchline.cpp:442
MessageList::Core::QuickSearchLine::searchEditTextEdited
void searchEditTextEdited(const QString &)
QWidget::setVisible
virtual void setVisible(bool visible)
QHBoxLayout
MessageList::Core::QuickSearchLine::updateComboboxVisibility
void updateComboboxVisibility()
Definition: quicksearchline.cpp:427
MessageList::Core::QuickSearchLine::focusQuickSearch
void focusQuickSearch(const QString &selectedText)
Definition: quicksearchline.cpp:272
QPushButton::setFlat
void setFlat(bool)
MessageList::Core::QuickSearchLine::searchEdit
KLineEdit * searchEdit() const
Definition: quicksearchline.cpp:285
MessageList::Core::QuickSearchLine::searchOptions
SearchOptions searchOptions() const
Definition: quicksearchline.cpp:248
QAbstractButton::setIcon
void setIcon(const QIcon &icon)
MessageList::Core::QuickSearchLine::eventFilter
bool eventFilter(QObject *object, QEvent *e)
Definition: quicksearchline.cpp:432
MessageList::Core::QuickSearchLine::SearchAgainstBody
Definition: quicksearchline.h:45
MessageList::Core::QuickSearchLine::SearchAgainstSubject
Definition: quicksearchline.h:46
QSignalMapper::setMapping
void setMapping(QObject *sender, int id)
QBoxLayout::addWidget
void addWidget(QWidget *widget, int stretch, QFlags< Qt::AlignmentFlag > alignment)
QList::append
void append(const T &value)
QObject::property
QVariant property(const char *name) const
QWidget::setLayout
void setLayout(QLayout *layout)
QObject::installEventFilter
void installEventFilter(QObject *filterObj)
QVariant::toInt
int toInt(bool *ok) const
QObject
QObject::setObjectName
void setObjectName(const QString &name)
MessageList::Core::QuickSearchLine::searchOptionChanged
void searchOptionChanged()
QString::isEmpty
bool isEmpty() const
QString::trimmed
QString trimmed() const
QString::startsWith
bool startsWith(const QString &s, Qt::CaseSensitivity cs) const
MessageList::Core::QuickSearchLine::resetFilter
void resetFilter()
Definition: quicksearchline.cpp:307
QVBoxLayout
QString::endsWith
bool endsWith(const QString &s, Qt::CaseSensitivity cs) const
QObject::eventFilter
virtual bool eventFilter(QObject *watched, QEvent *event)
QAbstractButton::setCheckable
void setCheckable(bool)
QString
QList< Akonadi::MessageStatus >
QWidget::hide
void hide()
QToolButton::setAutoRaise
void setAutoRaise(bool enable)
QLayout::setMargin
void setMargin(int margin)
QLayout::addWidget
void addWidget(QWidget *w)
MessageList::Core::QuickSearchLine::SearchAgainstTo
Definition: quicksearchline.h:49
QToolButton
QEvent::accept
void accept()
MessageList::Core::QuickSearchLine::SearchAgainstFrom
Definition: quicksearchline.h:47
QLatin1Char
MessageList::Core::QuickSearchLine::status
QList< Akonadi::MessageStatus > status() const
Definition: quicksearchline.cpp:413
MessageList::Core::QuickSearchLine::setContainsOutboundMessages
void setContainsOutboundMessages(bool containsOutboundMessages)
Definition: quicksearchline.cpp:347
MessageList::Core::QuickSearchLine::lockSearch
QToolButton * lockSearch() const
Definition: quicksearchline.cpp:290
QAbstractButton::setChecked
void setChecked(bool)
QWidget::setWhatsThis
void setWhatsThis(const QString &)
MessageList::Core::QuickSearchLine::SearchEveryWhere
Definition: quicksearchline.h:44
QLatin1String
QBoxLayout::addStretch
void addStretch(int stretch)
QWidget::QWidget
QWidget(QWidget *parent, QFlags< Qt::WindowType > f)
MessageList::Core::QuickSearchLine::SearchAgainstBcc
Definition: quicksearchline.h:48
KComboBox
QString::length
int length() const
QAbstractButton::setText
void setText(const QString &text)
QPushButton
QObject::setProperty
bool setProperty(const char *name, const QVariant &value)
QWidget::show
void show()
MessageList::Core::QuickSearchLine::~QuickSearchLine
~QuickSearchLine()
Definition: quicksearchline.cpp:179
MessageList::Core::QuickSearchLine::clearButtonClicked
void clearButtonClicked()
QWidget::setToolTip
void setToolTip(const QString &)
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QLabel
QSignalMapper
QtConcurrent::mapped
QFuture< T > mapped(const Sequence &sequence, MapFunction function)
QBoxLayout::setSpacing
void setSpacing(int spacing)
MessageList::Core::QuickSearchLine::tagFilterComboBox
KComboBox * tagFilterComboBox() const
Definition: quicksearchline.cpp:280
QIcon
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:32:01 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

messagelist

Skip menu "messagelist"
  • Main Page
  • Namespace List
  • Namespace Members
  • 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