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
30namespace 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 */
51class MICROBLOG_EXPORT StatusItem
52{
53public:
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
97private:
98 class Private;
99 QSharedDataPointer<Private> d;
100};
101
102}
103
104#define MICROBLOG_STATUSITEM_METATYPE_DEFINED 1
105Q_DECLARE_METATYPE( Microblog::StatusItem )
106
107#endif
108