Akonadi Contacts

phonewidget.cpp
1 /*
2  This file is part of Contact Editor.
3 
4  SPDX-FileCopyrightText: 2016 eyeOS S.L.U., a Telefonica company, [email protected]
5  SPDX-FileCopyrightText: 2016-2020 Laurent Montel <montel.org>
6 
7  SPDX-License-Identifier: LGPL-2.0-or-later
8 */
9 
10 #include "phonewidget.h"
11 #include "editor/widgets/preferredlineeditwidget.h"
12 #include "phonecomboboxtype.h"
13 
14 #include <KLocalizedString>
15 
16 #include <QHBoxLayout>
17 #include <QToolButton>
18 
19 using namespace ContactEditor;
20 PhoneWidget::PhoneWidget(QWidget *parent)
21  : QWidget(parent)
22  , mPhoneNumberEdit(new PreferredLineEditWidget(this))
23  , mAddButton(new QToolButton(this))
24  , mRemoveButton(new QToolButton(this))
25  , mPhoneType(new PhoneComboBoxType(this))
26 {
27  auto layout = new QHBoxLayout(this);
28  layout->setSpacing(0);
30 
31  mPhoneNumberEdit->setTrapReturnKey(true);
32  mPhoneNumberEdit->setPlaceholderText(i18n("Add a Phone Number"));
33  mPhoneNumberEdit->setObjectName(QStringLiteral("phonenumber"));
34  layout->addWidget(mPhoneNumberEdit);
35  connect(mPhoneNumberEdit, &PreferredLineEditWidget::preferredChanged, this, &PhoneWidget::slotPreferredChanged);
36 
37  mPhoneType->setObjectName(QStringLiteral("phonetype"));
38  layout->addWidget(mPhoneType);
39 
40  mAddButton->setIcon(QIcon::fromTheme(QStringLiteral("list-add")));
41  mAddButton->setToolTip(i18n("Add a Phone Number"));
42  mAddButton->setObjectName(QStringLiteral("addbutton"));
43  connect(mAddButton, &QToolButton::clicked, this, &PhoneWidget::slotAddPhone);
44  layout->addWidget(mAddButton);
45 
46  mRemoveButton->setObjectName(QStringLiteral("removebutton"));
47  mRemoveButton->setToolTip(i18n("Remove Phone Number"));
48  mRemoveButton->setIcon(QIcon::fromTheme(QStringLiteral("list-remove")));
49  connect(mRemoveButton, &QToolButton::clicked, this, &PhoneWidget::slotRemovePhone);
50  layout->addWidget(mRemoveButton);
51 }
52 
53 PhoneWidget::~PhoneWidget() = default;
54 
55 void PhoneWidget::updateAddRemoveButton(bool addButtonEnabled)
56 {
57  mAddButton->setEnabled(addButtonEnabled);
58 }
59 
60 KContacts::PhoneNumber PhoneWidget::storePhone()
61 {
63  number.setNumber(mPhoneNumberEdit->text());
64  KContacts::PhoneNumber::Type currentType = mPhoneType->type();
65  if (mPhoneNumberEdit->preferred()) {
66  currentType |= KContacts::PhoneNumber::Pref;
67  }
68  number.setType(currentType);
69  return number;
70 }
71 
72 void PhoneWidget::loadPhone(const KContacts::PhoneNumber &number)
73 {
74  mPhoneNumberEdit->setText(number.number());
75  KContacts::PhoneNumber::Type currentType = number.type();
76  mPhoneType->setType(number.type() & ~KContacts::PhoneNumber::Pref);
77  mPhoneNumberEdit->setPreferred(currentType & KContacts::PhoneNumber::Pref);
78 }
79 
80 void PhoneWidget::slotAddPhone()
81 {
82  Q_EMIT addWidget(this);
83 }
84 
85 void PhoneWidget::slotRemovePhone()
86 {
87  Q_EMIT removeWidget(this);
88 }
89 
90 void PhoneWidget::clearWidget()
91 {
92  mPhoneNumberEdit->clear();
93  mPhoneType->resetToDefault();
94 }
95 
96 void PhoneWidget::slotPreferredChanged()
97 {
98  Q_EMIT preferredChanged(this);
99 }
100 
101 void PhoneWidget::setPreferred(bool b)
102 {
103  mPhoneNumberEdit->setPreferred(b);
104 }
105 
106 void PhoneWidget::setReadOnly(bool readOnly)
107 {
108  mPhoneNumberEdit->setReadOnly(readOnly);
109  mAddButton->setEnabled(!readOnly);
110  mRemoveButton->setEnabled(!readOnly);
111  mPhoneType->setEnabled(!readOnly);
112 }
QString number(int n, int base)
QLayout * layout() const const
void clicked(bool checked)
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...)
A combobox to select a phone number type.
void addWidget(QWidget *w)
void setContentsMargins(int left, int top, int right, int bottom)
void setSpacing(int)
KIOCORE_EXPORT QString number(KIO::filesize_t size)
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.