[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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.