6c78c830ee05b893ed41f294b96f3c06de99cfeb
[vlc.git] / modules / gui / qt4 / components / info_panels.hpp
1 /*****************************************************************************
2  * infopanels.hpp : Panels for the information dialogs
3  ****************************************************************************
4  * Copyright (C) 2006-2007 the VideoLAN team
5  * $Id$
6  *
7  * Authors: ClĂ©ment Stenac <zorglub@videolan.org>
8  *          Jean-Baptiste Kempf <jb@videolan.org>
9  *          Ilkka Ollakka <ileoo@videolan.org>
10  *
11  * This program is free software; you can redistribute it and/or modify
12  * it under the terms of the GNU General Public License as published by
13  * the Free Software Foundation; either version 2 of the License, or
14  * (at your option) any later version.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program; if not, write to the Free Software
23  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
24  *****************************************************************************/
25
26 #ifndef _INFOPANELS_H_
27 #define _INFOPANELS_H_
28
29 #ifdef HAVE_CONFIG_H
30 # include "config.h"
31 #endif
32
33 #include <vlc/vlc.h>
34 #include <vlc_meta.h>
35
36 #include <QWidget>
37 #include <QLabel>
38
39 #ifdef HAVE_LIMITS_H
40 #   include <limits.h>
41 #endif
42
43 #define setSpinBounds( spinbox ) {               \
44     spinbox->setRange( 0, INT_MAX );             \
45     spinbox->setAccelerated( true ) ;            \
46     spinbox->setAlignment( Qt::AlignRight );     \
47     spinbox->setSpecialValueText(""); }
48
49 class QTreeWidget;
50 class QTreeWidgetItem;
51 class QTreeView;
52 class QSpinBox;
53 class QLineEdit;
54
55 class MetaPanel: public QWidget
56 {
57     Q_OBJECT;
58 public:
59     MetaPanel( QWidget *, intf_thread_t * );
60     virtual ~MetaPanel();
61     void saveMeta();
62
63     bool isInEditMode();
64     void setEditMode( bool );
65
66 private:
67     input_item_t *p_input;
68     intf_thread_t *p_intf;
69     bool b_inEditMode;
70
71     QLineEdit *title_text;
72     QLineEdit *artist_text;
73     QLineEdit *genre_text;
74     QLineEdit *copyright_text;
75     QLineEdit *collection_text;
76     QLineEdit *seqnum_text;
77     QLineEdit *description_text;
78 //    QSpinBox *rating_text;
79     QLineEdit *date_text;
80 //    QLineEdit *setting_text;
81     QLineEdit *language_text;
82     QLineEdit *nowplaying_text;
83     QLineEdit *publisher_text;
84 //    QLineEdit *encodedby_text;
85     QLabel *art_cover;
86
87 public slots:
88     void update( input_item_t * );
89     void clear();
90
91 private slots:
92     void enterEditMode();
93
94 signals:
95     void uriSet( QString );
96     void editing();
97 };
98
99 class ExtraMetaPanel: public QWidget
100 {
101     Q_OBJECT;
102 public:
103     ExtraMetaPanel( QWidget *, intf_thread_t * );
104     virtual  ~ExtraMetaPanel() {};
105 private:
106     intf_thread_t *p_intf;
107     QTreeWidget *extraMetaTree;
108 public slots:
109     void update( input_item_t * );
110     void clear();
111 };
112
113 class InputStatsPanel: public QWidget
114 {
115     Q_OBJECT;
116 public:
117     InputStatsPanel( QWidget *, intf_thread_t * );
118     virtual ~InputStatsPanel();
119 private:
120     intf_thread_t *p_intf;
121
122     QTreeWidget *StatsTree;
123     QTreeWidgetItem *input;
124     QTreeWidgetItem *read_media_stat;
125     QTreeWidgetItem *input_bitrate_stat;
126     QTreeWidgetItem *demuxed_stat;
127     QTreeWidgetItem *stream_bitrate_stat;
128
129     QTreeWidgetItem *video;
130     QTreeWidgetItem *vdecoded_stat;
131     QTreeWidgetItem *vdisplayed_stat;
132     QTreeWidgetItem *vlost_frames_stat;
133     QTreeWidgetItem *vfps_stat;
134
135     QTreeWidgetItem *streaming;
136     QTreeWidgetItem *send_stat;
137     QTreeWidgetItem *send_bytes_stat;
138     QTreeWidgetItem *send_bitrate_stat;
139
140     QTreeWidgetItem *audio;
141     QTreeWidgetItem *adecoded_stat;
142     QTreeWidgetItem *aplayed_stat;
143     QTreeWidgetItem *alost_stat;
144
145 public slots:
146     void update( input_item_t * );
147     void clear();
148 };
149
150 class InfoPanel: public QWidget
151 {
152     Q_OBJECT;
153 public:
154     InfoPanel( QWidget *, intf_thread_t * );
155     virtual ~InfoPanel();
156 private:
157     intf_thread_t *p_intf;
158     QTreeWidget *InfoTree;
159 public slots:
160     void update( input_item_t * );
161     void clear();
162 };
163 class ArtCover : public QLabel
164 {
165     Q_OBJECT
166     void mouseDoubleClickEvent( QMouseEvent *event )
167     {
168         fprintf(stderr, "**************************" );
169     }
170 };
171
172 #endif