1 #include <QApplication>
10 #include "qmpwidget.h"
13 class Player
: public QMPwidget
18 Player(const QStringList
&args
, const QString
&url
, QWidget
*parent
= 0)
19 : QMPwidget(parent
), m_url(url
)
21 connect(this, SIGNAL(stateChanged(int)), this, SLOT(stateChanged(int)));
22 QMPwidget::start(args
);
26 void keyPressEvent(QKeyEvent
*event
) {
27 /* Ctrl invokes global behavior */
28 if (event
->modifiers() & Qt::ControlModifier
) {
29 event
->setAccepted(false);
33 /* pass on everything else to parent -- for now */
34 QMPwidget::keyPressEvent(event
);
37 void paintEvent (QPaintEvent
*event
) {
39 QPainter
painter(this);
40 QRect playerRect
= m_widget
->geometry();
41 painter
.setPen(Qt::red
);
42 painter
.drawRect(playerRect
.adjusted(-3,-3,3,3));
48 void stateChanged(int state
) {
49 if (state
== QMPwidget::NotStartedState
)
54 void showEvent(QShowEvent
*event
) {
55 /* FIXME: wait for all players to be ready */
56 if (!event
->spontaneous() && state() == QMPwidget::IdleState
) {
57 QMPwidget::load(m_url
);
65 class PlayerPanel
: public QWidget
70 PlayerPanel(QStringList
& playerArgs
, QString
& file
, QWidget
* parent
)
71 : m_positionLabel(this), m_volumeLabel(this)
75 m_player
= new Player(playerArgs
, file
, this);
76 m_layout
.addWidget(m_player
, 0, 0);
78 m_positionLabel
.setText("foo");
79 m_layout
.addWidget(&m_positionLabel
, 1, 0);
84 Player
* player() { return m_player
; }
89 QLabel m_positionLabel
;
96 class WallPlayerMainWindow
: public QWidget
101 //WallPlayerMainWindow() {}
102 QList
<PlayerPanel
*> m_playerpanels
;
106 void keyPressEvent(QKeyEvent
*event
) {
108 switch (event
->key()) {
110 QApplication::exit();
115 bool atLeastOnePlaying
= false;
117 for (int i
=0; i
<m_playerpanels
.size(); ++i
)
118 if (m_playerpanels
[i
]->player()->state() == QMPwidget::PlayingState
)
119 atLeastOnePlaying
= true;
121 if (atLeastOnePlaying
)
122 for (int i
=0; i
<m_playerpanels
.size(); ++i
)
123 m_playerpanels
[i
]->player()->pause();
125 for (int i
=0; i
<m_playerpanels
.size(); ++i
)
126 m_playerpanels
[i
]->player()->play();
133 int main (int argc
, char **argv
) {
134 QApplication
app(argc
, argv
);
136 WallPlayerMainWindow widget
;
138 QGridLayout
layout(&widget
);
139 widget
.setLayout(&layout
);
141 QStringList appArgs
= QApplication::arguments();
142 QStringList playerArgs
;
143 playerArgs
.append("-vo");
145 if (QSysInfo::WindowsVersion
>= QSysInfo::WV_VISTA
)
146 playerArgs
.append("direct3d,");
148 playerArgs
.append("directx,");
150 playerArgs
.append("xv");
152 playerArgs
.append("-idx");
153 playerArgs
.append("-softvol");
155 playerArgs
.append("-nosound"); // DEBUG
157 for (int i
=0; i
<4; ++i
) {
158 PlayerPanel
* playerPanel
= new PlayerPanel(playerArgs
, appArgs
[i
+1], &widget
);
159 widget
.m_playerpanels
.append(playerPanel
); // FIXME registerPlayer
162 layout
.addWidget(widget
.m_playerpanels
[0], 0, 0);
163 layout
.addWidget(widget
.m_playerpanels
[1], 0, 1);
164 layout
.addWidget(widget
.m_playerpanels
[2], 1, 0);
165 layout
.addWidget(widget
.m_playerpanels
[3], 1, 1);
167 /* TODO color picker */
168 QPalette palette
= widget
.palette();
169 palette
.setColor(QPalette::Window
, Qt::black
);
170 widget
.setPalette(palette
);