PageRenderTime 9ms CodeModel.GetById 1ms app.highlight 5ms RepoModel.GetById 2ms app.codeStats 0ms

/src/libtomahawk/context/ContextWidget.h

http://github.com/tomahawk-player/tomahawk
C++ Header | 93 lines | 54 code | 22 blank | 17 comment | 0 complexity | d4f20dba1aedec598f8ff8a49e8642d4 MD5 | raw file
 1/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
 2 *
 3 *   Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org>
 4 *
 5 *   Tomahawk is free software: you can redistribute it and/or modify
 6 *   it under the terms of the GNU General Public License as published by
 7 *   the Free Software Foundation, either version 3 of the License, or
 8 *   (at your option) any later version.
 9 *
10 *   Tomahawk is distributed in the hope that it will be useful,
11 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
12 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 *   GNU General Public License for more details.
14 *
15 *   You should have received a copy of the GNU General Public License
16 *   along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19#ifndef CONTEXTWIDGET_H
20#define CONTEXTWIDGET_H
21
22#include <QGraphicsView>
23
24#include "DllMacro.h"
25
26#include "Query.h"
27
28class QGraphicsScene;
29class QGraphicsWebView;
30class QGraphicsWidget;
31class QTimeLine;
32
33namespace Tomahawk
34{
35    class ContextPage;
36    class ContextProxyPage;
37}
38
39namespace Ui
40{
41    class ContextWidget;
42}
43
44class DLLEXPORT ContextWidget : public QWidget
45{
46Q_OBJECT
47
48public:
49    ContextWidget( QWidget* parent = 0 );
50    ~ContextWidget();
51
52public slots:
53    void setArtist( const Tomahawk::artist_ptr& artist );
54    void setAlbum( const Tomahawk::album_ptr& album );
55    void setQuery( const Tomahawk::query_ptr& query, bool force = false );
56
57    void toggleSize();
58
59private slots:
60    void onPageFocused();
61
62    void onAnimationStep( int frame );
63    void onAnimationFinished();
64
65protected:
66    void paintEvent( QPaintEvent* e );
67    void resizeEvent( QResizeEvent* e );
68    void changeEvent( QEvent* e );
69
70private:
71    void fadeOut( bool animate );
72
73    void layoutViews( bool animate = true );
74
75    Ui::ContextWidget* ui;
76
77    int m_minHeight;
78    int m_maxHeight;
79    QTimeLine* m_timeLine;
80
81    QGraphicsScene* m_scene;
82    QList<Tomahawk::ContextPage*> m_views;
83    QList<Tomahawk::ContextProxyPage*> m_pages;
84
85    int m_currentView;
86
87    Tomahawk::artist_ptr m_artist;
88    Tomahawk::album_ptr m_album;
89    Tomahawk::query_ptr m_query;
90    bool m_visible;
91};
92
93#endif // CONTEXTWIDGET_H