Added Search functionality, and fixed navigation
[spotify:spotify.git] / libqspotify / src / qspotifysearchresult.h
1 /****************************************************************************
2 **
3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4 ** All rights reserved.
5 ** Contact: Nokia Corporation (qt-info@nokia.com)
6 **
7 ** This file is part of the QMLify research project.
8 **
9 ** $QT_BEGIN_LICENSE:LGPL$
10 ** No Commercial Usage
11 ** This file contains pre-release code and may not be distributed.
12 ** You may use this file in accordance with the terms and conditions
13 ** contained in the Technology Preview License Agreement accompanying
14 ** this package.
15 **
16 ** GNU Lesser General Public License Usage
17 ** Alternatively, this file may be used under the terms of the GNU Lesser
18 ** General Public License version 2.1 as published by the Free Software
19 ** Foundation and appearing in the file LICENSE.LGPL included in the
20 ** packaging of this file.  Please review the following information to
21 ** ensure the GNU Lesser General Public License version 2.1 requirements
22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23 **
24 ** In addition, as a special exception, Nokia gives you certain additional
25 ** rights.  These rights are described in the Nokia Qt LGPL Exception
26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
27 **
28 ** If you have questions regarding the use of this file, please contact
29 ** Nokia at qt-info@nokia.com.
30 **
31 **
32 **
33 **
34 **
35 **
36 **
37 **
38 ** $QT_END_LICENSE$
39 **
40 ****************************************************************************/
41
42 #ifndef QSPOTIFYSEARCHRESULT_H
43 #define QSPOTIFYSEARCHRESULT_H
44
45 #include "qspotify_global.h"
46 #include "qspotifytrack.h"
47
48 #include <QtCore/QAbstractListModel>
49
50 class QSpotifySearchResultPrivate;
51 class QSpotifySearchResultModelPrivate;
52 struct sp_search;
53
54 class QSPOTIFYSHARED_EXPORT QSpotifySearchResult : public QAbstractListModel
55 {
56     Q_OBJECT
57 public:
58     QSpotifySearchResult(sp_search *searchResult);
59     ~QSpotifySearchResult();
60
61     QString name() const;
62
63     Q_INVOKABLE QSpotifyTrack * at(int i) const ;
64
65     int totalNumberOfTracks() const ;
66
67     int size() const;
68
69     int rowCount(const QModelIndex & parent = QModelIndex()) const;
70     QVariant data(const QModelIndex &index, int role) const;
71
72     Q_INVOKABLE const QString query() const;
73     const QString didYouMean() const;
74
75 private:
76     Q_DECLARE_PRIVATE(QSpotifySearchResult);
77     Q_DISABLE_COPY(QSpotifySearchResult);
78     QSpotifySearchResultPrivate *d_ptr;
79 };
80
81 class QSPOTIFYSHARED_EXPORT QSpotifySearchResultModel : public QAbstractListModel
82 {
83     Q_OBJECT
84 public:
85     QSpotifySearchResultModel();
86     ~QSpotifySearchResultModel();
87
88     void addResult(QSpotifySearchResult *searchResult);
89
90     int rowCount(const QModelIndex & parent = QModelIndex()) const;
91     QVariant data(const QModelIndex &index, int role) const;
92
93     Q_INVOKABLE QSpotifySearchResult *searchResultAt(int index) const;
94
95 signals:
96     void searchCompleted(int index);
97
98 private:
99     Q_DECLARE_PRIVATE(QSpotifySearchResultModel);
100     Q_DISABLE_COPY(QSpotifySearchResultModel);
101     QSpotifySearchResultModelPrivate *d_ptr;
102 };
103                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 #endif // QSPOTIFYSEARCHRESULT_H