author | zecke <zecke> | 2004-03-14 11:21:03 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-03-14 11:21:03 (UTC) |
commit | ced17a6b39a2b4e282b5912dbb58262d4ad2b6d1 (patch) (unidiff) | |
tree | 171a164f98398128f906f647b47d2d4d2f2cb513 | |
parent | 6b5ec807e25094979f5631a3a46baf7415326d8a (diff) | |
download | opie-ced17a6b39a2b4e282b5912dbb58262d4ad2b6d1.zip opie-ced17a6b39a2b4e282b5912dbb58262d4ad2b6d1.tar.gz opie-ced17a6b39a2b4e282b5912dbb58262d4ad2b6d1.tar.bz2 |
Use ODP namespace
-rw-r--r-- | noncore/multimedia/opieplayer2/audiowidget.cpp | 1 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer2/audiowidget.h | 4 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer2/main.cpp | 4 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer2/playlistwidget.cpp | 3 | ||||
-rw-r--r-- | noncore/multimedia/showimg/main.cpp | 2 | ||||
-rw-r--r-- | noncore/multimedia/showimg/showimg.cpp | 5 |
6 files changed, 13 insertions, 6 deletions
diff --git a/noncore/multimedia/opieplayer2/audiowidget.cpp b/noncore/multimedia/opieplayer2/audiowidget.cpp index 452117c..28a42eb 100644 --- a/noncore/multimedia/opieplayer2/audiowidget.cpp +++ b/noncore/multimedia/opieplayer2/audiowidget.cpp | |||
@@ -1,230 +1,231 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | 3 | ||
4 | Copyright (c) 2002 Max Reiss <harlekin@handhelds.org> | 4 | Copyright (c) 2002 Max Reiss <harlekin@handhelds.org> |
5 | Copyright (c) 2002 L. Potter <ljp@llornkcor.com> | 5 | Copyright (c) 2002 L. Potter <ljp@llornkcor.com> |
6 | Copyright (c) 2002 Holger Freyther <zecke@handhelds.org> | 6 | Copyright (c) 2002 Holger Freyther <zecke@handhelds.org> |
7 | =. | 7 | =. |
8 | .=l. | 8 | .=l. |
9 | .>+-= | 9 | .>+-= |
10 | _;:, .> :=|. This program is free software; you can | 10 | _;:, .> :=|. This program is free software; you can |
11 | .> <`_, > . <= redistribute it and/or modify it under | 11 | .> <`_, > . <= redistribute it and/or modify it under |
12 | :`=1 )Y*s>-.-- : the terms of the GNU General Public | 12 | :`=1 )Y*s>-.-- : the terms of the GNU General Public |
13 | .="- .-=="i, .._ License as published by the Free Software | 13 | .="- .-=="i, .._ License as published by the Free Software |
14 | - . .-<_> .<> Foundation; either version 2 of the License, | 14 | - . .-<_> .<> Foundation; either version 2 of the License, |
15 | ._= =} : or (at your option) any later version. | 15 | ._= =} : or (at your option) any later version. |
16 | .%`+i> _;_. | 16 | .%`+i> _;_. |
17 | .i_,=:_. -<s. This program is distributed in the hope that | 17 | .i_,=:_. -<s. This program is distributed in the hope that |
18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
19 | : .. .:, . . . without even the implied warranty of | 19 | : .. .:, . . . without even the implied warranty of |
20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
22 | ..}^=.= = ; Library General Public License for more | 22 | ..}^=.= = ; Library General Public License for more |
23 | ++= -. .` .: details. | 23 | ++= -. .` .: details. |
24 | : = ...= . :.=- | 24 | : = ...= . :.=- |
25 | -. .:....=;==+<; You should have received a copy of the GNU | 25 | -. .:....=;==+<; You should have received a copy of the GNU |
26 | -_. . . )=. = Library General Public License along with | 26 | -_. . . )=. = Library General Public License along with |
27 | -- :-=` this library; see the file COPYING.LIB. | 27 | -- :-=` this library; see the file COPYING.LIB. |
28 | If not, write to the Free Software Foundation, | 28 | If not, write to the Free Software Foundation, |
29 | Inc., 59 Temple Place - Suite 330, | 29 | Inc., 59 Temple Place - Suite 330, |
30 | Boston, MA 02111-1307, USA. | 30 | Boston, MA 02111-1307, USA. |
31 | 31 | ||
32 | */ | 32 | */ |
33 | 33 | ||
34 | 34 | ||
35 | #include "audiowidget.h" | 35 | #include "audiowidget.h" |
36 | 36 | ||
37 | #include <qpe/qpeapplication.h> | 37 | #include <qpe/qpeapplication.h> |
38 | 38 | ||
39 | using namespace Opie::Ui; | ||
39 | namespace | 40 | namespace |
40 | { | 41 | { |
41 | 42 | ||
42 | const int xo = -2; // movable x offset | 43 | const int xo = -2; // movable x offset |
43 | const int yo = 22; // movable y offset | 44 | const int yo = 22; // movable y offset |
44 | 45 | ||
45 | const MediaWidget::SkinButtonInfo skinInfo[] = | 46 | const MediaWidget::SkinButtonInfo skinInfo[] = |
46 | { | 47 | { |
47 | { MediaWidget::Play, "play", MediaWidget::ToggleButton }, | 48 | { MediaWidget::Play, "play", MediaWidget::ToggleButton }, |
48 | { MediaWidget::Stop, "stop", MediaWidget::NormalButton }, | 49 | { MediaWidget::Stop, "stop", MediaWidget::NormalButton }, |
49 | { MediaWidget::Next, "next", MediaWidget::NormalButton }, | 50 | { MediaWidget::Next, "next", MediaWidget::NormalButton }, |
50 | { MediaWidget::Previous, "prev", MediaWidget::NormalButton }, | 51 | { MediaWidget::Previous, "prev", MediaWidget::NormalButton }, |
51 | { MediaWidget::VolumeUp, "up", MediaWidget::NormalButton }, | 52 | { MediaWidget::VolumeUp, "up", MediaWidget::NormalButton }, |
52 | { MediaWidget::VolumeDown, "down", MediaWidget::NormalButton }, | 53 | { MediaWidget::VolumeDown, "down", MediaWidget::NormalButton }, |
53 | { MediaWidget::Loop, "loop", MediaWidget::ToggleButton }, | 54 | { MediaWidget::Loop, "loop", MediaWidget::ToggleButton }, |
54 | { MediaWidget::PlayList, "playlist", MediaWidget::NormalButton }, | 55 | { MediaWidget::PlayList, "playlist", MediaWidget::NormalButton }, |
55 | { MediaWidget::Forward, "forward", MediaWidget::NormalButton }, | 56 | { MediaWidget::Forward, "forward", MediaWidget::NormalButton }, |
56 | { MediaWidget::Back, "back", MediaWidget::NormalButton } | 57 | { MediaWidget::Back, "back", MediaWidget::NormalButton } |
57 | }; | 58 | }; |
58 | 59 | ||
59 | const uint buttonCount = sizeof( skinInfo ) / sizeof( skinInfo[ 0 ] ); | 60 | const uint buttonCount = sizeof( skinInfo ) / sizeof( skinInfo[ 0 ] ); |
60 | 61 | ||
61 | void changeTextColor( QWidget * w) { | 62 | void changeTextColor( QWidget * w) { |
62 | QPalette p = w->palette(); | 63 | QPalette p = w->palette(); |
63 | p.setBrush( QColorGroup::Background, QColor( 167, 212, 167 ) ); | 64 | p.setBrush( QColorGroup::Background, QColor( 167, 212, 167 ) ); |
64 | p.setBrush( QColorGroup::Base, QColor( 167, 212, 167 ) ); | 65 | p.setBrush( QColorGroup::Base, QColor( 167, 212, 167 ) ); |
65 | w->setPalette( p ); | 66 | w->setPalette( p ); |
66 | } | 67 | } |
67 | 68 | ||
68 | } | 69 | } |
69 | 70 | ||
70 | AudioWidget::AudioWidget( PlayListWidget &playList, MediaPlayerState &mediaPlayerState, QWidget* parent, const char* name) : | 71 | AudioWidget::AudioWidget( PlayListWidget &playList, MediaPlayerState &mediaPlayerState, QWidget* parent, const char* name) : |
71 | 72 | ||
72 | MediaWidget( playList, mediaPlayerState, parent, name ), songInfo( this ), slider( Qt::Horizontal, this ), time( this ), | 73 | MediaWidget( playList, mediaPlayerState, parent, name ), songInfo( this ), slider( Qt::Horizontal, this ), time( this ), |
73 | audioSliderBeingMoved( false ) | 74 | audioSliderBeingMoved( false ) |
74 | { | 75 | { |
75 | setCaption( tr("OpiePlayer") ); | 76 | setCaption( tr("OpiePlayer") ); |
76 | 77 | ||
77 | loadSkin(); | 78 | loadSkin(); |
78 | 79 | ||
79 | connect( &mediaPlayerState, SIGNAL( loopingToggled(bool) ), this, SLOT( setLooping(bool) ) ); | 80 | connect( &mediaPlayerState, SIGNAL( loopingToggled(bool) ), this, SLOT( setLooping(bool) ) ); |
80 | connect( &mediaPlayerState, SIGNAL( isSeekableToggled(bool) ), this, SLOT( setSeekable(bool) ) ); | 81 | connect( &mediaPlayerState, SIGNAL( isSeekableToggled(bool) ), this, SLOT( setSeekable(bool) ) ); |
81 | 82 | ||
82 | connect( this, SIGNAL( forwardClicked() ), this, SLOT( skipFor() ) ); | 83 | connect( this, SIGNAL( forwardClicked() ), this, SLOT( skipFor() ) ); |
83 | connect( this, SIGNAL( backClicked() ), this, SLOT( skipBack() ) ); | 84 | connect( this, SIGNAL( backClicked() ), this, SLOT( skipBack() ) ); |
84 | connect( this, SIGNAL( forwardReleased() ), this, SLOT( stopSkip() ) ); | 85 | connect( this, SIGNAL( forwardReleased() ), this, SLOT( stopSkip() ) ); |
85 | connect( this, SIGNAL( backReleased() ), this, SLOT( stopSkip() ) ); | 86 | connect( this, SIGNAL( backReleased() ), this, SLOT( stopSkip() ) ); |
86 | 87 | ||
87 | // Intialise state | 88 | // Intialise state |
88 | setLength( mediaPlayerState.length() ); | 89 | setLength( mediaPlayerState.length() ); |
89 | setPosition( mediaPlayerState.position() ); | 90 | setPosition( mediaPlayerState.position() ); |
90 | setLooping( mediaPlayerState.isFullscreen() ); | 91 | setLooping( mediaPlayerState.isFullscreen() ); |
91 | // setPaused( mediaPlayerState->paused() ); | 92 | // setPaused( mediaPlayerState->paused() ); |
92 | setPlaying( mediaPlayerState.isPlaying() ); | 93 | setPlaying( mediaPlayerState.isPlaying() ); |
93 | } | 94 | } |
94 | 95 | ||
95 | AudioWidget::~AudioWidget() { | 96 | AudioWidget::~AudioWidget() { |
96 | 97 | ||
97 | // mediaPlayerState->setPlaying(false); | 98 | // mediaPlayerState->setPlaying(false); |
98 | } | 99 | } |
99 | 100 | ||
100 | MediaWidget::GUIInfo AudioWidget::guiInfo() | 101 | MediaWidget::GUIInfo AudioWidget::guiInfo() |
101 | { | 102 | { |
102 | return GUIInfo( QString::null /* infix */, ::skinInfo, ::buttonCount ); | 103 | return GUIInfo( QString::null /* infix */, ::skinInfo, ::buttonCount ); |
103 | } | 104 | } |
104 | 105 | ||
105 | void AudioWidget::resizeEvent( QResizeEvent *e ) { | 106 | void AudioWidget::resizeEvent( QResizeEvent *e ) { |
106 | int h = height(); | 107 | int h = height(); |
107 | int w = width(); | 108 | int w = width(); |
108 | 109 | ||
109 | songInfo.setGeometry( QRect( 2, 2, w - 4, 20 ) ); | 110 | songInfo.setGeometry( QRect( 2, 2, w - 4, 20 ) ); |
110 | slider.setFixedWidth( w - 110 ); | 111 | slider.setFixedWidth( w - 110 ); |
111 | slider.setGeometry( QRect( 15, h - 22, w - 90, 20 ) ); | 112 | slider.setGeometry( QRect( 15, h - 22, w - 90, 20 ) ); |
112 | slider.setBackgroundOrigin( QWidget::ParentOrigin ); | 113 | slider.setBackgroundOrigin( QWidget::ParentOrigin ); |
113 | time.setGeometry( QRect( w - 85, h - 30, 70, 20 ) ); | 114 | time.setGeometry( QRect( w - 85, h - 30, 70, 20 ) ); |
114 | 115 | ||
115 | upperLeftOfButtonMask.rx() = ( w - buttonUpImage.width() ) / 2; | 116 | upperLeftOfButtonMask.rx() = ( w - buttonUpImage.width() ) / 2; |
116 | upperLeftOfButtonMask.ry() = (( h - buttonUpImage.height() ) / 2) - 10; | 117 | upperLeftOfButtonMask.ry() = (( h - buttonUpImage.height() ) / 2) - 10; |
117 | 118 | ||
118 | MediaWidget::resizeEvent( e ); | 119 | MediaWidget::resizeEvent( e ); |
119 | } | 120 | } |
120 | 121 | ||
121 | void AudioWidget::sliderPressed() { | 122 | void AudioWidget::sliderPressed() { |
122 | audioSliderBeingMoved = TRUE; | 123 | audioSliderBeingMoved = TRUE; |
123 | } | 124 | } |
124 | 125 | ||
125 | 126 | ||
126 | void AudioWidget::sliderReleased() { | 127 | void AudioWidget::sliderReleased() { |
127 | audioSliderBeingMoved = FALSE; | 128 | audioSliderBeingMoved = FALSE; |
128 | if ( slider.width() == 0 ) | 129 | if ( slider.width() == 0 ) |
129 | return; | 130 | return; |
130 | long val = long((double)slider.value() * mediaPlayerState.length() / slider.width()); | 131 | long val = long((double)slider.value() * mediaPlayerState.length() / slider.width()); |
131 | mediaPlayerState.setPosition( val ); | 132 | mediaPlayerState.setPosition( val ); |
132 | } | 133 | } |
133 | 134 | ||
134 | void AudioWidget::setPosition( long i ) { | 135 | void AudioWidget::setPosition( long i ) { |
135 | // qDebug("<<<<<<<<<<<<<<<<<<<<<<<<set position %d",i); | 136 | // qDebug("<<<<<<<<<<<<<<<<<<<<<<<<set position %d",i); |
136 | updateSlider( i, mediaPlayerState.length() ); | 137 | updateSlider( i, mediaPlayerState.length() ); |
137 | } | 138 | } |
138 | 139 | ||
139 | 140 | ||
140 | void AudioWidget::setLength( long max ) { | 141 | void AudioWidget::setLength( long max ) { |
141 | updateSlider( mediaPlayerState.position(), max ); | 142 | updateSlider( mediaPlayerState.position(), max ); |
142 | } | 143 | } |
143 | 144 | ||
144 | 145 | ||
145 | void AudioWidget::setDisplayType( MediaPlayerState::DisplayType mediaType ) { | 146 | void AudioWidget::setDisplayType( MediaPlayerState::DisplayType mediaType ) { |
146 | if ( mediaType == MediaPlayerState::Audio ) { | 147 | if ( mediaType == MediaPlayerState::Audio ) { |
147 | // startTimer( 150 ); | 148 | // startTimer( 150 ); |
148 | QPEApplication::showWidget( this ); | 149 | QPEApplication::showWidget( this ); |
149 | return; | 150 | return; |
150 | } | 151 | } |
151 | 152 | ||
152 | killTimers(); | 153 | killTimers(); |
153 | hide(); | 154 | hide(); |
154 | } | 155 | } |
155 | 156 | ||
156 | void AudioWidget::loadSkin() | 157 | void AudioWidget::loadSkin() |
157 | { | 158 | { |
158 | loadDefaultSkin( guiInfo() ); | 159 | loadDefaultSkin( guiInfo() ); |
159 | 160 | ||
160 | songInfo.setFocusPolicy( QWidget::NoFocus ); | 161 | songInfo.setFocusPolicy( QWidget::NoFocus ); |
161 | // changeTextColor( &songInfo ); | 162 | // changeTextColor( &songInfo ); |
162 | // songInfo.setBackgroundColor( QColor( 167, 212, 167 )); | 163 | // songInfo.setBackgroundColor( QColor( 167, 212, 167 )); |
163 | // songInfo.setFrameStyle( QFrame::NoFrame); | 164 | // songInfo.setFrameStyle( QFrame::NoFrame); |
164 | songInfo.setFrameStyle( QFrame::WinPanel | QFrame::Sunken ); | 165 | songInfo.setFrameStyle( QFrame::WinPanel | QFrame::Sunken ); |
165 | // songInfo.setForegroundColor(Qt::white); | 166 | // songInfo.setForegroundColor(Qt::white); |
166 | 167 | ||
167 | slider.setFixedHeight( 20 ); | 168 | slider.setFixedHeight( 20 ); |
168 | slider.setMinValue( 0 ); | 169 | slider.setMinValue( 0 ); |
169 | slider.setMaxValue( 1 ); | 170 | slider.setMaxValue( 1 ); |
170 | slider.setFocusPolicy( QWidget::NoFocus ); | 171 | slider.setFocusPolicy( QWidget::NoFocus ); |
171 | slider.setBackgroundPixmap( backgroundPixmap ); | 172 | slider.setBackgroundPixmap( backgroundPixmap ); |
172 | 173 | ||
173 | // Config cofg("qpe"); | 174 | // Config cofg("qpe"); |
174 | // cofg.setGroup("Appearance"); | 175 | // cofg.setGroup("Appearance"); |
175 | // QColor backgroundcolor = QColor( cofg.readEntry( "Background", "#E5E1D5" ) ); | 176 | // QColor backgroundcolor = QColor( cofg.readEntry( "Background", "#E5E1D5" ) ); |
176 | 177 | ||
177 | time.setFocusPolicy( QWidget::NoFocus ); | 178 | time.setFocusPolicy( QWidget::NoFocus ); |
178 | time.setAlignment( Qt::AlignCenter ); | 179 | time.setAlignment( Qt::AlignCenter ); |
179 | 180 | ||
180 | // time.setFrame(FALSE); | 181 | // time.setFrame(FALSE); |
181 | // changeTextColor( &time ); | 182 | // changeTextColor( &time ); |
182 | 183 | ||
183 | resizeEvent( 0 ); | 184 | resizeEvent( 0 ); |
184 | } | 185 | } |
185 | 186 | ||
186 | void AudioWidget::setSeekable( bool isSeekable ) { | 187 | void AudioWidget::setSeekable( bool isSeekable ) { |
187 | 188 | ||
188 | if ( !isSeekable ) { | 189 | if ( !isSeekable ) { |
189 | qDebug("<<<<<<<<<<<<<<file is STREAMING>>>>>>>>>>>>>>>>>>>"); | 190 | qDebug("<<<<<<<<<<<<<<file is STREAMING>>>>>>>>>>>>>>>>>>>"); |
190 | if( !slider.isHidden()) { | 191 | if( !slider.isHidden()) { |
191 | slider.hide(); | 192 | slider.hide(); |
192 | } | 193 | } |
193 | disconnect( &mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) ); | 194 | disconnect( &mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) ); |
194 | disconnect( &mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) ); | 195 | disconnect( &mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) ); |
195 | disconnect( &slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) ); | 196 | disconnect( &slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) ); |
196 | disconnect( &slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) ); | 197 | disconnect( &slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) ); |
197 | } else { | 198 | } else { |
198 | // this stops the slider from being moved, thus | 199 | // this stops the slider from being moved, thus |
199 | // does not stop stream when it reaches the end | 200 | // does not stop stream when it reaches the end |
200 | slider.show(); | 201 | slider.show(); |
201 | qDebug( " CONNECT SET POSTION " ); | 202 | qDebug( " CONNECT SET POSTION " ); |
202 | connect( &mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) ); | 203 | connect( &mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) ); |
203 | connect( &mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) ); | 204 | connect( &mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) ); |
204 | connect( &slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) ); | 205 | connect( &slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) ); |
205 | connect( &slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) ); | 206 | connect( &slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) ); |
206 | } | 207 | } |
207 | } | 208 | } |
208 | 209 | ||
209 | 210 | ||
210 | static QString timeAsString( long length ) { | 211 | static QString timeAsString( long length ) { |
211 | int minutes = length / 60; | 212 | int minutes = length / 60; |
212 | int seconds = length % 60; | 213 | int seconds = length % 60; |
213 | return QString("%1:%2%3").arg( minutes ).arg( seconds / 10 ).arg( seconds % 10 ); | 214 | return QString("%1:%2%3").arg( minutes ).arg( seconds / 10 ).arg( seconds % 10 ); |
214 | } | 215 | } |
215 | 216 | ||
216 | void AudioWidget::updateSlider( long i, long max ) { | 217 | void AudioWidget::updateSlider( long i, long max ) { |
217 | 218 | ||
218 | time.setText( timeAsString( i ) + " / " + timeAsString( max ) ); | 219 | time.setText( timeAsString( i ) + " / " + timeAsString( max ) ); |
219 | // qDebug( timeAsString( i ) + " / " + timeAsString( max ) ) ; | 220 | // qDebug( timeAsString( i ) + " / " + timeAsString( max ) ) ; |
220 | 221 | ||
221 | if ( max == 0 ) { | 222 | if ( max == 0 ) { |
222 | return; | 223 | return; |
223 | } | 224 | } |
224 | // Will flicker too much if we don't do this | 225 | // Will flicker too much if we don't do this |
225 | // Scale to something reasonable | 226 | // Scale to something reasonable |
226 | int width = slider.width(); | 227 | int width = slider.width(); |
227 | int val = int((double)i * width / max); | 228 | int val = int((double)i * width / max); |
228 | if ( !audioSliderBeingMoved ) { | 229 | if ( !audioSliderBeingMoved ) { |
229 | if ( slider.value() != val ) { | 230 | if ( slider.value() != val ) { |
230 | slider.setValue( val ); | 231 | slider.setValue( val ); |
diff --git a/noncore/multimedia/opieplayer2/audiowidget.h b/noncore/multimedia/opieplayer2/audiowidget.h index b436239..aea4146 100644 --- a/noncore/multimedia/opieplayer2/audiowidget.h +++ b/noncore/multimedia/opieplayer2/audiowidget.h | |||
@@ -1,95 +1,95 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | 3 | ||
4 | Copyright (c) 2002 Max Reiss <harlekin@handhelds.org> | 4 | Copyright (c) 2002 Max Reiss <harlekin@handhelds.org> |
5 | Copyright (c) 2002 L. Potter <ljp@llornkcor.com> | 5 | Copyright (c) 2002 L. Potter <ljp@llornkcor.com> |
6 | Copyright (c) 2002 Holger Freyther <zecke@handhelds.org> | 6 | Copyright (c) 2002 Holger Freyther <zecke@handhelds.org> |
7 | =. | 7 | =. |
8 | .=l. | 8 | .=l. |
9 | .>+-= | 9 | .>+-= |
10 | _;:, .> :=|. This program is free software; you can | 10 | _;:, .> :=|. This program is free software; you can |
11 | .> <`_, > . <= redistribute it and/or modify it under | 11 | .> <`_, > . <= redistribute it and/or modify it under |
12 | :`=1 )Y*s>-.-- : the terms of the GNU General Public | 12 | :`=1 )Y*s>-.-- : the terms of the GNU General Public |
13 | .="- .-=="i, .._ License as published by the Free Software | 13 | .="- .-=="i, .._ License as published by the Free Software |
14 | - . .-<_> .<> Foundation; either version 2 of the License, | 14 | - . .-<_> .<> Foundation; either version 2 of the License, |
15 | ._= =} : or (at your option) any later version. | 15 | ._= =} : or (at your option) any later version. |
16 | .%`+i> _;_. | 16 | .%`+i> _;_. |
17 | .i_,=:_. -<s. This program is distributed in the hope that | 17 | .i_,=:_. -<s. This program is distributed in the hope that |
18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
19 | : .. .:, . . . without even the implied warranty of | 19 | : .. .:, . . . without even the implied warranty of |
20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
22 | ..}^=.= = ; Library General Public License for more | 22 | ..}^=.= = ; Library General Public License for more |
23 | ++= -. .` .: details. | 23 | ++= -. .` .: details. |
24 | : = ...= . :.=- | 24 | : = ...= . :.=- |
25 | -. .:....=;==+<; You should have received a copy of the GNU | 25 | -. .:....=;==+<; You should have received a copy of the GNU |
26 | -_. . . )=. = Library General Public License along with | 26 | -_. . . )=. = Library General Public License along with |
27 | -- :-=` this library; see the file COPYING.LIB. | 27 | -- :-=` this library; see the file COPYING.LIB. |
28 | If not, write to the Free Software Foundation, | 28 | If not, write to the Free Software Foundation, |
29 | Inc., 59 Temple Place - Suite 330, | 29 | Inc., 59 Temple Place - Suite 330, |
30 | Boston, MA 02111-1307, USA. | 30 | Boston, MA 02111-1307, USA. |
31 | 31 | ||
32 | */ | 32 | */ |
33 | 33 | ||
34 | #ifndef AUDIO_WIDGET_H | 34 | #ifndef AUDIO_WIDGET_H |
35 | #define AUDIO_WIDGET_H | 35 | #define AUDIO_WIDGET_H |
36 | 36 | ||
37 | #include <qlineedit.h> | 37 | #include <qlineedit.h> |
38 | 38 | ||
39 | #include <opie/oticker.h> | 39 | #include <opie2/oticker.h> |
40 | 40 | ||
41 | #include "mediawidget.h" | 41 | #include "mediawidget.h" |
42 | 42 | ||
43 | class QPixmap; | 43 | class QPixmap; |
44 | 44 | ||
45 | class AudioWidget : public MediaWidget { | 45 | class AudioWidget : public MediaWidget { |
46 | Q_OBJECT | 46 | Q_OBJECT |
47 | public: | 47 | public: |
48 | AudioWidget( PlayListWidget &playList, MediaPlayerState &mediaPlayerState, QWidget* parent=0, const char* name=0 ); | 48 | AudioWidget( PlayListWidget &playList, MediaPlayerState &mediaPlayerState, QWidget* parent=0, const char* name=0 ); |
49 | ~AudioWidget(); | 49 | ~AudioWidget(); |
50 | void setTickerText( const QString &text ) { songInfo.setText( text ); } | 50 | void setTickerText( const QString &text ) { songInfo.setText( text ); } |
51 | 51 | ||
52 | static MediaWidget::GUIInfo guiInfo(); | 52 | static MediaWidget::GUIInfo guiInfo(); |
53 | 53 | ||
54 | public slots: | 54 | public slots: |
55 | void updateSlider( long, long ); | 55 | void updateSlider( long, long ); |
56 | void sliderPressed( ); | 56 | void sliderPressed( ); |
57 | void sliderReleased( ); | 57 | void sliderReleased( ); |
58 | void setLooping( bool b) { setToggleButton( Loop, b ); } | 58 | void setLooping( bool b) { setToggleButton( Loop, b ); } |
59 | void setPosition( long ); | 59 | void setPosition( long ); |
60 | void setSeekable( bool ); | 60 | void setSeekable( bool ); |
61 | 61 | ||
62 | public: | 62 | public: |
63 | virtual void setLength( long ); | 63 | virtual void setLength( long ); |
64 | virtual void setPlaying( bool b) { setToggleButton( Play, b ); } | 64 | virtual void setPlaying( bool b) { setToggleButton( Play, b ); } |
65 | virtual void setDisplayType( MediaPlayerState::DisplayType displayType ); | 65 | virtual void setDisplayType( MediaPlayerState::DisplayType displayType ); |
66 | 66 | ||
67 | virtual void loadSkin(); | 67 | virtual void loadSkin(); |
68 | 68 | ||
69 | signals: | 69 | signals: |
70 | void sliderMoved(long); | 70 | void sliderMoved(long); |
71 | 71 | ||
72 | protected: | 72 | protected: |
73 | void doBlank(); | 73 | void doBlank(); |
74 | void doUnblank(); | 74 | void doUnblank(); |
75 | void resizeEvent( QResizeEvent *re ); | 75 | void resizeEvent( QResizeEvent *re ); |
76 | void timerEvent( QTimerEvent *event ); | 76 | void timerEvent( QTimerEvent *event ); |
77 | void keyReleaseEvent( QKeyEvent *e); | 77 | void keyReleaseEvent( QKeyEvent *e); |
78 | private slots: | 78 | private slots: |
79 | void skipFor(); | 79 | void skipFor(); |
80 | void skipBack(); | 80 | void skipBack(); |
81 | void stopSkip(); | 81 | void stopSkip(); |
82 | private: | 82 | private: |
83 | int skipDirection; | 83 | int skipDirection; |
84 | QString skin; | 84 | QString skin; |
85 | 85 | ||
86 | OTicker songInfo; | 86 | Opie::Ui::OTicker songInfo; |
87 | QSlider slider; | 87 | QSlider slider; |
88 | QLineEdit time; | 88 | QLineEdit time; |
89 | bool isStreaming : 1; | 89 | bool isStreaming : 1; |
90 | bool audioSliderBeingMoved : 1; | 90 | bool audioSliderBeingMoved : 1; |
91 | }; | 91 | }; |
92 | 92 | ||
93 | 93 | ||
94 | #endif // AUDIO_WIDGET_H | 94 | #endif // AUDIO_WIDGET_H |
95 | 95 | ||
diff --git a/noncore/multimedia/opieplayer2/main.cpp b/noncore/multimedia/opieplayer2/main.cpp index 00f72d1..6283ae3 100644 --- a/noncore/multimedia/opieplayer2/main.cpp +++ b/noncore/multimedia/opieplayer2/main.cpp | |||
@@ -1,26 +1,28 @@ | |||
1 | 1 | ||
2 | #include "mediaplayer.h" | 2 | #include "mediaplayer.h" |
3 | 3 | ||
4 | 4 | ||
5 | 5 | ||
6 | #include <opie/oapplicationfactory.h> | 6 | #include <opie2/oapplicationfactory.h> |
7 | 7 | ||
8 | using namespace Opie::Core; | ||
8 | OPIE_EXPORT_APP( OApplicationFactory<PlayListWidget> ) | 9 | OPIE_EXPORT_APP( OApplicationFactory<PlayListWidget> ) |
9 | 10 | ||
10 | #if 0 | 11 | #if 0 |
12 | using namespace Opie::Core; | ||
11 | int main(int argc, char **argv) { | 13 | int main(int argc, char **argv) { |
12 | QPEApplication a(argc,argv); | 14 | QPEApplication a(argc,argv); |
13 | 15 | ||
14 | MediaPlayerState st( 0, "mediaPlayerState" ); | 16 | MediaPlayerState st( 0, "mediaPlayerState" ); |
15 | PlayListWidget pl( st, 0, "playList" ); | 17 | PlayListWidget pl( st, 0, "playList" ); |
16 | pl.showMaximized(); | 18 | pl.showMaximized(); |
17 | MediaPlayer mp( pl, st, 0, "mediaPlayer" ); | 19 | MediaPlayer mp( pl, st, 0, "mediaPlayer" ); |
18 | QObject::connect( &pl, SIGNAL( skinSelected() ), | 20 | QObject::connect( &pl, SIGNAL( skinSelected() ), |
19 | &mp, SLOT( reloadSkins() ) ); | 21 | &mp, SLOT( reloadSkins() ) ); |
20 | 22 | ||
21 | a.showMainDocumentWidget(&pl); | 23 | a.showMainDocumentWidget(&pl); |
22 | 24 | ||
23 | return a.exec(); | 25 | return a.exec(); |
24 | } | 26 | } |
25 | #endif | 27 | #endif |
26 | 28 | ||
diff --git a/noncore/multimedia/opieplayer2/playlistwidget.cpp b/noncore/multimedia/opieplayer2/playlistwidget.cpp index 84aba55..1a5e474 100644 --- a/noncore/multimedia/opieplayer2/playlistwidget.cpp +++ b/noncore/multimedia/opieplayer2/playlistwidget.cpp | |||
@@ -1,241 +1,242 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | 3 | ||
4 | Copyright (c) 2002,2003 Max Reiss <harlekin@handhelds.org> | 4 | Copyright (c) 2002,2003 Max Reiss <harlekin@handhelds.org> |
5 | Copyright (c) 2002 L. Potter <ljp@llornkcor.com> | 5 | Copyright (c) 2002 L. Potter <ljp@llornkcor.com> |
6 | Copyright (c) 2002 Holger Freyther <zecke@handhelds.org> | 6 | Copyright (c) 2002 Holger Freyther <zecke@handhelds.org> |
7 | =. | 7 | =. |
8 | .=l. | 8 | .=l. |
9 | .>+-= | 9 | .>+-= |
10 | _;:, .> :=|. This program is free software; you can | 10 | _;:, .> :=|. This program is free software; you can |
11 | .> <`_, > . <= redistribute it and/or modify it under | 11 | .> <`_, > . <= redistribute it and/or modify it under |
12 | :`=1 )Y*s>-.-- : the terms of the GNU General Public | 12 | :`=1 )Y*s>-.-- : the terms of the GNU General Public |
13 | .="- .-=="i, .._ License as published by the Free Software | 13 | .="- .-=="i, .._ License as published by the Free Software |
14 | - . .-<_> .<> Foundation; either version 2 of the License, | 14 | - . .-<_> .<> Foundation; either version 2 of the License, |
15 | ._= =} : or (at your option) any later version. | 15 | ._= =} : or (at your option) any later version. |
16 | .%`+i> _;_. | 16 | .%`+i> _;_. |
17 | .i_,=:_. -<s. This program is distributed in the hope that | 17 | .i_,=:_. -<s. This program is distributed in the hope that |
18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
19 | : .. .:, . . . without even the implied warranty of | 19 | : .. .:, . . . without even the implied warranty of |
20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
22 | ..}^=.= = ; General Public License for more | 22 | ..}^=.= = ; General Public License for more |
23 | ++= -. .` .: details. | 23 | ++= -. .` .: details. |
24 | : = ...= . :.=- | 24 | : = ...= . :.=- |
25 | -. .:....=;==+<; You should have received a copy of the GNU | 25 | -. .:....=;==+<; You should have received a copy of the GNU |
26 | -_. . . )=. = General Public License along with | 26 | -_. . . )=. = General Public License along with |
27 | -- :-=` this library; see the file COPYING.LIB. | 27 | -- :-=` this library; see the file COPYING.LIB. |
28 | If not, write to the Free Software Foundation, | 28 | If not, write to the Free Software Foundation, |
29 | Inc., 59 Temple Place - Suite 330, | 29 | Inc., 59 Temple Place - Suite 330, |
30 | Boston, MA 02111-1307, USA. | 30 | Boston, MA 02111-1307, USA. |
31 | 31 | ||
32 | */ | 32 | */ |
33 | 33 | ||
34 | #include <qtoolbar.h> | 34 | #include <qtoolbar.h> |
35 | 35 | ||
36 | #include <opie/ofiledialog.h> | 36 | #include <opie2/ofiledialog.h> |
37 | 37 | ||
38 | #include <qmessagebox.h> | 38 | #include <qmessagebox.h> |
39 | 39 | ||
40 | #include "playlistselection.h" | 40 | #include "playlistselection.h" |
41 | #include "playlistwidget.h" | 41 | #include "playlistwidget.h" |
42 | #include "mediaplayer.h" | 42 | #include "mediaplayer.h" |
43 | #include "inputDialog.h" | 43 | #include "inputDialog.h" |
44 | #include "om3u.h" | 44 | #include "om3u.h" |
45 | #include "playlistfileview.h" | 45 | #include "playlistfileview.h" |
46 | 46 | ||
47 | //only needed for the random play | 47 | //only needed for the random play |
48 | #include <assert.h> | 48 | #include <assert.h> |
49 | 49 | ||
50 | using namespace Opie::Ui; | ||
50 | PlayListWidget::PlayListWidget(QWidget* parent, const char* name, WFlags fl ) | 51 | PlayListWidget::PlayListWidget(QWidget* parent, const char* name, WFlags fl ) |
51 | : PlayListWidgetGui( parent, "playList" ) , currentFileListView( 0 ) | 52 | : PlayListWidgetGui( parent, "playList" ) , currentFileListView( 0 ) |
52 | { | 53 | { |
53 | mediaPlayerState = new MediaPlayerState(0, "mediaPlayerState" ); | 54 | mediaPlayerState = new MediaPlayerState(0, "mediaPlayerState" ); |
54 | m_mp = new MediaPlayer(*this, *mediaPlayerState, 0, "mediaPlayer"); | 55 | m_mp = new MediaPlayer(*this, *mediaPlayerState, 0, "mediaPlayer"); |
55 | 56 | ||
56 | 57 | ||
57 | 58 | ||
58 | d->tbAddToList = new ToolButton( bar, tr( "Add to Playlist" ), | 59 | d->tbAddToList = new ToolButton( bar, tr( "Add to Playlist" ), |
59 | "opieplayer2/add_to_playlist", | 60 | "opieplayer2/add_to_playlist", |
60 | this , SLOT(addSelected() ) ); | 61 | this , SLOT(addSelected() ) ); |
61 | d->tbRemoveFromList = new ToolButton( bar, tr( "Remove from Playlist" ), | 62 | d->tbRemoveFromList = new ToolButton( bar, tr( "Remove from Playlist" ), |
62 | "opieplayer2/remove_from_playlist", | 63 | "opieplayer2/remove_from_playlist", |
63 | this , SLOT(removeSelected() ) ); | 64 | this , SLOT(removeSelected() ) ); |
64 | d->tbPlay = new ToolButton( bar, tr( "Play" ), "opieplayer2/play", | 65 | d->tbPlay = new ToolButton( bar, tr( "Play" ), "opieplayer2/play", |
65 | this , SLOT( btnPlay(bool) ), TRUE ); | 66 | this , SLOT( btnPlay(bool) ), TRUE ); |
66 | d->tbShuffle = new ToolButton( bar, tr( "Randomize" ),"opieplayer2/shuffle", | 67 | d->tbShuffle = new ToolButton( bar, tr( "Randomize" ),"opieplayer2/shuffle", |
67 | mediaPlayerState, SLOT( setShuffled(bool) ), TRUE ); | 68 | mediaPlayerState, SLOT( setShuffled(bool) ), TRUE ); |
68 | d->tbLoop = new ToolButton( bar, tr( "Loop" ), "opieplayer2/loop", | 69 | d->tbLoop = new ToolButton( bar, tr( "Loop" ), "opieplayer2/loop", |
69 | mediaPlayerState, SLOT( setLooping(bool) ), TRUE ); | 70 | mediaPlayerState, SLOT( setLooping(bool) ), TRUE ); |
70 | 71 | ||
71 | (void)new MenuItem( pmPlayList, tr( "Clear List" ), this, SLOT( clearList() ) ); | 72 | (void)new MenuItem( pmPlayList, tr( "Clear List" ), this, SLOT( clearList() ) ); |
72 | (void)new MenuItem( pmPlayList, tr( "Add all audio files" ), | 73 | (void)new MenuItem( pmPlayList, tr( "Add all audio files" ), |
73 | this, SLOT( addAllMusicToList() ) ); | 74 | this, SLOT( addAllMusicToList() ) ); |
74 | (void)new MenuItem( pmPlayList, tr( "Add all video files" ), | 75 | (void)new MenuItem( pmPlayList, tr( "Add all video files" ), |
75 | this, SLOT( addAllVideoToList() ) ); | 76 | this, SLOT( addAllVideoToList() ) ); |
76 | (void)new MenuItem( pmPlayList, tr( "Add all files" ), | 77 | (void)new MenuItem( pmPlayList, tr( "Add all files" ), |
77 | this, SLOT( addAllToList() ) ); | 78 | this, SLOT( addAllToList() ) ); |
78 | pmPlayList->insertSeparator(-1); | 79 | pmPlayList->insertSeparator(-1); |
79 | (void)new MenuItem( pmPlayList, tr( "Add File" ), | 80 | (void)new MenuItem( pmPlayList, tr( "Add File" ), |
80 | this,SLOT( openFile() ) ); | 81 | this,SLOT( openFile() ) ); |
81 | (void)new MenuItem( pmPlayList, tr("Add URL"), | 82 | (void)new MenuItem( pmPlayList, tr("Add URL"), |
82 | this,SLOT( openURL() ) ); | 83 | this,SLOT( openURL() ) ); |
83 | pmPlayList->insertSeparator(-1); | 84 | pmPlayList->insertSeparator(-1); |
84 | (void)new MenuItem( pmPlayList, tr( "Save Playlist" ), | 85 | (void)new MenuItem( pmPlayList, tr( "Save Playlist" ), |
85 | this, SLOT(writem3u() ) ); | 86 | this, SLOT(writem3u() ) ); |
86 | pmPlayList->insertSeparator(-1); | 87 | pmPlayList->insertSeparator(-1); |
87 | (void)new MenuItem( pmPlayList, tr( "Rescan for Audio Files" ), | 88 | (void)new MenuItem( pmPlayList, tr( "Rescan for Audio Files" ), |
88 | audioView, SLOT( scanFiles() ) ); | 89 | audioView, SLOT( scanFiles() ) ); |
89 | (void)new MenuItem( pmPlayList, tr( "Rescan for Video Files" ), | 90 | (void)new MenuItem( pmPlayList, tr( "Rescan for Video Files" ), |
90 | videoView, SLOT( scanFiles() ) ); | 91 | videoView, SLOT( scanFiles() ) ); |
91 | 92 | ||
92 | pmView->insertItem( Resource::loadPixmap("fullscreen") , tr( "Full Screen"), | 93 | pmView->insertItem( Resource::loadPixmap("fullscreen") , tr( "Full Screen"), |
93 | mediaPlayerState, SLOT( toggleFullscreen() ) ); | 94 | mediaPlayerState, SLOT( toggleFullscreen() ) ); |
94 | 95 | ||
95 | Config cfg( "OpiePlayer" ); | 96 | Config cfg( "OpiePlayer" ); |
96 | bool b= cfg.readBoolEntry("FullScreen", 0); | 97 | bool b= cfg.readBoolEntry("FullScreen", 0); |
97 | mediaPlayerState->setFullscreen( b ); | 98 | mediaPlayerState->setFullscreen( b ); |
98 | pmView->setItemChecked( -16, b ); | 99 | pmView->setItemChecked( -16, b ); |
99 | 100 | ||
100 | (void)new ToolButton( vbox1, tr( "Move Up" ), "opieplayer2/up", | 101 | (void)new ToolButton( vbox1, tr( "Move Up" ), "opieplayer2/up", |
101 | d->selectedFiles, SLOT(moveSelectedUp() ) ); | 102 | d->selectedFiles, SLOT(moveSelectedUp() ) ); |
102 | (void)new ToolButton( vbox1, tr( "Remove" ), "opieplayer2/cut", | 103 | (void)new ToolButton( vbox1, tr( "Remove" ), "opieplayer2/cut", |
103 | d->selectedFiles, SLOT(removeSelected() ) ); | 104 | d->selectedFiles, SLOT(removeSelected() ) ); |
104 | (void)new ToolButton( vbox1, tr( "Move Down" ), "opieplayer2/down", | 105 | (void)new ToolButton( vbox1, tr( "Move Down" ), "opieplayer2/down", |
105 | d->selectedFiles, SLOT(moveSelectedDown() ) ); | 106 | d->selectedFiles, SLOT(moveSelectedDown() ) ); |
106 | QVBox *stretch2 = new QVBox( vbox1 ); | 107 | QVBox *stretch2 = new QVBox( vbox1 ); |
107 | 108 | ||
108 | connect( tbDeletePlaylist, ( SIGNAL( released() ) ), | 109 | connect( tbDeletePlaylist, ( SIGNAL( released() ) ), |
109 | SLOT( deletePlaylist() ) ); | 110 | SLOT( deletePlaylist() ) ); |
110 | connect( pmView, SIGNAL( activated(int) ), | 111 | connect( pmView, SIGNAL( activated(int) ), |
111 | this, SLOT( pmViewActivated(int) ) ); | 112 | this, SLOT( pmViewActivated(int) ) ); |
112 | connect( skinsMenu, SIGNAL( activated(int) ) , | 113 | connect( skinsMenu, SIGNAL( activated(int) ) , |
113 | this, SLOT( skinsMenuActivated(int) ) ); | 114 | this, SLOT( skinsMenuActivated(int) ) ); |
114 | connect( d->selectedFiles, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int) ), | 115 | connect( d->selectedFiles, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int) ), |
115 | this,SLOT( playlistViewPressed(int,QListViewItem*,const QPoint&,int) ) ); | 116 | this,SLOT( playlistViewPressed(int,QListViewItem*,const QPoint&,int) ) ); |
116 | connect( audioView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int) ), | 117 | connect( audioView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int) ), |
117 | this,SLOT( viewPressed(int,QListViewItem*,const QPoint&,int) ) ); | 118 | this,SLOT( viewPressed(int,QListViewItem*,const QPoint&,int) ) ); |
118 | connect( audioView, SIGNAL( returnPressed(QListViewItem*) ), | 119 | connect( audioView, SIGNAL( returnPressed(QListViewItem*) ), |
119 | this,SLOT( playIt(QListViewItem*) ) ); | 120 | this,SLOT( playIt(QListViewItem*) ) ); |
120 | connect( audioView, SIGNAL( doubleClicked(QListViewItem*) ), | 121 | connect( audioView, SIGNAL( doubleClicked(QListViewItem*) ), |
121 | this, SLOT( addToSelection(QListViewItem*) ) ); | 122 | this, SLOT( addToSelection(QListViewItem*) ) ); |
122 | connect( videoView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int) ), | 123 | connect( videoView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int) ), |
123 | this,SLOT( viewPressed(int,QListViewItem*,const QPoint&,int) ) ); | 124 | this,SLOT( viewPressed(int,QListViewItem*,const QPoint&,int) ) ); |
124 | connect( videoView, SIGNAL( returnPressed(QListViewItem*) ), | 125 | connect( videoView, SIGNAL( returnPressed(QListViewItem*) ), |
125 | this,SLOT( playIt(QListViewItem*) ) ); | 126 | this,SLOT( playIt(QListViewItem*) ) ); |
126 | connect( videoView, SIGNAL( doubleClicked(QListViewItem*) ), | 127 | connect( videoView, SIGNAL( doubleClicked(QListViewItem*) ), |
127 | this, SLOT( addToSelection(QListViewItem*) ) ); | 128 | this, SLOT( addToSelection(QListViewItem*) ) ); |
128 | connect( playLists, SIGNAL( fileSelected(const DocLnk&) ), | 129 | connect( playLists, SIGNAL( fileSelected(const DocLnk&) ), |
129 | this, SLOT( loadList(const DocLnk&) ) ); | 130 | this, SLOT( loadList(const DocLnk&) ) ); |
130 | connect( tabWidget, SIGNAL ( currentChanged(QWidget*) ), | 131 | connect( tabWidget, SIGNAL ( currentChanged(QWidget*) ), |
131 | this, SLOT( tabChanged(QWidget*) ) ); | 132 | this, SLOT( tabChanged(QWidget*) ) ); |
132 | connect( mediaPlayerState, SIGNAL( playingToggled(bool) ), | 133 | connect( mediaPlayerState, SIGNAL( playingToggled(bool) ), |
133 | d->tbPlay, SLOT( setOn(bool) ) ); | 134 | d->tbPlay, SLOT( setOn(bool) ) ); |
134 | connect( mediaPlayerState, SIGNAL( loopingToggled(bool) ), | 135 | connect( mediaPlayerState, SIGNAL( loopingToggled(bool) ), |
135 | d->tbLoop, SLOT( setOn(bool) ) ); | 136 | d->tbLoop, SLOT( setOn(bool) ) ); |
136 | connect( mediaPlayerState, SIGNAL( shuffledToggled(bool) ), | 137 | connect( mediaPlayerState, SIGNAL( shuffledToggled(bool) ), |
137 | d->tbShuffle, SLOT( setOn(bool) ) ); | 138 | d->tbShuffle, SLOT( setOn(bool) ) ); |
138 | connect( d->selectedFiles, SIGNAL( doubleClicked(QListViewItem*) ), | 139 | connect( d->selectedFiles, SIGNAL( doubleClicked(QListViewItem*) ), |
139 | this, SLOT( playIt(QListViewItem*) ) ); | 140 | this, SLOT( playIt(QListViewItem*) ) ); |
140 | connect ( gammaSlider, SIGNAL( valueChanged(int) ), | 141 | connect ( gammaSlider, SIGNAL( valueChanged(int) ), |
141 | mediaPlayerState, SLOT( setVideoGamma(int) ) ); | 142 | mediaPlayerState, SLOT( setVideoGamma(int) ) ); |
142 | 143 | ||
143 | connect( this, SIGNAL(skinSelected() ), | 144 | connect( this, SIGNAL(skinSelected() ), |
144 | m_mp, SLOT( reloadSkins() ) ); | 145 | m_mp, SLOT( reloadSkins() ) ); |
145 | 146 | ||
146 | // see which skins are installed | 147 | // see which skins are installed |
147 | populateSkinsMenu(); | 148 | populateSkinsMenu(); |
148 | initializeStates(); | 149 | initializeStates(); |
149 | 150 | ||
150 | channel = new QCopChannel( "QPE/Application/opieplayer2", this ); | 151 | channel = new QCopChannel( "QPE/Application/opieplayer2", this ); |
151 | connect( channel, SIGNAL(received(const QCString&,const QByteArray&)), | 152 | connect( channel, SIGNAL(received(const QCString&,const QByteArray&)), |
152 | this, SLOT( qcopReceive(const QCString&,const QByteArray&)) ); | 153 | this, SLOT( qcopReceive(const QCString&,const QByteArray&)) ); |
153 | 154 | ||
154 | 155 | ||
155 | cfg.setGroup("PlayList"); | 156 | cfg.setGroup("PlayList"); |
156 | QString currentPlaylist = cfg.readEntry( "CurrentPlaylist", "default"); | 157 | QString currentPlaylist = cfg.readEntry( "CurrentPlaylist", "default"); |
157 | loadList(DocLnk( currentPlaylist ) ); | 158 | loadList(DocLnk( currentPlaylist ) ); |
158 | 159 | ||
159 | tabWidget->showPage( playListTab ); | 160 | tabWidget->showPage( playListTab ); |
160 | } | 161 | } |
161 | 162 | ||
162 | 163 | ||
163 | PlayListWidget::~PlayListWidget() { | 164 | PlayListWidget::~PlayListWidget() { |
164 | delete d; | 165 | delete d; |
165 | delete m_mp; | 166 | delete m_mp; |
166 | } | 167 | } |
167 | 168 | ||
168 | 169 | ||
169 | void PlayListWidget::initializeStates() { | 170 | void PlayListWidget::initializeStates() { |
170 | d->tbPlay->setOn( mediaPlayerState->isPlaying() ); | 171 | d->tbPlay->setOn( mediaPlayerState->isPlaying() ); |
171 | d->tbLoop->setOn( mediaPlayerState->isLooping() ); | 172 | d->tbLoop->setOn( mediaPlayerState->isLooping() ); |
172 | d->tbShuffle->setOn( mediaPlayerState->isShuffled() ); | 173 | d->tbShuffle->setOn( mediaPlayerState->isShuffled() ); |
173 | d->playListFrame->show(); | 174 | d->playListFrame->show(); |
174 | } | 175 | } |
175 | 176 | ||
176 | void PlayListWidget::writeDefaultPlaylist() { | 177 | void PlayListWidget::writeDefaultPlaylist() { |
177 | 178 | ||
178 | Config config( "OpiePlayer" ); | 179 | Config config( "OpiePlayer" ); |
179 | config.setGroup( "PlayList" ); | 180 | config.setGroup( "PlayList" ); |
180 | QString filename=QPEApplication::documentDir() + "/default.m3u"; | 181 | QString filename=QPEApplication::documentDir() + "/default.m3u"; |
181 | QString currentString = config.readEntry( "CurrentPlaylist", filename); | 182 | QString currentString = config.readEntry( "CurrentPlaylist", filename); |
182 | if( currentString == filename) { | 183 | if( currentString == filename) { |
183 | Om3u *m3uList; | 184 | Om3u *m3uList; |
184 | // qDebug("<<<<<<<<<<<<<default>>>>>>>>>>>>>>>>>>>"); | 185 | // qDebug("<<<<<<<<<<<<<default>>>>>>>>>>>>>>>>>>>"); |
185 | if( d->selectedFiles->first() ) { | 186 | if( d->selectedFiles->first() ) { |
186 | m3uList = new Om3u(filename, IO_ReadWrite | IO_Truncate); | 187 | m3uList = new Om3u(filename, IO_ReadWrite | IO_Truncate); |
187 | do { | 188 | do { |
188 | // qDebug(d->selectedFiles->current()->file()); | 189 | // qDebug(d->selectedFiles->current()->file()); |
189 | m3uList->add( d->selectedFiles->current()->file() ); | 190 | m3uList->add( d->selectedFiles->current()->file() ); |
190 | } | 191 | } |
191 | while ( d->selectedFiles->next() ); | 192 | while ( d->selectedFiles->next() ); |
192 | 193 | ||
193 | m3uList->write(); | 194 | m3uList->write(); |
194 | m3uList->close(); | 195 | m3uList->close(); |
195 | delete m3uList; | 196 | delete m3uList; |
196 | 197 | ||
197 | } | 198 | } |
198 | } | 199 | } |
199 | } | 200 | } |
200 | 201 | ||
201 | void PlayListWidget::addToSelection( const DocLnk& lnk ) { | 202 | void PlayListWidget::addToSelection( const DocLnk& lnk ) { |
202 | d->setDocumentUsed = FALSE; | 203 | d->setDocumentUsed = FALSE; |
203 | if( QFileInfo( lnk.file() ).exists() || | 204 | if( QFileInfo( lnk.file() ).exists() || |
204 | lnk.file().left(4) == "http" ) { | 205 | lnk.file().left(4) == "http" ) { |
205 | d->selectedFiles->addToSelection( lnk ); | 206 | d->selectedFiles->addToSelection( lnk ); |
206 | } | 207 | } |
207 | // writeCurrentM3u(); | 208 | // writeCurrentM3u(); |
208 | } | 209 | } |
209 | 210 | ||
210 | 211 | ||
211 | void PlayListWidget::clearList() { | 212 | void PlayListWidget::clearList() { |
212 | while ( first() ) { | 213 | while ( first() ) { |
213 | d->selectedFiles->removeSelected(); | 214 | d->selectedFiles->removeSelected(); |
214 | } | 215 | } |
215 | Config cfg( "OpiePlayer" ); | 216 | Config cfg( "OpiePlayer" ); |
216 | cfg.setGroup("PlayList"); | 217 | cfg.setGroup("PlayList"); |
217 | cfg.writeEntry("CurrentPlaylist","default"); | 218 | cfg.writeEntry("CurrentPlaylist","default"); |
218 | setCaption("OpiePlayer"); | 219 | setCaption("OpiePlayer"); |
219 | } | 220 | } |
220 | 221 | ||
221 | void PlayListWidget::viewPressed( int mouse, QListViewItem *, const QPoint& , int) { | 222 | void PlayListWidget::viewPressed( int mouse, QListViewItem *, const QPoint& , int) { |
222 | switch (mouse) { | 223 | switch (mouse) { |
223 | case LeftButton: | 224 | case LeftButton: |
224 | break; | 225 | break; |
225 | case RightButton: | 226 | case RightButton: |
226 | { | 227 | { |
227 | QPopupMenu m; | 228 | QPopupMenu m; |
228 | m.insertItem( tr( "Play Selected" ), this, SLOT( playSelected() )); | 229 | m.insertItem( tr( "Play Selected" ), this, SLOT( playSelected() )); |
229 | m.insertItem( tr( "Add to Playlist" ), this, SLOT( addSelected() )); | 230 | m.insertItem( tr( "Add to Playlist" ), this, SLOT( addSelected() )); |
230 | m.exec( QCursor::pos() ); | 231 | m.exec( QCursor::pos() ); |
231 | } | 232 | } |
232 | break; | 233 | break; |
233 | } | 234 | } |
234 | } | 235 | } |
235 | 236 | ||
236 | 237 | ||
237 | void PlayListWidget::playlistViewPressed( int mouse, QListViewItem *, const QPoint& , int ) { | 238 | void PlayListWidget::playlistViewPressed( int mouse, QListViewItem *, const QPoint& , int ) { |
238 | switch (mouse) { | 239 | switch (mouse) { |
239 | case LeftButton: | 240 | case LeftButton: |
240 | break; | 241 | break; |
241 | case RightButton: | 242 | case RightButton: |
diff --git a/noncore/multimedia/showimg/main.cpp b/noncore/multimedia/showimg/main.cpp index b61cffb..b7ea071 100644 --- a/noncore/multimedia/showimg/main.cpp +++ b/noncore/multimedia/showimg/main.cpp | |||
@@ -1,26 +1,28 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of Qtopia Environment. | 4 | ** This file is part of Qtopia Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | 20 | ||
21 | #include "showimg.h" | 21 | #include "showimg.h" |
22 | 22 | ||
23 | 23 | ||
24 | #include <opie2/oapplicationfactory.h> | 24 | #include <opie2/oapplicationfactory.h> |
25 | 25 | ||
26 | using namespace Opie::Core; | ||
27 | using namespace Opie::Core; | ||
26 | OPIE_EXPORT_APP( OApplicationFactory<ImageViewer> ) | 28 | OPIE_EXPORT_APP( OApplicationFactory<ImageViewer> ) |
diff --git a/noncore/multimedia/showimg/showimg.cpp b/noncore/multimedia/showimg/showimg.cpp index 6c0c4db..696a57b 100644 --- a/noncore/multimedia/showimg/showimg.cpp +++ b/noncore/multimedia/showimg/showimg.cpp | |||
@@ -1,236 +1,237 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of Qtopia Environment. | 4 | ** This file is part of Qtopia Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | 20 | ||
21 | // | 21 | // |
22 | // Full-screen and rotation options contributed by Robert Wittams <robert@wittams.com> | 22 | // Full-screen and rotation options contributed by Robert Wittams <robert@wittams.com> |
23 | // | 23 | // |
24 | 24 | ||
25 | #include "showimg.h" | 25 | #include "showimg.h" |
26 | #include "ImageFileSelector.h" | 26 | #include "ImageFileSelector.h" |
27 | #include "settingsdialog.h" | 27 | #include "settingsdialog.h" |
28 | 28 | ||
29 | 29 | ||
30 | #include <opie2/ofiledialog.h> | 30 | #include <opie2/ofiledialog.h> |
31 | 31 | ||
32 | #include <qpe/qpeapplication.h> | 32 | #include <qpe/qpeapplication.h> |
33 | #include <qpe/config.h> | 33 | #include <qpe/config.h> |
34 | #include <qpe/resource.h> | 34 | #include <qpe/resource.h> |
35 | #include <qpe/qpetoolbar.h> | 35 | #include <qtoolbar.h> |
36 | 36 | ||
37 | #include <qaction.h> | 37 | #include <qaction.h> |
38 | #include <qfiledialog.h> | 38 | #include <qfiledialog.h> |
39 | #include <qmenubar.h> | 39 | #include <qmenubar.h> |
40 | #include <qspinbox.h> | 40 | #include <qspinbox.h> |
41 | 41 | ||
42 | #include <math.h> | 42 | #include <math.h> |
43 | 43 | ||
44 | 44 | ||
45 | using namespace Opie::Ui; | ||
45 | ControlsDialog::ControlsDialog(const QString &caption,QImage image,int *brightness,QWidget *parent) | 46 | ControlsDialog::ControlsDialog(const QString &caption,QImage image,int *brightness,QWidget *parent) |
46 | : QDialog(parent,0,true) | 47 | : QDialog(parent,0,true) |
47 | { | 48 | { |
48 | setCaption(caption); | 49 | setCaption(caption); |
49 | 50 | ||
50 | if ( parent ) { | 51 | if ( parent ) { |
51 | setPalette(parent->palette()); | 52 | setPalette(parent->palette()); |
52 | } | 53 | } |
53 | 54 | ||
54 | b=brightness; | 55 | b=brightness; |
55 | img=image; | 56 | img=image; |
56 | 57 | ||
57 | setMinimumSize(140,80); | 58 | setMinimumSize(140,80); |
58 | 59 | ||
59 | QGridLayout *gl= new QGridLayout(this,2,2,4,4); | 60 | QGridLayout *gl= new QGridLayout(this,2,2,4,4); |
60 | 61 | ||
61 | pixmap =new ImageWidget(this);; | 62 | pixmap =new ImageWidget(this);; |
62 | QPixmap pm; | 63 | QPixmap pm; |
63 | pm.convertFromImage(img); | 64 | pm.convertFromImage(img); |
64 | pixmap->setPixmap(pm); | 65 | pixmap->setPixmap(pm); |
65 | pixmap->setMinimumSize(pm.width(),pm.height()); | 66 | pixmap->setMinimumSize(pm.width(),pm.height()); |
66 | gl->addMultiCellWidget(pixmap,0,0,0,2,AlignCenter); | 67 | gl->addMultiCellWidget(pixmap,0,0,0,2,AlignCenter); |
67 | QLabel *l=new QLabel(tr("Brightness")+":",this); | 68 | QLabel *l=new QLabel(tr("Brightness")+":",this); |
68 | gl->addWidget(l,1,0,AlignLeft); | 69 | gl->addWidget(l,1,0,AlignLeft); |
69 | spb=new QSpinBox(-100,100,2,this); | 70 | spb=new QSpinBox(-100,100,2,this); |
70 | gl->addWidget(spb,1,1,AlignRight); | 71 | gl->addWidget(spb,1,1,AlignRight); |
71 | 72 | ||
72 | spb->setValue(0); | 73 | spb->setValue(0); |
73 | 74 | ||
74 | connect(spb,SIGNAL(valueChanged(int)),this, SLOT(bValueChanged(int))); | 75 | connect(spb,SIGNAL(valueChanged(int)),this, SLOT(bValueChanged(int))); |
75 | 76 | ||
76 | } | 77 | } |
77 | 78 | ||
78 | void ControlsDialog::bValueChanged(int value) | 79 | void ControlsDialog::bValueChanged(int value) |
79 | { | 80 | { |
80 | QImage nImage=img; | 81 | QImage nImage=img; |
81 | nImage.detach(); | 82 | nImage.detach(); |
82 | ImageViewer::intensity(nImage, (float)value/100); | 83 | ImageViewer::intensity(nImage, (float)value/100); |
83 | QPixmap pm; | 84 | QPixmap pm; |
84 | pm.convertFromImage(nImage); | 85 | pm.convertFromImage(nImage); |
85 | pixmap->setPixmap(pm); | 86 | pixmap->setPixmap(pm); |
86 | pixmap->repaint(false); | 87 | pixmap->repaint(false); |
87 | 88 | ||
88 | 89 | ||
89 | } | 90 | } |
90 | 91 | ||
91 | void ControlsDialog::accept() | 92 | void ControlsDialog::accept() |
92 | { | 93 | { |
93 | *b=spb->value(); | 94 | *b=spb->value(); |
94 | done(1); | 95 | done(1); |
95 | } | 96 | } |
96 | 97 | ||
97 | //=========================================================================== | 98 | //=========================================================================== |
98 | 99 | ||
99 | InfoDialog::InfoDialog(const QString &caption, const QStringList text,QWidget *parent) | 100 | InfoDialog::InfoDialog(const QString &caption, const QStringList text,QWidget *parent) |
100 | : QDialog(parent,0,true) | 101 | : QDialog(parent,0,true) |
101 | { | 102 | { |
102 | setCaption(caption); | 103 | setCaption(caption); |
103 | 104 | ||
104 | if ( parent ) | 105 | if ( parent ) |
105 | { | 106 | { |
106 | setPalette(parent->palette()); | 107 | setPalette(parent->palette()); |
107 | } | 108 | } |
108 | 109 | ||
109 | 110 | ||
110 | 111 | ||
111 | QString labels[]={ tr("File Name"),tr("Format"),tr("File Size"),tr("Size"),tr("Colors"),tr("Alpha") }; | 112 | QString labels[]={ tr("File Name"),tr("Format"),tr("File Size"),tr("Size"),tr("Colors"),tr("Alpha") }; |
112 | 113 | ||
113 | setMinimumSize(180,80); | 114 | setMinimumSize(180,80); |
114 | int num=ImageViewer::LAST+1; | 115 | int num=ImageViewer::LAST+1; |
115 | if ( text[ImageViewer::ALPHA].isEmpty() ) | 116 | if ( text[ImageViewer::ALPHA].isEmpty() ) |
116 | num--; | 117 | num--; |
117 | QGridLayout *gl= new QGridLayout(this,num,2,4,2); | 118 | QGridLayout *gl= new QGridLayout(this,num,2,4,2); |
118 | QLabel *l; | 119 | QLabel *l; |
119 | int count=0; | 120 | int count=0; |
120 | for ( int i=0;i<num;i++ ) | 121 | for ( int i=0;i<num;i++ ) |
121 | { | 122 | { |
122 | if ( i==1 ) | 123 | if ( i==1 ) |
123 | { | 124 | { |
124 | QFrame *frm=new QFrame(this); | 125 | QFrame *frm=new QFrame(this); |
125 | frm->setFrameStyle(QFrame::HLine|QFrame::Sunken); | 126 | frm->setFrameStyle(QFrame::HLine|QFrame::Sunken); |
126 | gl->addMultiCellWidget(frm,i,i,0,1); | 127 | gl->addMultiCellWidget(frm,i,i,0,1); |
127 | } | 128 | } |
128 | else | 129 | else |
129 | { | 130 | { |
130 | l=new QLabel( tr( labels[count] )+":",this); | 131 | l=new QLabel( tr( labels[count] )+":",this); |
131 | gl->addWidget(l,i,0,AlignLeft); | 132 | gl->addWidget(l,i,0,AlignLeft); |
132 | l=new QLabel(text[count],this); | 133 | l=new QLabel(text[count],this); |
133 | gl->addWidget(l,i,1,AlignRight); | 134 | gl->addWidget(l,i,1,AlignRight); |
134 | count++; | 135 | count++; |
135 | } | 136 | } |
136 | 137 | ||
137 | } | 138 | } |
138 | 139 | ||
139 | } | 140 | } |
140 | 141 | ||
141 | void InfoDialog::displayInfo(const QString &caption, const QStringList text, QWidget *parent) | 142 | void InfoDialog::displayInfo(const QString &caption, const QStringList text, QWidget *parent) |
142 | { | 143 | { |
143 | InfoDialog *dlg=new InfoDialog(caption,text,parent); | 144 | InfoDialog *dlg=new InfoDialog(caption,text,parent); |
144 | dlg->exec(); | 145 | dlg->exec(); |
145 | delete dlg; | 146 | delete dlg; |
146 | } | 147 | } |
147 | 148 | ||
148 | //=========================================================================== | 149 | //=========================================================================== |
149 | 150 | ||
150 | 151 | ||
151 | ImagePane::ImagePane( QWidget *parent ) : QWidget( parent ) | 152 | ImagePane::ImagePane( QWidget *parent ) : QWidget( parent ) |
152 | { | 153 | { |
153 | vb = new QVBoxLayout( this ); | 154 | vb = new QVBoxLayout( this ); |
154 | 155 | ||
155 | image = new QScrollView(this,0,WResizeNoErase|WNorthWestGravity); | 156 | image = new QScrollView(this,0,WResizeNoErase|WNorthWestGravity); |
156 | pic=new ImageWidget(image); | 157 | pic=new ImageWidget(image); |
157 | image->addChild(pic); | 158 | image->addChild(pic); |
158 | 159 | ||
159 | connect(pic, SIGNAL( clicked() ), this, SLOT( imageClicked() )); | 160 | connect(pic, SIGNAL( clicked() ), this, SLOT( imageClicked() )); |
160 | 161 | ||
161 | vb->addWidget( image ); | 162 | vb->addWidget( image ); |
162 | 163 | ||
163 | } | 164 | } |
164 | 165 | ||
165 | void ImagePane::setPixmap( const QPixmap &pm ) | 166 | void ImagePane::setPixmap( const QPixmap &pm ) |
166 | { | 167 | { |
167 | pic->setPixmap( pm ); | 168 | pic->setPixmap( pm ); |
168 | pic->resize(pm.width(),pm.height()); | 169 | pic->resize(pm.width(),pm.height()); |
169 | image->updateScrollBars (); | 170 | image->updateScrollBars (); |
170 | pic->repaint(false); | 171 | pic->repaint(false); |
171 | } | 172 | } |
172 | 173 | ||
173 | void ImagePane::imageClicked() | 174 | void ImagePane::imageClicked() |
174 | { | 175 | { |
175 | emit clicked(); | 176 | emit clicked(); |
176 | } | 177 | } |
177 | //=========================================================================== | 178 | //=========================================================================== |
178 | /* | 179 | /* |
179 | Draws the portion of the scaled pixmap that needs to be updated | 180 | Draws the portion of the scaled pixmap that needs to be updated |
180 | */ | 181 | */ |
181 | 182 | ||
182 | void ImageWidget::paintEvent( QPaintEvent *e ) | 183 | void ImageWidget::paintEvent( QPaintEvent *e ) |
183 | { | 184 | { |
184 | QPainter painter(this); | 185 | QPainter painter(this); |
185 | 186 | ||
186 | painter.setClipRect(e->rect()); | 187 | painter.setClipRect(e->rect()); |
187 | painter.fillRect(0,0,width(),height(),QColor(0,0,0)); | 188 | painter.fillRect(0,0,width(),height(),QColor(0,0,0)); |
188 | 189 | ||
189 | if ( pixmap.size() != QSize( 0, 0 ) ) | 190 | if ( pixmap.size() != QSize( 0, 0 ) ) |
190 | { // is an image loaded? | 191 | { // is an image loaded? |
191 | painter.drawPixmap((width() - pixmap.width()) / 2, (height() - pixmap.height()) / 2, pixmap); | 192 | painter.drawPixmap((width() - pixmap.width()) / 2, (height() - pixmap.height()) / 2, pixmap); |
192 | } | 193 | } |
193 | } | 194 | } |
194 | 195 | ||
195 | void ImageWidget::mouseReleaseEvent(QMouseEvent *) | 196 | void ImageWidget::mouseReleaseEvent(QMouseEvent *) |
196 | { | 197 | { |
197 | emit clicked(); | 198 | emit clicked(); |
198 | } | 199 | } |
199 | 200 | ||
200 | //=========================================================================== | 201 | //=========================================================================== |
201 | 202 | ||
202 | ImageViewer::ImageViewer( QWidget *parent, const char *name, int /*wFlags*/ ) | 203 | ImageViewer::ImageViewer( QWidget *parent, const char *name, int /*wFlags*/ ) |
203 | : QMainWindow( parent, name, WResizeNoErase ), filename( 0 ), bFromDocView( FALSE ) | 204 | : QMainWindow( parent, name, WResizeNoErase ), filename( 0 ), bFromDocView( FALSE ) |
204 | { | 205 | { |
205 | setCaption( tr("Image Viewer") ); | 206 | setCaption( tr("Image Viewer") ); |
206 | setIcon( Resource::loadPixmap( "ImageViewer" ) ); | 207 | setIcon( Resource::loadPixmap( "ImageViewer" ) ); |
207 | 208 | ||
208 | 209 | ||
209 | Config cfg("Image Viewer"); | 210 | Config cfg("Image Viewer"); |
210 | cfg.setGroup("Image Viewer"); | 211 | cfg.setGroup("Image Viewer"); |
211 | 212 | ||
212 | showThumbView=cfg.readBoolEntry("ShowThumbnails",false); | 213 | showThumbView=cfg.readBoolEntry("ShowThumbnails",false); |
213 | isSized=cfg.readBoolEntry("SizeToScreen",true); | 214 | isSized=cfg.readBoolEntry("SizeToScreen",true); |
214 | 215 | ||
215 | isFullScreen = FALSE; | 216 | isFullScreen = FALSE; |
216 | 217 | ||
217 | setToolBarsMovable( FALSE ); | 218 | setToolBarsMovable( FALSE ); |
218 | 219 | ||
219 | toolBar = new QToolBar( this ); | 220 | toolBar = new QToolBar( this ); |
220 | toolBar->setHorizontalStretchable( TRUE ); | 221 | toolBar->setHorizontalStretchable( TRUE ); |
221 | 222 | ||
222 | menuBar = new QMenuBar( toolBar ); | 223 | menuBar = new QMenuBar( toolBar ); |
223 | 224 | ||
224 | current=menuBar; | 225 | current=menuBar; |
225 | 226 | ||
226 | 227 | ||
227 | 228 | ||
228 | fileMenuFile = new QPopupMenu(this); | 229 | fileMenuFile = new QPopupMenu(this); |
229 | //menuBarmenubarFile->insertItem( tr("File"), fileMenu ); | 230 | //menuBarmenubarFile->insertItem( tr("File"), fileMenu ); |
230 | fileMenuFile->insertItem(tr("Open"), | 231 | fileMenuFile->insertItem(tr("Open"), |
231 | this, SLOT(openFile()), 0); | 232 | this, SLOT(openFile()), 0); |
232 | 233 | ||
233 | viewMenuFile = new QPopupMenu( this ); | 234 | viewMenuFile = new QPopupMenu( this ); |
234 | //menubarFile->insertItem( tr("View"), viewMenu ); | 235 | //menubarFile->insertItem( tr("View"), viewMenu ); |
235 | viewMenuFile->insertItem( tr("Thumbnail View"), | 236 | viewMenuFile->insertItem( tr("Thumbnail View"), |
236 | this, SLOT(switchThumbView()), 0, SHOW_THUMBNAILS ); | 237 | this, SLOT(switchThumbView()), 0, SHOW_THUMBNAILS ); |
@@ -334,385 +335,385 @@ ImageViewer::ImageViewer( QWidget *parent, const char *name, int /*wFlags*/ ) | |||
334 | viewMenuView->insertItem(tr("Brightness ..."), this, SLOT(displayControlsDialog()), 0); | 335 | viewMenuView->insertItem(tr("Brightness ..."), this, SLOT(displayControlsDialog()), 0); |
335 | viewMenuView->insertItem(tr("Black And White"), this, SLOT(blackAndWhite()), 0,BLACKANDWHITE); | 336 | viewMenuView->insertItem(tr("Black And White"), this, SLOT(blackAndWhite()), 0,BLACKANDWHITE); |
336 | viewMenuView->insertSeparator(); | 337 | viewMenuView->insertSeparator(); |
337 | 338 | ||
338 | 339 | ||
339 | sss = new QAction( tr( "Scale to Screen"), Resource::loadPixmap( "scale" ), QString::null, 0, this, 0,true); | 340 | sss = new QAction( tr( "Scale to Screen"), Resource::loadPixmap( "scale" ), QString::null, 0, this, 0,true); |
340 | connect( sss, SIGNAL( activated() ), this, SLOT( switchSizeToScreen() ) ); | 341 | connect( sss, SIGNAL( activated() ), this, SLOT( switchSizeToScreen() ) ); |
341 | sss->addTo( iconToolBar ); | 342 | sss->addTo( iconToolBar ); |
342 | sss->addTo( viewMenuView ); | 343 | sss->addTo( viewMenuView ); |
343 | 344 | ||
344 | sss->setOn(isSized); | 345 | sss->setOn(isSized); |
345 | viewMenuView->insertSeparator(); | 346 | viewMenuView->insertSeparator(); |
346 | 347 | ||
347 | 348 | ||
348 | a = new QAction( tr( "Fullscreen" ), Resource::loadPixmap( "fullscreen" ), | 349 | a = new QAction( tr( "Fullscreen" ), Resource::loadPixmap( "fullscreen" ), |
349 | QString::null, 0, this, 0 ); | 350 | QString::null, 0, this, 0 ); |
350 | connect( a, SIGNAL( activated() ), this, SLOT( fullScreen() ) ); | 351 | connect( a, SIGNAL( activated() ), this, SLOT( fullScreen() ) ); |
351 | a->addTo( iconToolBar ); | 352 | a->addTo( iconToolBar ); |
352 | a->addTo( viewMenuView); | 353 | a->addTo( viewMenuView); |
353 | 354 | ||
354 | a = new QAction( tr( "Stop Slideshow" ), Resource::loadPixmap( "quit_icon" ), | 355 | a = new QAction( tr( "Stop Slideshow" ), Resource::loadPixmap( "quit_icon" ), |
355 | QString::null, 0, this, 0 ); | 356 | QString::null, 0, this, 0 ); |
356 | connect( a, SIGNAL( activated() ), this, SLOT( stopSlideShow() ) ); | 357 | connect( a, SIGNAL( activated() ), this, SLOT( stopSlideShow() ) ); |
357 | a->addTo( iconToolBar ); | 358 | a->addTo( iconToolBar ); |
358 | a->addTo( viewMenuView); | 359 | a->addTo( viewMenuView); |
359 | 360 | ||
360 | 361 | ||
361 | Config config( "ImageViewer" ); | 362 | Config config( "ImageViewer" ); |
362 | config.setGroup( "SlideShow" ); | 363 | config.setGroup( "SlideShow" ); |
363 | slideDelay = config.readNumEntry( "Delay", 2); | 364 | slideDelay = config.readNumEntry( "Delay", 2); |
364 | slideRepeat = config.readBoolEntry( "Repeat", FALSE ); | 365 | slideRepeat = config.readBoolEntry( "Repeat", FALSE ); |
365 | slideReverse = config.readBoolEntry("Reverse", FALSE); | 366 | slideReverse = config.readBoolEntry("Reverse", FALSE); |
366 | 367 | ||
367 | config.setGroup("Default"); | 368 | config.setGroup("Default"); |
368 | rotateOnLoad = config.readBoolEntry("Rotate", FALSE); | 369 | rotateOnLoad = config.readBoolEntry("Rotate", FALSE); |
369 | fastLoad = config.readBoolEntry("FastLoad", TRUE); | 370 | fastLoad = config.readBoolEntry("FastLoad", TRUE); |
370 | slideTimer = new QTimer( this ); | 371 | slideTimer = new QTimer( this ); |
371 | connect( slideTimer, SIGNAL(timeout()), this, SLOT(slideUpdate()) ); | 372 | connect( slideTimer, SIGNAL(timeout()), this, SLOT(slideUpdate()) ); |
372 | 373 | ||
373 | switchToFileSelector(); | 374 | switchToFileSelector(); |
374 | 375 | ||
375 | setMouseTracking( TRUE ); | 376 | setMouseTracking( TRUE ); |
376 | 377 | ||
377 | 378 | ||
378 | } | 379 | } |
379 | 380 | ||
380 | ImageViewer::~ImageViewer() | 381 | ImageViewer::~ImageViewer() |
381 | { | 382 | { |
382 | Config cfg("Image Viewer"); | 383 | Config cfg("Image Viewer"); |
383 | cfg.setGroup("Image Viewer"); | 384 | cfg.setGroup("Image Viewer"); |
384 | 385 | ||
385 | cfg.writeEntry("ShowThumbnails",(int)showThumbView); | 386 | cfg.writeEntry("ShowThumbnails",(int)showThumbView); |
386 | cfg.writeEntry("SizeToScreen",(int)isSized); | 387 | cfg.writeEntry("SizeToScreen",(int)isSized); |
387 | 388 | ||
388 | cfg.setGroup( "SlideShow" ); | 389 | cfg.setGroup( "SlideShow" ); |
389 | cfg.writeEntry( "Delay", slideDelay); | 390 | cfg.writeEntry( "Delay", slideDelay); |
390 | cfg.writeEntry( "Repeat", slideRepeat ); | 391 | cfg.writeEntry( "Repeat", slideRepeat ); |
391 | cfg.writeEntry("Reverse", slideReverse); | 392 | cfg.writeEntry("Reverse", slideReverse); |
392 | 393 | ||
393 | cfg.setGroup("Default"); | 394 | cfg.setGroup("Default"); |
394 | cfg.writeEntry("Rotate", rotateOnLoad); | 395 | cfg.writeEntry("Rotate", rotateOnLoad); |
395 | cfg.writeEntry("FastLoad", fastLoad); | 396 | cfg.writeEntry("FastLoad", fastLoad); |
396 | 397 | ||
397 | delete imagePanel; // in case it is fullscreen | 398 | delete imagePanel; // in case it is fullscreen |
398 | } | 399 | } |
399 | 400 | ||
400 | void ImageViewer::help() { | 401 | void ImageViewer::help() { |
401 | 402 | ||
402 | } | 403 | } |
403 | 404 | ||
404 | 405 | ||
405 | void ImageViewer::settings() | 406 | void ImageViewer::settings() |
406 | { | 407 | { |
407 | SettingsDialog dlg( this, 0, TRUE ); | 408 | SettingsDialog dlg( this, 0, TRUE ); |
408 | dlg.setDelay( slideDelay ); | 409 | dlg.setDelay( slideDelay ); |
409 | dlg.setRepeat( slideRepeat ); | 410 | dlg.setRepeat( slideRepeat ); |
410 | dlg.setReverse( slideReverse ); | 411 | dlg.setReverse( slideReverse ); |
411 | dlg.setRotate(rotateOnLoad); | 412 | dlg.setRotate(rotateOnLoad); |
412 | dlg.setFastLoad(fastLoad); | 413 | dlg.setFastLoad(fastLoad); |
413 | 414 | ||
414 | if ( QPEApplication::execDialog(&dlg) == QDialog::Accepted ) { | 415 | if ( QPEApplication::execDialog(&dlg) == QDialog::Accepted ) { |
415 | qDebug("<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>"); | 416 | qDebug("<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>"); |
416 | slideDelay = dlg.delay(); | 417 | slideDelay = dlg.delay(); |
417 | slideRepeat = dlg.repeat(); | 418 | slideRepeat = dlg.repeat(); |
418 | slideReverse = dlg.reverse(); | 419 | slideReverse = dlg.reverse(); |
419 | rotateOnLoad = dlg.rotate(); | 420 | rotateOnLoad = dlg.rotate(); |
420 | fastLoad = dlg.fastLoad(); | 421 | fastLoad = dlg.fastLoad(); |
421 | 422 | ||
422 | Config config( "ImageViewer" ); | 423 | Config config( "ImageViewer" ); |
423 | config.setGroup( "SlideShow" ); | 424 | config.setGroup( "SlideShow" ); |
424 | config.writeEntry( "Delay", slideDelay ); | 425 | config.writeEntry( "Delay", slideDelay ); |
425 | config.writeEntry( "Repeat", slideRepeat ); | 426 | config.writeEntry( "Repeat", slideRepeat ); |
426 | config.writeEntry("Reverse", slideReverse); | 427 | config.writeEntry("Reverse", slideReverse); |
427 | 428 | ||
428 | config.setGroup("Default"); | 429 | config.setGroup("Default"); |
429 | config.writeEntry("Rotate", rotateOnLoad); | 430 | config.writeEntry("Rotate", rotateOnLoad); |
430 | config.writeEntry("FastLoad", fastLoad); | 431 | config.writeEntry("FastLoad", fastLoad); |
431 | } | 432 | } |
432 | } | 433 | } |
433 | 434 | ||
434 | void ImageViewer::switchSizeToScreen() | 435 | void ImageViewer::switchSizeToScreen() |
435 | { | 436 | { |
436 | isSized=!isSized; | 437 | isSized=!isSized; |
437 | sss->setOn(isSized); | 438 | sss->setOn(isSized); |
438 | updateImage(); | 439 | updateImage(); |
439 | } | 440 | } |
440 | 441 | ||
441 | void ImageViewer::updateImage() | 442 | void ImageViewer::updateImage() |
442 | { | 443 | { |
443 | if ( isSized ) { | 444 | if ( isSized ) { |
444 | imagePanel->setPixmap(pmScaled); | 445 | imagePanel->setPixmap(pmScaled); |
445 | } else { | 446 | } else { |
446 | imagePanel->setPixmap(pm); | 447 | imagePanel->setPixmap(pm); |
447 | } | 448 | } |
448 | } | 449 | } |
449 | 450 | ||
450 | void ImageViewer::switchThumbView() | 451 | void ImageViewer::switchThumbView() |
451 | { | 452 | { |
452 | 453 | ||
453 | showThumbView=!showThumbView; | 454 | showThumbView=!showThumbView; |
454 | viewMenuFile->setItemChecked ( SHOW_THUMBNAILS, showThumbView ); | 455 | viewMenuFile->setItemChecked ( SHOW_THUMBNAILS, showThumbView ); |
455 | fileSelector->switchView(); | 456 | fileSelector->switchView(); |
456 | 457 | ||
457 | } | 458 | } |
458 | 459 | ||
459 | void ImageViewer::switchToFileSelector() | 460 | void ImageViewer::switchToFileSelector() |
460 | { | 461 | { |
461 | stack->raiseWidget(fileSelector); | 462 | stack->raiseWidget(fileSelector); |
462 | menuBar->clear(); | 463 | menuBar->clear(); |
463 | menuBar->insertItem( tr("File"), fileMenuFile ); | 464 | menuBar->insertItem( tr("File"), fileMenuFile ); |
464 | menuBar->insertItem( tr("View"), viewMenuFile ); | 465 | menuBar->insertItem( tr("View"), viewMenuFile ); |
465 | menuBar->insertItem( tr("Options"), optionsMenuFile ); | 466 | menuBar->insertItem( tr("Options"), optionsMenuFile ); |
466 | iconToolBar->hide(); | 467 | iconToolBar->hide(); |
467 | imagePanel->disable(); | 468 | imagePanel->disable(); |
468 | slideShow(false); | 469 | slideShow(false); |
469 | 470 | ||
470 | } | 471 | } |
471 | 472 | ||
472 | void ImageViewer::switchToImageView() | 473 | void ImageViewer::switchToImageView() |
473 | { | 474 | { |
474 | stack->raiseWidget(imagePanel); | 475 | stack->raiseWidget(imagePanel); |
475 | 476 | ||
476 | menuBar->clear(); | 477 | menuBar->clear(); |
477 | menuBar->insertItem( tr("File"), fileMenuView ); | 478 | menuBar->insertItem( tr("File"), fileMenuView ); |
478 | menuBar->insertItem( tr("View"), viewMenuView ); | 479 | menuBar->insertItem( tr("View"), viewMenuView ); |
479 | viewMenuView->setItemEnabled(BLACKANDWHITE,true); | 480 | viewMenuView->setItemEnabled(BLACKANDWHITE,true); |
480 | iconToolBar->show(); | 481 | iconToolBar->show(); |
481 | 482 | ||
482 | imagePanel->setPosition(0,0); | 483 | imagePanel->setPosition(0,0); |
483 | 484 | ||
484 | } | 485 | } |
485 | 486 | ||
486 | 487 | ||
487 | void ImageViewer::setDocument(const QString& fileref) | 488 | void ImageViewer::setDocument(const QString& fileref) |
488 | { | 489 | { |
489 | delayLoad = fileref; | 490 | delayLoad = fileref; |
490 | switchToImageView(); | 491 | switchToImageView(); |
491 | QTimer::singleShot( 0, this, SLOT(doDelayedLoad()) ); | 492 | QTimer::singleShot( 0, this, SLOT(doDelayedLoad()) ); |
492 | } | 493 | } |
493 | 494 | ||
494 | void ImageViewer::doDelayedLoad() | 495 | void ImageViewer::doDelayedLoad() |
495 | { | 496 | { |
496 | show(delayLoad); | 497 | show(delayLoad); |
497 | } | 498 | } |
498 | 499 | ||
499 | void ImageViewer::show() | 500 | void ImageViewer::show() |
500 | { | 501 | { |
501 | normalView(); | 502 | normalView(); |
502 | QMainWindow::show(); | 503 | QMainWindow::show(); |
503 | } | 504 | } |
504 | 505 | ||
505 | void ImageViewer::show(const QString& fileref) | 506 | void ImageViewer::show(const QString& fileref) |
506 | { | 507 | { |
507 | // qDebug("Show "+fileref); | 508 | // qDebug("Show "+fileref); |
508 | bFromDocView = TRUE; | 509 | bFromDocView = TRUE; |
509 | closeFileSelector(); | 510 | closeFileSelector(); |
510 | DocLnk link(fileref); | 511 | DocLnk link(fileref); |
511 | if ( link.isValid() ) { | 512 | if ( link.isValid() ) { |
512 | openFile(link); | 513 | openFile(link); |
513 | } else { | 514 | } else { |
514 | filename = fileref; | 515 | filename = fileref; |
515 | updateCaption( fileref ); | 516 | updateCaption( fileref ); |
516 | loadImage( fileref ); | 517 | loadImage( fileref ); |
517 | } | 518 | } |
518 | } | 519 | } |
519 | 520 | ||
520 | void ImageViewer::openFile() { | 521 | void ImageViewer::openFile() { |
521 | MimeTypes types; | 522 | MimeTypes types; |
522 | QStringList image; | 523 | QStringList image; |
523 | image << "image/*"; | 524 | image << "image/*"; |
524 | types.insert("Images", image); | 525 | types.insert("Images", image); |
525 | 526 | ||
526 | QString str = Opie::OFileDialog::getOpenFileName( 1,QPEApplication::documentDir(),"", types, 0 ); | 527 | QString str = OFileDialog::getOpenFileName( 1,QPEApplication::documentDir(),"", types, 0 ); |
527 | DocLnk link(str); | 528 | DocLnk link(str); |
528 | // if ( link.isValid() ) | 529 | // if ( link.isValid() ) |
529 | openFile(link); | 530 | openFile(link); |
530 | 531 | ||
531 | } | 532 | } |
532 | 533 | ||
533 | void ImageViewer::openFile( const DocLnk &link ) | 534 | void ImageViewer::openFile( const DocLnk &link ) |
534 | { | 535 | { |
535 | closeFileSelector(); | 536 | closeFileSelector(); |
536 | // DocLnk link(file); | 537 | // DocLnk link(file); |
537 | qDebug("open "+link.name()); | 538 | qDebug("open "+link.name()); |
538 | updateCaption( link.name() ); | 539 | updateCaption( link.name() ); |
539 | loadImage( link.file() ); | 540 | loadImage( link.file() ); |
540 | if (slideTimer->isActive()) { | 541 | if (slideTimer->isActive()) { |
541 | slideTimer->start(slideDelay * 1000, FALSE); | 542 | slideTimer->start(slideDelay * 1000, FALSE); |
542 | } | 543 | } |
543 | 544 | ||
544 | } | 545 | } |
545 | 546 | ||
546 | void ImageViewer::open() | 547 | void ImageViewer::open() |
547 | { | 548 | { |
548 | switchToFileSelector(); | 549 | switchToFileSelector(); |
549 | } | 550 | } |
550 | 551 | ||
551 | void ImageViewer::closeFileSelector() | 552 | void ImageViewer::closeFileSelector() |
552 | { | 553 | { |
553 | switchToImageView(); | 554 | switchToImageView(); |
554 | } | 555 | } |
555 | 556 | ||
556 | void ImageViewer::updateCaption( QString name ) | 557 | void ImageViewer::updateCaption( QString name ) |
557 | { | 558 | { |
558 | int sep = name.findRev( '/' ); | 559 | int sep = name.findRev( '/' ); |
559 | if ( sep >= 0 ) | 560 | if ( sep >= 0 ) |
560 | name = name.mid( sep+1 ); | 561 | name = name.mid( sep+1 ); |
561 | setCaption( name + tr(" - Image Viewer") ); | 562 | setCaption( name + tr(" - Image Viewer") ); |
562 | } | 563 | } |
563 | 564 | ||
564 | /* | 565 | /* |
565 | This function loads an image from a file. | 566 | This function loads an image from a file. |
566 | */ | 567 | */ |
567 | 568 | ||
568 | void ImageViewer::loadImage( const char *fileName ) | 569 | void ImageViewer::loadImage( const char *fileName ) |
569 | { | 570 | { |
570 | filename = fileName; | 571 | filename = fileName; |
571 | if ( filename ) { | 572 | if ( filename ) { |
572 | QApplication::setOverrideCursor( waitCursor ); // this might take time | 573 | QApplication::setOverrideCursor( waitCursor ); // this might take time |
573 | //imagePanel->statusLabel()->setText( tr("Loading image...") ); | 574 | //imagePanel->statusLabel()->setText( tr("Loading image...") ); |
574 | qApp->processEvents(); | 575 | qApp->processEvents(); |
575 | bool ok = image.load(filename, 0); | 576 | bool ok = image.load(filename, 0); |
576 | if ( ok ) { | 577 | if ( ok ) { |
577 | ok = reconvertImage(); | 578 | ok = reconvertImage(); |
578 | updateImageInfo(filename); | 579 | updateImageInfo(filename); |
579 | } | 580 | } |
580 | if ( !ok ) { | 581 | if ( !ok ) { |
581 | pm.resize(0,0); // couldn't load image | 582 | pm.resize(0,0); // couldn't load image |
582 | update(); | 583 | update(); |
583 | } | 584 | } |
584 | QApplication::restoreOverrideCursor(); // restore original cursor | 585 | QApplication::restoreOverrideCursor(); // restore original cursor |
585 | } | 586 | } |
586 | 587 | ||
587 | // fastLoad ? ", Fast" : "", | 588 | // fastLoad ? ", Fast" : "", |
588 | // fastLoad ? QMAX(imagewidth/maxsize, imageheight/maxsize) : 1); | 589 | // fastLoad ? QMAX(imagewidth/maxsize, imageheight/maxsize) : 1); |
589 | 590 | ||
590 | 591 | ||
591 | // matrix.reset(); | 592 | // matrix.reset(); |
592 | rotated90 = FALSE; | 593 | rotated90 = FALSE; |
593 | 594 | ||
594 | if (rotateOnLoad) { | 595 | if (rotateOnLoad) { |
595 | rotated90 = TRUE; | 596 | rotated90 = TRUE; |
596 | rot90(); | 597 | rot90(); |
597 | // matrix.rotate( -90.0 ); | 598 | // matrix.rotate( -90.0 ); |
598 | } | 599 | } |
599 | 600 | ||
600 | switchToImageView(); | 601 | switchToImageView(); |
601 | updateImage(); | 602 | updateImage(); |
602 | 603 | ||
603 | } | 604 | } |
604 | 605 | ||
605 | bool ImageViewer::loadSelected() | 606 | bool ImageViewer::loadSelected() |
606 | { | 607 | { |
607 | bool ok = false; | 608 | bool ok = false; |
608 | if ( stack->visibleWidget() == fileSelector ) | 609 | if ( stack->visibleWidget() == fileSelector ) |
609 | { | 610 | { |
610 | const DocLnk *link = fileSelector->selected(); | 611 | const DocLnk *link = fileSelector->selected(); |
611 | if ( link ) | 612 | if ( link ) |
612 | { | 613 | { |
613 | if ( link->file() != filename ) | 614 | if ( link->file() != filename ) |
614 | { | 615 | { |
615 | updateCaption( link->name() ); | 616 | updateCaption( link->name() ); |
616 | filename = link->file(); | 617 | filename = link->file(); |
617 | qApp->processEvents(); | 618 | qApp->processEvents(); |
618 | ok = image.load(filename, 0); | 619 | ok = image.load(filename, 0); |
619 | if ( ok ) | 620 | if ( ok ) |
620 | { | 621 | { |
621 | updateImageInfo(filename); | 622 | updateImageInfo(filename); |
622 | ok = reconvertImage(); | 623 | ok = reconvertImage(); |
623 | } | 624 | } |
624 | if ( !ok ) | 625 | if ( !ok ) |
625 | pm.resize(0,0); | 626 | pm.resize(0,0); |
626 | } | 627 | } |
627 | } | 628 | } |
628 | } | 629 | } |
629 | if ( !image.isNull() ) | 630 | if ( !image.isNull() ) |
630 | { | 631 | { |
631 | ok = true; | 632 | ok = true; |
632 | closeFileSelector(); | 633 | closeFileSelector(); |
633 | } | 634 | } |
634 | 635 | ||
635 | return ok; | 636 | return ok; |
636 | } | 637 | } |
637 | 638 | ||
638 | bool ImageViewer::reconvertImage() | 639 | bool ImageViewer::reconvertImage() |
639 | { | 640 | { |
640 | bool success = FALSE; | 641 | bool success = FALSE; |
641 | 642 | ||
642 | if ( image.isNull() ) return FALSE; | 643 | if ( image.isNull() ) return FALSE; |
643 | 644 | ||
644 | QApplication::setOverrideCursor( waitCursor ); // this might take time | 645 | QApplication::setOverrideCursor( waitCursor ); // this might take time |
645 | if ( pm.convertFromImage(image /*, conversion_flags */ ) ) | 646 | if ( pm.convertFromImage(image /*, conversion_flags */ ) ) |
646 | { | 647 | { |
647 | pmScaled = QPixmap(); | 648 | pmScaled = QPixmap(); |
648 | scale(); | 649 | scale(); |
649 | success = TRUE; // load successful | 650 | success = TRUE; // load successful |
650 | } | 651 | } |
651 | else | 652 | else |
652 | { | 653 | { |
653 | pm.resize(0,0); // couldn't load image | 654 | pm.resize(0,0); // couldn't load image |
654 | } | 655 | } |
655 | QApplication::restoreOverrideCursor(); // restore original cursor | 656 | QApplication::restoreOverrideCursor(); // restore original cursor |
656 | 657 | ||
657 | return success; // TRUE if loaded OK | 658 | return success; // TRUE if loaded OK |
658 | } | 659 | } |
659 | 660 | ||
660 | 661 | ||
661 | int ImageViewer::calcHeight() | 662 | int ImageViewer::calcHeight() |
662 | { | 663 | { |
663 | if ( !isFullScreen ) | 664 | if ( !isFullScreen ) |
664 | return imagePanel->paneHeight(); | 665 | return imagePanel->paneHeight(); |
665 | else | 666 | else |
666 | return qApp->desktop()->height(); | 667 | return qApp->desktop()->height(); |
667 | } | 668 | } |
668 | /* | 669 | /* |
669 | This functions scales the pixmap in the member variable "pm" to fit the | 670 | This functions scales the pixmap in the member variable "pm" to fit the |
670 | widget size and puts the resulting pixmap in the member variable "pmScaled". | 671 | widget size and puts the resulting pixmap in the member variable "pmScaled". |
671 | */ | 672 | */ |
672 | void ImageViewer::scale() | 673 | void ImageViewer::scale() |
673 | { | 674 | { |
674 | int h = calcHeight(); | 675 | int h = calcHeight(); |
675 | if ( image.isNull() ) return; | 676 | if ( image.isNull() ) return; |
676 | 677 | ||
677 | QApplication::setOverrideCursor( waitCursor ); // this might take time | 678 | QApplication::setOverrideCursor( waitCursor ); // this might take time |
678 | if ( imagePanel->paneWidth() == pm.width() && h == pm.height() ) | 679 | if ( imagePanel->paneWidth() == pm.width() && h == pm.height() ) |
679 | { // no need to scale if widget | 680 | { // no need to scale if widget |
680 | pmScaled = pm; // size equals pixmap size | 681 | pmScaled = pm; // size equals pixmap size |
681 | } | 682 | } |
682 | else | 683 | else |
683 | { | 684 | { |
684 | double hs = (double)h / (double)image.height(); | 685 | double hs = (double)h / (double)image.height(); |
685 | double ws = (double)imagePanel->paneWidth() / (double)image.width(); | 686 | double ws = (double)imagePanel->paneWidth() / (double)image.width(); |
686 | double scaleFactor = (hs > ws) ? ws : hs; | 687 | double scaleFactor = (hs > ws) ? ws : hs; |
687 | int smoothW = (int)(scaleFactor * image.width()); | 688 | int smoothW = (int)(scaleFactor * image.width()); |
688 | int smoothH = (int)(scaleFactor * image.height()); | 689 | int smoothH = (int)(scaleFactor * image.height()); |
689 | 690 | ||
690 | pmScaled.convertFromImage( image.smoothScale( smoothW, smoothH ) /*, conversion_flags */ ); | 691 | pmScaled.convertFromImage( image.smoothScale( smoothW, smoothH ) /*, conversion_flags */ ); |
691 | } | 692 | } |
692 | QApplication::restoreOverrideCursor(); // restore original cursor | 693 | QApplication::restoreOverrideCursor(); // restore original cursor |
693 | } | 694 | } |
694 | 695 | ||
695 | /* | 696 | /* |
696 | The resize event handler, if a valid pixmap was loaded it will call | 697 | The resize event handler, if a valid pixmap was loaded it will call |
697 | scale() to fit the pixmap to the new widget size. | 698 | scale() to fit the pixmap to the new widget size. |
698 | */ | 699 | */ |
699 | 700 | ||
700 | void ImageViewer::resizeEvent( QResizeEvent * ) | 701 | void ImageViewer::resizeEvent( QResizeEvent * ) |
701 | { | 702 | { |
702 | 703 | ||
703 | if ( pm.size() == QSize( 0, 0 ) ) // we couldn't load the image | 704 | if ( pm.size() == QSize( 0, 0 ) ) // we couldn't load the image |
704 | return; | 705 | return; |
705 | 706 | ||
706 | int h = calcHeight(); | 707 | int h = calcHeight(); |
707 | 708 | ||
708 | if ( imagePanel->paneWidth() != pmScaled.width() || h != pmScaled.height() ) | 709 | if ( imagePanel->paneWidth() != pmScaled.width() || h != pmScaled.height() ) |
709 | { // if new size, | 710 | { // if new size, |
710 | scale(); // scale pmScaled to window | 711 | scale(); // scale pmScaled to window |
711 | } | 712 | } |
712 | if ( image.hasAlphaBuffer() ) | 713 | if ( image.hasAlphaBuffer() ) |
713 | erase(); | 714 | erase(); |
714 | } | 715 | } |
715 | 716 | ||
716 | 717 | ||
717 | void ImageViewer::hFlip() | 718 | void ImageViewer::hFlip() |
718 | { | 719 | { |