1 | /* |
2 | Copyright (C) 2009 Omat Holding B.V. <info@omat.nl> |
3 | |
4 | This library is free software; you can redistribute it and/or modify it |
5 | under the terms of the GNU Library General Public License as published by |
6 | the Free Software Foundation; either version 2 of the License, or (at your |
7 | option) any later version. |
8 | |
9 | This library is distributed in the hope that it will be useful, but WITHOUT |
10 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
11 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public |
12 | License for more details. |
13 | |
14 | You should have received a copy of the GNU Library General Public License |
15 | along with this library; see the file COPYING.LIB. If not, write to the |
16 | Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
17 | 02110-1301, USA. |
18 | */ |
19 | |
20 | #ifndef MICROBLOG_STATUSITEM_H |
21 | #define MICROBLOG_STATUSITEM_H |
22 | |
23 | #include "microblog_export.h" |
24 | |
25 | #include <QtCore/QSharedDataPointer> |
26 | #include <QtCore/QByteArray> |
27 | #include <QtCore/QDateTime> |
28 | #include <QtCore/QMetaType> |
29 | |
30 | namespace Microblog |
31 | { |
32 | |
33 | /** |
34 | * @class StatusItem |
35 | * |
36 | * This class is a representation of one Dent or Tweet. It is filled with |
37 | * xml which the REST API from ident.ca or Teitter and parses it and gives |
38 | * back the values. Also include ares some convenience functions. |
39 | * |
40 | * For example to get from an Akonadi::Item to the date of a tweet: |
41 | * @code |
42 | * Akonadi::Item item = itemForIndex( index ); |
43 | * if ( item.hasPayload<Akonadi::StatusItem>() ) { |
44 | * Microblog::StatusItem msg = item.payload<Akonadi::StatusItem>(); |
45 | * return msg.date(); |
46 | * } |
47 | * @endcode |
48 | * |
49 | * @since 4.3 |
50 | */ |
51 | class MICROBLOG_EXPORT StatusItem |
52 | { |
53 | public: |
54 | /** Constructor */ |
55 | StatusItem(); |
56 | |
57 | /** Constructor which takes the XML as argument. The data is parsed |
58 | * instantly, so the other methods of the class are instantly usable. |
59 | */ |
60 | explicit StatusItem( const QByteArray& ); |
61 | |
62 | /** Copy constructor */ |
63 | StatusItem( const StatusItem& ); |
64 | |
65 | /** Destructor */ |
66 | ~StatusItem(); |
67 | |
68 | /** Coparisation operator */ |
69 | StatusItem operator=( const StatusItem& ); |
70 | |
71 | /** The call to set the XML data. After this, the data is parsed |
72 | * instantly, so the other methods of the class are instantly usable. |
73 | */ |
74 | void setData( const QByteArray& ); |
75 | |
76 | /** Returns the unique id as given by the service */ |
77 | qlonglong id() const; |
78 | |
79 | /** Returns the value of a certain key. The keys can be obtained via keys(). |
80 | */ |
81 | QString value( const QString& ) const; |
82 | |
83 | /** Gives the text of the tweet or dent. The result is HTML where links |
84 | * are hrefs and smileys are images. |
85 | */ |
86 | QString text() const; |
87 | |
88 | /** Returns all the keys available */ |
89 | QStringList keys() const; |
90 | |
91 | /** Returns the date of the dent or tweet */ |
92 | QDateTime date() const; |
93 | |
94 | /** Gives the raw xml data of the tweet or dent */ |
95 | QByteArray data() const; |
96 | |
97 | private: |
98 | class Private; |
99 | QSharedDataPointer<Private> d; |
100 | }; |
101 | |
102 | } |
103 | |
104 | #define MICROBLOG_STATUSITEM_METATYPE_DEFINED 1 |
105 | Q_DECLARE_METATYPE( Microblog::StatusItem ) |
106 | |
107 | #endif |
108 | |