plugins: changed member order of PluginInfo
[kadu:kadu.git] / kadu-core / plugins / plugin-info.h
1 /*
2  * %kadu copyright begin%
3  * Copyright 2008, 2011 Piotr Galiszewski (piotr.galiszewski@kadu.im)
4  * Copyright 2009, 2012 Wojciech Treter (juzefwt@gmail.com)
5  * Copyright 2003, 2004 Adrian Smarzewski (adrian@kadu.net)
6  * Copyright 2002, 2003, 2004 Tomasz Chiliński (chilek@chilan.com)
7  * Copyright 2008, 2010, 2011 Rafał Malinowski (rafal.przemyslaw.malinowski@gmail.com)
8  * Copyright 2010, 2011 Bartosz Brachaczek (b.brachaczek@gmail.com)
9  * Copyright 2008 Dawid Stawiarski (neeo@kadu.net)
10  * Copyright 2004, 2005, 2006, 2007 Marcin Ślusarz (joi@kadu.net)
11  * %kadu copyright end%
12  *
13  * This program is free software; you can redistribute it and/or
14  * modify it under the terms of the GNU General Public License as
15  * published by the Free Software Foundation; either version 2 of
16  * the License, or (at your option) any later version.
17  *
18  * This program is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21  * GNU General Public License for more details.
22  *
23  * You should have received a copy of the GNU General Public License
24  * along with this program. If not, see <http://www.gnu.org/licenses/>.
25  */
26
27 #pragma once
28
29 #include <QtCore/QString>
30 #include <QtCore/QStringList>
31
32 /**
33  * @addtogroup Plugins
34  * @{
35  */
36
37 /**
38  * @class PluginInfo
39  * @author Rafał 'Vogel' Malinowski
40  * @short Information about plugin loaded from .desc files.
41  * @todo Rewrite to use .desktop files
42  *
43  * This class contains information about an installed plugin. Every installed plugin has
44  * associated .desc file that contains info like plugin author, version ordependencies.
45  * New instances of this class are created with existing file name as paremeters. Otherwise,
46  * object will contain invalid (empty) data.
47  */
48 class PluginInfo
49 {
50
51 public:
52         /**
53          * @author Rafał 'Vogel' Malinowski
54          * @short Creates new object with data loaded from given .desc file.
55          * @param fileName full path to .desc file
56          *
57          * Creates new object with data loaded from given .desc file. File must be present
58          * and valid, otherwise object will contain invalid (empty) data.
59          */
60         static PluginInfo fromFile(QString m_name, const QString &fileName);
61
62         PluginInfo(QString m_name);
63         ~PluginInfo();
64
65
66         QString name() const;
67
68         QString displayName() const;
69
70         QString category() const;
71
72         /**
73          * @author Rafał 'Vogel' Malinowski
74          * @short Returns type of plugin.
75          * @return type of plugin
76          *
77          * Returns type of plugin. In Kadu 0.10.0 only one type of plugin is supported:
78          * Protocol plugin. All plugins that are not protocols should have this field
79          * empty.
80          *
81          * Plugins with type Protocol are activated before all other plugins (see
82          * PluginsManager::activateProtocolPlugins()).
83          */
84         QString type() const;
85
86         /**
87          * @author Rafał 'Vogel' Malinowski
88          * @short Returns description of plugin.
89          * @return description of plugin
90          *
91          * Returns description of plugin. If no description in current system language is available
92          * default one will be used.
93          */
94         QString description() const;
95
96         /**
97          * @author Rafał 'Vogel' Malinowski
98          * @short Returns name of plugin's author.
99          * @return name of plugin's author
100          *
101          * Returns name of plugin's author.
102          */
103         QString author() const;
104
105         /**
106          * @author Rafał 'Vogel' Malinowski
107          * @short Returns plugin's version.
108          * @return plugin's version
109          *
110          * Returns plugin's version.
111          */
112         QString version() const;
113
114         /**
115          * @author Rafał 'Vogel' Malinowski
116          * @short Returns list of dependencies of plugin.
117          * @return list of dependencies of plugin
118          *
119          * Returns list of dependencies of plugin. This list contains names of plugins that have to be
120          * activated before this plugin. If any of plugins in this list is not available or could not
121          * be activated, this plugin wont get activated.
122          */
123         QStringList dependencies() const;
124
125         /**
126          * @author Rafał 'Vogel' Malinowski
127          * @short Returns list of conflicts of plugin.
128          * @return list of conflicts of plugin
129          *
130          * Returns list of conflicts of plugin. This list contains names of plugins and "provides" strings that
131          * that conflicts with this plugin. If any plugin from this list is active or "provides" string that
132          * is in this list, this plugin can not be activated.
133          */
134         QStringList conflicts() const;
135
136         /**
137          * @author Rafał 'Vogel' Malinowski
138          * @short Returns list of featured of plugin.
139          * @return list of conflicts of plugin
140          * @todo consider remove and replacing with Type
141          *
142          * Returns list of features of this plugin. Two active plugins can not have the same string in their
143          * "provides" lists.
144          */
145         QStringList provides() const;
146
147         /**
148          * @author Rafał 'Vogel' Malinowski
149          * @short Returns list of plugins replaced by this one.
150          * @return list of plugins replaced by this one
151          *
152          * Returns list of plugins replaced by this one. If plugin with name from this list was active in previous
153          * run of Kadu and is no longer avilable, this plugin will be activated instead. This allows us to
154          * change name of plugins and to create more generic plugins from less generic.
155          */
156         QStringList replaces() const;
157
158         /**
159          * @author Rafał 'Vogel' Malinowski
160          * @short Returns load by default value for this plugin.
161          * @return load by default value for this plugin
162          *
163          * Returns load by default value for this plugin. If plugin has load by default set
164          * to true and it is new (was not known in previous run of Kadu) it will be activated
165          * automatically on start. This option should be only set for plugins that are very
166          * important, like new protocols plugns or plugins that imports data from older Kadu
167          * version.
168          */
169         bool loadByDefault() const;
170
171 private:
172         QString m_name;
173         QString m_displayName;
174         QString m_category;
175         QString m_type;
176         QString m_description;
177         QString m_author;
178         QString m_version;
179         QStringList m_dependencies;
180         QStringList m_conflicts;
181         QStringList m_provides;
182         QStringList m_replaces;
183         bool m_loadByDefault;
184
185 };
186
187 /**
188  * @}
189  */