author | zecke <zecke> | 2004-04-05 20:01:22 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-04-05 20:01:22 (UTC) |
commit | ecdd2845abeb5f3d00f58540e9b222799d6610e8 (patch) (side-by-side diff) | |
tree | 7199007b1dc296bb4572f2c96178d47d2f36bc02 | |
parent | cb3097d5249b6bd576d0212394ab57e885f9e9da (diff) | |
download | opie-ecdd2845abeb5f3d00f58540e9b222799d6610e8.zip opie-ecdd2845abeb5f3d00f58540e9b222799d6610e8.tar.gz opie-ecdd2845abeb5f3d00f58540e9b222799d6610e8.tar.bz2 |
Make use of OWidgetStack
-rw-r--r-- | noncore/graphics/opie-eye/gui/iconview.cpp | 61 | ||||
-rw-r--r-- | noncore/graphics/opie-eye/gui/iconview.h | 4 | ||||
-rw-r--r-- | noncore/graphics/opie-eye/gui/imageinfoui.cpp | 29 | ||||
-rw-r--r-- | noncore/graphics/opie-eye/gui/imageinfoui.h | 20 | ||||
-rw-r--r-- | noncore/graphics/opie-eye/gui/imagescrollview.cpp | 20 | ||||
-rw-r--r-- | noncore/graphics/opie-eye/gui/imagescrollview.h | 6 | ||||
-rw-r--r-- | noncore/graphics/opie-eye/gui/mainwindow.cpp | 109 | ||||
-rw-r--r-- | noncore/graphics/opie-eye/gui/mainwindow.h | 24 |
8 files changed, 237 insertions, 36 deletions
diff --git a/noncore/graphics/opie-eye/gui/iconview.cpp b/noncore/graphics/opie-eye/gui/iconview.cpp index de2cdf0..4ced52d 100644 --- a/noncore/graphics/opie-eye/gui/iconview.cpp +++ b/noncore/graphics/opie-eye/gui/iconview.cpp @@ -36,7 +36,10 @@ using Opie::Ui::OKeyConfigItem; +/* + * The Icons, Request Cache and IconViewItem for the IconView + */ namespace { - QPixmap* _dirPix = 0; - QPixmap* _unkPix = 0; + static QPixmap* _dirPix = 0; + static QPixmap* _unkPix = 0; class IconViewItem : public QIconViewItem { public: @@ -60,6 +63,6 @@ namespace { * we add it to the map */ - QMap<QString, IconViewItem*> g_stringInf; - QMap<QString, IconViewItem*> g_stringPix; + static QMap<QString, IconViewItem*> g_stringInf; + static QMap<QString, IconViewItem*> g_stringPix; IconViewItem::IconViewItem( QIconView* view,const QString& path, @@ -102,4 +105,8 @@ namespace { +/* + * Set up the GUI.. initialize the slave set up gui + * and also load a dir + */ PIconView::PIconView( QWidget* wid, Opie::Core::OConfig* cfg ) : QVBox( wid ), m_cfg( cfg ), m_updatet( false ) @@ -137,4 +144,7 @@ PIconView::PIconView( QWidget* wid, Opie::Core::OConfig* cfg ) } +/* + * Unref the slave and save the keyboard manager + */ PIconView::~PIconView() { { @@ -149,4 +159,9 @@ Opie::Ui::OKeyConfigManager* PIconView::manager() { } + +/* + * init the KeyBoard Shortcuts + * called from the c'tor + */ void PIconView::initKeys() { Opie::Ui::OKeyPair::List lst; @@ -179,4 +194,8 @@ void PIconView::initKeys() { } + +/* + * change one dir up + */ void PIconView::slotDirUp() { QDir dir( m_path ); @@ -186,4 +205,7 @@ void PIconView::slotDirUp() { } +/* + * change the dir + */ void PIconView::slotChangeDir(const QString& path) { if ( !currentView() ) @@ -285,7 +307,7 @@ void PIconView::addFolders( const QStringList& lst) { QStringList::ConstIterator it; - for(it=lst.begin(); it != lst.end(); ++it ) { + for(it=lst.begin(); it != lst.end(); ++it ) (void)new IconViewItem( m_view, m_path+"/"+(*it), (*it), true ); - } + } @@ -306,5 +328,5 @@ void PIconView::slotClicked(QIconViewItem* _it) { slotChangeDir( it->path() ); else // view image - ; + slotShowImage(); } @@ -361,9 +383,7 @@ void PIconView::slotBeamDone( Ir* ir) { void PIconView::slotStart() { m_view->viewport()->setUpdatesEnabled( false ); - qWarning( "Sig Start" ); } void PIconView::slotEnd() { - qWarning( "SLot End" ); if ( m_updatet ) m_view->arrangeItemsInGrid( ); @@ -372,25 +392,26 @@ void PIconView::slotEnd() { } -void PIconView::slotShowImage() { - qDebug("image show"); +void PIconView::slotShowImage() +{ + qWarning( "SLotShowImage" ); bool isDir = false; QString name = currentFileName(isDir); if (isDir) return; - ImageDlg dlg(name); - QPEApplication::execDialog(&dlg); -} -void PIconView::slotShowImage( const QString& ) { + slotShowImage( name ); +} +void PIconView::slotShowImage( const QString& name) { + emit sig_display( name ); } void PIconView::slotImageInfo() { - qDebug("image info"); + qWarning( "SlotImageInfo" ); bool isDir = false; QString name = currentFileName(isDir); if (isDir) return; - infoDlg dlg(name); - QPEApplication::execDialog(&dlg); + + slotImageInfo( name ); } -void PIconView::slotImageInfo( const QString& ) { - +void PIconView::slotImageInfo( const QString& name) { + emit sig_showInfo( name ); } diff --git a/noncore/graphics/opie-eye/gui/iconview.h b/noncore/graphics/opie-eye/gui/iconview.h index 7ddb023..a4ca0bc 100644 --- a/noncore/graphics/opie-eye/gui/iconview.h +++ b/noncore/graphics/opie-eye/gui/iconview.h @@ -38,4 +38,8 @@ public: Opie::Ui::OKeyConfigManager* manager(); +signals: + void sig_showInfo( const QString& ); + void sig_display( const QString& ); + private: void initKeys(); diff --git a/noncore/graphics/opie-eye/gui/imageinfoui.cpp b/noncore/graphics/opie-eye/gui/imageinfoui.cpp index 3463ba6..74a9ea4 100644 --- a/noncore/graphics/opie-eye/gui/imageinfoui.cpp +++ b/noncore/graphics/opie-eye/gui/imageinfoui.cpp @@ -20,9 +20,20 @@ #include <qpe/resource.h> -#define THUMBSIZE 128 +static const int THUMBSIZE = 128; + + +imageinfo::imageinfo(QWidget* parent, const char* name, WFlags fl ) + : QWidget( parent, name, fl ) +{ + init(name); +} imageinfo::imageinfo(const QString&_path, QWidget* parent, const char* name, WFlags fl ) : QWidget( parent, name, fl ),currentFile(_path) { + init(name); + slotChangeName(_path); +} +void imageinfo::init(const char* name) { { QCopEnvelope( "QPE/Application/opie-eye_slave", "refUp()" ); @@ -63,5 +74,4 @@ imageinfo::imageinfo(const QString&_path, QWidget* parent, const char* name, WF connect(master, SIGNAL( sig_thumbNail(const QString&, const QPixmap&)), this, SLOT(slotThumbNail(const QString&, const QPixmap&))); - slotChangeName(_path); } @@ -112,4 +122,17 @@ void imageinfo::slotThumbNail(const QString&_path, const QPixmap&_pix) } +void imageinfo::setPath( const QString& str ) { + slotChangeName( str ); +} + +void imageinfo::setDestructiveClose() { + WFlags fl = getWFlags(); + /* clear it just in case */ + fl &= ~WDestructiveClose; + fl |= WDestructiveClose; + setWFlags( fl ); +} + + /* for testing */ infoDlg::infoDlg(const QString&fname,QWidget * parent, const char * name) @@ -126,2 +149,4 @@ infoDlg::~infoDlg() { } + + diff --git a/noncore/graphics/opie-eye/gui/imageinfoui.h b/noncore/graphics/opie-eye/gui/imageinfoui.h index 34ec937..300c92a 100644 --- a/noncore/graphics/opie-eye/gui/imageinfoui.h +++ b/noncore/graphics/opie-eye/gui/imageinfoui.h @@ -6,7 +6,7 @@ #include <qdialog.h> -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; +class QVBoxLayout; +class QHBoxLayout; +class QGridLayout; class QFrame; class QLabel; @@ -14,11 +14,21 @@ class QTextView; class imageinfo : public QWidget -{ +{ Q_OBJECT public: + imageinfo( QWidget* parent = 0, const char* name = 0, WFlags fl =0); imageinfo(const QString&_path, QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); ~imageinfo(); + void setDestructiveClose(); + +public slots: + void setPath( const QString& path ); + +private: + void init(const char* name); + +protected: QLabel* PixmapLabel1; QLabel* fnameLabel; @@ -33,5 +43,5 @@ protected slots: virtual void slot_fullInfo(const QString&, const QString&); virtual void slotThumbNail(const QString&, const QPixmap&); - + virtual void slotChangeName(const QString&); }; diff --git a/noncore/graphics/opie-eye/gui/imagescrollview.cpp b/noncore/graphics/opie-eye/gui/imagescrollview.cpp index 0d35354..7d83e29 100644 --- a/noncore/graphics/opie-eye/gui/imagescrollview.cpp +++ b/noncore/graphics/opie-eye/gui/imagescrollview.cpp @@ -8,4 +8,11 @@ using namespace Opie::Core; #include <qlayout.h> +ImageScrollView::ImageScrollView( QWidget* parent, const char* name, WFlags f ) + :QScrollView(parent,name,f|Qt::WRepaintNoErase ),_image_data(),_original_data(),scale_to_fit(true), + rotate_to_fit(true),first_resize_done(false) +{ + init(); +} + ImageScrollView::ImageScrollView (const QImage&img, QWidget * parent, const char * name, WFlags f,bool always_scale,bool rfit) :QScrollView(parent,name,f|Qt::WRepaintNoErase),_image_data(),_original_data(img),scale_to_fit(always_scale), @@ -30,4 +37,8 @@ void ImageScrollView::setImage(const QImage&img) } +void ImageScrollView::setImage( const QString& path ) { + +} + /* should be called every time the QImage changed it content */ void ImageScrollView::init() @@ -260,4 +271,13 @@ void ImageScrollView::contentsMousePressEvent ( QMouseEvent * e) } +void ImageScrollView::setDestructiveClose() { + WFlags fl = getWFlags(); + /* clear it just in case */ + fl &= ~WDestructiveClose; + fl |= WDestructiveClose; + setWFlags( fl ); +} + + /* for testing */ ImageDlg::ImageDlg(const QString&fname,QWidget * parent, const char * name) diff --git a/noncore/graphics/opie-eye/gui/imagescrollview.h b/noncore/graphics/opie-eye/gui/imagescrollview.h index e25f955..864a015 100644 --- a/noncore/graphics/opie-eye/gui/imagescrollview.h +++ b/noncore/graphics/opie-eye/gui/imagescrollview.h @@ -13,4 +13,5 @@ class ImageScrollView:public QScrollView Q_OBJECT public: + ImageScrollView( QWidget* parent, const char* name = 0, WFlags fl = 0 ); ImageScrollView (const QImage&, QWidget * parent=0, const char * name=0, WFlags f=0,bool always_scale=false,bool rfit=false ); ImageScrollView (const QString&, QWidget * parent=0, const char * name=0, WFlags f=0,bool always_scale=false,bool rfit=false ); @@ -18,4 +19,6 @@ public: void setImage(const QImage&); + void setImage( const QString& path ); + void setDestructiveClose(); enum Rotation { @@ -26,4 +29,7 @@ public: }; +signals: + void sig_return(); + protected: virtual void drawContents ( QPainter * p, int clipx, int clipy, int clipw, int cliph ); diff --git a/noncore/graphics/opie-eye/gui/mainwindow.cpp b/noncore/graphics/opie-eye/gui/mainwindow.cpp index 83ff4f1..7f384bd 100644 --- a/noncore/graphics/opie-eye/gui/mainwindow.cpp +++ b/noncore/graphics/opie-eye/gui/mainwindow.cpp @@ -7,8 +7,12 @@ #include "iconview.h" #include "filesystem.h" +#include "imageinfoui.h" +#include "imagescrollview.h" #include <iface/ifaceinfo.h> #include <iface/dirview.h> +#include <opie2/odebug.h> +#include <opie2/owidgetstack.h> #include <opie2/oapplicationfactory.h> #include <opie2/otabwidget.h> @@ -25,5 +29,5 @@ #include <qdialog.h> #include <qmap.h> - +#include <qtimer.h> @@ -33,5 +37,5 @@ OPIE_EXPORT_APP( Opie::Core::OApplicationFactory<PMainWindow> ) PMainWindow::PMainWindow(QWidget* wid, const char* name, WFlags style) - : QMainWindow( wid, name, style ) + : QMainWindow( wid, name, style ), m_info( 0 ), m_disp( 0 ) { setCaption( QObject::tr("Opie Eye Caramba" ) ); @@ -48,6 +52,14 @@ PMainWindow::PMainWindow(QWidget* wid, const char* name, WFlags style) setToolBarsMovable( false ); - m_view = new PIconView( this, m_cfg ); - setCentralWidget( m_view ); + m_stack = new Opie::Ui::OWidgetStack( this ); + setCentralWidget( m_stack ); + + m_view = new PIconView( m_stack, m_cfg ); + m_stack->addWidget( m_view, IconView ); + m_stack->raiseWidget( IconView ); + connect(m_view, SIGNAL(sig_display(const QString&)), + this, SLOT(slotDisplay(const QString&))); + connect(m_view, SIGNAL(sig_showInfo(const QString&)), + this, SLOT(slotShowInfo(const QString&)) ); QToolButton *btn = new QToolButton( bar ); @@ -85,13 +97,14 @@ PMainWindow::PMainWindow(QWidget* wid, const char* name, WFlags style) PMainWindow::~PMainWindow() { + odebug << "Shutting down" << oendl; } void PMainWindow::slotConfig() { -/* - * have a tab with the possible views - * a tab for globals image cache size.. scaled loading - * and one tab for the KeyConfigs - */ + /* + * have a tab with the possible views + * a tab for globals image cache size.. scaled loading + * and one tab for the KeyConfigs + */ QDialog dlg(this, 0, true); dlg.setCaption( tr("Phunk View - Config" ) ); @@ -125,4 +138,9 @@ void PMainWindow::slotConfig() { bool act = ( QPEApplication::execDialog( &dlg ) == QDialog::Accepted ); +/* + * clean up + *apply changes + */ + QMap<PDirView*, QWidget*>::Iterator it; for ( it = lst.begin(); it != lst.end(); ++it ) { @@ -132,4 +150,5 @@ void PMainWindow::slotConfig() { } + if ( act ) { m_view->resetView(); @@ -137,2 +156,74 @@ void PMainWindow::slotConfig() { } } + +/* + * create a new image info component + * and detach the current one + * we will make the other delete on exit + */ +template<class T> +void PMainWindow::initT( const char* name, T** ptr, int id) { + if ( *ptr ) { + (*ptr)->disconnect(this, SLOT(slotReturn())); + (*ptr)->setDestructiveClose(); + m_stack->removeWidget( *ptr ); + } + *ptr = new T( m_stack, name ); + m_stack->addWidget( *ptr, id ); + + connect(*ptr, SIGNAL(sig_return()), + this,SLOT(slotReturn())); + +} +void PMainWindow::initInfo() { + initT<imageinfo>( "Image Info", &m_info, ImageInfo ); +} +void PMainWindow::initDisp() { + initT<ImageScrollView>( "Image ScrollView", &m_disp, ImageDisplay ); +} + +/** + * With big Screen the plan could be to 'detach' the image + * window if visible and to create a ne wone + * init* already supports it but I make no use of it for + * now. We set filename and raise + * + * ### FIXME and talk to alwin + */ +void PMainWindow::slotShowInfo( const QString& inf ) { + if ( !m_info ) + initInfo(); + m_info->setPath( inf ); + m_stack->raiseWidget( ImageInfo ); +} + +void PMainWindow::slotDisplay( const QString& inf ) { + if ( !m_disp ) + initDisp(); + m_disp->setImage( inf ); + m_stack->raiseWidget( ImageDisplay ); +} + +void PMainWindow::slotReturn() { + raiseIconView(); +} + + +void PMainWindow::closeEvent( QCloseEvent* ev ) { + /* + * return from view + * or properly quit + */ + if ( m_stack->visibleWidget() == m_info || + m_stack->visibleWidget() == m_disp ) { + raiseIconView(); + ev->ignore(); + return; + } + ev->accept(); + QTimer::singleShot(0, qApp, SLOT(closeAllWindows())); +} + +void PMainWindow::raiseIconView() { + m_stack->raiseWidget( IconView ); +} diff --git a/noncore/graphics/opie-eye/gui/mainwindow.h b/noncore/graphics/opie-eye/gui/mainwindow.h index 317a51e..35116ae 100644 --- a/noncore/graphics/opie-eye/gui/mainwindow.h +++ b/noncore/graphics/opie-eye/gui/mainwindow.h @@ -16,10 +16,14 @@ namespace Opie { namespace Ui{ class OKeyConfigManager; + class OWidgetStack; } } class PIconView; +class imageinfo; +class ImageScrollView; class PMainWindow : public QMainWindow { Q_OBJECT + enum Views { IconView, ImageInfo, ImageDisplay }; public: static QString appName() { return QString::fromLatin1("opie-eye" ); } @@ -27,7 +31,27 @@ public: ~PMainWindow(); +signals: + void configChanged(); + +public slots: + void slotShowInfo( const QString& inf ); + void slotDisplay( const QString& inf ); + void slotReturn(); + +protected: + void raiseIconView(); + void closeEvent( QCloseEvent* ); + +private: + template<class T> void initT( const char* name, T**, int ); + void initInfo(); + void initDisp(); + private: Opie::Core::OConfig *m_cfg; + Opie::Ui::OWidgetStack *m_stack; PIconView* m_view; + imageinfo *m_info; + ImageScrollView *m_disp; |