summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/audiowidget.cpp1
-rw-r--r--noncore/multimedia/opieplayer2/audiowidget.h4
-rw-r--r--noncore/multimedia/opieplayer2/main.cpp4
-rw-r--r--noncore/multimedia/opieplayer2/playlistwidget.cpp3
-rw-r--r--noncore/multimedia/showimg/main.cpp2
-rw-r--r--noncore/multimedia/showimg/showimg.cpp5
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,324 +1,325 @@
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
39using namespace Opie::Ui;
39namespace 40namespace
40{ 41{
41 42
42const int xo = -2; // movable x offset 43const int xo = -2; // movable x offset
43const int yo = 22; // movable y offset 44const int yo = 22; // movable y offset
44 45
45const MediaWidget::SkinButtonInfo skinInfo[] = 46const 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
59const uint buttonCount = sizeof( skinInfo ) / sizeof( skinInfo[ 0 ] ); 60const uint buttonCount = sizeof( skinInfo ) / sizeof( skinInfo[ 0 ] );
60 61
61void changeTextColor( QWidget * w) { 62void 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
70AudioWidget::AudioWidget( PlayListWidget &playList, MediaPlayerState &mediaPlayerState, QWidget* parent, const char* name) : 71AudioWidget::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
95AudioWidget::~AudioWidget() { 96AudioWidget::~AudioWidget() {
96 97
97// mediaPlayerState->setPlaying(false); 98// mediaPlayerState->setPlaying(false);
98} 99}
99 100
100MediaWidget::GUIInfo AudioWidget::guiInfo() 101MediaWidget::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
105void AudioWidget::resizeEvent( QResizeEvent *e ) { 106void 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
121void AudioWidget::sliderPressed() { 122void AudioWidget::sliderPressed() {
122 audioSliderBeingMoved = TRUE; 123 audioSliderBeingMoved = TRUE;
123} 124}
124 125
125 126
126void AudioWidget::sliderReleased() { 127void 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
134void AudioWidget::setPosition( long i ) { 135void 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
140void AudioWidget::setLength( long max ) { 141void AudioWidget::setLength( long max ) {
141 updateSlider( mediaPlayerState.position(), max ); 142 updateSlider( mediaPlayerState.position(), max );
142} 143}
143 144
144 145
145void AudioWidget::setDisplayType( MediaPlayerState::DisplayType mediaType ) { 146void 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
156void AudioWidget::loadSkin() 157void 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
186void AudioWidget::setSeekable( bool isSeekable ) { 187void 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
210static QString timeAsString( long length ) { 211static 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
216void AudioWidget::updateSlider( long i, long max ) { 217void 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 );
231 } 232 }
232 233
233 if ( slider.maxValue() != width ) { 234 if ( slider.maxValue() != width ) {
234 slider.setMaxValue( width ); 235 slider.setMaxValue( width );
235 } 236 }
236 } 237 }
237} 238}
238 239
239void AudioWidget::skipFor() { 240void AudioWidget::skipFor() {
240 skipDirection = +1; 241 skipDirection = +1;
241 startTimer( 50 ); 242 startTimer( 50 );
242 mediaPlayerState.setPosition( mediaPlayerState.position() + 2 ); 243 mediaPlayerState.setPosition( mediaPlayerState.position() + 2 );
243} 244}
244 245
245void AudioWidget::skipBack() { 246void AudioWidget::skipBack() {
246 skipDirection = -1; 247 skipDirection = -1;
247 startTimer( 50 ); 248 startTimer( 50 );
248 mediaPlayerState.setPosition( mediaPlayerState.position() - 2 ); 249 mediaPlayerState.setPosition( mediaPlayerState.position() - 2 );
249} 250}
250 251
251 252
252 253
253void AudioWidget::stopSkip() { 254void AudioWidget::stopSkip() {
254 killTimers(); 255 killTimers();
255} 256}
256 257
257 258
258void AudioWidget::timerEvent( QTimerEvent * ) { 259void AudioWidget::timerEvent( QTimerEvent * ) {
259 if ( skipDirection == +1 ) { 260 if ( skipDirection == +1 ) {
260 mediaPlayerState.setPosition( mediaPlayerState.position() + 2 ); 261 mediaPlayerState.setPosition( mediaPlayerState.position() + 2 );
261 } else if ( skipDirection == -1 ) { 262 } else if ( skipDirection == -1 ) {
262 mediaPlayerState.setPosition( mediaPlayerState.position() - 2 ); 263 mediaPlayerState.setPosition( mediaPlayerState.position() - 2 );
263 } 264 }
264} 265}
265 266
266void AudioWidget::keyReleaseEvent( QKeyEvent *e) { 267void AudioWidget::keyReleaseEvent( QKeyEvent *e) {
267 switch ( e->key() ) { 268 switch ( e->key() ) {
268 ////////////////////////////// Zaurus keys 269 ////////////////////////////// Zaurus keys
269 case Key_Home: 270 case Key_Home:
270 break; 271 break;
271 case Key_F9: //activity 272 case Key_F9: //activity
272 hide(); 273 hide();
273 // qDebug("Audio F9"); 274 // qDebug("Audio F9");
274 e->accept(); 275 e->accept();
275 break; 276 break;
276 case Key_F10: //contacts 277 case Key_F10: //contacts
277 break; 278 break;
278 case Key_F11: //menu 279 case Key_F11: //menu
279 mediaPlayerState.toggleBlank(); 280 mediaPlayerState.toggleBlank();
280 e->accept(); 281 e->accept();
281 break; 282 break;
282 case Key_F12: //home 283 case Key_F12: //home
283 break; 284 break;
284 case Key_F13: //mail 285 case Key_F13: //mail
285 mediaPlayerState.toggleBlank(); 286 mediaPlayerState.toggleBlank();
286 e->accept(); 287 e->accept();
287 break; 288 break;
288 case Key_Space: { 289 case Key_Space: {
289 e->accept(); 290 e->accept();
290 mediaPlayerState.togglePaused(); 291 mediaPlayerState.togglePaused();
291 } 292 }
292 break; 293 break;
293 case Key_Down: 294 case Key_Down:
294 // toggleButton(6); 295 // toggleButton(6);
295 emit lessClicked(); 296 emit lessClicked();
296 emit lessReleased(); 297 emit lessReleased();
297 // toggleButton(6); 298 // toggleButton(6);
298 e->accept(); 299 e->accept();
299 break; 300 break;
300 case Key_Up: 301 case Key_Up:
301 // toggleButton(5); 302 // toggleButton(5);
302 emit moreClicked(); 303 emit moreClicked();
303 emit moreReleased(); 304 emit moreReleased();
304 // toggleButton(5); 305 // toggleButton(5);
305 e->accept(); 306 e->accept();
306 break; 307 break;
307 case Key_Right: 308 case Key_Right:
308 // toggleButton(3); 309 // toggleButton(3);
309 mediaPlayerState.setNext(); 310 mediaPlayerState.setNext();
310 // toggleButton(3); 311 // toggleButton(3);
311 e->accept(); 312 e->accept();
312 break; 313 break;
313 case Key_Left: 314 case Key_Left:
314 // toggleButton(4); 315 // toggleButton(4);
315 mediaPlayerState.setPrev(); 316 mediaPlayerState.setPrev();
316 // toggleButton(4); 317 // toggleButton(4);
317 e->accept(); 318 e->accept();
318 break; 319 break;
319 case Key_Escape: { 320 case Key_Escape: {
320 } 321 }
321 break; 322 break;
322 323
323 }; 324 };
324} 325}
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
43class QPixmap; 43class QPixmap;
44 44
45class AudioWidget : public MediaWidget { 45class AudioWidget : public MediaWidget {
46 Q_OBJECT 46 Q_OBJECT
47public: 47public:
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
54public slots: 54public 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
62public: 62public:
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
69signals: 69signals:
70 void sliderMoved(long); 70 void sliderMoved(long);
71 71
72protected: 72protected:
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);
78private slots: 78private slots:
79 void skipFor(); 79 void skipFor();
80 void skipBack(); 80 void skipBack();
81 void stopSkip(); 81 void stopSkip();
82private: 82private:
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
8using namespace Opie::Core;
8OPIE_EXPORT_APP( OApplicationFactory<PlayListWidget> ) 9OPIE_EXPORT_APP( OApplicationFactory<PlayListWidget> )
9 10
10#if 0 11#if 0
12using namespace Opie::Core;
11int main(int argc, char **argv) { 13int 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,433 +1,434 @@
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
50using namespace Opie::Ui;
50PlayListWidget::PlayListWidget(QWidget* parent, const char* name, WFlags fl ) 51PlayListWidget::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
163PlayListWidget::~PlayListWidget() { 164PlayListWidget::~PlayListWidget() {
164 delete d; 165 delete d;
165 delete m_mp; 166 delete m_mp;
166} 167}
167 168
168 169
169void PlayListWidget::initializeStates() { 170void 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
176void PlayListWidget::writeDefaultPlaylist() { 177void 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
201void PlayListWidget::addToSelection( const DocLnk& lnk ) { 202void 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
211void PlayListWidget::clearList() { 212void 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
221void PlayListWidget::viewPressed( int mouse, QListViewItem *, const QPoint& , int) { 222void 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
237void PlayListWidget::playlistViewPressed( int mouse, QListViewItem *, const QPoint& , int ) { 238void 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:
242 { 243 {
243 QPopupMenu m; 244 QPopupMenu m;
244 m.insertItem( tr( "Play" ), this, SLOT( playSelected() )); 245 m.insertItem( tr( "Play" ), this, SLOT( playSelected() ));
245 m.insertItem( tr( "Remove" ), this, SLOT( removeSelected() )); 246 m.insertItem( tr( "Remove" ), this, SLOT( removeSelected() ));
246 m.exec( QCursor::pos() ); 247 m.exec( QCursor::pos() );
247 } 248 }
248 break; 249 break;
249 } 250 }
250} 251}
251 252
252 253
253void PlayListWidget::addAllToList() { 254void PlayListWidget::addAllToList() {
254 255
255 256
256 audioView->populateView(); 257 audioView->populateView();
257 258
258 QListViewItemIterator audioIt( audioView ); 259 QListViewItemIterator audioIt( audioView );
259 DocLnk lnk; 260 DocLnk lnk;
260 QString filename; 261 QString filename;
261 // iterate through all items of the listview 262 // iterate through all items of the listview
262 for ( ; audioIt.current(); ++audioIt ) { 263 for ( ; audioIt.current(); ++audioIt ) {
263 filename = audioIt.current()->text(3); 264 filename = audioIt.current()->text(3);
264 lnk.setName( QFileInfo(filename).baseName() ); //sets name 265 lnk.setName( QFileInfo(filename).baseName() ); //sets name
265 lnk.setFile( filename ); //sets file name 266 lnk.setFile( filename ); //sets file name
266 d->selectedFiles->addToSelection( lnk); 267 d->selectedFiles->addToSelection( lnk);
267 } 268 }
268 269
269 videoView->populateView(); 270 videoView->populateView();
270 271
271 QListViewItemIterator videoIt( videoView ); 272 QListViewItemIterator videoIt( videoView );
272 for ( ; videoIt.current(); ++videoIt ) { 273 for ( ; videoIt.current(); ++videoIt ) {
273 filename = videoIt.current()->text(3); 274 filename = videoIt.current()->text(3);
274 lnk.setName( QFileInfo(filename).baseName() ); //sets name 275 lnk.setName( QFileInfo(filename).baseName() ); //sets name
275 lnk.setFile( filename ); //sets file name 276 lnk.setFile( filename ); //sets file name
276 d->selectedFiles->addToSelection( lnk); 277 d->selectedFiles->addToSelection( lnk);
277 } 278 }
278 279
279 tabWidget->setCurrentPage(0); 280 tabWidget->setCurrentPage(0);
280 281
281 writeCurrentM3u(); 282 writeCurrentM3u();
282 d->selectedFiles->first(); 283 d->selectedFiles->first();
283} 284}
284 285
285 286
286void PlayListWidget::addAllMusicToList() { 287void PlayListWidget::addAllMusicToList() {
287 288
288 audioView->populateView(); 289 audioView->populateView();
289 290
290 QListViewItemIterator audioIt( audioView ); 291 QListViewItemIterator audioIt( audioView );
291 DocLnk lnk; 292 DocLnk lnk;
292 QString filename; 293 QString filename;
293 // iterate through all items of the listview 294 // iterate through all items of the listview
294 for ( ; audioIt.current(); ++audioIt ) { 295 for ( ; audioIt.current(); ++audioIt ) {
295 filename = audioIt.current()->text(3); 296 filename = audioIt.current()->text(3);
296 lnk.setName( QFileInfo(filename).baseName() ); //sets name 297 lnk.setName( QFileInfo(filename).baseName() ); //sets name
297 lnk.setFile( filename ); //sets file name 298 lnk.setFile( filename ); //sets file name
298 d->selectedFiles->addToSelection( lnk); 299 d->selectedFiles->addToSelection( lnk);
299 } 300 }
300 301
301 tabWidget->setCurrentPage(0); 302 tabWidget->setCurrentPage(0);
302 writeCurrentM3u(); 303 writeCurrentM3u();
303 d->selectedFiles->first(); 304 d->selectedFiles->first();
304} 305}
305 306
306 307
307void PlayListWidget::addAllVideoToList() { 308void PlayListWidget::addAllVideoToList() {
308 309
309 videoView->populateView(); 310 videoView->populateView();
310 311
311 QListViewItemIterator videoIt( videoView ); 312 QListViewItemIterator videoIt( videoView );
312 DocLnk lnk; 313 DocLnk lnk;
313 QString filename; 314 QString filename;
314 for ( ; videoIt.current(); ++videoIt ) { 315 for ( ; videoIt.current(); ++videoIt ) {
315 filename = videoIt.current()->text(3); 316 filename = videoIt.current()->text(3);
316 lnk.setName( QFileInfo(filename).baseName() ); //sets name 317 lnk.setName( QFileInfo(filename).baseName() ); //sets name
317 lnk.setFile( filename ); //sets file name 318 lnk.setFile( filename ); //sets file name
318 d->selectedFiles->addToSelection( lnk); 319 d->selectedFiles->addToSelection( lnk);
319 } 320 }
320 tabWidget->setCurrentPage(0); 321 tabWidget->setCurrentPage(0);
321 writeCurrentM3u(); 322 writeCurrentM3u();
322 d->selectedFiles->first(); 323 d->selectedFiles->first();
323} 324}
324 325
325 326
326void PlayListWidget::setDocument( const QString& fileref ) { 327void PlayListWidget::setDocument( const QString& fileref ) {
327 // qDebug( "<<<<<<<<set document>>>>>>>>>> "+fileref ); 328 // qDebug( "<<<<<<<<set document>>>>>>>>>> "+fileref );
328 fromSetDocument = TRUE; 329 fromSetDocument = TRUE;
329 QFileInfo fileInfo(fileref); 330 QFileInfo fileInfo(fileref);
330 331
331 if ( !fileInfo.exists() ) { 332 if ( !fileInfo.exists() ) {
332 QMessageBox::warning( this, tr( "Invalid File" ), 333 QMessageBox::warning( this, tr( "Invalid File" ),
333 tr( "There was a problem in getting the file." ) ); 334 tr( "There was a problem in getting the file." ) );
334 return; 335 return;
335 } 336 }
336 337
337 clearList(); 338 clearList();
338 QString extension = fileInfo.extension(false); 339 QString extension = fileInfo.extension(false);
339 340
340 if( extension.find( "m3u", 0, false) != -1 341 if( extension.find( "m3u", 0, false) != -1
341 || extension.find( "pls", 0, false) != -1 ) { 342 || extension.find( "pls", 0, false) != -1 ) {
342 readListFromFile( fileref ); 343 readListFromFile( fileref );
343 } else { 344 } else {
344 clearList(); 345 clearList();
345 DocLnk lnk; 346 DocLnk lnk;
346 lnk.setName( fileInfo.baseName() ); //sets name 347 lnk.setName( fileInfo.baseName() ); //sets name
347 lnk.setFile( fileref ); //sets file name 348 lnk.setFile( fileref ); //sets file name
348 addToSelection( lnk ); 349 addToSelection( lnk );
349 writeCurrentM3u(); 350 writeCurrentM3u();
350 351
351 d->setDocumentUsed = TRUE; 352 d->setDocumentUsed = TRUE;
352 mediaPlayerState->setPlaying( FALSE ); 353 mediaPlayerState->setPlaying( FALSE );
353 mediaPlayerState->setPlaying( TRUE ); 354 mediaPlayerState->setPlaying( TRUE );
354 } 355 }
355} 356}
356 357
357 358
358void PlayListWidget::useSelectedDocument() { 359void PlayListWidget::useSelectedDocument() {
359 d->setDocumentUsed = FALSE; 360 d->setDocumentUsed = FALSE;
360} 361}
361 362
362 363
363const DocLnk *PlayListWidget::current() const { // this is fugly 364const DocLnk *PlayListWidget::current() const { // this is fugly
364 assert( currentTab() == CurrentPlayList ); 365 assert( currentTab() == CurrentPlayList );
365 366
366 const DocLnk *lnk = d->selectedFiles->current(); 367 const DocLnk *lnk = d->selectedFiles->current();
367 if ( !lnk ) { 368 if ( !lnk ) {
368 d->selectedFiles->first(); 369 d->selectedFiles->first();
369 lnk = d->selectedFiles->current(); 370 lnk = d->selectedFiles->current();
370 } 371 }
371 assert( lnk ); 372 assert( lnk );
372 return lnk; 373 return lnk;
373} 374}
374 375
375 376
376bool PlayListWidget::prev() { 377bool PlayListWidget::prev() {
377 if ( mediaPlayerState->isShuffled() ) { 378 if ( mediaPlayerState->isShuffled() ) {
378 const DocLnk *cur = current(); 379 const DocLnk *cur = current();
379 int j = 1 + (int)(97.0 * rand() / (RAND_MAX + 1.0)); 380 int j = 1 + (int)(97.0 * rand() / (RAND_MAX + 1.0));
380 for ( int i = 0; i < j; i++ ) { 381 for ( int i = 0; i < j; i++ ) {
381 if ( !d->selectedFiles->next() ) 382 if ( !d->selectedFiles->next() )
382 d->selectedFiles->first(); 383 d->selectedFiles->first();
383 } 384 }
384 if ( cur == current() ) 385 if ( cur == current() )
385 if ( !d->selectedFiles->next() ) { 386 if ( !d->selectedFiles->next() ) {
386 d->selectedFiles->first(); 387 d->selectedFiles->first();
387 } 388 }
388 return TRUE; 389 return TRUE;
389 } else { 390 } else {
390 if ( !d->selectedFiles->prev() ) { 391 if ( !d->selectedFiles->prev() ) {
391 if ( mediaPlayerState->isLooping() ) { 392 if ( mediaPlayerState->isLooping() ) {
392 return d->selectedFiles->last(); 393 return d->selectedFiles->last();
393 } else { 394 } else {
394 return FALSE; 395 return FALSE;
395 } 396 }
396 } 397 }
397 return TRUE; 398 return TRUE;
398 } 399 }
399} 400}
400 401
401 402
402bool PlayListWidget::next() { 403bool PlayListWidget::next() {
403//qDebug("<<<<<<<<<<<<next()"); 404//qDebug("<<<<<<<<<<<<next()");
404 if ( mediaPlayerState->isShuffled() ) { 405 if ( mediaPlayerState->isShuffled() ) {
405 return prev(); 406 return prev();
406 } else { 407 } else {
407 if ( !d->selectedFiles->next() ) { 408 if ( !d->selectedFiles->next() ) {
408 if ( mediaPlayerState->isLooping() ) { 409 if ( mediaPlayerState->isLooping() ) {
409 return d->selectedFiles->first(); 410 return d->selectedFiles->first();
410 } else { 411 } else {
411 return FALSE; 412 return FALSE;
412 } 413 }
413 } 414 }
414 return TRUE; 415 return TRUE;
415 } 416 }
416} 417}
417 418
418 419
419bool PlayListWidget::first() { 420bool PlayListWidget::first() {
420 return d->selectedFiles->first(); 421 return d->selectedFiles->first();
421} 422}
422 423
423 424
424bool PlayListWidget::last() { 425bool PlayListWidget::last() {
425 return d->selectedFiles->last(); 426 return d->selectedFiles->last();
426} 427}
427 428
428 429
429 void PlayListWidget::saveList() { 430 void PlayListWidget::saveList() {
430 writem3u(); 431 writem3u();
431 } 432 }
432 433
433 434
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
26using namespace Opie::Core;
27using namespace Opie::Core;
26OPIE_EXPORT_APP( OApplicationFactory<ImageViewer> ) 28OPIE_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,910 +1,911 @@
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
45using namespace Opie::Ui;
45ControlsDialog::ControlsDialog(const QString &caption,QImage image,int *brightness,QWidget *parent) 46ControlsDialog::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
78void ControlsDialog::bValueChanged(int value) 79void 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
91void ControlsDialog::accept() 92void 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
99InfoDialog::InfoDialog(const QString &caption, const QStringList text,QWidget *parent) 100InfoDialog::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
141void InfoDialog::displayInfo(const QString &caption, const QStringList text, QWidget *parent) 142void 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
151ImagePane::ImagePane( QWidget *parent ) : QWidget( parent ) 152ImagePane::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
165void ImagePane::setPixmap( const QPixmap &pm ) 166void 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
173void ImagePane::imageClicked() 174void 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
182void ImageWidget::paintEvent( QPaintEvent *e ) 183void 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
195void ImageWidget::mouseReleaseEvent(QMouseEvent *) 196void ImageWidget::mouseReleaseEvent(QMouseEvent *)
196{ 197{
197 emit clicked(); 198 emit clicked();
198} 199}
199 200
200//=========================================================================== 201//===========================================================================
201 202
202ImageViewer::ImageViewer( QWidget *parent, const char *name, int /*wFlags*/ ) 203ImageViewer::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 );
237 238
238 viewMenuFile->setItemChecked ( SHOW_THUMBNAILS, showThumbView ); 239 viewMenuFile->setItemChecked ( SHOW_THUMBNAILS, showThumbView );
239 240
240 241
241 242
242 243
243 optionsMenuFile = new QPopupMenu( this); 244 optionsMenuFile = new QPopupMenu( this);
244 //menubarFile->insertItem( tr("Options"),optionsMenu ); 245 //menubarFile->insertItem( tr("Options"),optionsMenu );
245 slideAction = new QAction( tr( "Slide show" ), Resource::loadIconSet( "slideshow" ), 246 slideAction = new QAction( tr( "Slide show" ), Resource::loadIconSet( "slideshow" ),
246 QString::null, 0, this, 0 ); 247 QString::null, 0, this, 0 );
247 slideAction->setToggleAction( TRUE ); 248 slideAction->setToggleAction( TRUE );
248 connect( slideAction, SIGNAL( toggled(bool) ), this, SLOT( slideShow(bool) ) ); 249 connect( slideAction, SIGNAL( toggled(bool) ), this, SLOT( slideShow(bool) ) );
249 slideAction->addTo( optionsMenuFile); 250 slideAction->addTo( optionsMenuFile);
250// slideAction->addTo( toolBar ); 251// slideAction->addTo( toolBar );
251 252
252 253
253// optionsMenuFile->insertItem( tr("Slideshow") ); 254// optionsMenuFile->insertItem( tr("Slideshow") );
254 optionsMenuFile->insertSeparator(); 255 optionsMenuFile->insertSeparator();
255 optionsMenuFile->insertItem( tr("Preferences.."), this, SLOT(settings()), 0); 256 optionsMenuFile->insertItem( tr("Preferences.."), this, SLOT(settings()), 0);
256// optionsMenuFile->insertItem( tr("Help"), this, SLOT(help()), 0); 257// optionsMenuFile->insertItem( tr("Help"), this, SLOT(help()), 0);
257 258
258 QStrList fmt = QImage::outputFormats(); 259 QStrList fmt = QImage::outputFormats();
259 260
260 261
261 fileMenuView = new QPopupMenu( this ); 262 fileMenuView = new QPopupMenu( this );
262 //menubarView->insertItem( tr("File"),fileMenu ); 263 //menubarView->insertItem( tr("File"),fileMenu );
263 fileMenuView->insertItem( tr("Image Info ..."),this, SLOT(displayInfoDialog()),0 ); 264 fileMenuView->insertItem( tr("Image Info ..."),this, SLOT(displayInfoDialog()),0 );
264 fileMenuView->insertSeparator(); 265 fileMenuView->insertSeparator();
265 266
266 viewMenuView = new QPopupMenu(this ); 267 viewMenuView = new QPopupMenu(this );
267 viewMenuView->setCheckable ( true ); 268 viewMenuView->setCheckable ( true );
268 269
269 //menubarView->insertItem( tr("View"),viewMenu ); 270 //menubarView->insertItem( tr("View"),viewMenu );
270 viewMenuView->insertItem(tr("Horizontal flip"), this, SLOT(hFlip()), 0); 271 viewMenuView->insertItem(tr("Horizontal flip"), this, SLOT(hFlip()), 0);
271 viewMenuView->insertItem(tr("Vertical flip"), this, SLOT(vFlip()), 0); 272 viewMenuView->insertItem(tr("Vertical flip"), this, SLOT(vFlip()), 0);
272 273
273 stack = new QWidgetStack( this ); 274 stack = new QWidgetStack( this );
274 stack->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) ); 275 stack->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) );
275 setCentralWidget( stack ); 276 setCentralWidget( stack );
276 277
277 278
278 imagePanel = new ImagePane( stack ); 279 imagePanel = new ImagePane( stack );
279 connect(imagePanel, SIGNAL(clicked()), this, SLOT(normalView())); 280 connect(imagePanel, SIGNAL(clicked()), this, SLOT(normalView()));
280 281
281 282
282 ImageFileSelector::CURRENT_VIEW cv; 283 ImageFileSelector::CURRENT_VIEW cv;
283 if(showThumbView) 284 if(showThumbView)
284 cv=ImageFileSelector::THUMBNAIL; 285 cv=ImageFileSelector::THUMBNAIL;
285 else 286 else
286 cv=ImageFileSelector::DETAILED; 287 cv=ImageFileSelector::DETAILED;
287 288
288 qDebug("cv = %d",cv); 289 qDebug("cv = %d",cv);
289 290
290 fileSelector = new ImageFileSelector( cv,stack, "fs"); 291 fileSelector = new ImageFileSelector( cv,stack, "fs");
291 292
292 //switchThumbView(); 293 //switchThumbView();
293 294
294 295
295 //fileSelector = new ImageFileSelector("image/*", stack, "fs"); 296 //fileSelector = new ImageFileSelector("image/*", stack, "fs");
296 //fileSelector->setNewVisible(FALSE); 297 //fileSelector->setNewVisible(FALSE);
297 //fileSelector->setCloseVisible(FALSE); 298 //fileSelector->setCloseVisible(FALSE);
298 connect( fileSelector, SIGNAL( closeMe() ), this, SLOT( closeFileSelector() ) ); 299 connect( fileSelector, SIGNAL( closeMe() ), this, SLOT( closeFileSelector() ) );
299 connect( fileSelector, SIGNAL( fileSelected(const DocLnk&) ), 300 connect( fileSelector, SIGNAL( fileSelected(const DocLnk&) ),
300 this, SLOT( openFile(const DocLnk&) ) ); 301 this, SLOT( openFile(const DocLnk&) ) );
301 302
302 imageList = fileSelector->fileList(); 303 imageList = fileSelector->fileList();
303 slideAction->setEnabled( imageList.count() != 0); 304 slideAction->setEnabled( imageList.count() != 0);
304 305
305 iconToolBar = new QToolBar(this); 306 iconToolBar = new QToolBar(this);
306 307
307 QAction *a; 308 QAction *a;
308 309
309 a = new QAction( tr( "Open ..." ), Resource::loadPixmap( "fileopen" ), QString::null, 0, this, 0 ); 310 a = new QAction( tr( "Open ..." ), Resource::loadPixmap( "fileopen" ), QString::null, 0, this, 0 );
310 connect( a, SIGNAL( activated() ), this, SLOT( open() ) ); 311 connect( a, SIGNAL( activated() ), this, SLOT( open() ) );
311 a->addTo( fileMenuView); 312 a->addTo( fileMenuView);
312 a->addTo( iconToolBar ); 313 a->addTo( iconToolBar );
313 314
314 315
315 a = new QAction( tr( "Rotate 90"), Resource::loadPixmap( "rotate90" ), QString::null, 0, this, 0); 316 a = new QAction( tr( "Rotate 90"), Resource::loadPixmap( "rotate90" ), QString::null, 0, this, 0);
316 connect( a, SIGNAL( activated() ), this, SLOT( rot90() ) ); 317 connect( a, SIGNAL( activated() ), this, SLOT( rot90() ) );
317 a->addTo( iconToolBar ); 318 a->addTo( iconToolBar );
318 a->addTo( viewMenuView ); 319 a->addTo( viewMenuView );
319 320
320 a = new QAction( tr( "Rotate 180" ), Resource::loadPixmap( "repeat" ), QString::null, 0, this, 0 ); 321 a = new QAction( tr( "Rotate 180" ), Resource::loadPixmap( "repeat" ), QString::null, 0, this, 0 );
321 connect( a, SIGNAL( activated() ), this, SLOT( rot180() ) ); 322 connect( a, SIGNAL( activated() ), this, SLOT( rot180() ) );
322 a->addTo( iconToolBar ); 323 a->addTo( iconToolBar );
323 a->addTo( viewMenuView ); 324 a->addTo( viewMenuView );
324 325
325 326
326 a = new QAction( tr( "Rotate 270"), Resource::loadPixmap( "rotate270" ), QString::null, 0, this, 0); 327 a = new QAction( tr( "Rotate 270"), Resource::loadPixmap( "rotate270" ), QString::null, 0, this, 0);
327 connect( a, SIGNAL( activated() ), this, SLOT( rot270() ) ); 328 connect( a, SIGNAL( activated() ), this, SLOT( rot270() ) );
328 //a->addTo( iconToolBar ); 329 //a->addTo( iconToolBar );
329 a->addTo( viewMenuView ); 330 a->addTo( viewMenuView );
330 331
331 332
332 333
333 viewMenuView->insertSeparator(); 334 viewMenuView->insertSeparator();
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
380ImageViewer::~ImageViewer() 381ImageViewer::~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
400void ImageViewer::help() { 401void ImageViewer::help() {
401 402
402} 403}
403 404
404 405
405void ImageViewer::settings() 406void 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
434void ImageViewer::switchSizeToScreen() 435void 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
441void ImageViewer::updateImage() 442void 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
450void ImageViewer::switchThumbView() 451void 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
459void ImageViewer::switchToFileSelector() 460void 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
472void ImageViewer::switchToImageView() 473void 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
487void ImageViewer::setDocument(const QString& fileref) 488void 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
494void ImageViewer::doDelayedLoad() 495void ImageViewer::doDelayedLoad()
495{ 496{
496 show(delayLoad); 497 show(delayLoad);
497} 498}
498 499
499void ImageViewer::show() 500void ImageViewer::show()
500{ 501{
501 normalView(); 502 normalView();
502 QMainWindow::show(); 503 QMainWindow::show();
503} 504}
504 505
505void ImageViewer::show(const QString& fileref) 506void 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
520void ImageViewer::openFile() { 521void 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
533void ImageViewer::openFile( const DocLnk &link ) 534void 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
546void ImageViewer::open() 547void ImageViewer::open()
547{ 548{
548 switchToFileSelector(); 549 switchToFileSelector();
549} 550}
550 551
551void ImageViewer::closeFileSelector() 552void ImageViewer::closeFileSelector()
552{ 553{
553 switchToImageView(); 554 switchToImageView();
554} 555}
555 556
556void ImageViewer::updateCaption( QString name ) 557void 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
568void ImageViewer::loadImage( const char *fileName ) 569void 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
605bool ImageViewer::loadSelected() 606bool 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
638bool ImageViewer::reconvertImage() 639bool 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
661int ImageViewer::calcHeight() 662int 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*/
672void ImageViewer::scale() 673void 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
700void ImageViewer::resizeEvent( QResizeEvent * ) 701void 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
717void ImageViewer::hFlip() 718void ImageViewer::hFlip()
718{ 719{
719// matrix.scale( -1.0, 1.0 ); 720// matrix.scale( -1.0, 1.0 );
720 721
721 setImage(image.mirror(TRUE,FALSE)); 722 setImage(image.mirror(TRUE,FALSE));
722} 723}
723 724
724void ImageViewer::vFlip() 725void ImageViewer::vFlip()
725{ 726{
726// matrix.scale( 1.0, -1.0 ); 727// matrix.scale( 1.0, -1.0 );
727 setImage(image.mirror(FALSE,TRUE)); 728 setImage(image.mirror(FALSE,TRUE));
728} 729}
729 730
730void ImageViewer::rot180() 731void ImageViewer::rot180()
731{ 732{
732// matrix.rotate( 180.0 ); 733// matrix.rotate( 180.0 );
733 setImage(image.mirror(TRUE,TRUE)); 734 setImage(image.mirror(TRUE,TRUE));
734} 735}
735 736
736void ImageViewer::rot90() 737void ImageViewer::rot90()
737{ 738{
738 QImage oldimage; 739 QImage oldimage;
739 oldimage = image.convertDepth(32); 740 oldimage = image.convertDepth(32);
740// matrix.rotate( -90.0 ); 741// matrix.rotate( -90.0 );
741 setImage(rotate(oldimage,Rotate90)); 742 setImage(rotate(oldimage,Rotate90));
742 743
743} 744}
744void ImageViewer::rot270() 745void ImageViewer::rot270()
745{ 746{
746 747
747 QImage oldimage; 748 QImage oldimage;
748 oldimage = image.convertDepth(32); 749 oldimage = image.convertDepth(32);
749// matrix.rotate(90.0); 750// matrix.rotate(90.0);
750 setImage(rotate(oldimage,Rotate270)); 751 setImage(rotate(oldimage,Rotate270));
751 752
752} 753}
753 754
754void ImageViewer::blackAndWhite() 755void ImageViewer::blackAndWhite()
755{ 756{
756 757
757 viewMenuView->setItemEnabled(BLACKANDWHITE,false); 758 viewMenuView->setItemEnabled(BLACKANDWHITE,false);
758 setImage(toGray(image,false)); 759 setImage(toGray(image,false));
759} 760}
760 761
761void ImageViewer::displayControlsDialog() 762void ImageViewer::displayControlsDialog()
762{ 763{
763 int w=80; 764 int w=80;
764 int h=w; 765 int h=w;
765 QImage small; 766 QImage small;
766 767
767 if ( image.width()<w ||image.height()<h ) 768 if ( image.width()<w ||image.height()<h )
768 small=image.smoothScale(w,h); 769 small=image.smoothScale(w,h);
769 else 770 else
770 small=image.copy(0,0,w,h); 771 small=image.copy(0,0,w,h);
771 772
772 int newB=0; 773 int newB=0;
773 ControlsDialog *dlg=new ControlsDialog("Image Viewer",small,&newB,this); 774 ControlsDialog *dlg=new ControlsDialog("Image Viewer",small,&newB,this);
774 dlg->exec(); 775 dlg->exec();
775 if ( newB ) { 776 if ( newB ) {
776 intensity(image,(float)newB/100); 777 intensity(image,(float)newB/100);
777 setImage(image); 778 setImage(image);
778 } 779 }
779 780
780} 781}
781 782
782 783
783void ImageViewer::displayInfoDialog() 784void ImageViewer::displayInfoDialog()
784{ 785{
785 786
786 QStringList ls; 787 QStringList ls;
787 788
788 for ( int i=0;i<LAST;i++ ) 789 for ( int i=0;i<LAST;i++ )
789 ls.append(imageInfo[i]); 790 ls.append(imageInfo[i]);
790 791
791 InfoDialog::displayInfo("Image Viewer",ls,this); 792 InfoDialog::displayInfo("Image Viewer",ls,this);
792} 793}
793void ImageViewer::normalView() 794void ImageViewer::normalView()
794{ 795{
795 if ( !imagePanel->parentWidget() ) 796 if ( !imagePanel->parentWidget() )
796 { 797 {
797 798
798 isFullScreen = FALSE; 799 isFullScreen = FALSE;
799 stack->addWidget( imagePanel, 1 ); 800 stack->addWidget( imagePanel, 1 );
800 switchToImageView(); 801 switchToImageView();
801 if ( isSized ) 802 if ( isSized )
802 scale(); 803 scale();
803 804
804 updateImage(); 805 updateImage();
805 806
806 } 807 }
807} 808}
808 809
809void ImageViewer::stopSlideShow() { 810void ImageViewer::stopSlideShow() {
810 if (slideTimer->isActive()) 811 if (slideTimer->isActive())
811 slideTimer->stop(); 812 slideTimer->stop();
812} 813}
813 814
814void ImageViewer::fullScreen() 815void ImageViewer::fullScreen()
815{ 816{
816 // Full-screen option 817 // Full-screen option
817 // contributed by Robert Wittams <robert@wittams.com> 818 // contributed by Robert Wittams <robert@wittams.com>
818 if ( imagePanel->parentWidget() && loadSelected() ) 819 if ( imagePanel->parentWidget() && loadSelected() )
819 { 820 {
820 isFullScreen = TRUE; 821 isFullScreen = TRUE;
821 imagePanel->reparent(0,QPoint(0,0)); 822 imagePanel->reparent(0,QPoint(0,0));
822 imagePanel->resize(qApp->desktop()->width(), qApp->desktop()->height()); 823 imagePanel->resize(qApp->desktop()->width(), qApp->desktop()->height());
823 824
824 if ( isSized ) 825 if ( isSized )
825 scale(); 826 scale();
826 updateImage(); 827 updateImage();
827 imagePanel->showFullScreen(); 828 imagePanel->showFullScreen();
828 } 829 }
829} 830}
830 831
831void ImageViewer::setImage(const QImage& newimage) 832void ImageViewer::setImage(const QImage& newimage)
832{ 833{
833 image = newimage; 834 image = newimage;
834 reconvertImage(); 835 reconvertImage();
835 updateImage(); 836 updateImage();
836} 837}
837 838
838void ImageViewer::updateImageInfo(QString &filePath) 839void ImageViewer::updateImageInfo(QString &filePath)
839{ 840{
840 841
841 for ( int i=0;i<LAST;i++ ) 842 for ( int i=0;i<LAST;i++ )
842 { 843 {
843 imageInfo[i]=""; 844 imageInfo[i]="";
844 } 845 }
845 846
846 imageInfo[FORMAT]=QImage::imageFormat (filePath ); 847 imageInfo[FORMAT]=QImage::imageFormat (filePath );
847 QFileInfo fi(filePath); 848 QFileInfo fi(filePath);
848 imageInfo[PATH]=fi.fileName(); 849 imageInfo[PATH]=fi.fileName();
849 imageInfo[FILE_SIZE]=QString::number(fi.size())+" (bytes)"; 850 imageInfo[FILE_SIZE]=QString::number(fi.size())+" (bytes)";
850 QString message("%1x%2"); 851 QString message("%1x%2");
851 imageInfo[SIZE]=QString("%1x%2"); 852 imageInfo[SIZE]=QString("%1x%2");
852 imageInfo[SIZE]=imageInfo[SIZE].arg(image.width()).arg(image.height()); 853 imageInfo[SIZE]=imageInfo[SIZE].arg(image.width()).arg(image.height());
853 if ( image.numColors() > 0 ) 854 if ( image.numColors() > 0 )
854 { 855 {
855 imageInfo[COLORS]=tr("%1 colors").arg(image.numColors()); 856 imageInfo[COLORS]=tr("%1 colors").arg(image.numColors());
856 } 857 }
857 else if ( image.depth() >= 16 ) 858 else if ( image.depth() >= 16 )
858 { 859 {
859 imageInfo[COLORS]=tr(" True color"); 860 imageInfo[COLORS]=tr(" True color");
860 } 861 }
861 if ( image.hasAlphaBuffer() ) 862 if ( image.hasAlphaBuffer() )
862 { 863 {
863 if ( image.depth() == 8 ) 864 if ( image.depth() == 8 )
864 { 865 {
865 int i; 866 int i;
866 bool alpha[256]; 867 bool alpha[256];
867 int nalpha=0; 868 int nalpha=0;
868 869
869 for ( i=0; i<256; i++ ) 870 for ( i=0; i<256; i++ )
870 alpha[i] = FALSE; 871 alpha[i] = FALSE;
871 872
872 for ( i=0; i<image.numColors(); i++ ) 873 for ( i=0; i<image.numColors(); i++ )
873 { 874 {
874 int alevel = image.color(i) >> 24; 875 int alevel = image.color(i) >> 24;
875 if ( !alpha[alevel] ) 876 if ( !alpha[alevel] )
876 { 877 {
877 alpha[alevel] = TRUE; 878 alpha[alevel] = TRUE;
878 nalpha++; 879 nalpha++;
879 } 880 }
880 } 881 }
881 imageInfo[ALPHA]=tr("%1 alpha levels").arg(nalpha); 882 imageInfo[ALPHA]=tr("%1 alpha levels").arg(nalpha);
882 } 883 }
883 else 884 else
884 { 885 {
885 imageInfo[ALPHA]=tr("8-bit alpha channel"); 886 imageInfo[ALPHA]=tr("8-bit alpha channel");
886 } 887 }
887 } 888 }
888 889
889} 890}
890 891
891void ImageViewer::closeEvent( QCloseEvent *e ) 892void ImageViewer::closeEvent( QCloseEvent *e )
892{ 893{
893 if ( stack->visibleWidget() == imagePanel && !bFromDocView ) 894 if ( stack->visibleWidget() == imagePanel && !bFromDocView )
894 { 895 {
895 e->ignore(); 896 e->ignore();
896 open(); 897 open();
897 } 898 }
898 else 899 else
899 { 900 {
900 bFromDocView = FALSE; 901 bFromDocView = FALSE;
901 e->accept(); 902 e->accept();
902 } 903 }
903} 904}
904 905
905// Intensity,toGray and rotate code courtesy of KDE project. 906// Intensity,toGray and rotate code courtesy of KDE project.
906 907
907 908
908QImage& ImageViewer::intensity(QImage &image, float percent) 909QImage& ImageViewer::intensity(QImage &image, float percent)
909{ 910{
910 911