author | alwin <alwin> | 2004-04-22 13:15:08 (UTC) |
---|---|---|
committer | alwin <alwin> | 2004-04-22 13:15:08 (UTC) |
commit | 162c71d6528515ea4b28520e9708c8ce9ca7fba2 (patch) (side-by-side diff) | |
tree | ea538ee02a3edec808aacb1b4813221fd4939ac7 | |
parent | b9509b7b90d7c70c5407f6774512037ff77fcec4 (diff) | |
download | opie-162c71d6528515ea4b28520e9708c8ce9ca7fba2.zip opie-162c71d6528515ea4b28520e9708c8ce9ca7fba2.tar.gz opie-162c71d6528515ea4b28520e9708c8ce9ca7fba2.tar.bz2 |
resolved some problems with fullscreen mode.
-rw-r--r-- | noncore/graphics/opie-eye/gui/imageview.cpp | 41 | ||||
-rw-r--r-- | noncore/graphics/opie-eye/gui/imageview.h | 26 | ||||
-rw-r--r-- | noncore/graphics/opie-eye/gui/mainwindow.cpp | 6 | ||||
-rw-r--r-- | noncore/graphics/opie-eye/gui/mainwindow.h | 3 |
4 files changed, 62 insertions, 14 deletions
diff --git a/noncore/graphics/opie-eye/gui/imageview.cpp b/noncore/graphics/opie-eye/gui/imageview.cpp index 53376c0..5b00dea 100644 --- a/noncore/graphics/opie-eye/gui/imageview.cpp +++ b/noncore/graphics/opie-eye/gui/imageview.cpp @@ -5,24 +5,26 @@ #include <opie2/okeyconfigwidget.h> #include <qpe/resource.h> #include <qpe/qpeapplication.h> #include <qpopupmenu.h> using namespace Opie::Core; ImageView::ImageView(Opie::Core::OConfig *cfg, QWidget* parent, const char* name, WFlags fl ) : Opie::MM::OImageScrollView(parent,name,fl) { m_viewManager = 0; + m_focus_out = false; + block_next_focus = true; m_cfg = cfg; m_isFullScreen = false; QPEApplication::setStylusOperation(viewport(),QPEApplication::RightOnHold); initKeys(); } ImageView::~ImageView() { odebug << "Delete Imageview" << oendl; if (m_viewManager) { delete m_viewManager; } @@ -117,44 +119,67 @@ void ImageView::contentsMousePressEvent ( QMouseEvent * e) m->insertItem(tr("Next image"),this,SIGNAL(dispNext())); m->insertSeparator(); m->insertItem(tr("Toggle autoscale"),this, SIGNAL(toggleAutoscale())); m->insertItem(tr("Toggle autorotate"),this, SIGNAL(toggleAutorotate())); m->insertItem(tr("Toggle thumbnail"),this, SIGNAL(toggleZoomer())); } m->setFocus(); m->exec( QPoint( QCursor::pos().x(), QCursor::pos().y()) ); delete m; /* if we were fullScreen() and must overlap the taskbar again */ if (fullScreen() && old) { enableFullscreen(); -// parentWidget()->hide(); -// parentWidget()->show(); } } void ImageView::setFullScreen(bool how) { m_isFullScreen = how; } -void ImageView::focusInEvent(QFocusEvent *) +void ImageView::focusInEvent(QFocusEvent *) { // Always do it here, no matter the size. - /* result in an endless loop */ -// if (fullScreen()) enableFullscreen(); + odebug << "Focus in" << oendl; +} + +void ImageView::focusOutEvent(QFocusEvent *) +{ + odebug << "Focus out" << oendl; } void ImageView::enableFullscreen() { - if (!fullScreen()) return; - // Make sure size is correct - parentWidget()->setFixedSize(qApp->desktop()->size()); // This call is needed because showFullScreen won't work // correctly if the widget already considers itself to be fullscreen. + setUpdatesEnabled(false); + odebug << "showNormal();" << oendl; parentWidget()->showNormal(); + odebug << "showNormal(); done " << oendl; // This is needed because showNormal() forcefully changes the window // style to WSTyle_TopLevel. + odebug << " reparent(0, WStyle_Customize | WStyle_NoBorder, QPoint(0,0));" << oendl; parentWidget()->reparent(0, WStyle_Customize | WStyle_NoBorder, QPoint(0,0)); + odebug << " reparent(0, WStyle_Customize | WStyle_NoBorder, QPoint(0,0)); done" << oendl; // Enable fullscreen. + odebug << "showFullScreen();" << oendl; parentWidget()->showFullScreen(); + odebug << "showFullScreen(); done" << oendl; + setUpdatesEnabled(true); +} + +void ImageWidget::show() +{ + QWidget::show(); } +void ImageWidget::hide() +{ + QWidget::hide(); +} + +ImageWidget::ImageWidget(QWidget * parent, const char * name, WFlags f) + : QWidget(parent,name,f) +{ + // Make sure size is correct + setFixedSize(qApp->desktop()->size()); +} diff --git a/noncore/graphics/opie-eye/gui/imageview.h b/noncore/graphics/opie-eye/gui/imageview.h index 4d2405f..5f15bc9 100644 --- a/noncore/graphics/opie-eye/gui/imageview.h +++ b/noncore/graphics/opie-eye/gui/imageview.h @@ -1,17 +1,19 @@ #ifndef _IMAGE_VIEW_H #define _IMAGE_VIEW_H #include <opie2/oimagescrollview.h> +#include <qwidget.h> + namespace Opie { namespace Core { class OConfig; class OKeyConfigManager; } } class ImageView:public Opie::MM::OImageScrollView { Q_OBJECT enum ActionIds { @@ -20,39 +22,59 @@ class ImageView:public Opie::MM::OImageScrollView ShowNext, ShowPrevious, Zoomer, Autorotate, Autoscale }; public: ImageView(Opie::Core::OConfig *cfg, QWidget* parent, const char* name = 0, WFlags fl = 0 ); virtual ~ImageView(); Opie::Core::OKeyConfigManager* manager(); void setFullScreen(bool how); + virtual void enableFullscreen(); bool fullScreen(){return m_isFullScreen;} signals: void dispImageInfo(const QString&); void dispNext(); void dispPrev(); void toggleFullScreen(); void hideMe(); void toggleZoomer(); void toggleAutoscale(); void toggleAutorotate(); protected: Opie::Core::OConfig * m_cfg; Opie::Core::OKeyConfigManager*m_viewManager; void initKeys(); bool m_isFullScreen:1; - void enableFullscreen(); + bool m_focus_out:1; + bool block_next_focus:1; + + virtual void focusInEvent ( QFocusEvent * ); + virtual void focusOutEvent ( QFocusEvent * ); protected slots: virtual void slotShowImageInfo(); virtual void keyReleaseEvent(QKeyEvent * e); virtual void contentsMousePressEvent ( QMouseEvent * e); - virtual void focusInEvent ( QFocusEvent * ); +}; + +class ImageWidget:public QWidget +{ + Q_OBJECT +public: + ImageWidget(QWidget * parent=0, const char * name=0, WFlags f = WStyle_Customize | WStyle_NoBorder); + virtual ~ImageWidget(){}; + +protected: + +public slots: + virtual void show(); + virtual void hide(); + +protected slots: }; #endif diff --git a/noncore/graphics/opie-eye/gui/mainwindow.cpp b/noncore/graphics/opie-eye/gui/mainwindow.cpp index ec6b051..fa1680c 100644 --- a/noncore/graphics/opie-eye/gui/mainwindow.cpp +++ b/noncore/graphics/opie-eye/gui/mainwindow.cpp @@ -322,25 +322,25 @@ void PMainWindow::initDisp() { void PMainWindow::slotToggleFullScreen() { odebug << "Toggle full " << oendl; if (!m_disp) return; bool current = !m_disp->fullScreen(); m_disp->setFullScreen(current); odebug << "Current = " << current << oendl; if (current) { odebug << "full" << oendl; m_disp->setBackgroundColor(black); if (!tFrame) { - tFrame = new QWidget(0,0,WStyle_Customize|WStyle_NoBorder); + tFrame = new ImageWidget(0,0,WStyle_Customize|WStyle_NoBorder); tFrame->resize(qApp->desktop()->width(), qApp->desktop()->height()); tFrame->setMinimumSize(qApp->desktop()->width(), qApp->desktop()->height()); } m_disp->reparent(tFrame,QPoint(0,0)); m_disp->setVScrollBarMode(QScrollView::AlwaysOff); m_disp->setHScrollBarMode(QScrollView::AlwaysOff); m_disp->resize(qApp->desktop()->width(), qApp->desktop()->height()); tFrame->showFullScreen(); } else { setUpdatesEnabled(false); odebug << "window" << oendl; m_disp->reparent(0,QPoint(0,0)); @@ -389,26 +389,26 @@ void PMainWindow::slotDisplay( const QString& inf ) { if ( !m_disp ) { initDisp(); } m_disp->setImage( inf ); if (m_stack->mode() == Opie::Ui::OWidgetStack::SmallScreen) { prevButton->show(); nextButton->show(); upButton->hide(); fsButton->hide(); viewModeButton->hide(); } if (m_disp->fullScreen()) { - tFrame->setActiveWindow(); - tFrame->showFullScreen(); +// tFrame->showFullScreen(); + m_disp->enableFullscreen(); } else { m_stack->raiseWidget( ImageDisplay ); } } void PMainWindow::slotReturn() { raiseIconView(); } void PMainWindow::closeEvent( QCloseEvent* ev ) { /* diff --git a/noncore/graphics/opie-eye/gui/mainwindow.h b/noncore/graphics/opie-eye/gui/mainwindow.h index 1f90f9f..9e94c60 100644 --- a/noncore/graphics/opie-eye/gui/mainwindow.h +++ b/noncore/graphics/opie-eye/gui/mainwindow.h @@ -13,24 +13,25 @@ namespace Opie { namespace Ui{ class OWidgetStack; } namespace Core{ class OKeyConfigManager; } } class ImageView; +class ImageWidget; class PIconView; class imageinfo; class PMainWindow : public QMainWindow { Q_OBJECT enum Views { IconView, ImageInfo, ImageDisplay }; public: static QString appName() { return QString::fromLatin1("opie-eye" ); } PMainWindow(QWidget*, const char*, WFlags ); ~PMainWindow(); signals: @@ -58,21 +59,21 @@ private: void initInfo(); void initDisp(); private: Opie::Core::OConfig *m_cfg; Opie::Ui::OWidgetStack *m_stack; PIconView* m_view; imageinfo *m_info; ImageView *m_disp; bool autoRotate; bool autoScale; bool zoomerOn; - QWidget*tFrame; + ImageWidget*tFrame; QToolButton*rotateButton,*upButton,*fsButton,*viewModeButton; QToolButton*nextButton,*prevButton,*zoomButton,*scaleButton; private slots: void slotConfig(); }; #endif |