Pimcommon

collectiontypeutil.cpp
1/*
2 SPDX-FileCopyrightText: 2014-2024 Laurent Montel <montel@kde.org>
3
4 SPDX-License-Identifier: LGPL-2.0-or-later
5
6*/
7
8#include "collectiontypeutil.h"
9#include <KLocalizedString>
10
11using namespace PimCommon;
12CollectionTypeUtil::CollectionTypeUtil() = default;
13
14CollectionTypeUtil::~CollectionTypeUtil() = default;
15
16QByteArray CollectionTypeUtil::kolabFolderType()
17{
18 return "/shared/vendor/kolab/folder-type";
19}
20
21QByteArray CollectionTypeUtil::kolabIncidencesFor()
22{
23 return "/shared/vendor/kolab/incidences-for";
24}
25
26QByteArray CollectionTypeUtil::kolabSharedSeen()
27{
28 return "/shared/vendor/cmu/cyrus-imapd/sharedseen";
29}
30
31QString CollectionTypeUtil::folderContentDescription(CollectionTypeUtil::FolderContentsType type)
32{
33 switch (type) {
34 case CollectionTypeUtil::ContentsTypeMail:
35 return i18nc("type of folder content", "Mail");
36 case CollectionTypeUtil::ContentsTypeCalendar:
37 return i18nc("type of folder content", "Calendar");
38 case CollectionTypeUtil::ContentsTypeContact:
39 return i18nc("type of folder content", "Contacts");
40 case CollectionTypeUtil::ContentsTypeNote:
41 return i18nc("type of folder content", "Notes");
42 case CollectionTypeUtil::ContentsTypeTask:
43 return i18nc("type of folder content", "Tasks");
44 case CollectionTypeUtil::ContentsTypeJournal:
45 return i18nc("type of folder content", "Journal");
46 case CollectionTypeUtil::ContentsTypeConfiguration:
47 return i18nc("type of folder content", "Configuration");
48 case CollectionTypeUtil::ContentsTypeFreebusy:
49 return i18nc("type of folder content", "Freebusy");
50 case CollectionTypeUtil::ContentsTypeFile:
51 return i18nc("type of folder content", "Files");
52 default:
53 return i18nc("type of folder content", "Unknown");
54 }
55}
56
57QString CollectionTypeUtil::incidencesForToString(CollectionTypeUtil::IncidencesFor type)
58{
59 switch (type) {
60 case CollectionTypeUtil::IncForNobody:
61 return QStringLiteral("nobody");
62 case CollectionTypeUtil::IncForAdmins:
63 return QStringLiteral("admins");
64 case CollectionTypeUtil::IncForReaders:
65 return QStringLiteral("readers");
66 }
67
68 return {}; // can't happen
69}
70
71CollectionTypeUtil::IncidencesFor CollectionTypeUtil::incidencesForFromString(const QString &string)
72{
73 if (string == QLatin1StringView("nobody")) {
74 return CollectionTypeUtil::IncForNobody;
75 } else if (string == QLatin1StringView("admins")) {
76 return CollectionTypeUtil::IncForAdmins;
77 } else if (string == QLatin1StringView("readers")) {
78 return CollectionTypeUtil::IncForReaders;
79 }
80
81 return CollectionTypeUtil::IncForAdmins; // by default
82}
83
84CollectionTypeUtil::FolderContentsType CollectionTypeUtil::typeFromKolabName(const QByteArray &name)
85{
86 if (name == "task" || name == "task.default") {
87 return CollectionTypeUtil::ContentsTypeTask;
88 }
89 if (name == "event" || name == "event.default") {
90 return CollectionTypeUtil::ContentsTypeCalendar;
91 }
92 if (name == "contact" || name == "contact.default") {
93 return CollectionTypeUtil::ContentsTypeContact;
94 }
95 if (name == "note" || name == "note.default") {
96 return CollectionTypeUtil::ContentsTypeNote;
97 }
98 if (name == "journal" || name == "journal.default") {
99 return CollectionTypeUtil::ContentsTypeJournal;
100 }
101 if (name == "configuration" || name == "configuration.default") {
102 return CollectionTypeUtil::ContentsTypeConfiguration;
103 }
104 if (name == "freebusy" || name == "freebusy.default") {
105 return CollectionTypeUtil::ContentsTypeFreebusy;
106 }
107 if (name == "file" || name == "file.default") {
108 return CollectionTypeUtil::ContentsTypeFile;
109 }
110
111 return CollectionTypeUtil::ContentsTypeMail;
112}
113
114QByteArray CollectionTypeUtil::kolabNameFromType(CollectionTypeUtil::FolderContentsType type)
115{
116 switch (type) {
117 case CollectionTypeUtil::ContentsTypeCalendar:
118 return "event";
119 case CollectionTypeUtil::ContentsTypeContact:
120 return "contact";
121 case CollectionTypeUtil::ContentsTypeNote:
122 return "note";
123 case CollectionTypeUtil::ContentsTypeTask:
124 return "task";
125 case CollectionTypeUtil::ContentsTypeJournal:
126 return "journal";
127 case CollectionTypeUtil::ContentsTypeConfiguration:
128 return "configuration";
129 case CollectionTypeUtil::ContentsTypeFreebusy:
130 return "freebusy";
131 case CollectionTypeUtil::ContentsTypeFile:
132 return "file";
133 default:
134 return {};
135 }
136}
137
138CollectionTypeUtil::FolderContentsType CollectionTypeUtil::contentsTypeFromString(const QString &type)
139{
140 if (type == i18nc("type of folder content", "Mail")) {
141 return CollectionTypeUtil::ContentsTypeMail;
142 }
143 if (type == i18nc("type of folder content", "Calendar")) {
144 return CollectionTypeUtil::ContentsTypeCalendar;
145 }
146 if (type == i18nc("type of folder content", "Contacts")) {
147 return CollectionTypeUtil::ContentsTypeContact;
148 }
149 if (type == i18nc("type of folder content", "Notes")) {
150 return CollectionTypeUtil::ContentsTypeNote;
151 }
152 if (type == i18nc("type of folder content", "Tasks")) {
153 return CollectionTypeUtil::ContentsTypeTask;
154 }
155 if (type == i18nc("type of folder content", "Journal")) {
156 return CollectionTypeUtil::ContentsTypeJournal;
157 }
158 if (type == i18nc("type of folder content", "Configuration")) {
159 return CollectionTypeUtil::ContentsTypeConfiguration;
160 }
161 if (type == i18nc("type of folder content", "Freebusy")) {
162 return CollectionTypeUtil::ContentsTypeFreebusy;
163 }
164 if (type == i18nc("type of folder content", "Files")) {
165 return CollectionTypeUtil::ContentsTypeFile;
166 }
167
168 return CollectionTypeUtil::ContentsTypeMail; // safety return value
169}
170
171QString CollectionTypeUtil::typeNameFromKolabType(const QByteArray &type)
172{
173 if (type == "task" || type == "task.default") {
174 return i18nc("type of folder content", "Tasks");
175 }
176 if (type == "event" || type == "event.default") {
177 return i18nc("type of folder content", "Calendar");
178 }
179 if (type == "contact" || type == "contact.default") {
180 return i18nc("type of folder content", "Contacts");
181 }
182 if (type == "note" || type == "note.default") {
183 return i18nc("type of folder content", "Notes");
184 }
185 if (type == "journal" || type == "journal.default") {
186 return i18nc("type of folder content", "Journal");
187 }
188 if (type == "configuration" || type == "configuration.default") {
189 return i18nc("type of folder content", "Configuration");
190 }
191 if (type == "freebusy" || type == "freebusy.default") {
192 return i18nc("type of folder content", "Freebusy");
193 }
194 if (type == "file" || type == "file.default") {
195 return i18nc("type of folder content", "Files");
196 }
197
198 return i18nc("type of folder content", "Mail");
199}
200
201QString CollectionTypeUtil::iconNameFromContentsType(CollectionTypeUtil::FolderContentsType type)
202{
203 QString iconName;
204 switch (type) {
205 case CollectionTypeUtil::ContentsTypeCalendar:
206 iconName = QStringLiteral("view-calendar");
207 break;
208 case CollectionTypeUtil::ContentsTypeContact:
209 iconName = QStringLiteral("view-pim-contacts");
210 break;
211 case CollectionTypeUtil::ContentsTypeNote:
212 iconName = QStringLiteral("view-pim-notes");
213 break;
214 case CollectionTypeUtil::ContentsTypeTask:
215 iconName = QStringLiteral("view-pim-tasks");
216 break;
217 case CollectionTypeUtil::ContentsTypeJournal:
218 iconName = QStringLiteral("view-pim-journal");
219 break;
220 case CollectionTypeUtil::ContentsTypeConfiguration:
221 iconName = QStringLiteral("configure");
222 break;
223 case CollectionTypeUtil::ContentsTypeFreebusy:
224 iconName = QStringLiteral("view-calendar-agenda");
225 break;
226 case CollectionTypeUtil::ContentsTypeFile:
227 iconName = QStringLiteral("document-open");
228 break;
229 case CollectionTypeUtil::ContentsTypeMail:
230 default:
231 break;
232 }
233
234 return iconName;
235}
QString i18nc(const char *context, const char *text, const TYPE &arg...)
folderdialogacltab.h
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Tue Mar 26 2024 11:17:23 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.