-
Notifications
You must be signed in to change notification settings - Fork 367
/
QueryLabel.h
148 lines (116 loc) · 4.21 KB
/
QueryLabel.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
*
* Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org>
*
* Tomahawk is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Tomahawk is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef QUERYLABEL_H
#define QUERYLABEL_H
#include <QFrame>
#include <QTime>
#include <QPen>
#include <QPixmap>
#include "Result.h"
#include "Query.h"
#include "Typedefs.h"
#include "DllMacro.h"
namespace Tomahawk
{
class ContextMenu;
};
class DLLEXPORT QueryLabel : public QFrame
{
Q_OBJECT
public:
enum DisplayType
{
None = 0,
Artist = 1,
Album = 2,
Track = 4,
ArtistAndAlbum = 3,
ArtistAndTrack = 5,
AlbumAndTrack = 6,
Complete = 7
};
explicit QueryLabel( QWidget* parent = 0, Qt::WindowFlags flags = 0 );
explicit QueryLabel( DisplayType type = Complete, QWidget* parent = 0, Qt::WindowFlags flags = 0 );
explicit QueryLabel( const Tomahawk::result_ptr& result, DisplayType type = Complete, QWidget* parent = 0, Qt::WindowFlags flags = 0 );
explicit QueryLabel( const Tomahawk::query_ptr& query, DisplayType type = Complete, QWidget* parent = 0, Qt::WindowFlags flags = 0 );
virtual ~QueryLabel();
QString text() const;
QString track() const;
Tomahawk::result_ptr result() const { return m_result; }
Tomahawk::query_ptr query() const { return m_query; }
Tomahawk::artist_ptr artist() const { return m_artist; }
Tomahawk::album_ptr album() const { return m_album; }
DisplayType type() const { return m_type; }
void setType( DisplayType type ) { m_type = type; }
Qt::Alignment alignment() const;
void setAlignment( Qt::Alignment alignment );
Qt::TextElideMode elideMode() const;
void setElideMode( Qt::TextElideMode mode );
void setTextPen( const QPen& );
QPen textPen() const;
void setExtraContentsMargins( int left, int top, int right, int bottom );
void setJumpLinkVisible( bool visible );
virtual QSize sizeHint() const;
virtual QSize minimumSizeHint() const;
void init();
void updateLabel();
public slots:
void setText( const QString& text );
void setResult( const Tomahawk::result_ptr& result );
void setQuery( const Tomahawk::query_ptr& query );
void setArtist( const Tomahawk::artist_ptr& artist );
void setAlbum( const Tomahawk::album_ptr& album );
signals:
void clicked();
void clickedArtist();
void clickedAlbum();
void clickedTrack();
void textChanged( const QString& text );
void resultChanged( const Tomahawk::result_ptr& result );
void queryChanged( const Tomahawk::query_ptr& query );
protected:
virtual void contextMenuEvent( QContextMenuEvent* event );
virtual void mousePressEvent( QMouseEvent* event );
virtual void mouseReleaseEvent( QMouseEvent* event );
virtual void mouseMoveEvent( QMouseEvent* event );
virtual void leaveEvent( QEvent* event );
virtual void changeEvent( QEvent* event );
virtual void paintEvent( QPaintEvent* event );
virtual void startDrag();
private:
QString smartAppend( QString& text, const QString& appendage ) const;
QTime m_time;
DisplayType m_type;
QString m_text;
Tomahawk::result_ptr m_result;
Tomahawk::query_ptr m_query;
Tomahawk::artist_ptr m_artist;
Tomahawk::album_ptr m_album;
Tomahawk::ContextMenu* m_contextMenu;
Qt::Alignment m_align;
Qt::TextElideMode m_mode;
bool m_useCustomPen;
QPen m_textPen;
DisplayType m_hoverType;
QRect m_hoverArea;
QPoint m_dragPos;
QMargins m_textMargins;
bool m_jumpLinkVisible;
QPixmap m_jumpPixmap;
};
#endif // QUERYLABEL_H