Branch data Line data Source code
1 : : /* vi: set et sw=4 ts=4 cino=t0,(0: */
2 : : /*
3 : : * This file is part of libaccounts-qt
4 : : *
5 : : * Copyright (C) 2009-2011 Nokia Corporation.
6 : : * Copyright (C) 2012 Canonical Ltd.
7 : : *
8 : : * Contact: Alberto Mardegan <alberto.mardegan@canonical.com>
9 : : *
10 : : * This library is free software; you can redistribute it and/or
11 : : * modify it under the terms of the GNU Lesser General Public License
12 : : * version 2.1 as published by the Free Software Foundation.
13 : : *
14 : : * This library is distributed in the hope that it will be useful, but
15 : : * WITHOUT ANY WARRANTY; without even the implied warranty of
16 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 : : * Lesser General Public License for more details.
18 : : *
19 : : * You should have received a copy of the GNU Lesser General Public
20 : : * License along with this library; if not, write to the Free Software
21 : : * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
22 : : * 02110-1301 USA
23 : : */
24 : :
25 : : #include "provider.h"
26 : :
27 : : #undef signals
28 : : #include <libaccounts-glib/ag-provider.h>
29 : :
30 : :
31 : : using namespace Accounts;
32 : :
33 : : namespace Accounts {
34 : : /*!
35 : : * @class Provider
36 : : * @headerfile provider.h Accounts/Provider
37 : : *
38 : : * @brief Representation of an account provider.
39 : : *
40 : : * @details The Provider object represents an account provider. It can be used
41 : : * to retrieve some basic properties of the provider (such as the name) and to
42 : : * get access to the contents of the XML file which defines it.
43 : : */
44 : : }; // namespace
45 : :
46 : 2 : Provider::Provider(AgProvider *provider, ReferenceMode mode):
47 : 2 : m_provider(provider)
48 : : {
49 : 2 : TRACE();
50 [ + - ][ - + ]: 2 : if (m_provider != 0 && mode == AddReference)
51 : 0 : ag_provider_ref(m_provider);
52 : 2 : }
53 : :
54 : : /*!
55 : : * Construct an invalid provider.
56 : : */
57 : 0 : Provider::Provider():
58 : 0 : m_provider(0)
59 : : {
60 : 0 : }
61 : :
62 : : /*!
63 : : * Copy constructor. Copying a Provider object is very cheap, because the
64 : : * data is shared among copies.
65 : : */
66 : 1 : Provider::Provider(const Provider &other):
67 : 1 : m_provider(other.m_provider)
68 : : {
69 [ + - ]: 1 : if (m_provider != 0)
70 : 1 : ag_provider_ref(m_provider);
71 : 1 : }
72 : :
73 : 0 : Provider &Provider::operator=(const Provider &other)
74 : : {
75 [ # # ]: 0 : if (m_provider == other.m_provider) return *this;
76 [ # # ]: 0 : if (m_provider != 0)
77 : 0 : ag_provider_unref(m_provider);
78 : 0 : m_provider = other.m_provider;
79 [ # # ]: 0 : if (m_provider != 0)
80 : 0 : ag_provider_ref(m_provider);
81 : : return *this;
82 : : }
83 : :
84 : 3 : Provider::~Provider()
85 : : {
86 : 3 : TRACE();
87 : :
88 : 3 : ag_provider_unref(m_provider);
89 : 3 : m_provider = 0;
90 : 3 : }
91 : :
92 : : /*!
93 : : * Check whether this object represents a Provider.
94 : : * @return true if the Provider is a valid one.
95 : : */
96 : 1 : bool Provider::isValid() const
97 : : {
98 : 1 : return m_provider != 0;
99 : : }
100 : :
101 : : /*!
102 : : * Get the name of the provider. This can be used as a unique identifier for
103 : : * this provider.
104 : : * @return The unique name of the provider.
105 : : */
106 : 0 : QString Provider::name() const
107 : : {
108 : 0 : return UTF8(ag_provider_get_name(m_provider));
109 : : }
110 : :
111 : : /*!
112 : : * Get the display name of the provider, untranslated.
113 : : * @return The display name of the provider.
114 : : */
115 : 2 : QString Provider::displayName() const
116 : : {
117 : 2 : return UTF8(ag_provider_get_display_name(m_provider));
118 : : }
119 : :
120 : : /*!
121 : : * @return The name of the translation catalog, which can be used to
122 : : * translate the displayName().
123 : : */
124 : 0 : QString Provider::trCatalog() const
125 : : {
126 : 0 : return ASCII(ag_provider_get_i18n_domain(m_provider));
127 : : }
128 : :
129 : : /*!
130 : : * @return The provider icon name.
131 : : */
132 : 0 : QString Provider::iconName() const
133 : : {
134 : 0 : return ASCII(ag_provider_get_icon_name(m_provider));
135 : : }
136 : :
137 : : /*!
138 : : * @return The DOM of the whole XML provider file.
139 : : */
140 : 0 : const QDomDocument Provider::domDocument() const
141 : : {
142 : : const gchar *data;
143 : :
144 : 0 : ag_provider_get_file_contents(m_provider, &data);
145 : :
146 : 0 : QDomDocument doc;
147 : : QString errorStr;
148 : : int errorLine;
149 : : int errorColumn;
150 [ # # ]: 0 : if (!doc.setContent(QByteArray(data), true,
151 : 0 : &errorStr, &errorLine, &errorColumn))
152 : : {
153 : : QString message(ASCII("Parse error reading account provider file "
154 : 0 : "at line %1, column %2:\n%3"));
155 : 0 : message.arg(errorLine).arg(errorColumn).arg(errorStr);
156 : 0 : qWarning() << __PRETTY_FUNCTION__ << message;
157 : : }
158 : :
159 : 0 : return doc;
160 : : }
161 : :
162 : 0 : AgProvider *Provider::provider() const
163 : : {
164 : 0 : return m_provider;
165 : : }
166 : :
|