Akonadi Contacts

generalinfowidget.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 "generalinfowidget.h"
11 #include "../widgets/imagewidget.h"
12 #include "blogfeedwidget.h"
13 #include "categorieseditwidget.h"
14 #include "mail/maillistwidget.h"
15 #include "messageformattingwidget.h"
16 #include "messaging/messaginglistwidget.h"
17 #include "namewidget.h"
18 #include "nicknamewidget.h"
19 #include "phone/phonelistwidget.h"
20 #include "web/weblistwidget.h"
21 #include <KLocalizedString>
22 #include <KPluginFactory>
23 #include <QHBoxLayout>
24 #include <QLabel>
25 #include <QVBoxLayout>
26 using namespace ContactEditor;
27 
28 GeneralInfoWidget::GeneralInfoWidget(QWidget *parent)
29  : QWidget(parent)
30  , mPhoneListWidget(new PhoneListWidget(this))
31  , mWebListWidget(new WebListWidget(this))
32  , mMessagingListWidget(new MessagingListWidget(this))
33  , mMailListWidget(new MailListWidget(this))
34  , mPhotoWidget(new ImageWidget(ImageWidget::Photo))
35  , mNameWidget(new NameWidget(this))
36  , mNickNameWidget(new NicknameWidget(this))
37  , mBlogFeedWidget(new BlogfeedWidget(this))
38  , mMessageFormattingWidget(new MessageFormattingWidget(this))
39 {
40  auto topLayout = new QHBoxLayout(this);
41 
42  auto photoLayout = new QVBoxLayout;
43  topLayout->addLayout(photoLayout);
44  mPhotoWidget->setObjectName(QStringLiteral("photowidget"));
45  photoLayout->addWidget(mPhotoWidget);
46  photoLayout->addStretch(1);
47 
48  auto leftLayout = new QVBoxLayout;
49  topLayout->addLayout(leftLayout);
50 
51  auto rightLayout = new QVBoxLayout;
52  topLayout->addLayout(rightLayout);
53 
54  mNameWidget->setObjectName(QStringLiteral("namewidget"));
55  leftLayout->addWidget(mNameWidget);
56 
57  mNickNameWidget->setObjectName(QStringLiteral("nicknamewidget"));
58  rightLayout->addWidget(mNickNameWidget);
59 
60  mPhoneListWidget->setObjectName(QStringLiteral("phonelistwidget"));
61  leftLayout->addWidget(mPhoneListWidget);
62 
63  mWebListWidget->setObjectName(QStringLiteral("weblistwidget"));
64  leftLayout->addWidget(mWebListWidget);
65 
66  mMessagingListWidget->setObjectName(QStringLiteral("messaginglistwidget"));
67  rightLayout->addWidget(mMessagingListWidget);
68 
69  mMailListWidget->setObjectName(QStringLiteral("maillistwidget"));
70  rightLayout->addWidget(mMailListWidget);
71 
72  auto categoryWidget = new QWidget(this);
73  auto categoryWidgetLayout = new QVBoxLayout(categoryWidget);
74  categoryWidgetLayout->setContentsMargins({});
75  auto label = new QLabel(i18n("Tags"), this);
76  label->setObjectName(QStringLiteral("categorylabel"));
77  categoryWidgetLayout->addWidget(label);
78 
79  const KPluginMetaData editWidgetPlugin(QStringLiteral("pim" QT_STRINGIFY(QT_VERSION_MAJOR))
80  + QStringLiteral("/akonadi/contacts/plugins/categorieseditwidgetplugin"));
81  const auto result = KPluginFactory::instantiatePlugin<ContactEditor::CategoriesEditAbstractWidget>(editWidgetPlugin, parent);
82 
83  if (result) {
84  mCategoriesWidget = result.plugin;
85  } else {
86  mCategoriesWidget = new CategoriesEditWidget(parent);
87  label->setVisible(false);
88  }
89 
90  mCategoriesWidget->setObjectName(QStringLiteral("categories"));
91  categoryWidgetLayout->addWidget(mCategoriesWidget);
92  leftLayout->addWidget(categoryWidget);
93 
94  mBlogFeedWidget->setObjectName(QStringLiteral("blogfeed"));
95  rightLayout->addWidget(mBlogFeedWidget);
96 
97  mMessageFormattingWidget->setObjectName(QStringLiteral("mMessageFormattingWidget"));
98  leftLayout->addWidget(mMessageFormattingWidget);
99 
100  leftLayout->addStretch(1);
101  rightLayout->addStretch(1);
102 }
103 
104 GeneralInfoWidget::~GeneralInfoWidget() = default;
105 
106 void GeneralInfoWidget::setDisplayType(DisplayNameEditWidget::DisplayType type)
107 {
108  mNameWidget->setDisplayType(type);
109 }
110 
111 DisplayNameEditWidget::DisplayType GeneralInfoWidget::displayType() const
112 {
113  return mNameWidget->displayType();
114 }
115 
116 void GeneralInfoWidget::loadContact(const KContacts::Addressee &contact)
117 {
118  mPhoneListWidget->loadContact(contact);
119  mWebListWidget->loadContact(contact);
120  mMessagingListWidget->loadContact(contact);
121  mMailListWidget->loadContact(contact);
122  mNameWidget->loadContact(contact);
123  mNickNameWidget->loadContact(contact);
124  mBlogFeedWidget->loadContact(contact);
125  mPhotoWidget->loadContact(contact);
126  mCategoriesWidget->loadContact(contact);
127  mMessageFormattingWidget->loadContact(contact);
128 }
129 
130 void GeneralInfoWidget::storeContact(KContacts::Addressee &contact) const
131 {
132  mPhoneListWidget->storeContact(contact);
133  mWebListWidget->storeContact(contact);
134  mMessagingListWidget->storeContact(contact);
135  mMailListWidget->storeContact(contact);
136  mNameWidget->storeContact(contact);
137  mNickNameWidget->storeContact(contact);
138  mBlogFeedWidget->storeContact(contact);
139  mPhotoWidget->storeContact(contact);
140  mCategoriesWidget->storeContact(contact);
141  mMessageFormattingWidget->storeContact(contact);
142 }
143 
144 void GeneralInfoWidget::setReadOnly(bool readOnly)
145 {
146  mPhoneListWidget->setReadOnly(readOnly);
147  mWebListWidget->setReadOnly(readOnly);
148  mMessagingListWidget->setReadOnly(readOnly);
149  mMailListWidget->setReadOnly(readOnly);
150  mNameWidget->setReadOnly(readOnly);
151  mNickNameWidget->setReadOnly(readOnly);
152  mPhotoWidget->setReadOnly(readOnly);
153  mCategoriesWidget->setReadOnly(readOnly);
154  mMessageFormattingWidget->setReadOnly(readOnly);
155  mBlogFeedWidget->setReadOnly(readOnly);
156 }
QWidget(QWidget *parent, Qt::WindowFlags f)
QString i18n(const char *text, const TYPE &arg...)
DisplayType
Describes what the display name should look like.
QString label(StandardShortcut id)
A widget for editing the categories of a contact.
void addLayout(QLayout *layout, int stretch)
QObject * parent() const const
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.