summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/showimg/ImageFileSelector.cpp72
-rw-r--r--noncore/multimedia/showimg/ImageFileSelector.h65
-rw-r--r--noncore/multimedia/showimg/settingsdialog.cpp88
-rw-r--r--noncore/multimedia/showimg/settingsdialog.h49
-rw-r--r--noncore/multimedia/showimg/settingsdialogbase.cpp106
-rw-r--r--noncore/multimedia/showimg/settingsdialogbase.h45
-rw-r--r--noncore/multimedia/showimg/showimg.cpp279
-rw-r--r--noncore/multimedia/showimg/showimg.h104
-rw-r--r--noncore/multimedia/showimg/showimg.pro34
9 files changed, 658 insertions, 184 deletions
diff --git a/noncore/multimedia/showimg/ImageFileSelector.cpp b/noncore/multimedia/showimg/ImageFileSelector.cpp
index 347300f..7872c09 100644
--- a/noncore/multimedia/showimg/ImageFileSelector.cpp
+++ b/noncore/multimedia/showimg/ImageFileSelector.cpp
@@ -23,6 +23,4 @@
23 23
24 24ThumbWidget::ThumbWidget(QPixmap p,QString text,const DocLnk& f,QWidget *parent,int w)
25 25 : QWidget( parent ),fl(f)
26
27ThumbWidget::ThumbWidget(QPixmap p,QString text,const DocLnk& f,QWidget *parent,int w) : QWidget( parent ),fl(f)
28{ 26{
@@ -40,3 +38,3 @@ ThumbWidget::ThumbWidget(QPixmap p,QString text,const DocLnk& f,QWidget *parent,
40 38
41void ThumbWidget::resizeEvent(QResizeEvent *e) 39void ThumbWidget::resizeEvent(QResizeEvent *)
42{ 40{
@@ -55,3 +53,3 @@ void ThumbWidget::paintEvent( QPaintEvent *e )
55 53
56void ThumbWidget::mouseReleaseEvent(QMouseEvent* event) 54void ThumbWidget::mouseReleaseEvent(QMouseEvent* )
57{ 55{
@@ -62,4 +60,4 @@ void ThumbWidget::mouseReleaseEvent(QMouseEvent* event)
62 60
63 61ImageFileSelectorItem::ImageFileSelectorItem( QListView *parent, const DocLnk &f)
64ImageFileSelectorItem::ImageFileSelectorItem( QListView *parent, const DocLnk &f): QListViewItem( parent ), fl( f ) 62 : QListViewItem( parent ), fl( f )
65{ 63{
@@ -80,3 +78,4 @@ ImageFileSelectorItem::~ImageFileSelectorItem()
80 78
81ImageFileSelector::ImageFileSelector( CURRENT_VIEW scv,QWidget *parent,const char *name ):QWidgetStack(parent) 79ImageFileSelector::ImageFileSelector( CURRENT_VIEW scv,QWidget *parent,const char * )
80 : QWidgetStack(parent)
82{ 81{
@@ -167,4 +166,5 @@ void ImageFileSelector::updateSizes()
167 166
168void ImageFileSelector::reread(bool purgeCache) 167void ImageFileSelector::reread(bool)
169{ 168{
169// qDebug("reread");
170 ImageFileSelectorItem *item = (ImageFileSelectorItem *)detailed->selectedItem(); 170 ImageFileSelectorItem *item = (ImageFileSelectorItem *)detailed->selectedItem();
@@ -179,5 +179,5 @@ void ImageFileSelector::reread(bool purgeCache)
179 QListIterator<DocLnk> dit( files.children() ); 179 QListIterator<DocLnk> dit( files.children() );
180 int y=0; 180// int y=0;
181 int x=4; 181// int x=4;
182 int totalHeight=4; 182// int totalHeight=4;
183 ThumbWidget *l=0; 183 ThumbWidget *l=0;
@@ -185,11 +185,8 @@ void ImageFileSelector::reread(bool purgeCache)
185 gl->expand(dit.count()/2,2); 185 gl->expand(dit.count()/2,2);
186
187 int i,j; 186 int i,j;
188
189 i=j=0; 187 i=j=0;
190
191 detailed->setUpdatesEnabled(false); 188 detailed->setUpdatesEnabled(false);
192 thumb->setUpdatesEnabled(false); 189 thumb->setUpdatesEnabled(false);
193 for ( ; dit.current(); ++dit ) 190
194 { 191 for ( ; dit.current(); ++dit ) {
195 item = new ImageFileSelectorItem( detailed, **dit ); 192 item = new ImageFileSelectorItem( detailed, **dit );
@@ -201,26 +198,23 @@ void ImageFileSelector::reread(bool purgeCache)
201 ImageFileSelectorItem *ii; 198 ImageFileSelectorItem *ii;
202 // iterate through all items of the listview 199 // iterate through all items of the listview
203 for ( ; it.current(); ++it ) 200 for ( ; it.current(); ++it ) {
204 {
205 ii=(ImageFileSelectorItem *)it.current(); 201 ii=(ImageFileSelectorItem *)it.current();
206 QImage img(ii->file().file()); 202 QImage img( ii->file().file() );
207 img=img.smoothScale(64,64); 203 if( !img.isNull()) {
208 QPixmap pix; 204 img=img.smoothScale(64,64);
209 pix.convertFromImage(img); 205 QPixmap pix;
210 l=new ThumbWidget(pix,ii->file().name(),ii->file(),background,width); 206 pix.convertFromImage(img);
211 l->setBackgroundColor(colorGroup().base()); 207 l=new ThumbWidget(pix,ii->file().name(),ii->file(),background,width);
212 gl->addWidget(l,j,i); 208 l->setBackgroundColor(colorGroup().base());
213 i++; 209 gl->addWidget(l,j,i);
214 if ( i==2 ) 210 i++;
215 { 211 if ( i==2 ) {
216 i=0; 212 i=0;
217 j++; 213 j++;
214 }
215 tList.append(l);
216 connect(l,SIGNAL(clicked(const DocLnk &)),this,SLOT(thumbClicked(const DocLnk &)));
218 } 217 }
219 tList.append(l);
220 connect(l,SIGNAL(clicked(const DocLnk &)),this,SLOT(thumbClicked(const DocLnk &)));
221
222 } 218 }
223 219
224
225
226 if ( !detailed->selectedItem() ) 220 if ( !detailed->selectedItem() )
@@ -232,3 +226,2 @@ void ImageFileSelector::reread(bool purgeCache)
232 thumb->update(); 226 thumb->update();
233
234} 227}
@@ -241,2 +234,3 @@ const DocLnk * ImageFileSelector::selected()
241{ 234{
235 qDebug("image selected");
242 ImageFileSelectorItem *item = (ImageFileSelectorItem *) detailed->selectedItem(); 236 ImageFileSelectorItem *item = (ImageFileSelectorItem *) detailed->selectedItem();
diff --git a/noncore/multimedia/showimg/ImageFileSelector.h b/noncore/multimedia/showimg/ImageFileSelector.h
index 2c346c4..798ebcc 100644
--- a/noncore/multimedia/showimg/ImageFileSelector.h
+++ b/noncore/multimedia/showimg/ImageFileSelector.h
@@ -14,2 +14,3 @@ class QScrollView;
14class QLabel; 14class QLabel;
15//class QValueList;
15 16
@@ -18,11 +19,7 @@ class ThumbWidget : public QWidget
18 Q_OBJECT 19 Q_OBJECT
19 public: 20public:
20 ThumbWidget(QPixmap p,QString text,const DocLnk& f,QWidget *parent=0,int width=-1); 21 ThumbWidget(QPixmap p,QString text,const DocLnk& f,QWidget *parent=0,int width=-1);
21 ~ThumbWidget() 22 ~ThumbWidget() { }
22 {
23
24 }
25 23
26 DocLnk file() const 24 DocLnk file() const {
27 {
28 return fl; 25 return fl;
@@ -47,2 +44,17 @@ private:
47 44
45
46
47class ImageFileSelectorItem : public QListViewItem
48{
49public:
50 ImageFileSelectorItem( QListView *parent, const DocLnk& f );
51 ~ImageFileSelectorItem();
52
53 DocLnk file() const {
54 return fl;
55 }
56private:
57 DocLnk fl;
58};
59
48class ImageFileSelector : public QWidgetStack 60class ImageFileSelector : public QWidgetStack
@@ -51,6 +63,5 @@ class ImageFileSelector : public QWidgetStack
51 63
52 public: 64public:
53 65
54 enum CURRENT_VIEW 66 enum CURRENT_VIEW {
55 {
56 THUMBNAIL, 67 THUMBNAIL,
@@ -70,4 +81,3 @@ class ImageFileSelector : public QWidgetStack
70 81
71 CURRENT_VIEW view() 82 CURRENT_VIEW view() {
72 {
73 return cView; 83 return cView;
@@ -75,2 +85,12 @@ class ImageFileSelector : public QWidgetStack
75 85
86 QValueList<DocLnk> fileList() const {
87 ((ImageFileSelector*)this)->fileCount(); // ensure all loaded when this is extended
88 QValueList<DocLnk> list;
89 ImageFileSelectorItem *item = (ImageFileSelectorItem *)detailed->firstChild();
90 while (item) {
91 list.append(item->file());
92 item = (ImageFileSelectorItem *)item->nextSibling();
93 }
94 return list;
95 }
76 96
@@ -111,23 +131,2 @@ private:
111}; 131};
112
113
114class ImageFileSelectorItem : public QListViewItem
115{
116public:
117 ImageFileSelectorItem( QListView *parent, const DocLnk& f );
118 ~ImageFileSelectorItem();
119
120 DocLnk file() const
121 {
122 return fl;
123 }
124
125
126private:
127 DocLnk fl;
128};
129
130
131
132
133#endif // IMAGEFILE_SELECTOR_H 132#endif // IMAGEFILE_SELECTOR_H
diff --git a/noncore/multimedia/showimg/settingsdialog.cpp b/noncore/multimedia/showimg/settingsdialog.cpp
new file mode 100644
index 0000000..55d555a
--- a/dev/null
+++ b/noncore/multimedia/showimg/settingsdialog.cpp
@@ -0,0 +1,88 @@
1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3**
4** This file is part of the Qtopia Environment.
5**
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
8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file.
10**
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.
13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15**
16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you.
18**
19**********************************************************************/
20
21#include "settingsdialog.h"
22#include <qslider.h>
23#include <qlabel.h>
24#include <qcheckbox.h>
25#include <qradiobutton.h>
26#include <qbuttongroup.h>
27
28SettingsDialog::SettingsDialog( QWidget *parent, const char *name, bool modal, WFlags f )
29 : SettingsDialogBase( parent, name, modal, f )
30{
31 connect( delaySlider, SIGNAL(valueChanged(int)), this, SLOT(delayChanged(int)) );
32}
33
34void SettingsDialog::setDelay( int d )
35{
36 delaySlider->setValue( d );
37 delayChanged( d );
38}
39
40int SettingsDialog::delay() const
41{
42 return delaySlider->value();
43}
44
45void SettingsDialog::setRepeat( bool r )
46{
47 repeatCheck->setChecked( r );
48}
49
50bool SettingsDialog::repeat() const
51{
52 return repeatCheck->isChecked();
53}
54
55void SettingsDialog::delayChanged( int d )
56{
57 delayText->setText( QString::number( d ) + " s" );
58}
59
60void SettingsDialog::setReverse(bool r)
61{
62 reverseCheck->setChecked(r);
63}
64
65bool SettingsDialog::reverse() const
66{
67 return reverseCheck->isChecked();
68}
69
70void SettingsDialog::setRotate(bool r)
71{
72 rotateCheck->setChecked(r);
73}
74
75bool SettingsDialog::rotate() const
76{
77 return rotateCheck->isChecked();
78}
79
80void SettingsDialog::setFastLoad(bool f)
81{
82 fastLoadCheck->setChecked(f);
83}
84
85bool SettingsDialog::fastLoad() const
86{
87 return fastLoadCheck->isChecked();
88}
diff --git a/noncore/multimedia/showimg/settingsdialog.h b/noncore/multimedia/showimg/settingsdialog.h
new file mode 100644
index 0000000..0f47990
--- a/dev/null
+++ b/noncore/multimedia/showimg/settingsdialog.h
@@ -0,0 +1,49 @@
1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3**
4** This file is part of the Qtopia Environment.
5**
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
8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file.
10**
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.
13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15**
16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you.
18**
19**********************************************************************/
20
21#ifndef SETTINGSDIALOG_H
22#define SETTINGSDIALOG_H
23
24#include "settingsdialogbase.h"
25
26class SettingsDialog : public SettingsDialogBase
27{
28 Q_OBJECT
29public:
30
31 SettingsDialog( QWidget * parent=0, const char * name=0, bool modal=FALSE, WFlags f=0 );
32
33 void setDelay( int d );
34 int delay() const;
35 void setRepeat( bool r );
36 bool repeat() const;
37 void setReverse( bool r );
38 bool reverse() const;
39 void setRotate(bool r);
40 bool rotate() const;
41 void setFastLoad(bool f);
42 bool fastLoad() const;
43
44private slots:
45 void delayChanged( int );
46};
47
48
49#endif
diff --git a/noncore/multimedia/showimg/settingsdialogbase.cpp b/noncore/multimedia/showimg/settingsdialogbase.cpp
new file mode 100644
index 0000000..e0c5bb0
--- a/dev/null
+++ b/noncore/multimedia/showimg/settingsdialogbase.cpp
@@ -0,0 +1,106 @@
1/****************************************************************************
2** Form implementation generated from reading ui file 'settingsdialogbase.ui'
3**
4** Created: Sun Nov 3 07:29:03 2002
5** by: The User Interface Compiler (uic)
6**
7** WARNING! All changes made in this file will be lost!
8****************************************************************************/
9#include "settingsdialogbase.h"
10
11#include <qcheckbox.h>
12#include <qgroupbox.h>
13#include <qlabel.h>
14#include <qpushbutton.h>
15#include <qslider.h>
16#include <qlayout.h>
17#include <qvariant.h>
18#include <qtooltip.h>
19#include <qwhatsthis.h>
20
21/*
22 * Constructs a SettingsDialogBase which is a child of 'parent', with the
23 * name 'name' and widget flags set to 'f'
24 *
25 * The dialog will by default be modeless, unless you set 'modal' to
26 * TRUE to construct a modal dialog.
27 */
28SettingsDialogBase::SettingsDialogBase( QWidget* parent, const char* name, bool modal, WFlags fl )
29 : QDialog( parent, name, modal, fl )
30{
31 if ( !name )
32 setName( "SettingsDialogBase" );
33 resize( 246, 201 );
34 setCaption( tr( "Preferences" ) );
35 SettingsDialogBaseLayout = new QVBoxLayout( this );
36 SettingsDialogBaseLayout->setSpacing( 6 );
37 SettingsDialogBaseLayout->setMargin( 6 );
38
39 GroupBox1 = new QGroupBox( this, "GroupBox1" );
40 GroupBox1->setTitle( tr( "Slide Show" ) );
41 GroupBox1->setColumnLayout(0, Qt::Vertical );
42 GroupBox1->layout()->setSpacing( 0 );
43 GroupBox1->layout()->setMargin( 0 );
44 GroupBox1Layout = new QVBoxLayout( GroupBox1->layout() );
45 GroupBox1Layout->setAlignment( Qt::AlignTop );
46 GroupBox1Layout->setSpacing( 6 );
47 GroupBox1Layout->setMargin( 11 );
48
49 Layout3 = new QGridLayout;
50 Layout3->setSpacing( 6 );
51 Layout3->setMargin( 0 );
52
53 TextLabel1 = new QLabel( GroupBox1, "TextLabel1" );
54 TextLabel1->setText( tr( "Delay between pictures" ) );
55
56 Layout3->addMultiCellWidget( TextLabel1, 0, 0, 0, 1 );
57
58 delaySlider = new QSlider( GroupBox1, "delaySlider" );
59 delaySlider->setMinValue( 2 );
60 delaySlider->setMaxValue( 60 );
61 delaySlider->setLineStep( 2 );
62 delaySlider->setOrientation( QSlider::Horizontal );
63 delaySlider->setTickmarks( QSlider::Right );
64 delaySlider->setTickInterval( 10);
65
66 Layout3->addWidget( delaySlider, 1, 0 );
67
68 delayText = new QLabel( GroupBox1, "delayText" );
69 delayText->setMinimumSize( QSize( 25, 0 ) );
70 delayText->setText( tr( "s" ) );
71 delayText->setAlignment( int( QLabel::AlignVCenter | QLabel::AlignRight ) );
72
73 Layout3->addWidget( delayText, 1, 1 );
74 GroupBox1Layout->addLayout( Layout3 );
75
76 repeatCheck = new QCheckBox( GroupBox1, "repeatCheck" );
77 repeatCheck->setText( tr( "Repeat slideshow" ) );
78 GroupBox1Layout->addWidget( repeatCheck );
79
80 reverseCheck = new QCheckBox( GroupBox1, "reverseCheck" );
81 reverseCheck->setText( tr( "Show pictures in reverse" ) );
82 GroupBox1Layout->addWidget( reverseCheck );
83 SettingsDialogBaseLayout->addWidget( GroupBox1 );
84
85 rotateCheck = new QCheckBox( this, "rotateCheck" );
86 rotateCheck->setText( tr( "Load pictures rotated 90 degrees" ) );
87 SettingsDialogBaseLayout->addWidget( rotateCheck );
88
89 fastLoadCheck = new QCheckBox( this, "fastLoadCheck" );
90 fastLoadCheck->setText( tr( "Fast load pictures" ) );
91 SettingsDialogBaseLayout->addWidget( fastLoadCheck );
92 fastLoadCheck->hide(); //FIXME
93// QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Expanding );
94// layout->addItem( spacer, 10, 0 );
95
96
97}
98
99/*
100 * Destroys the object and frees any allocated resources
101 */
102SettingsDialogBase::~SettingsDialogBase()
103{
104 // no need to delete child widgets, Qt does it all for us
105}
106
diff --git a/noncore/multimedia/showimg/settingsdialogbase.h b/noncore/multimedia/showimg/settingsdialogbase.h
new file mode 100644
index 0000000..9594ec6
--- a/dev/null
+++ b/noncore/multimedia/showimg/settingsdialogbase.h
@@ -0,0 +1,45 @@
1/****************************************************************************
2** Form interface generated from reading ui file 'settingsdialogbase.ui'
3**
4** Created: Sun Nov 3 07:29:03 2002
5** by: The User Interface Compiler (uic)
6**
7** WARNING! All changes made in this file will be lost!
8****************************************************************************/
9#ifndef SETTINGSDIALOGBASE_H
10#define SETTINGSDIALOGBASE_H
11
12#include <qvariant.h>
13#include <qdialog.h>
14class QVBoxLayout;
15class QHBoxLayout;
16class QGridLayout;
17class QCheckBox;
18class QGroupBox;
19class QLabel;
20class QSlider;
21
22class SettingsDialogBase : public QDialog
23{
24 Q_OBJECT
25
26public:
27 SettingsDialogBase( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
28 ~SettingsDialogBase();
29
30 QGroupBox* GroupBox1;
31 QLabel* TextLabel1;
32 QSlider* delaySlider;
33 QLabel* delayText;
34 QCheckBox* repeatCheck;
35 QCheckBox* reverseCheck;
36 QCheckBox* rotateCheck;
37 QCheckBox* fastLoadCheck;
38
39protected:
40 QVBoxLayout* SettingsDialogBaseLayout;
41 QVBoxLayout* GroupBox1Layout;
42 QGridLayout* Layout3;
43};
44
45#endif // SETTINGSDIALOGBASE_H
diff --git a/noncore/multimedia/showimg/showimg.cpp b/noncore/multimedia/showimg/showimg.cpp
index d7d53ec..0fbffe7 100644
--- a/noncore/multimedia/showimg/showimg.cpp
+++ b/noncore/multimedia/showimg/showimg.cpp
@@ -26,3 +26,8 @@
26#include "ImageFileSelector.h" 26#include "ImageFileSelector.h"
27#include "settingsdialog.h"
28
27 29
30#include <opie/ofiledialog.h>
31
32#include <qpe/qpeapplication.h>
28#include <qpe/config.h> 33#include <qpe/config.h>
@@ -51,3 +56,4 @@
51 56
52ControlsDialog::ControlsDialog(const QString &caption,QImage image,int *brightness,QWidget *parent):QDialog(parent,0,true) 57ControlsDialog::ControlsDialog(const QString &caption,QImage image,int *brightness,QWidget *parent)
58 : QDialog(parent,0,true)
53{ 59{
@@ -55,4 +61,3 @@ ControlsDialog::ControlsDialog(const QString &caption,QImage image,int *brightne
55 61
56 if ( parent ) 62 if ( parent ) {
57 {
58 setPalette(parent->palette()); 63 setPalette(parent->palette());
@@ -103,5 +108,6 @@ void ControlsDialog::accept()
103 108
109//===========================================================================
104 110
105 111InfoDialog::InfoDialog(const QString &caption, const QStringList text,QWidget *parent)
106InfoDialog::InfoDialog(const QString &caption, const QStringList text,QWidget *parent):QDialog(parent,0,true) 112 : QDialog(parent,0,true)
107{ 113{
@@ -151,2 +157,4 @@ void InfoDialog::displayInfo(const QString &caption, const QStringList text, QWi
151 157
158//===========================================================================
159
152 160
@@ -231,3 +239,4 @@ ImageViewer::ImageViewer( QWidget *parent, const char *name, int wFlags )
231 //menuBarmenubarFile->insertItem( tr("File"), fileMenu ); 239 //menuBarmenubarFile->insertItem( tr("File"), fileMenu );
232 fileMenuFile->insertItem(tr("Open"), this, SLOT(openFile()), 0); 240 fileMenuFile->insertItem(tr("Open"),
241 this, SLOT(openFile()), 0);
233 242
@@ -235,3 +244,4 @@ ImageViewer::ImageViewer( QWidget *parent, const char *name, int wFlags )
235 //menubarFile->insertItem( tr("View"), viewMenu ); 244 //menubarFile->insertItem( tr("View"), viewMenu );
236 viewMenuFile->insertItem( tr("Thumbnail View"), this, SLOT(switchThumbView()), 0, SHOW_THUMBNAILS ); 245 viewMenuFile->insertItem( tr("Thumbnail View"),
246 this, SLOT(switchThumbView()), 0, SHOW_THUMBNAILS );
237 247
@@ -244,9 +254,14 @@ ImageViewer::ImageViewer( QWidget *parent, const char *name, int wFlags )
244 //menubarFile->insertItem( tr("Options"),optionsMenu ); 254 //menubarFile->insertItem( tr("Options"),optionsMenu );
245 optionsMenuFile->insertItem( tr("Slideshow") ); 255 slideAction = new QAction( tr( "Slide show" ), Resource::loadIconSet( "slideshow" ),
246 optionsMenuFile->insertSeparator(); 256 QString::null, 0, this, 0 );
247 optionsMenuFile->insertItem( tr("Preferences..")); 257 slideAction->setToggleAction( TRUE );
248 optionsMenuFile->insertItem( tr("Help")); 258 connect( slideAction, SIGNAL( toggled(bool) ), this, SLOT( slideShow(bool) ) );
249 259 slideAction->addTo( optionsMenuFile);
260// slideAction->addTo( toolBar );
250 261
251 262
263// optionsMenuFile->insertItem( tr("Slideshow") );
264 optionsMenuFile->insertSeparator();
265 optionsMenuFile->insertItem( tr("Preferences.."), this, SLOT(settings()), 0);
266// optionsMenuFile->insertItem( tr("Help"), this, SLOT(help()), 0);
252 267
@@ -293,3 +308,7 @@ ImageViewer::ImageViewer( QWidget *parent, const char *name, int wFlags )
293 connect( fileSelector, SIGNAL( closeMe() ), this, SLOT( closeFileSelector() ) ); 308 connect( fileSelector, SIGNAL( closeMe() ), this, SLOT( closeFileSelector() ) );
294 connect( fileSelector, SIGNAL( fileSelected( const DocLnk &) ), this, SLOT( openFile( const DocLnk & ) ) ); 309 connect( fileSelector, SIGNAL( fileSelected( const DocLnk &) ),
310 this, SLOT( openFile( const DocLnk & ) ) );
311
312 imageList = fileSelector->fileList();
313 slideAction->setEnabled( imageList.count() != 0);
295 314
@@ -338,3 +357,4 @@ ImageViewer::ImageViewer( QWidget *parent, const char *name, int wFlags )
338 357
339 a = new QAction( tr( "Fullscreen" ), Resource::loadPixmap( "fullscreen" ), QString::null, 0, this, 0 ); 358 a = new QAction( tr( "Fullscreen" ), Resource::loadPixmap( "fullscreen" ),
359 QString::null, 0, this, 0 );
340 connect( a, SIGNAL( activated() ), this, SLOT( fullScreen() ) ); 360 connect( a, SIGNAL( activated() ), this, SLOT( fullScreen() ) );
@@ -343,2 +363,21 @@ ImageViewer::ImageViewer( QWidget *parent, const char *name, int wFlags )
343 363
364 a = new QAction( tr( "Stop Slideshow" ), Resource::loadPixmap( "quit_icon" ),
365 QString::null, 0, this, 0 );
366 connect( a, SIGNAL( activated() ), this, SLOT( stopSlideShow() ) );
367 a->addTo( iconToolBar );
368 a->addTo( viewMenuView);
369
370
371 Config config( "ImageViewer" );
372 config.setGroup( "SlideShow" );
373 slideDelay = config.readNumEntry( "Delay", 2);
374 slideRepeat = config.readBoolEntry( "Repeat", FALSE );
375 slideReverse = config.readBoolEntry("Reverse", FALSE);
376
377 config.setGroup("Default");
378 rotateOnLoad = config.readBoolEntry("Rotate", FALSE);
379 fastLoad = config.readBoolEntry("FastLoad", TRUE);
380 slideTimer = new QTimer( this );
381 connect( slideTimer, SIGNAL(timeout()), this, SLOT(slideUpdate()) );
382
344 switchToFileSelector(); 383 switchToFileSelector();
@@ -358,2 +397,11 @@ ImageViewer::~ImageViewer()
358 397
398 cfg.setGroup( "SlideShow" );
399 cfg.writeEntry( "Delay", slideDelay);
400 cfg.writeEntry( "Repeat", slideRepeat );
401 cfg.writeEntry("Reverse", slideReverse);
402
403 cfg.setGroup("Default");
404 cfg.writeEntry("Rotate", rotateOnLoad);
405 cfg.writeEntry("FastLoad", fastLoad);
406
359 delete imagePanel; // in case it is fullscreen 407 delete imagePanel; // in case it is fullscreen
@@ -361,2 +409,36 @@ ImageViewer::~ImageViewer()
361 409
410void ImageViewer::help() {
411
412}
413
414
415void ImageViewer::settings()
416{
417 SettingsDialog dlg( this, 0, TRUE );
418 dlg.setDelay( slideDelay );
419 dlg.setRepeat( slideRepeat );
420 dlg.setReverse( slideReverse );
421 dlg.setRotate(rotateOnLoad);
422 dlg.setFastLoad(fastLoad);
423
424 if ( QPEApplication::execDialog(&dlg) == QDialog::Accepted ) {
425 qDebug("<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>");
426 slideDelay = dlg.delay();
427 slideRepeat = dlg.repeat();
428 slideReverse = dlg.reverse();
429 rotateOnLoad = dlg.rotate();
430 fastLoad = dlg.fastLoad();
431
432 Config config( "ImageViewer" );
433 config.setGroup( "SlideShow" );
434 config.writeEntry( "Delay", slideDelay );
435 config.writeEntry( "Repeat", slideRepeat );
436 config.writeEntry("Reverse", slideReverse);
437
438 config.setGroup("Default");
439 config.writeEntry("Rotate", rotateOnLoad);
440 config.writeEntry("FastLoad", fastLoad);
441 }
442}
443
362void ImageViewer::switchSizeToScreen() 444void ImageViewer::switchSizeToScreen()
@@ -370,8 +452,5 @@ void ImageViewer::updateImage()
370{ 452{
371 if ( isSized ) 453 if ( isSized ) {
372 {
373 imagePanel->setPixmap(pmScaled); 454 imagePanel->setPixmap(pmScaled);
374 } 455 } else {
375 else
376 {
377 imagePanel->setPixmap(pm); 456 imagePanel->setPixmap(pm);
@@ -398,2 +477,3 @@ void ImageViewer::switchToFileSelector()
398 imagePanel->disable(); 477 imagePanel->disable();
478 slideShow(false);
399 479
@@ -436,2 +516,3 @@ void ImageViewer::show(const QString& fileref)
436{ 516{
517// qDebug("Show "+fileref);
437 bFromDocView = TRUE; 518 bFromDocView = TRUE;
@@ -439,8 +520,5 @@ void ImageViewer::show(const QString& fileref)
439 DocLnk link(fileref); 520 DocLnk link(fileref);
440 if ( link.isValid() ) 521 if ( link.isValid() ) {
441 {
442 openFile(link); 522 openFile(link);
443 } 523 } else {
444 else
445 {
446 filename = fileref; 524 filename = fileref;
@@ -451,8 +529,26 @@ void ImageViewer::show(const QString& fileref)
451 529
452void ImageViewer::openFile( const DocLnk &file ) 530void ImageViewer::openFile() {
531 MimeTypes types;
532 QStringList image;
533 image << "image/*";
534 types.insert("Images", image);
535
536 QString str = OFileDialog::getOpenFileName( 1,QPEApplication::documentDir(),"", types, 0 );
537 DocLnk link(str);
538 if ( link.isValid() )
539 openFile(link);
540
541}
542
543void ImageViewer::openFile( const DocLnk &link )
453{ 544{
454 closeFileSelector(); 545 closeFileSelector();
455 DocLnk link(file); 546// DocLnk link(file);
547 qDebug("open "+link.name());
456 updateCaption( link.name() ); 548 updateCaption( link.name() );
457 loadImage( link.file() ); 549 loadImage( link.file() );
550 if (slideTimer->isActive()) {
551 slideTimer->start(slideDelay * 1000, FALSE);
552 }
553
458} 554}
@@ -484,4 +580,3 @@ void ImageViewer::loadImage( const char *fileName )
484 filename = fileName; 580 filename = fileName;
485 if ( filename ) 581 if ( filename ) {
486 {
487 QApplication::setOverrideCursor( waitCursor ); // this might take time 582 QApplication::setOverrideCursor( waitCursor ); // this might take time
@@ -490,4 +585,3 @@ void ImageViewer::loadImage( const char *fileName )
490 bool ok = image.load(filename, 0); 585 bool ok = image.load(filename, 0);
491 if ( ok ) 586 if ( ok ) {
492 {
493 ok = reconvertImage(); 587 ok = reconvertImage();
@@ -495,4 +589,3 @@ void ImageViewer::loadImage( const char *fileName )
495 } 589 }
496 if ( !ok ) 590 if ( !ok ) {
497 {
498 pm.resize(0,0); // couldn't load image 591 pm.resize(0,0); // couldn't load image
@@ -502,2 +595,16 @@ void ImageViewer::loadImage( const char *fileName )
502 } 595 }
596
597// fastLoad ? ", Fast" : "",
598// fastLoad ? QMAX(imagewidth/maxsize, imageheight/maxsize) : 1);
599
600
601// matrix.reset();
602 rotated90 = FALSE;
603
604 if (rotateOnLoad) {
605 rotated90 = TRUE;
606 rot90();
607// matrix.rotate( -90.0 );
608 }
609
503 switchToImageView(); 610 switchToImageView();
@@ -621,2 +728,4 @@ void ImageViewer::hFlip()
621{ 728{
729// matrix.scale( -1.0, 1.0 );
730
622 setImage(image.mirror(TRUE,FALSE)); 731 setImage(image.mirror(TRUE,FALSE));
@@ -626,2 +735,3 @@ void ImageViewer::vFlip()
626{ 735{
736// matrix.scale( 1.0, -1.0 );
627 setImage(image.mirror(FALSE,TRUE)); 737 setImage(image.mirror(FALSE,TRUE));
@@ -631,3 +741,3 @@ void ImageViewer::rot180()
631{ 741{
632 742// matrix.rotate( 180.0 );
633 setImage(image.mirror(TRUE,TRUE)); 743 setImage(image.mirror(TRUE,TRUE));
@@ -639,2 +749,3 @@ void ImageViewer::rot90()
639 oldimage = image.convertDepth(32); 749 oldimage = image.convertDepth(32);
750// matrix.rotate( -90.0 );
640 setImage(rotate(oldimage,Rotate90)); 751 setImage(rotate(oldimage,Rotate90));
@@ -647,2 +758,3 @@ void ImageViewer::rot270()
647 oldimage = image.convertDepth(32); 758 oldimage = image.convertDepth(32);
759// matrix.rotate(90.0);
648 setImage(rotate(oldimage,Rotate270)); 760 setImage(rotate(oldimage,Rotate270));
@@ -656,4 +768,2 @@ void ImageViewer::blackAndWhite()
656 setImage(toGray(image,false)); 768 setImage(toGray(image,false));
657
658
659} 769}
@@ -674,4 +784,3 @@ void ImageViewer::displayControlsDialog()
674 dlg->exec(); 784 dlg->exec();
675 if ( newB ) 785 if ( newB ) {
676 {
677 intensity(image,(float)newB/100); 786 intensity(image,(float)newB/100);
@@ -709,2 +818,7 @@ void ImageViewer::normalView()
709 818
819void ImageViewer::stopSlideShow() {
820 if (slideTimer->isActive())
821 slideTimer->stop();
822}
823
710void ImageViewer::fullScreen() 824void ImageViewer::fullScreen()
@@ -1036,9 +1150,100 @@ QImage ImageViewer::rotate(QImage &img, RotateDirection r)
1036 return (dest); 1150 return (dest);
1151}
1152
1153void ImageViewer::slideShow( bool on )
1154{
1155 if (on) {
1156 if (!imageList.isEmpty()) {
1157 slideTimer->start(slideDelay * 1000, FALSE);
1158 filename = ""; // force restart
1159 slideReverse ? prevImage() : nextImage();
1160 }
1161 } else {
1162 slideTimer->stop();
1163 slideAction->setOn( false);
1164 }
1165}
1166
1167void ImageViewer::slideUpdate()
1168{
1169 bool final_image = slideReverse ? prevImage() : nextImage();
1170
1171 if (final_image && !slideRepeat) {
1172 slideTimer->stop();
1173 slideAction->setOn(FALSE);
1174 }
1175}
1037 1176
1177//
1178// Display the image after the current one in the image list.
1179// Return TRUE if the next call to nextImage() will wrap around to the
1180// first image in the list (ie. we're now viewing the last image in the list).
1181//
1182bool ImageViewer::nextImage(void)
1183{
1184 int idx = 0;
1185
1186 if (imageList.count() > 0) {
1187 idx = imageIndex();
1188 if (idx != -1) {
1189 if (idx == int(imageList.count() - 1)) {
1190 idx = 0;
1191 } else {
1192 idx++;
1193 }
1194 } else {
1195 idx = 0;
1196 }
1197 openFile(imageList[idx]);
1198 }
1038 1199
1200 return idx == int(imageList.count() - 1) ? TRUE : FALSE;
1039} 1201}
1040 1202
1203//
1204// Display the image preceeding the current one in the image list.
1205// Return TRUE if the next call to prevImage() will wrap around to the last
1206// image in the list (ie. we're now viewing the first image in the list).
1207//
1208bool ImageViewer::prevImage(void)
1209{
1210 int idx = -1;
1211
1212 if (imageList.count() > 0) {
1213 idx = imageIndex();
1214 if (idx != -1) {
1215 if (idx == 0) {
1216 idx = imageList.count() - 1;
1217 } else {
1218 idx--;
1219 }
1220 } else {
1221 idx = imageList.count() - 1;
1222 }
1223 openFile(imageList[idx]);
1224 }
1041 1225
1226 return idx == 0 ? TRUE : FALSE;
1227}
1042 1228
1229//
1230// Return the index into the imageList of the currently viewed
1231// image (ie. ImageViewer::filename in ImageViewer::imageList).
1232//
1233int ImageViewer::imageIndex(void)
1234{
1235 QValueListConstIterator<DocLnk> i;
1236 int index;
1043 1237
1238 if (imageList.count() == 0) {
1239 return -1;
1240 }
1044 1241
1242 for (index = 0, i = imageList.begin(); i != imageList.end(); ++i, index++) {
1243 if ((*i).file() == filename) {
1244 return index;
1245 }
1246 }
1247
1248 return -1;
1249}
diff --git a/noncore/multimedia/showimg/showimg.h b/noncore/multimedia/showimg/showimg.h
index 0d3bc7d..8555ff0 100644
--- a/noncore/multimedia/showimg/showimg.h
+++ b/noncore/multimedia/showimg/showimg.h
@@ -31,3 +31,7 @@
31#include <qstringlist.h> 31#include <qstringlist.h>
32#include <qvaluelist.h>
33#include <qwmatrix.h>
32 34
35
36class QAction;
33class QPEToolBar; 37class QPEToolBar;
@@ -42,3 +46,3 @@ class QSpinBox;
42class ImageFileSelector; 46class ImageFileSelector;
43 47class QTimer;
44 48
@@ -48,16 +52,10 @@ class ImageWidget : public QWidget
48 Q_OBJECT 52 Q_OBJECT
49 public: 53 public:
50 ImageWidget( 54 ImageWidget( QWidget *parent=0 )
51 QWidget *parent=0 55 : QWidget( parent ) {
52 ) : QWidget( parent )
53 {
54 setBackgroundMode(NoBackground); 56 setBackgroundMode(NoBackground);
55 } 57 }
56 ~ImageWidget() 58 ~ImageWidget() { }
57 {
58
59 }
60 59
61 void setPixmap( const QPixmap &pm ) 60 void setPixmap( const QPixmap &pm ) {
62 {
63 pixmap = pm; 61 pixmap = pm;
@@ -66,3 +64,3 @@ class ImageWidget : public QWidget
66 64
67 signals: 65signals:
68 void clicked(); 66 void clicked();
@@ -81,3 +79,3 @@ class InfoDialog:public QDialog
81 79
82 public: 80public:
83 81
@@ -95,3 +93,3 @@ class ControlsDialog:public QDialog
95 93
96 public: 94public:
97 ControlsDialog(const QString &caption,const QImage image,int *brightness, QWidget *parent); 95 ControlsDialog(const QString &caption,const QImage image,int *brightness, QWidget *parent);
@@ -116,8 +114,5 @@ class ImagePane : public QWidget
116 Q_OBJECT 114 Q_OBJECT
117 public: 115public:
118 ImagePane( QWidget *parent=0 ); 116 ImagePane( QWidget *parent=0 );
119 ~ImagePane() 117 ~ImagePane() { }
120 {
121
122 }
123 118
@@ -132,4 +127,3 @@ class ImagePane : public QWidget
132 127
133 int paneWidth() const 128 int paneWidth() const {
134 {
135 return image->visibleWidth(); 129 return image->visibleWidth();
@@ -137,4 +131,3 @@ class ImagePane : public QWidget
137 131
138 int paneHeight() const 132 int paneHeight() const {
139 {
140 return image->visibleHeight(); 133 return image->visibleHeight();
@@ -142,4 +135,3 @@ class ImagePane : public QWidget
142 135
143 void setPosition(int x, int y) 136 void setPosition(int x, int y) {
144 {
145 image->setContentsPos (x,y ); 137 image->setContentsPos (x,y );
@@ -147,4 +139,3 @@ class ImagePane : public QWidget
147 139
148 void disable() 140 void disable() {
149 {
150 pic->hide(); 141 pic->hide();
@@ -152,3 +143,3 @@ class ImagePane : public QWidget
152 143
153 signals: 144signals:
154 void clicked(); 145 void clicked();
@@ -168,3 +159,3 @@ class ImageViewer : public QMainWindow
168 Q_OBJECT 159 Q_OBJECT
169 public: 160public:
170 ImageViewer( QWidget *parent=0, const char *name=0, int wFlags=0 ); 161 ImageViewer( QWidget *parent=0, const char *name=0, int wFlags=0 );
@@ -177,4 +168,3 @@ class ImageViewer : public QMainWindow
177 168
178 enum INFO_STRINGS 169 enum INFO_STRINGS {
179 {
180 PATH, 170 PATH,
@@ -188,4 +178,3 @@ class ImageViewer : public QMainWindow
188 178
189 enum RotateDirection 179 enum RotateDirection {
190 {
191 Rotate90, Rotate180, Rotate270 180 Rotate90, Rotate180, Rotate270
@@ -197,2 +186,3 @@ class ImageViewer : public QMainWindow
197 static QImage& toGray(QImage &image, bool fast = false); 186 static QImage& toGray(QImage &image, bool fast = false);
187 bool showThumbView; // a flag to indicate if FileSelector should be initialized with thumbnail view
198 188
@@ -203,2 +193,4 @@ protected:
203private: 193private:
194 int imageIndex(void);
195
204 void updateCaption( QString name ); 196 void updateCaption( QString name );
@@ -215,7 +207,11 @@ private:
215 207
216
217
218
219private slots: 208private slots:
220 209
210 void slideShow( bool on );
211 void help();
212 void slideUpdate();
213 bool nextImage();
214 bool prevImage();
215 void settings();
216
221 void switchThumbView(); 217 void switchThumbView();
@@ -225,3 +221,3 @@ private slots:
225 void openFile( const DocLnk &file ); 221 void openFile( const DocLnk &file );
226 //void openFile(); 222 void openFile();
227 void open(); 223 void open();
@@ -235,2 +231,3 @@ private slots:
235 void fullScreen(); 231 void fullScreen();
232 void stopSlideShow();
236 void blackAndWhite(); 233 void blackAndWhite();
@@ -238,19 +235,6 @@ private slots:
238 void displayControlsDialog(); 235 void displayControlsDialog();
239
240
241
242
243
244
245
246
247
248
249private: 236private:
250 237 QWMatrix matrix;
251 238 bool rotated90;
252 239 enum MENU_ITEMS {
253
254 enum MENU_ITEMS
255 {
256 SHOW_THUMBNAILS, 240 SHOW_THUMBNAILS,
@@ -260,4 +244,2 @@ private:
260 244
261
262
263 QString filename; 245 QString filename;
@@ -291,3 +273,11 @@ private:
291 273
292 bool showThumbView; // a flag to indicate if FileSelector should be initialized with thumbnail view 274 int slideDelay;
275 bool slideRepeat;
276 bool slideReverse; // show slideshow in reverse order
277 bool rotateOnLoad; // rotate by 90 degrees on loading
278 bool fastLoad;
279 QTimer *slideTimer;
280 QValueList<DocLnk> imageList;
281 QAction *slideAction;
282
293 283
diff --git a/noncore/multimedia/showimg/showimg.pro b/noncore/multimedia/showimg/showimg.pro
index 2b6241f..4ff4746 100644
--- a/noncore/multimedia/showimg/showimg.pro
+++ b/noncore/multimedia/showimg/showimg.pro
@@ -3,6 +3,4 @@ CONFIG += qt warn_on release
3DESTDIR = $(OPIEDIR)/bin 3DESTDIR = $(OPIEDIR)/bin
4 HEADERS = showimg.h ImageFileSelector.h 4HEADERS = showimg.h ImageFileSelector.h settingsdialog.h settingsdialogbase.h
5 SOURCES = main.cpp \ 5SOURCES = main.cpp showimg.cpp ImageFileSelector.cpp settingsdialog.cpp settingsdialogbase.cpp
6 showimg.cpp\
7 ImageFileSelector.cpp
8TARGET = showimg 6TARGET = showimg
@@ -10,3 +8,3 @@ INCLUDEPATH += $(OPIEDIR)/include
10DEPENDPATH += $(OPIEDIR)/include 8DEPENDPATH += $(OPIEDIR)/include
11LIBS += -lqpe 9LIBS += -lqpe -lopie
12REQUIRES = showimg 10REQUIRES = showimg
@@ -14,14 +12,14 @@ REQUIRES = showimg
14TRANSLATIONS = ../../../i18n/de/showimg.ts \ 12TRANSLATIONS = ../../../i18n/de/showimg.ts \
15 ../../../i18n/en/showimg.ts \ 13 ../../../i18n/en/showimg.ts \
16 ../../../i18n/es/showimg.ts \ 14 ../../../i18n/es/showimg.ts \
17 ../../../i18n/fr/showimg.ts \ 15 ../../../i18n/fr/showimg.ts \
18 ../../../i18n/hu/showimg.ts \ 16 ../../../i18n/hu/showimg.ts \
19 ../../../i18n/ja/showimg.ts \ 17 ../../../i18n/ja/showimg.ts \
20 ../../../i18n/ko/showimg.ts \ 18 ../../../i18n/ko/showimg.ts \
21 ../../../i18n/no/showimg.ts \ 19 ../../../i18n/no/showimg.ts \
22 ../../../i18n/pl/showimg.ts \ 20 ../../../i18n/pl/showimg.ts \
23 ../../../i18n/pt/showimg.ts \ 21 ../../../i18n/pt/showimg.ts \
24 ../../../i18n/pt_BR/showimg.ts \ 22 ../../../i18n/pt_BR/showimg.ts \
25 ../../../i18n/sl/showimg.ts \ 23 ../../../i18n/sl/showimg.ts \
26 ../../../i18n/zh_CN/showimg.ts \ 24 ../../../i18n/zh_CN/showimg.ts \
27 ../../../i18n/zh_TW/showimg.ts 25 ../../../i18n/zh_TW/showimg.ts