-rw-r--r-- | noncore/graphics/opie-eye/gui/imagescrollview.cpp | 44 | ||||
-rw-r--r-- | noncore/graphics/opie-eye/gui/imagescrollview.h | 4 | ||||
-rw-r--r-- | noncore/graphics/opie-eye/gui/mainwindow.cpp | 15 | ||||
-rw-r--r-- | noncore/graphics/opie-eye/gui/mainwindow.h | 2 |
4 files changed, 56 insertions, 9 deletions
diff --git a/noncore/graphics/opie-eye/gui/imagescrollview.cpp b/noncore/graphics/opie-eye/gui/imagescrollview.cpp index 5b12258..2f16d82 100644 --- a/noncore/graphics/opie-eye/gui/imagescrollview.cpp +++ b/noncore/graphics/opie-eye/gui/imagescrollview.cpp @@ -10,5 +10,5 @@ using namespace Opie::Core; 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),m_lastName("") + rotate_to_fit(true),show_zoomer(true),first_resize_done(false),m_lastName("") { init(); @@ -17,5 +17,5 @@ ImageScrollView::ImageScrollView( QWidget* parent, const char* name, WFlags f ) 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), - rotate_to_fit(rfit),first_resize_done(false),m_lastName("") + rotate_to_fit(rfit),show_zoomer(true),first_resize_done(false),m_lastName("") { _original_data.convertDepth(QPixmap::defaultDepth()); @@ -26,5 +26,5 @@ ImageScrollView::ImageScrollView (const QImage&img, QWidget * parent, const char ImageScrollView::ImageScrollView (const QString&img, QWidget * parent, const char * name, WFlags f,bool always_scale,bool rfit) :QScrollView(parent,name,f|Qt::WRepaintNoErase),_image_data(),_original_data(),scale_to_fit(always_scale), - rotate_to_fit(rfit),first_resize_done(false),m_lastName("") + rotate_to_fit(rfit),show_zoomer(true),first_resize_done(false),m_lastName("") { init(); @@ -81,6 +81,6 @@ void ImageScrollView::init() last_rot = Rotate0; generateImage(); - odebug << "reinit display " << oendl; } else if (_original_data.size().isValid()) { + if (image_fit_into(_original_data.size()) || !show_zoomer) _zoomer->hide(); resizeContents(_original_data.width(),_original_data.height()); } @@ -267,12 +267,19 @@ void ImageScrollView::generateImage() } _pdata.convertFromImage(_image_data); + /* * update the zoomer */ + check_zoomer(); emit imageSizeChanged( _image_data.size() ); rescaleImage( 128, 128 ); + /* + * move scrollbar + */ + _zoomer->setGeometry( viewport()->width()-_image_data.width()/2, viewport()->height()-_image_data.height()/2, + _image_data.width()/2, _image_data.height()/2 ); + _zoomer->setImage( _image_data ); - /* * invalidate @@ -289,8 +296,4 @@ void ImageScrollView::resizeEvent(QResizeEvent * e) emit viewportSizeChanged( viewport()->size() ); - /* - * move scrollbar - */ - _zoomer->setGeometry( viewport()->width()-100, viewport()->height()-50, 100, 50 ); } @@ -399,2 +402,25 @@ void ImageScrollView::setDestructiveClose() { setWFlags( fl ); } + +bool ImageScrollView::image_fit_into(const QSize&s ) +{ + if (s.width()>width()||s.height()>height()) { + return false; + } + return true; +} + +void ImageScrollView::setShowZoomer(bool how) +{ + show_zoomer = how; + check_zoomer(); +} + +void ImageScrollView::check_zoomer() +{ + if ( (!show_zoomer||image_fit_into(_pdata.size()) ) && _zoomer->isVisible()) { + _zoomer->hide(); + } else if ( show_zoomer && !image_fit_into(_pdata.size()) && _zoomer->isHidden()){ + _zoomer->show(); + } +} diff --git a/noncore/graphics/opie-eye/gui/imagescrollview.h b/noncore/graphics/opie-eye/gui/imagescrollview.h index 1b25103..e209dfb 100644 --- a/noncore/graphics/opie-eye/gui/imagescrollview.h +++ b/noncore/graphics/opie-eye/gui/imagescrollview.h @@ -29,4 +29,5 @@ public: virtual void setAutoRotate(bool); virtual void setAutoScale(bool); + virtual void setShowZoomer(bool); enum Rotation { @@ -55,4 +56,5 @@ protected: bool scale_to_fit; bool rotate_to_fit; + bool show_zoomer; bool first_resize_done; Rotation last_rot; @@ -62,4 +64,6 @@ protected: virtual void rotate_into_data(Rotation r); virtual void generateImage(); + bool image_fit_into(const QSize&s); + void check_zoomer(); protected slots: diff --git a/noncore/graphics/opie-eye/gui/mainwindow.cpp b/noncore/graphics/opie-eye/gui/mainwindow.cpp index 3650493..ef23f79 100644 --- a/noncore/graphics/opie-eye/gui/mainwindow.cpp +++ b/noncore/graphics/opie-eye/gui/mainwindow.cpp @@ -107,4 +107,10 @@ PMainWindow::PMainWindow(QWidget* wid, const char* name, WFlags style) autoScale = true; + btn = new QToolButton(bar); + btn->setIconSet( Resource::loadIconSet( "mag" ) ); + btn->setToggleButton(true); + btn->setOn(true); + connect(btn,SIGNAL(toggled(bool)),this,SLOT(slotZoomerToggled(bool))); + zoomerOn = true; } @@ -113,4 +119,12 @@ PMainWindow::~PMainWindow() { } +void PMainWindow::slotZoomerToggled(bool how) +{ + zoomerOn = how; + if (m_disp) { + m_disp->setShowZoomer(zoomerOn); + } +} + void PMainWindow::slotRotateToggled(bool how) { @@ -232,4 +246,5 @@ void PMainWindow::initDisp() { m_disp->setAutoScale(autoScale); m_disp->setAutoRotate(autoRotate); + m_disp->setShowZoomer(zoomerOn); connect(m_disp,SIGNAL(dispImageInfo(const QString&)),this,SLOT(slotShowInfo(const QString&))); } diff --git a/noncore/graphics/opie-eye/gui/mainwindow.h b/noncore/graphics/opie-eye/gui/mainwindow.h index 59dba30..e9b16d0 100644 --- a/noncore/graphics/opie-eye/gui/mainwindow.h +++ b/noncore/graphics/opie-eye/gui/mainwindow.h @@ -42,4 +42,5 @@ public slots: void slotRotateToggled(bool); void slotScaleToggled(bool); + void slotZoomerToggled(bool); void setDocument( const QString& ); @@ -61,4 +62,5 @@ private: bool autoRotate; bool autoScale; + bool zoomerOn; QToolButton*rotateButton; |