summaryrefslogtreecommitdiff
authoralwin <alwin>2004-04-23 13:22:22 (UTC)
committer alwin <alwin>2004-04-23 13:22:22 (UTC)
commitda6a98dbc555018a29bf140ed8e890015240b322 (patch) (unidiff)
tree3b8b05451fcd2c653982e1cd63b92eb0fb8b9a72
parent33666eb31ae6d35aa527cf7bf22c2c2e0dcd6824 (diff)
downloadopie-da6a98dbc555018a29bf140ed8e890015240b322.zip
opie-da6a98dbc555018a29bf140ed8e890015240b322.tar.gz
opie-da6a98dbc555018a29bf140ed8e890015240b322.tar.bz2
ok, I think I have all tried to reduce flicker in fullscreen when opie-eye
get focus back. But as long I must repaint the fullScreenwidget my self when taskbar comes visible I can not do anymore.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/graphics/opie-eye/gui/imageview.cpp30
-rw-r--r--noncore/graphics/opie-eye/gui/imageview.h16
-rw-r--r--noncore/graphics/opie-eye/gui/mainwindow.cpp24
-rw-r--r--noncore/graphics/opie-eye/gui/mainwindow.h1
4 files changed, 27 insertions, 44 deletions
diff --git a/noncore/graphics/opie-eye/gui/imageview.cpp b/noncore/graphics/opie-eye/gui/imageview.cpp
index 03f3c1c..b4f3110 100644
--- a/noncore/graphics/opie-eye/gui/imageview.cpp
+++ b/noncore/graphics/opie-eye/gui/imageview.cpp
@@ -109,9 +109,8 @@ void ImageView::contentsMousePressEvent ( QMouseEvent * e)
109 } 109 }
110 odebug << "Popup " << oendl; 110 odebug << "Popup " << oendl;
111 QPopupMenu *m = new QPopupMenu(0); 111 QPopupMenu *m = new QPopupMenu(0);
112 if (!m) return; 112 if (!m) return;
113 bool old = fullScreen();
114 m->insertItem(tr("Toggle fullscreen"),this, SIGNAL(toggleFullScreen())); 113 m->insertItem(tr("Toggle fullscreen"),this, SIGNAL(toggleFullScreen()));
115 if (fullScreen()) { 114 if (fullScreen()) {
116 m->insertSeparator(); 115 m->insertSeparator();
117 m->insertItem(tr("Previous image"),this,SIGNAL(dispPrev())); 116 m->insertItem(tr("Previous image"),this,SIGNAL(dispPrev()));
@@ -128,8 +127,15 @@ void ImageView::contentsMousePressEvent ( QMouseEvent * e)
128 127
129void ImageView::setFullScreen(bool how) 128void ImageView::setFullScreen(bool how)
130{ 129{
131 m_isFullScreen = how; 130 m_isFullScreen = how;
131 if (how) {
132 m_ignore_next_in = true;
133 setFixedSize(qApp->desktop()->size());
134 showFullScreen();
135 } else {
136 setMinimumSize(10,10);
137 }
132} 138}
133 139
134void ImageView::focusInEvent(QFocusEvent *) 140void ImageView::focusInEvent(QFocusEvent *)
135{ 141{
@@ -139,30 +145,30 @@ void ImageView::focusInEvent(QFocusEvent *)
139 if (m_ignore_next_in){m_ignore_next_in=false;return;} 145 if (m_ignore_next_in){m_ignore_next_in=false;return;}
140 if (fullScreen()) enableFullscreen(); 146 if (fullScreen()) enableFullscreen();
141} 147}
142 148
149void ImageView::hide()
150{
151 if (fullScreen()) {
152 m_ignore_next_in = true;
153 showNormal();
154 }
155 QWidget::hide();
156}
143void ImageView::enableFullscreen() 157void ImageView::enableFullscreen()
144{ 158{
145 // This call is needed because showFullScreen won't work
146 // correctly if the widget already considers itself to be fullscreen.
147 if (!fullScreen()) return; 159 if (!fullScreen()) return;
148 if (m_ignore_next_in) {m_ignore_next_in = false;return;} 160 if (m_ignore_next_in) {m_ignore_next_in = false;return;}
149 161
150 setUpdatesEnabled(false); 162 setUpdatesEnabled(false);
151 parentWidget()->showNormal();
152 // This is needed because showNormal() forcefully changes the window 163 // This is needed because showNormal() forcefully changes the window
153 // style to WSTyle_TopLevel. 164 // style to WSTyle_TopLevel.
154 parentWidget()->reparent(0, WStyle_Customize | WStyle_NoBorder, QPoint(0,0)); 165 reparent(0, WStyle_Customize | WStyle_NoBorder, QPoint(0,0));
155 // Enable fullscreen. 166 // Enable fullscreen.
156 /* this is the trick - I don't now why, but after a showFullScreen QTE toggles the focus 167 /* this is the trick - I don't now why, but after a showFullScreen QTE toggles the focus
157 * so we must block it here! */ 168 * so we must block it here! */
158 m_ignore_next_in = true; 169 m_ignore_next_in = true;
159 parentWidget()->showFullScreen(); 170 showFullScreen();
160 setUpdatesEnabled(true); 171 setUpdatesEnabled(true);
161}
162 172
163ImageWidget::ImageWidget(QWidget * parent, const char * name, WFlags f)
164 : QWidget(parent,name,f)
165{
166 // Make sure size is correct
167 setFixedSize(qApp->desktop()->size());
168} 173}
174
diff --git a/noncore/graphics/opie-eye/gui/imageview.h b/noncore/graphics/opie-eye/gui/imageview.h
index f3c37b5..18697e0 100644
--- a/noncore/graphics/opie-eye/gui/imageview.h
+++ b/noncore/graphics/opie-eye/gui/imageview.h
@@ -52,26 +52,14 @@ protected:
52 bool m_ignore_next_in:1; 52 bool m_ignore_next_in:1;
53 int focus_in_count; 53 int focus_in_count;
54 virtual void focusInEvent ( QFocusEvent * ); 54 virtual void focusInEvent ( QFocusEvent * );
55 55
56public slots:
57 virtual void hide();
56 58
57protected slots: 59protected slots:
58 virtual void slotShowImageInfo(); 60 virtual void slotShowImageInfo();
59 virtual void keyReleaseEvent(QKeyEvent * e); 61 virtual void keyReleaseEvent(QKeyEvent * e);
60 virtual void contentsMousePressEvent ( QMouseEvent * e); 62 virtual void contentsMousePressEvent ( QMouseEvent * e);
61}; 63};
62 64
63class ImageWidget:public QWidget
64{
65 Q_OBJECT
66public:
67 ImageWidget(QWidget * parent=0, const char * name=0, WFlags f = WStyle_Customize | WStyle_NoBorder);
68 virtual ~ImageWidget(){};
69
70protected:
71
72public slots:
73
74protected slots:
75};
76
77#endif 65#endif
diff --git a/noncore/graphics/opie-eye/gui/mainwindow.cpp b/noncore/graphics/opie-eye/gui/mainwindow.cpp
index cdaf34c..274a22a 100644
--- a/noncore/graphics/opie-eye/gui/mainwindow.cpp
+++ b/noncore/graphics/opie-eye/gui/mainwindow.cpp
@@ -32,9 +32,8 @@
32#include <qtimer.h> 32#include <qtimer.h>
33#include <qframe.h> 33#include <qframe.h>
34 34
35 35
36
37//OPIE_EXPORT_APP_V2( Opie::Core::OApplicationFactory<PMainWindow>,"Opie Eye" ) 36//OPIE_EXPORT_APP_V2( Opie::Core::OApplicationFactory<PMainWindow>,"Opie Eye" )
38OPIE_EXPORT_APP( Opie::Core::OApplicationFactory<PMainWindow>) 37OPIE_EXPORT_APP( Opie::Core::OApplicationFactory<PMainWindow>)
39 38
40PMainWindow::PMainWindow(QWidget* wid, const char* name, WFlags style) 39PMainWindow::PMainWindow(QWidget* wid, const char* name, WFlags style)
@@ -42,9 +41,8 @@ PMainWindow::PMainWindow(QWidget* wid, const char* name, WFlags style)
42{ 41{
43 setCaption( QObject::tr("Opie Eye Caramba" ) ); 42 setCaption( QObject::tr("Opie Eye Caramba" ) );
44 m_cfg = new Opie::Core::OConfig("phunkview"); 43 m_cfg = new Opie::Core::OConfig("phunkview");
45 m_cfg->setGroup("Zecke_view" ); 44 m_cfg->setGroup("Zecke_view" );
46 tFrame = 0;
47// qDebug( "Process-wide OApplication object @ %0x", oApp ); 45// qDebug( "Process-wide OApplication object @ %0x", oApp );
48 /* 46 /*
49 * Initialize ToolBar and IconView 47 * Initialize ToolBar and IconView
50 * And Connect Them 48 * And Connect Them
@@ -145,11 +143,8 @@ PMainWindow::PMainWindow(QWidget* wid, const char* name, WFlags style)
145 zoomerOn = true; 143 zoomerOn = true;
146} 144}
147 145
148PMainWindow::~PMainWindow() { 146PMainWindow::~PMainWindow() {
149 odebug << "Shutting down" << oendl;
150 if (tFrame) delete tFrame;
151 odebug << "Shutting down done" << oendl;
152} 147}
153 148
154void PMainWindow::slotToggleZoomer() 149void PMainWindow::slotToggleZoomer()
155{ 150{
@@ -324,30 +319,23 @@ void PMainWindow::slotToggleFullScreen()
324{ 319{
325 odebug << "Toggle full " << oendl; 320 odebug << "Toggle full " << oendl;
326 if (!m_disp) return; 321 if (!m_disp) return;
327 bool current = !m_disp->fullScreen(); 322 bool current = !m_disp->fullScreen();
328 m_disp->setFullScreen(current);
329 odebug << "Current = " << current << oendl; 323 odebug << "Current = " << current << oendl;
330 if (current) { 324 if (current) {
331 odebug << "full" << oendl; 325 odebug << "full" << oendl;
332 m_disp->setBackgroundColor(black); 326 m_disp->setBackgroundColor(black);
333 if (!tFrame) { 327 m_disp->reparent(0, WStyle_Customize | WStyle_NoBorder, QPoint(0,0));
334 tFrame = new ImageWidget(0,0,WStyle_Customize|WStyle_NoBorder);
335 tFrame->resize(qApp->desktop()->width(), qApp->desktop()->height());
336 tFrame->setMinimumSize(qApp->desktop()->width(), qApp->desktop()->height());
337 }
338 m_disp->reparent(tFrame,QPoint(0,0));
339 m_disp->setVScrollBarMode(QScrollView::AlwaysOff); 328 m_disp->setVScrollBarMode(QScrollView::AlwaysOff);
340 m_disp->setHScrollBarMode(QScrollView::AlwaysOff); 329 m_disp->setHScrollBarMode(QScrollView::AlwaysOff);
341 m_disp->resize(qApp->desktop()->width(), qApp->desktop()->height()); 330 m_disp->resize(qApp->desktop()->width(), qApp->desktop()->height());
342 tFrame->showFullScreen(); 331 //m_disp->showFullScreen();
332 //qwsDisplay()->requestFocus( m_disp->winId(), TRUE);
343 } else { 333 } else {
344 setUpdatesEnabled(false); 334 setUpdatesEnabled(false);
345 odebug << "window" << oendl; 335 odebug << "window" << oendl;
346 m_disp->reparent(0,QPoint(0,0)); 336 m_disp->reparent(0,QPoint(0,0));
347 m_disp->showNormal(); 337 m_disp->showNormal();
348 /* don't forget it! */
349 tFrame->hide();
350 m_disp->setBackgroundColor(white); 338 m_disp->setBackgroundColor(white);
351 m_stack->addWidget(m_disp,ImageDisplay); 339 m_stack->addWidget(m_disp,ImageDisplay);
352 m_disp->setVScrollBarMode(QScrollView::Auto); 340 m_disp->setVScrollBarMode(QScrollView::Auto);
353 m_disp->setHScrollBarMode(QScrollView::Auto); 341 m_disp->setHScrollBarMode(QScrollView::Auto);
@@ -356,8 +344,9 @@ void PMainWindow::slotToggleFullScreen()
356 m_disp->resize(m_disp->minimumSize()); 344 m_disp->resize(m_disp->minimumSize());
357 } 345 }
358 setUpdatesEnabled(true); 346 setUpdatesEnabled(true);
359 } 347 }
348 m_disp->setFullScreen(current);
360} 349}
361 350
362/** 351/**
363 * With big Screen the plan could be to 'detach' the image 352 * With big Screen the plan could be to 'detach' the image
@@ -397,9 +386,10 @@ void PMainWindow::slotDisplay( const QString& inf ) {
397 fsButton->hide(); 386 fsButton->hide();
398 viewModeButton->hide(); 387 viewModeButton->hide();
399 } 388 }
400 if (m_disp->fullScreen()) { 389 if (m_disp->fullScreen()) {
401 tFrame->show();//FullScreen(); 390 //m_disp->showFullScreen();
391 qwsDisplay()->requestFocus( m_disp->winId(), TRUE);
402 } else { 392 } else {
403 m_stack->raiseWidget( ImageDisplay ); 393 m_stack->raiseWidget( ImageDisplay );
404 } 394 }
405} 395}
@@ -438,9 +428,9 @@ void PMainWindow::raiseIconView() {
438 fsButton->show(); 428 fsButton->show();
439 viewModeButton->show(); 429 viewModeButton->show();
440 } 430 }
441 if (m_disp && m_disp->fullScreen() && m_disp->isVisible()) { 431 if (m_disp && m_disp->fullScreen() && m_disp->isVisible()) {
442 tFrame->hide(); 432 m_disp->hide();
443 } 433 }
444 m_stack->raiseWidget( IconView ); 434 m_stack->raiseWidget( IconView );
445 setUpdatesEnabled(true); 435 setUpdatesEnabled(true);
446 repaint(); 436 repaint();
diff --git a/noncore/graphics/opie-eye/gui/mainwindow.h b/noncore/graphics/opie-eye/gui/mainwindow.h
index 9e94c60..6fa1ab6 100644
--- a/noncore/graphics/opie-eye/gui/mainwindow.h
+++ b/noncore/graphics/opie-eye/gui/mainwindow.h
@@ -67,9 +67,8 @@ private:
67 ImageView *m_disp; 67 ImageView *m_disp;
68 bool autoRotate; 68 bool autoRotate;
69 bool autoScale; 69 bool autoScale;
70 bool zoomerOn; 70 bool zoomerOn;
71 ImageWidget*tFrame;
72 QToolButton*rotateButton,*upButton,*fsButton,*viewModeButton; 71 QToolButton*rotateButton,*upButton,*fsButton,*viewModeButton;
73 QToolButton*nextButton,*prevButton,*zoomButton,*scaleButton; 72 QToolButton*nextButton,*prevButton,*zoomButton,*scaleButton;
74 73
75private slots: 74private slots: