author | alwin <alwin> | 2005-04-10 22:18:50 (UTC) |
---|---|---|
committer | alwin <alwin> | 2005-04-10 22:18:50 (UTC) |
commit | 840e44417402bbc6048ca5e8ff3dd6be966e753f (patch) (unidiff) | |
tree | 61ca099945cff3c995ddf348149cd2690ee17c97 /noncore/multimedia/opieplayer3/audiowidget.cpp | |
parent | ad2f1bd57cbfb0fdaf4d348ee3a70d3ea370d5d1 (diff) | |
download | opie-840e44417402bbc6048ca5e8ff3dd6be966e753f.zip opie-840e44417402bbc6048ca5e8ff3dd6be966e753f.tar.gz opie-840e44417402bbc6048ca5e8ff3dd6be966e753f.tar.bz2 |
added opieplayer3
this moment not just more than another container around xine like opieplayer2
(and uses a lot of code direct from there)
difference: first it was a testcontainer to find the bugs in player2
now it is a player looks more like kino2 (eg, no stylesheets) so it
has a real resizeable video-display. early stage (saving playlists and so on
doesn't work) - but it can display videos on my C860 in bigger box than this
small stamp like player2 ;)
Diffstat (limited to 'noncore/multimedia/opieplayer3/audiowidget.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/multimedia/opieplayer3/audiowidget.cpp | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/noncore/multimedia/opieplayer3/audiowidget.cpp b/noncore/multimedia/opieplayer3/audiowidget.cpp new file mode 100644 index 0000000..7ba6274 --- a/dev/null +++ b/noncore/multimedia/opieplayer3/audiowidget.cpp | |||
@@ -0,0 +1,125 @@ | |||
1 | #include "audiowidget.h" | ||
2 | #include "../opieplayer2/lib.h" | ||
3 | #include "../opieplayer2/threadutil.h" | ||
4 | |||
5 | #include <opie2/odebug.h> | ||
6 | |||
7 | #include <qlayout.h> | ||
8 | #include <qtextview.h> | ||
9 | #include <qslider.h> | ||
10 | #include <qlabel.h> | ||
11 | |||
12 | AudioWidget::AudioWidget( QWidget * parent, const char * name, WFlags f) | ||
13 | :QWidget(parent,name,f) | ||
14 | { | ||
15 | m_xineLib = 0; | ||
16 | |||
17 | m_MainLayout = new QVBoxLayout(this); | ||
18 | m_MainLayout->setAutoAdd(true); | ||
19 | m_InfoBox = new QTextView(this); | ||
20 | m_PosSlider = new QSlider(QSlider::Horizontal,this); | ||
21 | m_PosSlider->setTickInterval(60); | ||
22 | connect(m_PosSlider,SIGNAL(valueChanged(int)),this,SLOT(slotNewPos(int))); | ||
23 | connect(m_PosSlider,SIGNAL(sliderMoved(int)),this,SLOT(slotNewPos(int))); | ||
24 | connect(m_PosSlider,SIGNAL(sliderPressed()),this,SLOT(sliderPressed())); | ||
25 | connect(m_PosSlider,SIGNAL(sliderReleased()),this,SLOT(sliderReleased())); | ||
26 | m_pressed = false; | ||
27 | m_uppos=0; | ||
28 | } | ||
29 | |||
30 | AudioWidget::~AudioWidget() | ||
31 | { | ||
32 | } | ||
33 | |||
34 | void AudioWidget::slotNewPos(int pos) | ||
35 | { | ||
36 | if (!m_xineLib) return; | ||
37 | if (m_uppos==pos) return; | ||
38 | m_xineLib->seekTo(pos); | ||
39 | } | ||
40 | |||
41 | void AudioWidget::sliderPressed() | ||
42 | { | ||
43 | m_pressed = true; | ||
44 | } | ||
45 | |||
46 | void AudioWidget::sliderReleased() | ||
47 | { | ||
48 | m_pressed = false; | ||
49 | } | ||
50 | |||
51 | void AudioWidget::closeEvent(QCloseEvent*e) | ||
52 | { | ||
53 | odebug << "AudioWidget::closeEvent(QCloseEvent*e)" << oendl; | ||
54 | if (m_xineLib) { | ||
55 | m_xineLib->stop(); | ||
56 | } | ||
57 | QWidget::closeEvent(e); | ||
58 | } | ||
59 | |||
60 | void AudioWidget::playFile(const DocLnk&aLnk,XINE::Lib*aLib) | ||
61 | { | ||
62 | m_current = aLnk; | ||
63 | if (m_xineLib != aLib) { | ||
64 | disconnect(m_xineLib); | ||
65 | m_xineLib = aLib; | ||
66 | } | ||
67 | if (!m_xineLib) { | ||
68 | return; | ||
69 | } | ||
70 | m_uppos=0; | ||
71 | m_PosSlider->setValue(0); | ||
72 | m_xineLib->setShowVideo(false); | ||
73 | m_xineLib->play(m_current.file()); | ||
74 | // title | ||
75 | QString title = m_xineLib->metaInfo(0); | ||
76 | // artist | ||
77 | QString artist = m_xineLib->metaInfo(2); | ||
78 | // album | ||
79 | QString album = m_xineLib->metaInfo(4); | ||
80 | |||
81 | int l = m_xineLib->length(); | ||
82 | m_PosSlider->setRange(0,l); | ||
83 | QString laenge=""; | ||
84 | int h = l/3600; | ||
85 | l-=h*3600; | ||
86 | int m = l/60; | ||
87 | l-=m*60; | ||
88 | if (h>0) { | ||
89 | laenge+=QString("%1 h").arg(h); | ||
90 | } | ||
91 | if (m>0) { | ||
92 | if (!laenge.isEmpty()) laenge+=" "; | ||
93 | laenge+=QString("%1 m").arg(m); | ||
94 | } | ||
95 | if (l>0) { | ||
96 | if (!laenge.isEmpty()) laenge+=" "; | ||
97 | laenge+=QString("%1 s").arg(l); | ||
98 | } | ||
99 | QString text = "<qt>"; | ||
100 | if (artist.length()) { | ||
101 | text+="<H2><center>"+artist+"</center></h2>"; | ||
102 | } | ||
103 | if (title.length()) { | ||
104 | text+="<H2><center>"+title+"</center></h2>"; | ||
105 | } | ||
106 | if (album.length()) { | ||
107 | text+="<H2><center>"+album+"</center></h2>"; | ||
108 | } | ||
109 | text+="<h3><center>"+laenge+"</center></h3>"; | ||
110 | m_InfoBox->setText(text); | ||
111 | } | ||
112 | |||
113 | void AudioWidget::stopPlaying() | ||
114 | { | ||
115 | if (m_xineLib) { | ||
116 | m_xineLib->stop(); | ||
117 | } | ||
118 | } | ||
119 | |||
120 | void AudioWidget::updatePos(int val) | ||
121 | { | ||
122 | if (m_pressed) return; | ||
123 | m_uppos = val; | ||
124 | m_PosSlider->setValue(val); | ||
125 | } | ||