author | llornkcor <llornkcor> | 2002-11-03 17:59:00 (UTC) |
---|---|---|
committer | llornkcor <llornkcor> | 2002-11-03 17:59:00 (UTC) |
commit | 16e8fad81f7ee6045990f48edc84542638bf07d7 (patch) (unidiff) | |
tree | 96d836f914e0d1104d7c84830acac08a43ee4ac2 | |
parent | 2981b8f55f4a33860452f4571ef9f04781267489 (diff) | |
download | opie-16e8fad81f7ee6045990f48edc84542638bf07d7.zip opie-16e8fad81f7ee6045990f48edc84542638bf07d7.tar.gz opie-16e8fad81f7ee6045990f48edc84542638bf07d7.tar.bz2 |
added preferences dialog, and added slidshow
-rw-r--r-- | noncore/multimedia/showimg/ImageFileSelector.cpp | 46 | ||||
-rw-r--r-- | noncore/multimedia/showimg/ImageFileSelector.h | 61 | ||||
-rw-r--r-- | noncore/multimedia/showimg/settingsdialog.cpp | 88 | ||||
-rw-r--r-- | noncore/multimedia/showimg/settingsdialog.h | 49 | ||||
-rw-r--r-- | noncore/multimedia/showimg/settingsdialogbase.cpp | 106 | ||||
-rw-r--r-- | noncore/multimedia/showimg/settingsdialogbase.h | 45 | ||||
-rw-r--r-- | noncore/multimedia/showimg/showimg.cpp | 279 | ||||
-rw-r--r-- | noncore/multimedia/showimg/showimg.h | 90 | ||||
-rw-r--r-- | noncore/multimedia/showimg/showimg.pro | 8 |
9 files changed, 623 insertions, 149 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 | |||
@@ -22,8 +22,6 @@ | |||
22 | 22 | ||
23 | 23 | ||
24 | 24 | ThumbWidget::ThumbWidget(QPixmap p,QString text,const DocLnk& f,QWidget *parent,int w) | |
25 | 25 | : QWidget( parent ),fl(f) | |
26 | |||
27 | ThumbWidget::ThumbWidget(QPixmap p,QString text,const DocLnk& f,QWidget *parent,int w) : QWidget( parent ),fl(f) | ||
28 | { | 26 | { |
29 | setBackgroundMode(NoBackground); | 27 | setBackgroundMode(NoBackground); |
@@ -39,5 +37,5 @@ ThumbWidget::ThumbWidget(QPixmap p,QString text,const DocLnk& f,QWidget *parent, | |||
39 | } | 37 | } |
40 | 38 | ||
41 | void ThumbWidget::resizeEvent(QResizeEvent *e) | 39 | void ThumbWidget::resizeEvent(QResizeEvent *) |
42 | { | 40 | { |
43 | description->setGeometry(0,height()-24,width(),24); | 41 | description->setGeometry(0,height()-24,width(),24); |
@@ -54,5 +52,5 @@ void ThumbWidget::paintEvent( QPaintEvent *e ) | |||
54 | } | 52 | } |
55 | 53 | ||
56 | void ThumbWidget::mouseReleaseEvent(QMouseEvent* event) | 54 | void ThumbWidget::mouseReleaseEvent(QMouseEvent* ) |
57 | { | 55 | { |
58 | emit clicked(fl); | 56 | emit clicked(fl); |
@@ -61,6 +59,6 @@ void ThumbWidget::mouseReleaseEvent(QMouseEvent* event) | |||
61 | 59 | ||
62 | 60 | ||
63 | 61 | ImageFileSelectorItem::ImageFileSelectorItem( QListView *parent, const DocLnk &f) | |
64 | ImageFileSelectorItem::ImageFileSelectorItem( QListView *parent, const DocLnk &f): QListViewItem( parent ), fl( f ) | 62 | : QListViewItem( parent ), fl( f ) |
65 | { | 63 | { |
66 | setText( 0, f.name() ); | 64 | setText( 0, f.name() ); |
@@ -79,5 +77,6 @@ ImageFileSelectorItem::~ImageFileSelectorItem() | |||
79 | 77 | ||
80 | 78 | ||
81 | ImageFileSelector::ImageFileSelector( CURRENT_VIEW scv,QWidget *parent,const char *name ):QWidgetStack(parent) | 79 | ImageFileSelector::ImageFileSelector( CURRENT_VIEW scv,QWidget *parent,const char * ) |
80 | : QWidgetStack(parent) | ||
82 | { | 81 | { |
83 | 82 | ||
@@ -166,6 +165,7 @@ void ImageFileSelector::updateSizes() | |||
166 | } | 165 | } |
167 | 166 | ||
168 | void ImageFileSelector::reread(bool purgeCache) | 167 | void ImageFileSelector::reread(bool) |
169 | { | 168 | { |
169 | // qDebug("reread"); | ||
170 | ImageFileSelectorItem *item = (ImageFileSelectorItem *)detailed->selectedItem(); | 170 | ImageFileSelectorItem *item = (ImageFileSelectorItem *)detailed->selectedItem(); |
171 | QString oldFile; | 171 | QString oldFile; |
@@ -178,19 +178,16 @@ void ImageFileSelector::reread(bool purgeCache) | |||
178 | count = files.children().count(); | 178 | count = files.children().count(); |
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; |
184 | int width=80; | 184 | int width=80; |
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 ); |
196 | if ( item->file().file() == oldFile ) | 193 | if ( item->file().file() == oldFile ) |
@@ -201,8 +198,8 @@ 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()); |
203 | if( !img.isNull()) { | ||
207 | img=img.smoothScale(64,64); | 204 | img=img.smoothScale(64,64); |
208 | QPixmap pix; | 205 | QPixmap pix; |
@@ -212,6 +209,5 @@ void ImageFileSelector::reread(bool purgeCache) | |||
212 | gl->addWidget(l,j,i); | 209 | gl->addWidget(l,j,i); |
213 | i++; | 210 | i++; |
214 | if ( i==2 ) | 211 | if ( i==2 ) { |
215 | { | ||
216 | i=0; | 212 | i=0; |
217 | j++; | 213 | j++; |
@@ -219,8 +215,6 @@ void ImageFileSelector::reread(bool purgeCache) | |||
219 | tList.append(l); | 215 | tList.append(l); |
220 | connect(l,SIGNAL(clicked(const DocLnk &)),this,SLOT(thumbClicked(const DocLnk &))); | 216 | connect(l,SIGNAL(clicked(const DocLnk &)),this,SLOT(thumbClicked(const DocLnk &))); |
221 | |||
222 | } | 217 | } |
223 | 218 | } | |
224 | |||
225 | 219 | ||
226 | if ( !detailed->selectedItem() ) | 220 | if ( !detailed->selectedItem() ) |
@@ -231,5 +225,4 @@ void ImageFileSelector::reread(bool purgeCache) | |||
231 | detailed->update(); | 225 | detailed->update(); |
232 | thumb->update(); | 226 | thumb->update(); |
233 | |||
234 | } | 227 | } |
235 | 228 | ||
@@ -240,4 +233,5 @@ int ImageFileSelector::fileCount() | |||
240 | const DocLnk * ImageFileSelector::selected() | 233 | const DocLnk * ImageFileSelector::selected() |
241 | { | 234 | { |
235 | qDebug("image selected"); | ||
242 | ImageFileSelectorItem *item = (ImageFileSelectorItem *) detailed->selectedItem(); | 236 | ImageFileSelectorItem *item = (ImageFileSelectorItem *) detailed->selectedItem(); |
243 | if ( item ) | 237 | if ( item ) |
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 | |||
@@ -13,4 +13,5 @@ | |||
13 | class QScrollView; | 13 | class QScrollView; |
14 | class QLabel; | 14 | class QLabel; |
15 | //class QValueList; | ||
15 | 16 | ||
16 | class ThumbWidget : public QWidget | 17 | class ThumbWidget : public QWidget |
@@ -19,11 +20,7 @@ class ThumbWidget : public QWidget | |||
19 | public: | 20 | public: |
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; |
29 | } | 26 | } |
@@ -46,4 +43,19 @@ private: | |||
46 | 43 | ||
47 | 44 | ||
45 | |||
46 | |||
47 | class ImageFileSelectorItem : public QListViewItem | ||
48 | { | ||
49 | public: | ||
50 | ImageFileSelectorItem( QListView *parent, const DocLnk& f ); | ||
51 | ~ImageFileSelectorItem(); | ||
52 | |||
53 | DocLnk file() const { | ||
54 | return fl; | ||
55 | } | ||
56 | private: | ||
57 | DocLnk fl; | ||
58 | }; | ||
59 | |||
48 | class ImageFileSelector : public QWidgetStack | 60 | class ImageFileSelector : public QWidgetStack |
49 | { | 61 | { |
@@ -52,6 +64,5 @@ class ImageFileSelector : public QWidgetStack | |||
52 | public: | 64 | public: |
53 | 65 | ||
54 | enum CURRENT_VIEW | 66 | enum CURRENT_VIEW { |
55 | { | ||
56 | THUMBNAIL, | 67 | THUMBNAIL, |
57 | DETAILED, | 68 | DETAILED, |
@@ -69,9 +80,18 @@ class ImageFileSelector : public QWidgetStack | |||
69 | void setView(CURRENT_VIEW v); | 80 | void setView(CURRENT_VIEW v); |
70 | 81 | ||
71 | CURRENT_VIEW view() | 82 | CURRENT_VIEW view() { |
72 | { | ||
73 | return cView; | 83 | return cView; |
74 | } | 84 | } |
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 | ||
77 | public slots: | 97 | public slots: |
@@ -110,25 +130,4 @@ private: | |||
110 | 130 | ||
111 | }; | 131 | }; |
112 | |||
113 | |||
114 | class ImageFileSelectorItem : public QListViewItem | ||
115 | { | ||
116 | public: | ||
117 | ImageFileSelectorItem( QListView *parent, const DocLnk& f ); | ||
118 | ~ImageFileSelectorItem(); | ||
119 | |||
120 | DocLnk file() const | ||
121 | { | ||
122 | return fl; | ||
123 | } | ||
124 | |||
125 | |||
126 | private: | ||
127 | DocLnk fl; | ||
128 | }; | ||
129 | |||
130 | |||
131 | |||
132 | |||
133 | #endif // IMAGEFILE_SELECTOR_H | 132 | #endif // IMAGEFILE_SELECTOR_H |
134 | 133 | ||
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 | |||
28 | SettingsDialog::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 | |||
34 | void SettingsDialog::setDelay( int d ) | ||
35 | { | ||
36 | delaySlider->setValue( d ); | ||
37 | delayChanged( d ); | ||
38 | } | ||
39 | |||
40 | int SettingsDialog::delay() const | ||
41 | { | ||
42 | return delaySlider->value(); | ||
43 | } | ||
44 | |||
45 | void SettingsDialog::setRepeat( bool r ) | ||
46 | { | ||
47 | repeatCheck->setChecked( r ); | ||
48 | } | ||
49 | |||
50 | bool SettingsDialog::repeat() const | ||
51 | { | ||
52 | return repeatCheck->isChecked(); | ||
53 | } | ||
54 | |||
55 | void SettingsDialog::delayChanged( int d ) | ||
56 | { | ||
57 | delayText->setText( QString::number( d ) + " s" ); | ||
58 | } | ||
59 | |||
60 | void SettingsDialog::setReverse(bool r) | ||
61 | { | ||
62 | reverseCheck->setChecked(r); | ||
63 | } | ||
64 | |||
65 | bool SettingsDialog::reverse() const | ||
66 | { | ||
67 | return reverseCheck->isChecked(); | ||
68 | } | ||
69 | |||
70 | void SettingsDialog::setRotate(bool r) | ||
71 | { | ||
72 | rotateCheck->setChecked(r); | ||
73 | } | ||
74 | |||
75 | bool SettingsDialog::rotate() const | ||
76 | { | ||
77 | return rotateCheck->isChecked(); | ||
78 | } | ||
79 | |||
80 | void SettingsDialog::setFastLoad(bool f) | ||
81 | { | ||
82 | fastLoadCheck->setChecked(f); | ||
83 | } | ||
84 | |||
85 | bool 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 | |||
26 | class SettingsDialog : public SettingsDialogBase | ||
27 | { | ||
28 | Q_OBJECT | ||
29 | public: | ||
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 | |||
44 | private 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 | */ | ||
28 | SettingsDialogBase::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 | */ | ||
102 | SettingsDialogBase::~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> | ||
14 | class QVBoxLayout; | ||
15 | class QHBoxLayout; | ||
16 | class QGridLayout; | ||
17 | class QCheckBox; | ||
18 | class QGroupBox; | ||
19 | class QLabel; | ||
20 | class QSlider; | ||
21 | |||
22 | class SettingsDialogBase : public QDialog | ||
23 | { | ||
24 | Q_OBJECT | ||
25 | |||
26 | public: | ||
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 | |||
39 | protected: | ||
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 | |||
@@ -25,5 +25,10 @@ | |||
25 | #include "showimg.h" | 25 | #include "showimg.h" |
26 | #include "ImageFileSelector.h" | 26 | #include "ImageFileSelector.h" |
27 | #include "settingsdialog.h" | ||
27 | 28 | ||
29 | |||
30 | #include <opie/ofiledialog.h> | ||
31 | |||
32 | #include <qpe/qpeapplication.h> | ||
28 | #include <qpe/config.h> | 33 | #include <qpe/config.h> |
29 | #include <qpe/resource.h> | 34 | #include <qpe/resource.h> |
@@ -50,10 +55,10 @@ | |||
50 | 55 | ||
51 | 56 | ||
52 | ControlsDialog::ControlsDialog(const QString &caption,QImage image,int *brightness,QWidget *parent):QDialog(parent,0,true) | 57 | ControlsDialog::ControlsDialog(const QString &caption,QImage image,int *brightness,QWidget *parent) |
58 | : QDialog(parent,0,true) | ||
53 | { | 59 | { |
54 | setCaption(caption); | 60 | setCaption(caption); |
55 | 61 | ||
56 | if ( parent ) | 62 | if ( parent ) { |
57 | { | ||
58 | setPalette(parent->palette()); | 63 | setPalette(parent->palette()); |
59 | } | 64 | } |
@@ -102,7 +107,8 @@ void ControlsDialog::accept() | |||
102 | } | 107 | } |
103 | 108 | ||
109 | //=========================================================================== | ||
104 | 110 | ||
105 | 111 | InfoDialog::InfoDialog(const QString &caption, const QStringList text,QWidget *parent) | |
106 | InfoDialog::InfoDialog(const QString &caption, const QStringList text,QWidget *parent):QDialog(parent,0,true) | 112 | : QDialog(parent,0,true) |
107 | { | 113 | { |
108 | setCaption(caption); | 114 | setCaption(caption); |
@@ -150,4 +156,6 @@ void InfoDialog::displayInfo(const QString &caption, const QStringList text, QWi | |||
150 | } | 156 | } |
151 | 157 | ||
158 | //=========================================================================== | ||
159 | |||
152 | 160 | ||
153 | ImagePane::ImagePane( QWidget *parent ) : QWidget( parent ) | 161 | ImagePane::ImagePane( QWidget *parent ) : QWidget( parent ) |
@@ -230,9 +238,11 @@ ImageViewer::ImageViewer( QWidget *parent, const char *name, int wFlags ) | |||
230 | fileMenuFile = new QPopupMenu(this); | 238 | fileMenuFile = new QPopupMenu(this); |
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 | ||
234 | viewMenuFile = new QPopupMenu( this ); | 243 | viewMenuFile = new QPopupMenu( this ); |
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 | ||
238 | viewMenuFile->setItemChecked ( SHOW_THUMBNAILS, showThumbView ); | 248 | viewMenuFile->setItemChecked ( SHOW_THUMBNAILS, showThumbView ); |
@@ -243,11 +253,16 @@ ImageViewer::ImageViewer( QWidget *parent, const char *name, int wFlags ) | |||
243 | optionsMenuFile = new QPopupMenu( this); | 253 | optionsMenuFile = new QPopupMenu( this); |
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 | ||
253 | QStrList fmt = QImage::outputFormats(); | 268 | QStrList fmt = QImage::outputFormats(); |
@@ -292,5 +307,9 @@ ImageViewer::ImageViewer( QWidget *parent, const char *name, int wFlags ) | |||
292 | //fileSelector->setCloseVisible(FALSE); | 307 | //fileSelector->setCloseVisible(FALSE); |
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 | ||
296 | iconToolBar = new QPEToolBar(this); | 315 | iconToolBar = new QPEToolBar(this); |
@@ -337,9 +356,29 @@ ImageViewer::ImageViewer( QWidget *parent, const char *name, int wFlags ) | |||
337 | 356 | ||
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() ) ); |
341 | a->addTo( iconToolBar ); | 361 | a->addTo( iconToolBar ); |
342 | a->addTo( viewMenuView); | 362 | a->addTo( viewMenuView); |
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(); |
345 | 384 | ||
@@ -357,7 +396,50 @@ ImageViewer::~ImageViewer() | |||
357 | cfg.writeEntry("SizeToScreen",(int)isSized); | 396 | cfg.writeEntry("SizeToScreen",(int)isSized); |
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 |
360 | } | 408 | } |
361 | 409 | ||
410 | void ImageViewer::help() { | ||
411 | |||
412 | } | ||
413 | |||
414 | |||
415 | void 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 | |||
362 | void ImageViewer::switchSizeToScreen() | 444 | void ImageViewer::switchSizeToScreen() |
363 | { | 445 | { |
@@ -369,10 +451,7 @@ void ImageViewer::switchSizeToScreen() | |||
369 | void ImageViewer::updateImage() | 451 | 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); |
378 | } | 457 | } |
@@ -397,4 +476,5 @@ void ImageViewer::switchToFileSelector() | |||
397 | iconToolBar->hide(); | 476 | iconToolBar->hide(); |
398 | imagePanel->disable(); | 477 | imagePanel->disable(); |
478 | slideShow(false); | ||
399 | 479 | ||
400 | } | 480 | } |
@@ -435,13 +515,11 @@ void ImageViewer::show() | |||
435 | void ImageViewer::show(const QString& fileref) | 515 | void ImageViewer::show(const QString& fileref) |
436 | { | 516 | { |
517 | // qDebug("Show "+fileref); | ||
437 | bFromDocView = TRUE; | 518 | bFromDocView = TRUE; |
438 | closeFileSelector(); | 519 | closeFileSelector(); |
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; |
447 | updateCaption( fileref ); | 525 | updateCaption( fileref ); |
@@ -450,10 +528,28 @@ void ImageViewer::show(const QString& fileref) | |||
450 | } | 528 | } |
451 | 529 | ||
452 | void ImageViewer::openFile( const DocLnk &file ) | 530 | void 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 | |||
543 | void 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 | } |
459 | 555 | ||
@@ -483,17 +579,14 @@ void ImageViewer::loadImage( const char *fileName ) | |||
483 | { | 579 | { |
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 |
488 | //imagePanel->statusLabel()->setText( tr("Loading image...") ); | 583 | //imagePanel->statusLabel()->setText( tr("Loading image...") ); |
489 | qApp->processEvents(); | 584 | qApp->processEvents(); |
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(); |
494 | updateImageInfo(filename); | 588 | updateImageInfo(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 |
499 | update(); | 592 | update(); |
@@ -501,4 +594,18 @@ void ImageViewer::loadImage( const char *fileName ) | |||
501 | QApplication::restoreOverrideCursor(); // restore original cursor | 594 | QApplication::restoreOverrideCursor(); // restore original cursor |
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(); |
504 | updateImage(); | 611 | updateImage(); |
@@ -620,4 +727,6 @@ void ImageViewer::resizeEvent( QResizeEvent * ) | |||
620 | void ImageViewer::hFlip() | 727 | 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)); |
623 | } | 732 | } |
@@ -625,4 +734,5 @@ void ImageViewer::hFlip() | |||
625 | void ImageViewer::vFlip() | 734 | void ImageViewer::vFlip() |
626 | { | 735 | { |
736 | // matrix.scale( 1.0, -1.0 ); | ||
627 | setImage(image.mirror(FALSE,TRUE)); | 737 | setImage(image.mirror(FALSE,TRUE)); |
628 | } | 738 | } |
@@ -630,5 +740,5 @@ void ImageViewer::vFlip() | |||
630 | void ImageViewer::rot180() | 740 | void ImageViewer::rot180() |
631 | { | 741 | { |
632 | 742 | // matrix.rotate( 180.0 ); | |
633 | setImage(image.mirror(TRUE,TRUE)); | 743 | setImage(image.mirror(TRUE,TRUE)); |
634 | } | 744 | } |
@@ -638,4 +748,5 @@ void ImageViewer::rot90() | |||
638 | QImage oldimage; | 748 | QImage oldimage; |
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)); |
641 | 752 | ||
@@ -646,4 +757,5 @@ void ImageViewer::rot270() | |||
646 | QImage oldimage; | 757 | QImage oldimage; |
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)); |
649 | 761 | ||
@@ -655,6 +767,4 @@ void ImageViewer::blackAndWhite() | |||
655 | viewMenuView->setItemEnabled(BLACKANDWHITE,false); | 767 | viewMenuView->setItemEnabled(BLACKANDWHITE,false); |
656 | setImage(toGray(image,false)); | 768 | setImage(toGray(image,false)); |
657 | |||
658 | |||
659 | } | 769 | } |
660 | 770 | ||
@@ -673,6 +783,5 @@ void ImageViewer::displayControlsDialog() | |||
673 | ControlsDialog *dlg=new ControlsDialog("Image Viewer",small,&newB,this); | 783 | ControlsDialog *dlg=new ControlsDialog("Image Viewer",small,&newB,this); |
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); |
678 | setImage(image); | 787 | setImage(image); |
@@ -708,4 +817,9 @@ void ImageViewer::normalView() | |||
708 | } | 817 | } |
709 | 818 | ||
819 | void ImageViewer::stopSlideShow() { | ||
820 | if (slideTimer->isActive()) | ||
821 | slideTimer->stop(); | ||
822 | } | ||
823 | |||
710 | void ImageViewer::fullScreen() | 824 | void ImageViewer::fullScreen() |
711 | { | 825 | { |
@@ -1035,10 +1149,101 @@ QImage ImageViewer::rotate(QImage &img, RotateDirection r) | |||
1035 | } | 1149 | } |
1036 | return (dest); | 1150 | return (dest); |
1151 | } | ||
1152 | |||
1153 | void 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 | |||
1167 | void 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 | // | ||
1182 | bool ImageViewer::nextImage(void) | ||
1183 | { | ||
1184 | int idx = 0; | ||
1038 | 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]); | ||
1039 | } | 1198 | } |
1040 | 1199 | ||
1200 | return idx == int(imageList.count() - 1) ? TRUE : FALSE; | ||
1201 | } | ||
1041 | 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 | // | ||
1208 | bool ImageViewer::prevImage(void) | ||
1209 | { | ||
1210 | int idx = -1; | ||
1042 | 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 | } | ||
1225 | |||
1226 | return idx == 0 ? TRUE : FALSE; | ||
1227 | } | ||
1228 | |||
1229 | // | ||
1230 | // Return the index into the imageList of the currently viewed | ||
1231 | // image (ie. ImageViewer::filename in ImageViewer::imageList). | ||
1232 | // | ||
1233 | int ImageViewer::imageIndex(void) | ||
1234 | { | ||
1235 | QValueListConstIterator<DocLnk> i; | ||
1236 | int index; | ||
1237 | |||
1238 | if (imageList.count() == 0) { | ||
1239 | return -1; | ||
1240 | } | ||
1043 | 1241 | ||
1242 | for (index = 0, i = imageList.begin(); i != imageList.end(); ++i, index++) { | ||
1243 | if ((*i).file() == filename) { | ||
1244 | return index; | ||
1245 | } | ||
1246 | } | ||
1044 | 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 | |||
@@ -30,5 +30,9 @@ | |||
30 | #include <qdialog.h> | 30 | #include <qdialog.h> |
31 | #include <qstringlist.h> | 31 | #include <qstringlist.h> |
32 | #include <qvaluelist.h> | ||
33 | #include <qwmatrix.h> | ||
32 | 34 | ||
35 | |||
36 | class QAction; | ||
33 | class QPEToolBar; | 37 | class QPEToolBar; |
34 | class QPEMenuBar; | 38 | class QPEMenuBar; |
@@ -41,5 +45,5 @@ class QAction; | |||
41 | class QSpinBox; | 45 | class QSpinBox; |
42 | class ImageFileSelector; | 46 | class ImageFileSelector; |
43 | 47 | class QTimer; | |
44 | 48 | ||
45 | 49 | ||
@@ -48,17 +52,11 @@ 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 | ||
59 | } | 60 | void setPixmap( const QPixmap &pm ) { |
60 | |||
61 | void setPixmap( const QPixmap &pm ) | ||
62 | { | ||
63 | pixmap = pm; | 61 | pixmap = pm; |
64 | show(); | 62 | show(); |
@@ -117,8 +115,5 @@ class ImagePane : public QWidget | |||
117 | public: | 115 | public: |
118 | ImagePane( QWidget *parent=0 ); | 116 | ImagePane( QWidget *parent=0 ); |
119 | ~ImagePane() | 117 | ~ImagePane() { } |
120 | { | ||
121 | |||
122 | } | ||
123 | 118 | ||
124 | //void showStatus(); | 119 | //void showStatus(); |
@@ -131,21 +126,17 @@ class ImagePane : public QWidget | |||
131 | 126 | ||
132 | 127 | ||
133 | int paneWidth() const | 128 | int paneWidth() const { |
134 | { | ||
135 | return image->visibleWidth(); | 129 | return image->visibleWidth(); |
136 | } | 130 | } |
137 | 131 | ||
138 | int paneHeight() const | 132 | int paneHeight() const { |
139 | { | ||
140 | return image->visibleHeight(); | 133 | return image->visibleHeight(); |
141 | } | 134 | } |
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 ); |
146 | } | 138 | } |
147 | 139 | ||
148 | void disable() | 140 | void disable() { |
149 | { | ||
150 | pic->hide(); | 141 | pic->hide(); |
151 | } | 142 | } |
@@ -176,6 +167,5 @@ class ImageViewer : public QMainWindow | |||
176 | 167 | ||
177 | 168 | ||
178 | enum INFO_STRINGS | 169 | enum INFO_STRINGS { |
179 | { | ||
180 | PATH, | 170 | PATH, |
181 | FORMAT, | 171 | FORMAT, |
@@ -187,6 +177,5 @@ class ImageViewer : public QMainWindow | |||
187 | }; | 177 | }; |
188 | 178 | ||
189 | enum RotateDirection | 179 | enum RotateDirection { |
190 | { | ||
191 | Rotate90, Rotate180, Rotate270 | 180 | Rotate90, Rotate180, Rotate270 |
192 | }; | 181 | }; |
@@ -196,4 +185,5 @@ class ImageViewer : public QMainWindow | |||
196 | static QImage& intensity(QImage &image, float percent); | 185 | static QImage& intensity(QImage &image, float percent); |
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 | ||
199 | protected: | 189 | protected: |
@@ -202,4 +192,6 @@ protected: | |||
202 | 192 | ||
203 | private: | 193 | private: |
194 | int imageIndex(void); | ||
195 | |||
204 | void updateCaption( QString name ); | 196 | void updateCaption( QString name ); |
205 | bool loadSelected(); | 197 | bool loadSelected(); |
@@ -214,9 +206,13 @@ private: | |||
214 | void updateImage(); | 206 | void updateImage(); |
215 | 207 | ||
216 | |||
217 | |||
218 | |||
219 | private slots: | 208 | private 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(); |
222 | void switchSizeToScreen(); | 218 | void switchSizeToScreen(); |
@@ -224,5 +220,5 @@ private slots: | |||
224 | void doDelayedLoad(); | 220 | void doDelayedLoad(); |
225 | void openFile( const DocLnk &file ); | 221 | void openFile( const DocLnk &file ); |
226 | //void openFile(); | 222 | void openFile(); |
227 | void open(); | 223 | void open(); |
228 | void closeFileSelector(); | 224 | void closeFileSelector(); |
@@ -234,24 +230,12 @@ private slots: | |||
234 | void normalView(); | 230 | void normalView(); |
235 | void fullScreen(); | 231 | void fullScreen(); |
232 | void stopSlideShow(); | ||
236 | void blackAndWhite(); | 233 | void blackAndWhite(); |
237 | void displayInfoDialog(); | 234 | void displayInfoDialog(); |
238 | void displayControlsDialog(); | 235 | void displayControlsDialog(); |
239 | |||
240 | |||
241 | |||
242 | |||
243 | |||
244 | |||
245 | |||
246 | |||
247 | |||
248 | |||
249 | private: | 236 | private: |
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, |
257 | SIZE_TO_SCREEN, | 241 | SIZE_TO_SCREEN, |
@@ -259,6 +243,4 @@ private: | |||
259 | }; | 243 | }; |
260 | 244 | ||
261 | |||
262 | |||
263 | QString filename; | 245 | QString filename; |
264 | QString delayLoad; | 246 | QString delayLoad; |
@@ -290,5 +272,13 @@ private: | |||
290 | // launched from the document view... | 272 | // launched from the document view... |
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 | ||
294 | QString imageInfo[LAST]; | 284 | QString imageInfo[LAST]; |
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 | |||
@@ -2,12 +2,10 @@ TEMPLATE = app | |||
2 | CONFIG += qt warn_on release | 2 | CONFIG += qt warn_on release |
3 | DESTDIR = $(OPIEDIR)/bin | 3 | DESTDIR = $(OPIEDIR)/bin |
4 | HEADERS = showimg.h ImageFileSelector.h | 4 | HEADERS = showimg.h ImageFileSelector.h settingsdialog.h settingsdialogbase.h |
5 | SOURCES = main.cpp \ | 5 | SOURCES = main.cpp showimg.cpp ImageFileSelector.cpp settingsdialog.cpp settingsdialogbase.cpp |
6 | showimg.cpp\ | ||
7 | ImageFileSelector.cpp | ||
8 | TARGET = showimg | 6 | TARGET = showimg |
9 | INCLUDEPATH += $(OPIEDIR)/include | 7 | INCLUDEPATH += $(OPIEDIR)/include |
10 | DEPENDPATH += $(OPIEDIR)/include | 8 | DEPENDPATH += $(OPIEDIR)/include |
11 | LIBS += -lqpe | 9 | LIBS += -lqpe -lopie |
12 | REQUIRES = showimg | 10 | REQUIRES = showimg |
13 | 11 | ||