Copyright and license in doxygen format
[accounts-sso:accounts-qt.git] / Accounts / error.h
1 /*
2  * This file is part of libaccounts-qt
3  *
4  * Copyright (C) 2010 Nokia Corporation.
5  *
6  * Contact: Alberto Mardegan <alberto.mardegan@nokia.com>
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public License
10  * version 2.1 as published by the Free Software Foundation.
11  *
12  * This library is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20  * 02110-1301 USA
21  */
22 /*!
23  * @copyright Copyright (C) 2009-2010 Nokia Corporation.
24  * @license LGPL
25  */
26
27 #ifndef ACCOUNTS_ERROR_H
28 #define ACCOUNTS_ERROR_H
29
30 #include <QMetaType>
31 #include <QString>
32
33 #include <Accounts/accountscommon.h>
34
35 extern "C"
36 {
37     typedef struct _GError GError;
38 }
39
40 namespace Accounts {
41
42 /*!
43  * @class Error Base object definition for accounts error handling.
44  */
45 class ACCOUNTS_EXPORT Error
46 {
47 public:
48     /*!
49      * @enum ErrorType Error codes for all the accounts errors.
50      */
51     enum ErrorType {
52         NoError = 0,
53         Unknown,
54         Database,                   /**< Generic database error */
55         Deleted,                    /**< The account object refers to an
56                                       account which has been deleted */
57         DatabaseLocked,             /**< The database is locked */
58         AccountNotFound,            /**< The account couldn't be found */
59     };
60
61     /*!
62      * Basic constructor.
63      */
64     Error(): m_type(NoError), m_message(QString()) { registerType(); }
65
66     /*!
67      * Copy constructor
68      * @param src Error object to be copied.
69      */
70     Error(const Error &src):
71         m_type(src.type()), m_message(src.message()) {}
72
73     /*!
74      * Constructor.
75      * @param type The error's type.
76      * @param message The error's message.
77      */
78     Error(ErrorType type, const QString &message = QString()):
79         m_type(type), m_message(message)
80         { registerType(); }
81
82     /*!
83      * Assignment operator.
84      * @param src The error object to be assigned to this instance.
85      */
86     Error &operator=(const Error &src)
87         { m_type = src.type(); m_message = src.message(); return *this; }
88
89     /*!
90      * Destructor.
91      */
92     virtual ~Error() {}
93
94     /*!
95      * @return the error's type.
96      */
97     ErrorType type() const { return m_type; }
98
99     /*!
100      * @return the error's message.
101      */
102     QString message() const { return m_message; }
103
104 private:
105     // Don't include in docs: \cond
106     friend class Account;
107     friend class Manager;
108     Error(const GError *error);
109
110     void registerType()
111         { qRegisterMetaType<Error>("Accounts::Error"); }
112     // \endcond
113
114 private:
115     // Don't include private data in docs: \cond
116     ErrorType m_type;
117     QString m_message;
118     // \endcond
119 };
120
121 } //namespace
122
123 Q_DECLARE_METATYPE(Accounts::Error)
124
125 #endif // ACCOUNTS_ERROR_H