[frameworks/kcalendarcore] /: Add translated enum names for Incidence::secrecy and Incidence::status
Allen Winter <[email protected]>
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git commit f4115a2a43d4d51983f47513f186f02e9ea3000a by Allen Winter, on behalf of Volker Krause.
Committed on 15/08/2026 at 12:16.
Pushed by winterz into branch 'master'.
Add translated enum names for Incidence::secrecy and Incidence::status
Moving here from kcalutils.
M +14 -0 autotests/testincidence.cpp
M +1 -0 autotests/testincidence.h
M +44 -0 src/incidence.cpp
M +33 -0 src/incidence.h
M +7 -0 src/incidence_p.h
https://invent.kde.org/frameworks/kcalendarcore/-/commit/f4115a2a43d4d51983f47513f186f02e9ea3000a
diff --git a/autotests/testincidence.cpp b/autotests/testincidence.cpp
index 80f862522..d0c645b50 100644
--- a/autotests/testincidence.cpp
+++ b/autotests/testincidence.cpp
@@ -12,6 +12,8 @@
#include <QTimeZone>
#include <cmath>
+using namespace Qt::Literals;
+
QTEST_MAIN(IncidenceTest)
Q_DECLARE_METATYPE(KCalendarCore::Incidence::DateTimeRole)
@@ -174,6 +176,18 @@ void IncidenceTest::testGeo()
QCOMPARE(inc.geoLongitude(), INVALID_LATLON);
}
+void IncidenceTest::testStatusName()
+{
+ Event ev;
+ ev.setStatus(Incidence::StatusConfirmed);
+ QVERIFY(!ev.statusName().isEmpty());
+ ev.setCustomStatus(u"My Status"_s);
+ QCOMPARE(ev.status(), Incidence::StatusX);
+ QCOMPARE(ev.statusName(), "My Status"_L1);
+ ev.setStatus(Incidence::StatusNone);
+ QVERIFY(ev.statusName().isEmpty());
+}
+
void IncidenceTest::testRecurrenceTypeChange()
{
QDate dt = QDate::currentDate();
diff --git a/autotests/testincidence.h b/autotests/testincidence.h
index bc336ee09..df4516894 100644
--- a/autotests/testincidence.h
+++ b/autotests/testincidence.h
@@ -22,6 +22,7 @@ private Q_SLOTS:
void testSummaryChange();
void testLocationChange();
void testGeo();
+ void testStatusName();
void testRecurrenceTypeChange();
void testRecurrenceEndTimeChange();
diff --git a/src/incidence.cpp b/src/incidence.cpp
index 5f760315d..b0f5c7f55 100644
--- a/src/incidence.cpp
+++ b/src/incidence.cpp
@@ -855,6 +855,11 @@ QString Incidence::customStatus() const
}
}
+QString Incidence::statusName() const
+{
+ return status() == StatusX ? customStatus() : statusName(status());
+}
+
void Incidence::setSecrecy(Incidence::Secrecy secrecy)
{
if (mReadOnly) {
@@ -1262,4 +1267,43 @@ void Incidence::deserialize(QDataStream &in)
}
}
+QString Incidence::secrecyName(Secrecy secrecy)
+{
+ switch (secrecy) {
+ case Incidence::SecrecyPublic:
+ return IncidencePrivate::tr("Public", "@item incidence access if for everyone");
+ case Incidence::SecrecyPrivate:
+ return IncidencePrivate::tr("Private", "@item incidence access is by owner only");
+ case Incidence::SecrecyConfidential:
+ return IncidencePrivate::tr("Confidential", "@item incidence access is by owner and a controlled group");
+ }
+ return {};
+}
+
+QString Incidence::statusName(Status status)
+{
+ switch (status) {
+ case Incidence::StatusTentative:
+ return IncidencePrivate::tr("Tentative", "@item event is tentative");
+ case Incidence::StatusConfirmed:
+ return IncidencePrivate::tr("Confirmed", "@item event is definite");
+ case Incidence::StatusCompleted:
+ return IncidencePrivate::tr("Completed", "@item to-do is complete");
+ case Incidence::StatusNeedsAction:
+ return IncidencePrivate::tr("Needs-Action", "@item to-do needs action");
+ case Incidence::StatusCanceled:
+ return IncidencePrivate::tr("Canceled", "@item event or to-do is canceled; journal is removed");
+ case Incidence::StatusInProcess:
+ return IncidencePrivate::tr("In-Process", "@item to-do is in process");
+ case Incidence::StatusDraft:
+ return IncidencePrivate::tr("Draft", "@item journal is in draft form");
+ case Incidence::StatusFinal:
+ return IncidencePrivate::tr("Final", "@item journal is in final form");
+ case Incidence::StatusX:
+ case Incidence::StatusNone:
+ break;
+ }
+ return {};
+}
+
#include "moc_incidence.cpp"
diff --git a/src/incidence.h b/src/incidence.h
index 16df93007..1eec0eecb 100644
--- a/src/incidence.h
+++ b/src/incidence.h
@@ -194,6 +194,15 @@ class KCALENDARCORE_EXPORT Incidence : public IncidenceBase, public Recurrence::
*/
Q_PROPERTY(KCalendarCore::Incidence::Status status READ status WRITE setStatus)
+ /*!
+ * \qmlproperty string incidence::statusName
+ */
+
+ /*!
+ * \property KCalendarCore::Incidence::statusName
+ */
+ Q_PROPERTY(QString status READ statusName)
+
/*!
* \qmlproperty list<KCalendarCore::Attachment> incidence::attachments
*/
@@ -824,6 +833,16 @@ public:
*/
Q_REQUIRED_RESULT Status status() const;
+ /*!
+ Returns a human readable and translated representation of the incidence status.
+
+ If the incidence has a custom status set, that is returned instead.
+
+ \sa status()
+ \since 6.30
+ */
+ [[nodiscard]] QString statusName() const;
+
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
// %%%%% Other methods
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1096,6 +1115,20 @@ public:
*/
Q_REQUIRED_RESULT static QStringList mimeTypes();
+ /*!
+ Returns a human readable and translated string for \a secrecy.
+
+ \since 6.30
+ */
+ [[nodiscard]] static QString secrecyName(Secrecy secrecy);
+
+ /*!
+ Returns a human readable and translated string representation of \a status.
+
+ \since 6.30
+ */
+ [[nodiscard]] static QString statusName(Status status);
+
protected:
Incidence(const Incidence &) = delete;
diff --git a/src/incidence_p.h b/src/incidence_p.h
index 5f7dea2fa..6b01b2faa 100644
--- a/src/incidence_p.h
+++ b/src/incidence_p.h
@@ -13,6 +13,8 @@
#include "incidence.h" // For Incidence::RelType, etc.
#include "incidencebase_p.h"
+#include <QCoreApplication>
+
namespace KCalendarCore
{
@@ -35,6 +37,11 @@ public:
virtual bool validStatus(Incidence::Status);
+ static QString tr(const char *s, const char *c = nullptr, int n = -1)
+ {
+ return QCoreApplication::translate("KCalendarCore::IncidencePrivate", s, c, n);
+ }
+
QDateTime mCreated; // creation datetime
QString mDescription; // description string
QString mSummary; // summary string