summaryrefslogtreecommitdiff
path: root/noncore
authorllornkcor <llornkcor>2002-11-03 17:59:00 (UTC)
committer llornkcor <llornkcor>2002-11-03 17:59:00 (UTC)
commit16e8fad81f7ee6045990f48edc84542638bf07d7 (patch) (side-by-side diff)
tree96d836f914e0d1104d7c84830acac08a43ee4ac2 /noncore
parent2981b8f55f4a33860452f4571ef9f04781267489 (diff)
downloadopie-16e8fad81f7ee6045990f48edc84542638bf07d7.zip
opie-16e8fad81f7ee6045990f48edc84542638bf07d7.tar.gz
opie-16e8fad81f7ee6045990f48edc84542638bf07d7.tar.bz2
added preferences dialog, and added slidshow
Diffstat (limited to 'noncore') (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 @@
-
-
-
-ThumbWidget::ThumbWidget(QPixmap p,QString text,const DocLnk& f,QWidget *parent,int w) : QWidget( parent ),fl(f)
+ThumbWidget::ThumbWidget(QPixmap p,QString text,const DocLnk& f,QWidget *parent,int w)
+ : QWidget( parent ),fl(f)
{
@@ -40,3 +38,3 @@ ThumbWidget::ThumbWidget(QPixmap p,QString text,const DocLnk& f,QWidget *parent,
-void ThumbWidget::resizeEvent(QResizeEvent *e)
+void ThumbWidget::resizeEvent(QResizeEvent *)
{
@@ -55,3 +53,3 @@ void ThumbWidget::paintEvent( QPaintEvent *e )
-void ThumbWidget::mouseReleaseEvent(QMouseEvent* event)
+void ThumbWidget::mouseReleaseEvent(QMouseEvent* )
{
@@ -62,4 +60,4 @@ void ThumbWidget::mouseReleaseEvent(QMouseEvent* event)
-
-ImageFileSelectorItem::ImageFileSelectorItem( QListView *parent, const DocLnk &f): QListViewItem( parent ), fl( f )
+ImageFileSelectorItem::ImageFileSelectorItem( QListView *parent, const DocLnk &f)
+ : QListViewItem( parent ), fl( f )
{
@@ -80,3 +78,4 @@ ImageFileSelectorItem::~ImageFileSelectorItem()
-ImageFileSelector::ImageFileSelector( CURRENT_VIEW scv,QWidget *parent,const char *name ):QWidgetStack(parent)
+ImageFileSelector::ImageFileSelector( CURRENT_VIEW scv,QWidget *parent,const char * )
+ : QWidgetStack(parent)
{
@@ -167,4 +166,5 @@ void ImageFileSelector::updateSizes()
-void ImageFileSelector::reread(bool purgeCache)
+void ImageFileSelector::reread(bool)
{
+// qDebug("reread");
ImageFileSelectorItem *item = (ImageFileSelectorItem *)detailed->selectedItem();
@@ -179,5 +179,5 @@ void ImageFileSelector::reread(bool purgeCache)
QListIterator<DocLnk> dit( files.children() );
- int y=0;
- int x=4;
- int totalHeight=4;
+// int y=0;
+// int x=4;
+// int totalHeight=4;
ThumbWidget *l=0;
@@ -185,11 +185,8 @@ void ImageFileSelector::reread(bool purgeCache)
gl->expand(dit.count()/2,2);
-
int i,j;
-
i=j=0;
-
detailed->setUpdatesEnabled(false);
thumb->setUpdatesEnabled(false);
- for ( ; dit.current(); ++dit )
- {
+
+ for ( ; dit.current(); ++dit ) {
item = new ImageFileSelectorItem( detailed, **dit );
@@ -201,26 +198,23 @@ void ImageFileSelector::reread(bool purgeCache)
ImageFileSelectorItem *ii;
- // iterate through all items of the listview
- for ( ; it.current(); ++it )
- {
+ // iterate through all items of the listview
+ for ( ; it.current(); ++it ) {
ii=(ImageFileSelectorItem *)it.current();
- QImage img(ii->file().file());
- img=img.smoothScale(64,64);
- QPixmap pix;
- pix.convertFromImage(img);
- l=new ThumbWidget(pix,ii->file().name(),ii->file(),background,width);
- l->setBackgroundColor(colorGroup().base());
- gl->addWidget(l,j,i);
- i++;
- if ( i==2 )
- {
- i=0;
- j++;
+ QImage img( ii->file().file() );
+ if( !img.isNull()) {
+ img=img.smoothScale(64,64);
+ QPixmap pix;
+ pix.convertFromImage(img);
+ l=new ThumbWidget(pix,ii->file().name(),ii->file(),background,width);
+ l->setBackgroundColor(colorGroup().base());
+ gl->addWidget(l,j,i);
+ i++;
+ if ( i==2 ) {
+ i=0;
+ j++;
+ }
+ tList.append(l);
+ connect(l,SIGNAL(clicked(const DocLnk &)),this,SLOT(thumbClicked(const DocLnk &)));
}
- tList.append(l);
- connect(l,SIGNAL(clicked(const DocLnk &)),this,SLOT(thumbClicked(const DocLnk &)));
-
}
-
-
if ( !detailed->selectedItem() )
@@ -232,3 +226,2 @@ void ImageFileSelector::reread(bool purgeCache)
thumb->update();
-
}
@@ -241,2 +234,3 @@ const DocLnk * ImageFileSelector::selected()
{
+ qDebug("image selected");
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;
class QLabel;
+//class QValueList;
@@ -18,11 +19,7 @@ class ThumbWidget : public QWidget
Q_OBJECT
- public:
+public:
ThumbWidget(QPixmap p,QString text,const DocLnk& f,QWidget *parent=0,int width=-1);
- ~ThumbWidget()
- {
-
- }
+ ~ThumbWidget() { }
- DocLnk file() const
- {
+ DocLnk file() const {
return fl;
@@ -47,2 +44,17 @@ private:
+
+
+class ImageFileSelectorItem : public QListViewItem
+{
+public:
+ ImageFileSelectorItem( QListView *parent, const DocLnk& f );
+ ~ImageFileSelectorItem();
+
+ DocLnk file() const {
+ return fl;
+ }
+private:
+ DocLnk fl;
+};
+
class ImageFileSelector : public QWidgetStack
@@ -51,6 +63,5 @@ class ImageFileSelector : public QWidgetStack
- public:
+public:
- enum CURRENT_VIEW
- {
+ enum CURRENT_VIEW {
THUMBNAIL,
@@ -70,4 +81,3 @@ class ImageFileSelector : public QWidgetStack
- CURRENT_VIEW view()
- {
+ CURRENT_VIEW view() {
return cView;
@@ -75,2 +85,12 @@ class ImageFileSelector : public QWidgetStack
+ QValueList<DocLnk> fileList() const {
+ ((ImageFileSelector*)this)->fileCount(); // ensure all loaded when this is extended
+ QValueList<DocLnk> list;
+ ImageFileSelectorItem *item = (ImageFileSelectorItem *)detailed->firstChild();
+ while (item) {
+ list.append(item->file());
+ item = (ImageFileSelectorItem *)item->nextSibling();
+ }
+ return list;
+ }
@@ -111,23 +131,2 @@ private:
};
-
-
-class ImageFileSelectorItem : public QListViewItem
-{
-public:
- ImageFileSelectorItem( QListView *parent, const DocLnk& f );
- ~ImageFileSelectorItem();
-
- DocLnk file() const
- {
- return fl;
- }
-
-
-private:
- DocLnk fl;
-};
-
-
-
-
#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 @@
+/**********************************************************************
+** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
+**
+** This file is part of the Qtopia Environment.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#include "settingsdialog.h"
+#include <qslider.h>
+#include <qlabel.h>
+#include <qcheckbox.h>
+#include <qradiobutton.h>
+#include <qbuttongroup.h>
+
+SettingsDialog::SettingsDialog( QWidget *parent, const char *name, bool modal, WFlags f )
+ : SettingsDialogBase( parent, name, modal, f )
+{
+ connect( delaySlider, SIGNAL(valueChanged(int)), this, SLOT(delayChanged(int)) );
+}
+
+void SettingsDialog::setDelay( int d )
+{
+ delaySlider->setValue( d );
+ delayChanged( d );
+}
+
+int SettingsDialog::delay() const
+{
+ return delaySlider->value();
+}
+
+void SettingsDialog::setRepeat( bool r )
+{
+ repeatCheck->setChecked( r );
+}
+
+bool SettingsDialog::repeat() const
+{
+ return repeatCheck->isChecked();
+}
+
+void SettingsDialog::delayChanged( int d )
+{
+ delayText->setText( QString::number( d ) + " s" );
+}
+
+void SettingsDialog::setReverse(bool r)
+{
+ reverseCheck->setChecked(r);
+}
+
+bool SettingsDialog::reverse() const
+{
+ return reverseCheck->isChecked();
+}
+
+void SettingsDialog::setRotate(bool r)
+{
+ rotateCheck->setChecked(r);
+}
+
+bool SettingsDialog::rotate() const
+{
+ return rotateCheck->isChecked();
+}
+
+void SettingsDialog::setFastLoad(bool f)
+{
+ fastLoadCheck->setChecked(f);
+}
+
+bool SettingsDialog::fastLoad() const
+{
+ return fastLoadCheck->isChecked();
+}
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 @@
+/**********************************************************************
+** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
+**
+** This file is part of the Qtopia Environment.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#ifndef SETTINGSDIALOG_H
+#define SETTINGSDIALOG_H
+
+#include "settingsdialogbase.h"
+
+class SettingsDialog : public SettingsDialogBase
+{
+ Q_OBJECT
+public:
+
+ SettingsDialog( QWidget * parent=0, const char * name=0, bool modal=FALSE, WFlags f=0 );
+
+ void setDelay( int d );
+ int delay() const;
+ void setRepeat( bool r );
+ bool repeat() const;
+ void setReverse( bool r );
+ bool reverse() const;
+ void setRotate(bool r);
+ bool rotate() const;
+ void setFastLoad(bool f);
+ bool fastLoad() const;
+
+private slots:
+ void delayChanged( int );
+};
+
+
+#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 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'settingsdialogbase.ui'
+**
+** Created: Sun Nov 3 07:29:03 2002
+** by: The User Interface Compiler (uic)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+#include "settingsdialogbase.h"
+
+#include <qcheckbox.h>
+#include <qgroupbox.h>
+#include <qlabel.h>
+#include <qpushbutton.h>
+#include <qslider.h>
+#include <qlayout.h>
+#include <qvariant.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+
+/*
+ * Constructs a SettingsDialogBase which is a child of 'parent', with the
+ * name 'name' and widget flags set to 'f'
+ *
+ * The dialog will by default be modeless, unless you set 'modal' to
+ * TRUE to construct a modal dialog.
+ */
+SettingsDialogBase::SettingsDialogBase( QWidget* parent, const char* name, bool modal, WFlags fl )
+ : QDialog( parent, name, modal, fl )
+{
+ if ( !name )
+ setName( "SettingsDialogBase" );
+ resize( 246, 201 );
+ setCaption( tr( "Preferences" ) );
+ SettingsDialogBaseLayout = new QVBoxLayout( this );
+ SettingsDialogBaseLayout->setSpacing( 6 );
+ SettingsDialogBaseLayout->setMargin( 6 );
+
+ GroupBox1 = new QGroupBox( this, "GroupBox1" );
+ GroupBox1->setTitle( tr( "Slide Show" ) );
+ GroupBox1->setColumnLayout(0, Qt::Vertical );
+ GroupBox1->layout()->setSpacing( 0 );
+ GroupBox1->layout()->setMargin( 0 );
+ GroupBox1Layout = new QVBoxLayout( GroupBox1->layout() );
+ GroupBox1Layout->setAlignment( Qt::AlignTop );
+ GroupBox1Layout->setSpacing( 6 );
+ GroupBox1Layout->setMargin( 11 );
+
+ Layout3 = new QGridLayout;
+ Layout3->setSpacing( 6 );
+ Layout3->setMargin( 0 );
+
+ TextLabel1 = new QLabel( GroupBox1, "TextLabel1" );
+ TextLabel1->setText( tr( "Delay between pictures" ) );
+
+ Layout3->addMultiCellWidget( TextLabel1, 0, 0, 0, 1 );
+
+ delaySlider = new QSlider( GroupBox1, "delaySlider" );
+ delaySlider->setMinValue( 2 );
+ delaySlider->setMaxValue( 60 );
+ delaySlider->setLineStep( 2 );
+ delaySlider->setOrientation( QSlider::Horizontal );
+ delaySlider->setTickmarks( QSlider::Right );
+ delaySlider->setTickInterval( 10);
+
+ Layout3->addWidget( delaySlider, 1, 0 );
+
+ delayText = new QLabel( GroupBox1, "delayText" );
+ delayText->setMinimumSize( QSize( 25, 0 ) );
+ delayText->setText( tr( "s" ) );
+ delayText->setAlignment( int( QLabel::AlignVCenter | QLabel::AlignRight ) );
+
+ Layout3->addWidget( delayText, 1, 1 );
+ GroupBox1Layout->addLayout( Layout3 );
+
+ repeatCheck = new QCheckBox( GroupBox1, "repeatCheck" );
+ repeatCheck->setText( tr( "Repeat slideshow" ) );
+ GroupBox1Layout->addWidget( repeatCheck );
+
+ reverseCheck = new QCheckBox( GroupBox1, "reverseCheck" );
+ reverseCheck->setText( tr( "Show pictures in reverse" ) );
+ GroupBox1Layout->addWidget( reverseCheck );
+ SettingsDialogBaseLayout->addWidget( GroupBox1 );
+
+ rotateCheck = new QCheckBox( this, "rotateCheck" );
+ rotateCheck->setText( tr( "Load pictures rotated 90 degrees" ) );
+ SettingsDialogBaseLayout->addWidget( rotateCheck );
+
+ fastLoadCheck = new QCheckBox( this, "fastLoadCheck" );
+ fastLoadCheck->setText( tr( "Fast load pictures" ) );
+ SettingsDialogBaseLayout->addWidget( fastLoadCheck );
+ fastLoadCheck->hide(); //FIXME
+// QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Expanding );
+// layout->addItem( spacer, 10, 0 );
+
+
+}
+
+/*
+ * Destroys the object and frees any allocated resources
+ */
+SettingsDialogBase::~SettingsDialogBase()
+{
+ // no need to delete child widgets, Qt does it all for us
+}
+
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 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'settingsdialogbase.ui'
+**
+** Created: Sun Nov 3 07:29:03 2002
+** by: The User Interface Compiler (uic)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+#ifndef SETTINGSDIALOGBASE_H
+#define SETTINGSDIALOGBASE_H
+
+#include <qvariant.h>
+#include <qdialog.h>
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QCheckBox;
+class QGroupBox;
+class QLabel;
+class QSlider;
+
+class SettingsDialogBase : public QDialog
+{
+ Q_OBJECT
+
+public:
+ SettingsDialogBase( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
+ ~SettingsDialogBase();
+
+ QGroupBox* GroupBox1;
+ QLabel* TextLabel1;
+ QSlider* delaySlider;
+ QLabel* delayText;
+ QCheckBox* repeatCheck;
+ QCheckBox* reverseCheck;
+ QCheckBox* rotateCheck;
+ QCheckBox* fastLoadCheck;
+
+protected:
+ QVBoxLayout* SettingsDialogBaseLayout;
+ QVBoxLayout* GroupBox1Layout;
+ QGridLayout* Layout3;
+};
+
+#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 @@
#include "ImageFileSelector.h"
+#include "settingsdialog.h"
+
+#include <opie/ofiledialog.h>
+
+#include <qpe/qpeapplication.h>
#include <qpe/config.h>
@@ -51,3 +56,4 @@
-ControlsDialog::ControlsDialog(const QString &caption,QImage image,int *brightness,QWidget *parent):QDialog(parent,0,true)
+ControlsDialog::ControlsDialog(const QString &caption,QImage image,int *brightness,QWidget *parent)
+ : QDialog(parent,0,true)
{
@@ -55,4 +61,3 @@ ControlsDialog::ControlsDialog(const QString &caption,QImage image,int *brightne
- if ( parent )
- {
+ if ( parent ) {
setPalette(parent->palette());
@@ -103,5 +108,6 @@ void ControlsDialog::accept()
+//===========================================================================
-
-InfoDialog::InfoDialog(const QString &caption, const QStringList text,QWidget *parent):QDialog(parent,0,true)
+InfoDialog::InfoDialog(const QString &caption, const QStringList text,QWidget *parent)
+ : QDialog(parent,0,true)
{
@@ -151,2 +157,4 @@ void InfoDialog::displayInfo(const QString &caption, const QStringList text, QWi
+//===========================================================================
+
@@ -231,3 +239,4 @@ ImageViewer::ImageViewer( QWidget *parent, const char *name, int wFlags )
//menuBarmenubarFile->insertItem( tr("File"), fileMenu );
- fileMenuFile->insertItem(tr("Open"), this, SLOT(openFile()), 0);
+ fileMenuFile->insertItem(tr("Open"),
+ this, SLOT(openFile()), 0);
@@ -235,3 +244,4 @@ ImageViewer::ImageViewer( QWidget *parent, const char *name, int wFlags )
//menubarFile->insertItem( tr("View"), viewMenu );
- viewMenuFile->insertItem( tr("Thumbnail View"), this, SLOT(switchThumbView()), 0, SHOW_THUMBNAILS );
+ viewMenuFile->insertItem( tr("Thumbnail View"),
+ this, SLOT(switchThumbView()), 0, SHOW_THUMBNAILS );
@@ -244,9 +254,14 @@ ImageViewer::ImageViewer( QWidget *parent, const char *name, int wFlags )
//menubarFile->insertItem( tr("Options"),optionsMenu );
- optionsMenuFile->insertItem( tr("Slideshow") );
- optionsMenuFile->insertSeparator();
- optionsMenuFile->insertItem( tr("Preferences.."));
- optionsMenuFile->insertItem( tr("Help"));
-
+ slideAction = new QAction( tr( "Slide show" ), Resource::loadIconSet( "slideshow" ),
+ QString::null, 0, this, 0 );
+ slideAction->setToggleAction( TRUE );
+ connect( slideAction, SIGNAL( toggled(bool) ), this, SLOT( slideShow(bool) ) );
+ slideAction->addTo( optionsMenuFile);
+// slideAction->addTo( toolBar );
+// optionsMenuFile->insertItem( tr("Slideshow") );
+ optionsMenuFile->insertSeparator();
+ optionsMenuFile->insertItem( tr("Preferences.."), this, SLOT(settings()), 0);
+// optionsMenuFile->insertItem( tr("Help"), this, SLOT(help()), 0);
@@ -293,3 +308,7 @@ ImageViewer::ImageViewer( QWidget *parent, const char *name, int wFlags )
connect( fileSelector, SIGNAL( closeMe() ), this, SLOT( closeFileSelector() ) );
- connect( fileSelector, SIGNAL( fileSelected( const DocLnk &) ), this, SLOT( openFile( const DocLnk & ) ) );
+ connect( fileSelector, SIGNAL( fileSelected( const DocLnk &) ),
+ this, SLOT( openFile( const DocLnk & ) ) );
+
+ imageList = fileSelector->fileList();
+ slideAction->setEnabled( imageList.count() != 0);
@@ -338,3 +357,4 @@ ImageViewer::ImageViewer( QWidget *parent, const char *name, int wFlags )
- a = new QAction( tr( "Fullscreen" ), Resource::loadPixmap( "fullscreen" ), QString::null, 0, this, 0 );
+ a = new QAction( tr( "Fullscreen" ), Resource::loadPixmap( "fullscreen" ),
+ QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( fullScreen() ) );
@@ -343,2 +363,21 @@ ImageViewer::ImageViewer( QWidget *parent, const char *name, int wFlags )
+ a = new QAction( tr( "Stop Slideshow" ), Resource::loadPixmap( "quit_icon" ),
+ QString::null, 0, this, 0 );
+ connect( a, SIGNAL( activated() ), this, SLOT( stopSlideShow() ) );
+ a->addTo( iconToolBar );
+ a->addTo( viewMenuView);
+
+
+ Config config( "ImageViewer" );
+ config.setGroup( "SlideShow" );
+ slideDelay = config.readNumEntry( "Delay", 2);
+ slideRepeat = config.readBoolEntry( "Repeat", FALSE );
+ slideReverse = config.readBoolEntry("Reverse", FALSE);
+
+ config.setGroup("Default");
+ rotateOnLoad = config.readBoolEntry("Rotate", FALSE);
+ fastLoad = config.readBoolEntry("FastLoad", TRUE);
+ slideTimer = new QTimer( this );
+ connect( slideTimer, SIGNAL(timeout()), this, SLOT(slideUpdate()) );
+
switchToFileSelector();
@@ -358,2 +397,11 @@ ImageViewer::~ImageViewer()
+ cfg.setGroup( "SlideShow" );
+ cfg.writeEntry( "Delay", slideDelay);
+ cfg.writeEntry( "Repeat", slideRepeat );
+ cfg.writeEntry("Reverse", slideReverse);
+
+ cfg.setGroup("Default");
+ cfg.writeEntry("Rotate", rotateOnLoad);
+ cfg.writeEntry("FastLoad", fastLoad);
+
delete imagePanel; // in case it is fullscreen
@@ -361,2 +409,36 @@ ImageViewer::~ImageViewer()
+void ImageViewer::help() {
+
+}
+
+
+void ImageViewer::settings()
+{
+ SettingsDialog dlg( this, 0, TRUE );
+ dlg.setDelay( slideDelay );
+ dlg.setRepeat( slideRepeat );
+ dlg.setReverse( slideReverse );
+ dlg.setRotate(rotateOnLoad);
+ dlg.setFastLoad(fastLoad);
+
+ if ( QPEApplication::execDialog(&dlg) == QDialog::Accepted ) {
+ qDebug("<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>");
+ slideDelay = dlg.delay();
+ slideRepeat = dlg.repeat();
+ slideReverse = dlg.reverse();
+ rotateOnLoad = dlg.rotate();
+ fastLoad = dlg.fastLoad();
+
+ Config config( "ImageViewer" );
+ config.setGroup( "SlideShow" );
+ config.writeEntry( "Delay", slideDelay );
+ config.writeEntry( "Repeat", slideRepeat );
+ config.writeEntry("Reverse", slideReverse);
+
+ config.setGroup("Default");
+ config.writeEntry("Rotate", rotateOnLoad);
+ config.writeEntry("FastLoad", fastLoad);
+ }
+}
+
void ImageViewer::switchSizeToScreen()
@@ -370,8 +452,5 @@ void ImageViewer::updateImage()
{
- if ( isSized )
- {
+ if ( isSized ) {
imagePanel->setPixmap(pmScaled);
- }
- else
- {
+ } else {
imagePanel->setPixmap(pm);
@@ -398,2 +477,3 @@ void ImageViewer::switchToFileSelector()
imagePanel->disable();
+ slideShow(false);
@@ -436,2 +516,3 @@ void ImageViewer::show(const QString& fileref)
{
+// qDebug("Show "+fileref);
bFromDocView = TRUE;
@@ -439,8 +520,5 @@ void ImageViewer::show(const QString& fileref)
DocLnk link(fileref);
- if ( link.isValid() )
- {
+ if ( link.isValid() ) {
openFile(link);
- }
- else
- {
+ } else {
filename = fileref;
@@ -451,8 +529,26 @@ void ImageViewer::show(const QString& fileref)
-void ImageViewer::openFile( const DocLnk &file )
+void ImageViewer::openFile() {
+ MimeTypes types;
+ QStringList image;
+ image << "image/*";
+ types.insert("Images", image);
+
+ QString str = OFileDialog::getOpenFileName( 1,QPEApplication::documentDir(),"", types, 0 );
+ DocLnk link(str);
+ if ( link.isValid() )
+ openFile(link);
+
+}
+
+void ImageViewer::openFile( const DocLnk &link )
{
closeFileSelector();
- DocLnk link(file);
+// DocLnk link(file);
+ qDebug("open "+link.name());
updateCaption( link.name() );
loadImage( link.file() );
+ if (slideTimer->isActive()) {
+ slideTimer->start(slideDelay * 1000, FALSE);
+ }
+
}
@@ -484,4 +580,3 @@ void ImageViewer::loadImage( const char *fileName )
filename = fileName;
- if ( filename )
- {
+ if ( filename ) {
QApplication::setOverrideCursor( waitCursor ); // this might take time
@@ -490,4 +585,3 @@ void ImageViewer::loadImage( const char *fileName )
bool ok = image.load(filename, 0);
- if ( ok )
- {
+ if ( ok ) {
ok = reconvertImage();
@@ -495,4 +589,3 @@ void ImageViewer::loadImage( const char *fileName )
}
- if ( !ok )
- {
+ if ( !ok ) {
pm.resize(0,0); // couldn't load image
@@ -502,2 +595,16 @@ void ImageViewer::loadImage( const char *fileName )
}
+
+// fastLoad ? ", Fast" : "",
+// fastLoad ? QMAX(imagewidth/maxsize, imageheight/maxsize) : 1);
+
+
+// matrix.reset();
+ rotated90 = FALSE;
+
+ if (rotateOnLoad) {
+ rotated90 = TRUE;
+ rot90();
+// matrix.rotate( -90.0 );
+ }
+
switchToImageView();
@@ -621,2 +728,4 @@ void ImageViewer::hFlip()
{
+// matrix.scale( -1.0, 1.0 );
+
setImage(image.mirror(TRUE,FALSE));
@@ -626,2 +735,3 @@ void ImageViewer::vFlip()
{
+// matrix.scale( 1.0, -1.0 );
setImage(image.mirror(FALSE,TRUE));
@@ -631,3 +741,3 @@ void ImageViewer::rot180()
{
-
+// matrix.rotate( 180.0 );
setImage(image.mirror(TRUE,TRUE));
@@ -639,2 +749,3 @@ void ImageViewer::rot90()
oldimage = image.convertDepth(32);
+// matrix.rotate( -90.0 );
setImage(rotate(oldimage,Rotate90));
@@ -647,2 +758,3 @@ void ImageViewer::rot270()
oldimage = image.convertDepth(32);
+// matrix.rotate(90.0);
setImage(rotate(oldimage,Rotate270));
@@ -656,4 +768,2 @@ void ImageViewer::blackAndWhite()
setImage(toGray(image,false));
-
-
}
@@ -674,4 +784,3 @@ void ImageViewer::displayControlsDialog()
dlg->exec();
- if ( newB )
- {
+ if ( newB ) {
intensity(image,(float)newB/100);
@@ -709,2 +818,7 @@ void ImageViewer::normalView()
+void ImageViewer::stopSlideShow() {
+ if (slideTimer->isActive())
+ slideTimer->stop();
+}
+
void ImageViewer::fullScreen()
@@ -1036,9 +1150,100 @@ QImage ImageViewer::rotate(QImage &img, RotateDirection r)
return (dest);
+}
+
+void ImageViewer::slideShow( bool on )
+{
+ if (on) {
+ if (!imageList.isEmpty()) {
+ slideTimer->start(slideDelay * 1000, FALSE);
+ filename = ""; // force restart
+ slideReverse ? prevImage() : nextImage();
+ }
+ } else {
+ slideTimer->stop();
+ slideAction->setOn( false);
+ }
+}
+
+void ImageViewer::slideUpdate()
+{
+ bool final_image = slideReverse ? prevImage() : nextImage();
+
+ if (final_image && !slideRepeat) {
+ slideTimer->stop();
+ slideAction->setOn(FALSE);
+ }
+}
+//
+// Display the image after the current one in the image list.
+// Return TRUE if the next call to nextImage() will wrap around to the
+// first image in the list (ie. we're now viewing the last image in the list).
+//
+bool ImageViewer::nextImage(void)
+{
+ int idx = 0;
+
+ if (imageList.count() > 0) {
+ idx = imageIndex();
+ if (idx != -1) {
+ if (idx == int(imageList.count() - 1)) {
+ idx = 0;
+ } else {
+ idx++;
+ }
+ } else {
+ idx = 0;
+ }
+ openFile(imageList[idx]);
+ }
+ return idx == int(imageList.count() - 1) ? TRUE : FALSE;
}
+//
+// Display the image preceeding the current one in the image list.
+// Return TRUE if the next call to prevImage() will wrap around to the last
+// image in the list (ie. we're now viewing the first image in the list).
+//
+bool ImageViewer::prevImage(void)
+{
+ int idx = -1;
+
+ if (imageList.count() > 0) {
+ idx = imageIndex();
+ if (idx != -1) {
+ if (idx == 0) {
+ idx = imageList.count() - 1;
+ } else {
+ idx--;
+ }
+ } else {
+ idx = imageList.count() - 1;
+ }
+ openFile(imageList[idx]);
+ }
+ return idx == 0 ? TRUE : FALSE;
+}
+//
+// Return the index into the imageList of the currently viewed
+// image (ie. ImageViewer::filename in ImageViewer::imageList).
+//
+int ImageViewer::imageIndex(void)
+{
+ QValueListConstIterator<DocLnk> i;
+ int index;
+ if (imageList.count() == 0) {
+ return -1;
+ }
+ for (index = 0, i = imageList.begin(); i != imageList.end(); ++i, index++) {
+ if ((*i).file() == filename) {
+ return index;
+ }
+ }
+
+ return -1;
+}
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 @@
#include <qstringlist.h>
+#include <qvaluelist.h>
+#include <qwmatrix.h>
+
+class QAction;
class QPEToolBar;
@@ -42,3 +46,3 @@ class QSpinBox;
class ImageFileSelector;
-
+class QTimer;
@@ -48,16 +52,10 @@ class ImageWidget : public QWidget
Q_OBJECT
- public:
- ImageWidget(
- QWidget *parent=0
- ) : QWidget( parent )
- {
+ public:
+ ImageWidget( QWidget *parent=0 )
+ : QWidget( parent ) {
setBackgroundMode(NoBackground);
}
- ~ImageWidget()
- {
-
- }
+ ~ImageWidget() { }
- void setPixmap( const QPixmap &pm )
- {
+ void setPixmap( const QPixmap &pm ) {
pixmap = pm;
@@ -66,3 +64,3 @@ class ImageWidget : public QWidget
- signals:
+signals:
void clicked();
@@ -81,3 +79,3 @@ class InfoDialog:public QDialog
- public:
+public:
@@ -95,3 +93,3 @@ class ControlsDialog:public QDialog
- public:
+public:
ControlsDialog(const QString &caption,const QImage image,int *brightness, QWidget *parent);
@@ -116,8 +114,5 @@ class ImagePane : public QWidget
Q_OBJECT
- public:
+public:
ImagePane( QWidget *parent=0 );
- ~ImagePane()
- {
-
- }
+ ~ImagePane() { }
@@ -132,4 +127,3 @@ class ImagePane : public QWidget
- int paneWidth() const
- {
+ int paneWidth() const {
return image->visibleWidth();
@@ -137,4 +131,3 @@ class ImagePane : public QWidget
- int paneHeight() const
- {
+ int paneHeight() const {
return image->visibleHeight();
@@ -142,4 +135,3 @@ class ImagePane : public QWidget
- void setPosition(int x, int y)
- {
+ void setPosition(int x, int y) {
image->setContentsPos (x,y );
@@ -147,4 +139,3 @@ class ImagePane : public QWidget
- void disable()
- {
+ void disable() {
pic->hide();
@@ -152,3 +143,3 @@ class ImagePane : public QWidget
- signals:
+signals:
void clicked();
@@ -168,3 +159,3 @@ class ImageViewer : public QMainWindow
Q_OBJECT
- public:
+public:
ImageViewer( QWidget *parent=0, const char *name=0, int wFlags=0 );
@@ -177,4 +168,3 @@ class ImageViewer : public QMainWindow
- enum INFO_STRINGS
- {
+ enum INFO_STRINGS {
PATH,
@@ -188,4 +178,3 @@ class ImageViewer : public QMainWindow
- enum RotateDirection
- {
+ enum RotateDirection {
Rotate90, Rotate180, Rotate270
@@ -197,2 +186,3 @@ class ImageViewer : public QMainWindow
static QImage& toGray(QImage &image, bool fast = false);
+ bool showThumbView; // a flag to indicate if FileSelector should be initialized with thumbnail view
@@ -203,2 +193,4 @@ protected:
private:
+ int imageIndex(void);
+
void updateCaption( QString name );
@@ -215,7 +207,11 @@ private:
-
-
-
private slots:
+ void slideShow( bool on );
+ void help();
+ void slideUpdate();
+ bool nextImage();
+ bool prevImage();
+ void settings();
+
void switchThumbView();
@@ -225,3 +221,3 @@ private slots:
void openFile( const DocLnk &file );
- //void openFile();
+ void openFile();
void open();
@@ -235,2 +231,3 @@ private slots:
void fullScreen();
+ void stopSlideShow();
void blackAndWhite();
@@ -238,19 +235,6 @@ private slots:
void displayControlsDialog();
-
-
-
-
-
-
-
-
-
-
private:
-
-
-
-
- enum MENU_ITEMS
- {
+ QWMatrix matrix;
+ bool rotated90;
+ enum MENU_ITEMS {
SHOW_THUMBNAILS,
@@ -260,4 +244,2 @@ private:
-
-
QString filename;
@@ -291,3 +273,11 @@ private:
- bool showThumbView; // a flag to indicate if FileSelector should be initialized with thumbnail view
+ int slideDelay;
+ bool slideRepeat;
+ bool slideReverse; // show slideshow in reverse order
+ bool rotateOnLoad; // rotate by 90 degrees on loading
+ bool fastLoad;
+ QTimer *slideTimer;
+ QValueList<DocLnk> imageList;
+ QAction *slideAction;
+
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
DESTDIR = $(OPIEDIR)/bin
-HEADERS = showimg.h ImageFileSelector.h
-SOURCES = main.cpp \
- showimg.cpp\
- ImageFileSelector.cpp
+HEADERS = showimg.h ImageFileSelector.h settingsdialog.h settingsdialogbase.h
+SOURCES = main.cpp showimg.cpp ImageFileSelector.cpp settingsdialog.cpp settingsdialogbase.cpp
TARGET = showimg
@@ -10,3 +8,3 @@ INCLUDEPATH += $(OPIEDIR)/include
DEPENDPATH += $(OPIEDIR)/include
-LIBS += -lqpe
+LIBS += -lqpe -lopie
REQUIRES = showimg
@@ -14,14 +12,14 @@ REQUIRES = showimg
TRANSLATIONS = ../../../i18n/de/showimg.ts \
- ../../../i18n/en/showimg.ts \
- ../../../i18n/es/showimg.ts \
- ../../../i18n/fr/showimg.ts \
- ../../../i18n/hu/showimg.ts \
- ../../../i18n/ja/showimg.ts \
- ../../../i18n/ko/showimg.ts \
- ../../../i18n/no/showimg.ts \
- ../../../i18n/pl/showimg.ts \
- ../../../i18n/pt/showimg.ts \
- ../../../i18n/pt_BR/showimg.ts \
- ../../../i18n/sl/showimg.ts \
- ../../../i18n/zh_CN/showimg.ts \
- ../../../i18n/zh_TW/showimg.ts
+ ../../../i18n/en/showimg.ts \
+ ../../../i18n/es/showimg.ts \
+ ../../../i18n/fr/showimg.ts \
+ ../../../i18n/hu/showimg.ts \
+ ../../../i18n/ja/showimg.ts \
+ ../../../i18n/ko/showimg.ts \
+ ../../../i18n/no/showimg.ts \
+ ../../../i18n/pl/showimg.ts \
+ ../../../i18n/pt/showimg.ts \
+ ../../../i18n/pt_BR/showimg.ts \
+ ../../../i18n/sl/showimg.ts \
+ ../../../i18n/zh_CN/showimg.ts \
+ ../../../i18n/zh_TW/showimg.ts