1 /* 2 This file is part of the kcalcore library. 3 4 SPDX-FileCopyrightText: 2001-2003 Cornelius Schumacher <schumacher@kde.org> 5 6 SPDX-License-Identifier: LGPL-2.0-or-later 7 */ 8 /** 9 @file 10 This file is part of the API for handling calendar data and 11 defines the Exception class. 12 13 We don't use actual C++ exceptions right now. These classes are currently 14 returned by an error function; but we can build upon them, if/when we start 15 to use C++ exceptions. 16 17 @brief 18 Exception base class. 19 20 @author Cornelius Schumacher \<schumacher@kde.org\> 21 */ 22 23 #ifndef KCALCORE_EXCEPTIONS_H 24 #define KCALCORE_EXCEPTIONS_H 25 26 #include "kcalendarcore_export.h" 27 28 #include <QString> 29 #include <QStringList> 30 31 #include <memory> 32 33 namespace KCalendarCore 34 { 35 class ExceptionPrivate; 36 37 /** 38 Exception base class, currently used as a fancy kind of error code 39 and not as an C++ exception. 40 */ 41 class KCALENDARCORE_EXPORT Exception 42 { 43 public: 44 /** 45 The different types of error codes 46 */ 47 enum ErrorCode { 48 LoadError, /**< Load error */ 49 SaveError, /**< Save error */ 50 ParseErrorIcal, /**< Parse error in libical */ 51 ParseErrorKcal, /**< Parse error in libkcal */ 52 NoCalendar, /**< No calendar component found */ 53 CalVersion1, /**< vCalendar v1.0 detected */ 54 CalVersion2, /**< iCalendar v2.0 detected */ 55 CalVersionUnknown, /**< Unknown calendar format detected */ 56 Restriction, /**< Restriction violation */ 57 UserCancel, /**< User canceled the operation */ 58 NoWritableFound, /**< No writable resource is available */ 59 SaveErrorOpenFile, 60 SaveErrorSaveFile, 61 LibICalError, 62 VersionPropertyMissing, 63 ExpectedCalVersion2, 64 ExpectedCalVersion2Unknown, 65 ParseErrorNotIncidence, 66 ParseErrorEmptyMessage, 67 ParseErrorUnableToParse, 68 ParseErrorMethodProperty, 69 }; 70 71 /** 72 Construct an exception. 73 @param code is the error code. 74 @param arguments is a list of arguments that can be passed 75 to an i18n engine to help build a descriptive message for the user, a common 76 argument is for example the filename where the error occurred. 77 */ 78 explicit Exception(const ErrorCode code, const QStringList &arguments = QStringList()); 79 80 /** 81 Destructor. 82 */ 83 virtual ~Exception(); 84 85 /** 86 Returns the error code. 87 @return The ErrorCode for this exception. 88 */ 89 Q_REQUIRED_RESULT virtual ErrorCode code() const; 90 91 /** 92 Returns the arguments. 93 @return A QStringList with the argument list for this exception. 94 */ 95 Q_REQUIRED_RESULT virtual QStringList arguments() const; 96 97 private: 98 std::unique_ptr<ExceptionPrivate> d; 99 }; 100 101 } // namespace 102 103 #endif 104