Akonadi Contacts

preferredlineeditwidget.cpp
1 /*
2  This file is part of Contact Editor.
3 
4  SPDX-FileCopyrightText: 2016-2023 Laurent Montel <[email protected]>
5 
6  SPDX-License-Identifier: LGPL-2.0-or-later
7 */
8 
9 #include "preferredlineeditwidget.h"
10 #include <KLocalizedString>
11 #include <QAction>
12 
13 using namespace ContactEditor;
14 
15 PreferredLineEditWidget::PreferredLineEditWidget(QWidget *parent)
16  : KLineEdit(parent)
17 {
18  mIconEnabled = QIcon::fromTheme(QStringLiteral("rating"));
19  mIconDisabled = QIcon::fromTheme(QStringLiteral("rating-unrated"));
20  mPreferredAction = addAction(mIconDisabled, QLineEdit::TrailingPosition);
21  mPreferredAction->setObjectName(QStringLiteral("preferredaction"));
22  mPreferredAction->setToolTip(i18n("Set as Preferred"));
23  connect(mPreferredAction, &QAction::triggered, this, &PreferredLineEditWidget::slotPreferredStatusChanged);
24 }
25 
26 PreferredLineEditWidget::~PreferredLineEditWidget() = default;
27 
28 void PreferredLineEditWidget::slotPreferredStatusChanged()
29 {
30  if (isReadOnly()) {
31  return;
32  }
33  mPreferred = !mPreferred;
34  updatePreferredIcon();
35  Q_EMIT preferredChanged(this);
36 }
37 
38 void PreferredLineEditWidget::updatePreferredIcon()
39 {
40  mPreferredAction->setIcon(mPreferred ? mIconEnabled : mIconDisabled);
41 }
42 
43 void PreferredLineEditWidget::setPreferred(bool preferred)
44 {
45  if (mPreferred != preferred) {
46  mPreferred = preferred;
47  updatePreferredIcon();
48  }
49 }
50 
51 bool PreferredLineEditWidget::preferred() const
52 {
53  return mPreferred;
54 }
QIcon fromTheme(const QString &name)
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QString i18n(const char *text, const TYPE &arg...)
void triggered(bool checked)
void addAction(QAction *action)
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Sat Apr 1 2023 04:09:05 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.