summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/graphics/opie-eye/gui/imageview.cpp37
-rw-r--r--noncore/graphics/opie-eye/gui/imageview.h7
-rw-r--r--noncore/graphics/opie-eye/gui/mainwindow.cpp22
3 files changed, 55 insertions, 11 deletions
diff --git a/noncore/graphics/opie-eye/gui/imageview.cpp b/noncore/graphics/opie-eye/gui/imageview.cpp
index ac6474c..03df321 100644
--- a/noncore/graphics/opie-eye/gui/imageview.cpp
+++ b/noncore/graphics/opie-eye/gui/imageview.cpp
@@ -1,255 +1,286 @@
1#include "imageview.h" 1#include "imageview.h"
2 2
3#include <opie2/odebug.h> 3#include <opie2/odebug.h>
4#include <opie2/oconfig.h> 4#include <opie2/oconfig.h>
5#include <opie2/okeyconfigwidget.h> 5#include <opie2/okeyconfigwidget.h>
6 6
7#include <qpe/resource.h> 7#include <qpe/resource.h>
8#include <qpe/qpeapplication.h> 8#include <qpe/qpeapplication.h>
9#include <qpe/qcopenvelope_qws.h>
10
9#include <qpopupmenu.h> 11#include <qpopupmenu.h>
10#include <qtimer.h> 12#include <qtimer.h>
11#include <qaction.h> 13#include <qaction.h>
12 14
13using namespace Opie::Core; 15using namespace Opie::Core;
14 16
15ImageView::ImageView(Opie::Core::OConfig *cfg, QWidget* parent, const char* name, WFlags fl ) 17ImageView::ImageView(Opie::Core::OConfig *cfg, QWidget* parent, const char* name, WFlags fl )
16 : Opie::MM::OImageScrollView(parent,name,fl) 18 : Opie::MM::OImageScrollView(parent,name,fl)
17{ 19{
18 m_viewManager = 0; 20 m_viewManager = 0;
19 focus_in_count = 0; 21 focus_in_count = 0;
20 m_cfg = cfg; 22 m_cfg = cfg;
21 m_isFullScreen = false; 23 m_isFullScreen = false;
22 m_ignore_next_in = false; 24 m_ignore_next_in = false;
23 m_slideTimer = 0; 25 m_slideTimer = 0;
24 QPEApplication::setStylusOperation(viewport(),QPEApplication::RightOnHold); 26 QPEApplication::setStylusOperation(viewport(),QPEApplication::RightOnHold);
25 initKeys(); 27 initKeys();
26 m_slideValue = 5; 28 m_slideValue = 5;
27 m_gDisplayType = 0; 29 m_gDisplayType = 0;
28 m_gPrevNext = 0; 30 m_gPrevNext = 0;
29 m_hGroup = 0; 31 m_hGroup = 0;
32 m_Rotated = false;
30 closeIfHide = false; 33 closeIfHide = false;
34 int min = QApplication::desktop()->size().width()>QApplication::desktop()->size().height()?
35 QApplication::desktop()->size().height():QApplication::desktop()->size().width();
36 if (min>320) {
37 // bigscreen
38 setMinimumSize(min/3,min/3);
39 } else {
40 setMinimumSize(10,10);
41 }
42 m_sysChannel = new QCopChannel( "QPE/System", this );
43 connect( m_sysChannel, SIGNAL( received(const QCString&,const QByteArray&) ),
44 this, SLOT( systemMessage(const QCString&,const QByteArray&) ) );
45}
46
47void ImageView::systemMessage( const QCString& msg, const QByteArray& data )
48{
49 int _newrotation;
50 QDataStream stream( data, IO_ReadOnly );
51 odebug << "received system message: " << msg << oendl;
52 if ( msg == "setCurrentRotation(int)" )
53 {
54 stream >> _newrotation;
55 odebug << "received setCurrentRotation(" << _newrotation << ")" << oendl;
56 if (!fullScreen()) {
57 m_rotation = _newrotation;
58 return;
59 }
60 }
31} 61}
32 62
33void ImageView::setMenuActions(QActionGroup*hGroup,QActionGroup*nextprevGroup, QActionGroup*disptypeGroup) 63void ImageView::setMenuActions(QActionGroup*hGroup,QActionGroup*nextprevGroup, QActionGroup*disptypeGroup)
34{ 64{
35 m_gDisplayType = disptypeGroup; 65 m_gDisplayType = disptypeGroup;
36 m_gPrevNext = nextprevGroup; 66 m_gPrevNext = nextprevGroup;
37 m_hGroup = hGroup; 67 m_hGroup = hGroup;
38} 68}
39 69
40ImageView::~ImageView() 70ImageView::~ImageView()
41{ 71{
42 odebug << "Destructor imageview" << oendl; 72 odebug << "Destructor imageview" << oendl;
43 delete m_viewManager; 73 delete m_viewManager;
44} 74}
45 75
46Opie::Core::OKeyConfigManager* ImageView::manager() 76Opie::Core::OKeyConfigManager* ImageView::manager()
47{ 77{
48 if (!m_viewManager) { 78 if (!m_viewManager) {
49 initKeys(); 79 initKeys();
50 } 80 }
51 return m_viewManager; 81 return m_viewManager;
52} 82}
53 83
54void ImageView::startSlide(int value) 84void ImageView::startSlide(int value)
55{ 85{
56 if (!m_slideTimer) { 86 if (!m_slideTimer) {
57 m_slideTimer = new QTimer(this); 87 m_slideTimer = new QTimer(this);
58 } 88 }
59 m_slideValue=value; 89 m_slideValue=value;
60 connect(m_slideTimer,SIGNAL(timeout()),SLOT(nextSlide())); 90 connect(m_slideTimer,SIGNAL(timeout()),SLOT(nextSlide()));
61 /* this "+1" is one millisecond. with that we can setup a slideshowvalue 91 /* this "+1" is one millisecond. with that we can setup a slideshowvalue
62 of 0. eg "as fast as possible". 92 of 0. eg "as fast as possible".
63 */ 93 */
64 m_slideTimer->start(m_slideValue*1000+1,true); 94 m_slideTimer->start(m_slideValue*1000+1,true);
65} 95}
66 96
67void ImageView::stopSlide() 97void ImageView::stopSlide()
68{ 98{
69 if (!m_slideTimer) { 99 if (!m_slideTimer) {
70 return; 100 return;
71 } 101 }
72 m_slideTimer->stop(); 102 m_slideTimer->stop();
73 delete m_slideTimer; 103 delete m_slideTimer;
74 m_slideTimer = 0; 104 m_slideTimer = 0;
75} 105}
76 106
77void ImageView::nextSlide() 107void ImageView::nextSlide()
78{ 108{
79 if (!m_slideTimer) { 109 if (!m_slideTimer) {
80 return; 110 return;
81 } 111 }
82#if 0 112#if 0
83 if (isHidden()) { 113 if (isHidden()) {
84 delete m_slideTimer; 114 delete m_slideTimer;
85 m_slideTimer = 0; 115 m_slideTimer = 0;
86 return; 116 return;
87 } 117 }
88#endif 118#endif
89 emit dispNext(); 119 emit dispNext();
90 m_slideTimer->start(m_slideValue*1000,true); 120 m_slideTimer->start(m_slideValue*1000,true);
91} 121}
92void ImageView::initKeys() 122void ImageView::initKeys()
93{ 123{
94 odebug << "init imageview keys" << oendl; 124 odebug << "init imageview keys" << oendl;
95 if (!m_cfg) { 125 if (!m_cfg) {
96 m_cfg = new Opie::Core::OConfig("opie-eye"); 126 m_cfg = new Opie::Core::OConfig("opie-eye");
97 m_cfg->setGroup("image_view_keys" ); 127 m_cfg->setGroup("image_view_keys" );
98 } 128 }
99 Opie::Core::OKeyPair::List lst; 129 Opie::Core::OKeyPair::List lst;
100 lst.append( Opie::Core::OKeyPair::upArrowKey() ); 130 lst.append( Opie::Core::OKeyPair::upArrowKey() );
101 lst.append( Opie::Core::OKeyPair::downArrowKey() ); 131 lst.append( Opie::Core::OKeyPair::downArrowKey() );
102 lst.append( Opie::Core::OKeyPair::leftArrowKey() ); 132 lst.append( Opie::Core::OKeyPair::leftArrowKey() );
103 lst.append( Opie::Core::OKeyPair::rightArrowKey() ); 133 lst.append( Opie::Core::OKeyPair::rightArrowKey() );
104 lst.append( Opie::Core::OKeyPair(Qt::Key_Escape,0)); 134 lst.append( Opie::Core::OKeyPair(Qt::Key_Escape,0));
105 135
106 m_viewManager = new Opie::Core::OKeyConfigManager(m_cfg, "image_view_keys", 136 m_viewManager = new Opie::Core::OKeyConfigManager(m_cfg, "image_view_keys",
107 lst, false,this, "image_view_keys" ); 137 lst, false,this, "image_view_keys" );
108 138
109 /** 139 /**
110 * Handle KeyEvents when they're pressed. This avoids problems 140 * Handle KeyEvents when they're pressed. This avoids problems
111 * with 'double next' on Return. 141 * with 'double next' on Return.
112 * The Return press would switch to this view and the return 142 * The Return press would switch to this view and the return
113 * release would emit the dispNext Signal. 143 * release would emit the dispNext Signal.
114 */ 144 */
115 m_viewManager->setEventMask( Opie::Core::OKeyConfigManager::MaskPressed ); 145 m_viewManager->setEventMask( Opie::Core::OKeyConfigManager::MaskPressed );
116 146
117 m_viewManager->addKeyConfig( Opie::Core::OKeyConfigItem(tr("View Image Info"), "imageviewinfo", 147 m_viewManager->addKeyConfig( Opie::Core::OKeyConfigItem(tr("View Image Info"), "imageviewinfo",
118 Resource::loadPixmap("1to1"), ViewInfo, 148 Resource::loadPixmap("1to1"), ViewInfo,
119 Opie::Core::OKeyPair(Qt::Key_I,0), 149 Opie::Core::OKeyPair(Qt::Key_I,0),
120 this, SLOT(slotShowImageInfo()))); 150 this, SLOT(slotShowImageInfo())));
121 151
122 m_viewManager->addKeyConfig( Opie::Core::OKeyConfigItem(tr("Toggle autorotate"), "imageautorotate", 152 m_viewManager->addKeyConfig( Opie::Core::OKeyConfigItem(tr("Toggle autorotate"), "imageautorotate",
123 Resource::loadPixmap("rotate"), Autorotate, 153 Resource::loadPixmap("rotate"), Autorotate,
124 Opie::Core::OKeyPair(Qt::Key_R,0), 154 Opie::Core::OKeyPair(Qt::Key_R,0),
125 this, SIGNAL(toggleAutorotate()))); 155 this, SIGNAL(toggleAutorotate())));
126 m_viewManager->addKeyConfig( Opie::Core::OKeyConfigItem(tr("Toggle autoscale"), "imageautoscale", 156 m_viewManager->addKeyConfig( Opie::Core::OKeyConfigItem(tr("Toggle autoscale"), "imageautoscale",
127 Resource::loadPixmap("1to1"), Autoscale, 157 Resource::loadPixmap("1to1"), Autoscale,
128 Opie::Core::OKeyPair(Qt::Key_S,0), 158 Opie::Core::OKeyPair(Qt::Key_S,0),
129 this, SIGNAL(toggleAutoscale()))); 159 this, SIGNAL(toggleAutoscale())));
130 160
131 m_viewManager->addKeyConfig( Opie::Core::OKeyConfigItem(tr("Switch to next image"), "imageshownext", 161 m_viewManager->addKeyConfig( Opie::Core::OKeyConfigItem(tr("Switch to next image"), "imageshownext",
132 Resource::loadPixmap("forward"), ShowNext, 162 Resource::loadPixmap("forward"), ShowNext,
133 Opie::Core::OKeyPair(Qt::Key_Return,0), 163 Opie::Core::OKeyPair(Qt::Key_Return,0),
134 this, SIGNAL(dispNext()))); 164 this, SIGNAL(dispNext())));
135 m_viewManager->addKeyConfig( Opie::Core::OKeyConfigItem(tr("Switch to previous image"), "imageshowprev", 165 m_viewManager->addKeyConfig( Opie::Core::OKeyConfigItem(tr("Switch to previous image"), "imageshowprev",
136 Resource::loadPixmap("back"), ShowPrevious, 166 Resource::loadPixmap("back"), ShowPrevious,
137 Opie::Core::OKeyPair(Qt::Key_P,0), 167 Opie::Core::OKeyPair(Qt::Key_P,0),
138 this, SIGNAL(dispPrev()))); 168 this, SIGNAL(dispPrev())));
139 m_viewManager->addKeyConfig( Opie::Core::OKeyConfigItem(tr("Toggle fullscreen"), "imagefullscreen", 169 m_viewManager->addKeyConfig( Opie::Core::OKeyConfigItem(tr("Toggle fullscreen"), "imagefullscreen",
140 Resource::loadPixmap("fullscreen"), FullScreen, 170 Resource::loadPixmap("fullscreen"), FullScreen,
141 Opie::Core::OKeyPair(Qt::Key_F,0), 171 Opie::Core::OKeyPair(Qt::Key_F,0),
142 this, SIGNAL(toggleFullScreen()))); 172 this, SIGNAL(toggleFullScreen())));
143 m_viewManager->addKeyConfig( Opie::Core::OKeyConfigItem(tr("Toggle thumbnail"), "imagezoomer", 173 m_viewManager->addKeyConfig( Opie::Core::OKeyConfigItem(tr("Toggle thumbnail"), "imagezoomer",
144 Resource::loadPixmap("mag"), Zoomer, 174 Resource::loadPixmap("mag"), Zoomer,
145 Opie::Core::OKeyPair(Qt::Key_T,0), 175 Opie::Core::OKeyPair(Qt::Key_T,0),
146 this, SIGNAL(toggleZoomer()))); 176 this, SIGNAL(toggleZoomer())));
147 m_viewManager->handleWidget( this ); 177 m_viewManager->handleWidget( this );
148 m_viewManager->load(); 178 m_viewManager->load();
149} 179}
150 180
151void ImageView::keyReleaseEvent(QKeyEvent * e) 181void ImageView::keyReleaseEvent(QKeyEvent * e)
152{ 182{
153 if (!e || e->state()!=0) { 183 if (!e || e->state()!=0) {
154 return; 184 return;
155 } 185 }
156 if (e->key()==Qt::Key_Escape) { 186 if (e->key()==Qt::Key_Escape) {
157 if (fullScreen()) { 187 if (fullScreen()) {
158 emit hideMe(); 188 emit hideMe();
159 } 189 }
160 if (closeIfHide) { 190 if (closeIfHide) {
161 QTimer::singleShot(0, qApp, SLOT(closeAllWindows())); 191 QTimer::singleShot(0, qApp, SLOT(closeAllWindows()));
162 } 192 }
163 } 193 }
164} 194}
165 195
166void ImageView::setCloseIfHide(bool how) 196void ImageView::setCloseIfHide(bool how)
167{ 197{
168 closeIfHide = how; 198 closeIfHide = how;
169} 199}
170 200
171void ImageView::slotShowImageInfo() 201void ImageView::slotShowImageInfo()
172{ 202{
173 emit dispImageInfo(m_lastName); 203 emit dispImageInfo(m_lastName);
174} 204}
175 205
176void ImageView::contentsMousePressEvent ( QMouseEvent * e) 206void ImageView::contentsMousePressEvent ( QMouseEvent * e)
177{ 207{
178 if (e->button()==1) { 208 if (e->button()==1) {
179 return OImageScrollView::contentsMousePressEvent(e); 209 return OImageScrollView::contentsMousePressEvent(e);
180 } 210 }
181 odebug << "Popup " << oendl; 211 odebug << "Popup " << oendl;
182 QPopupMenu *m = new QPopupMenu(0); 212 QPopupMenu *m = new QPopupMenu(this);
183 if (!m) return; 213 if (!m) return;
184 if (m_hGroup) { 214 if (m_hGroup) {
185 m_hGroup->addTo(m); 215 m_hGroup->addTo(m);
186 } 216 }
187 if (fullScreen()) { 217 if (fullScreen()) {
188 if (m_gPrevNext) { 218 if (m_gPrevNext) {
189 m->insertSeparator(); 219 m->insertSeparator();
190 m_gPrevNext->addTo(m); 220 m_gPrevNext->addTo(m);
191 } 221 }
192 if (m_gDisplayType) { 222 if (m_gDisplayType) {
193 m->insertSeparator(); 223 m->insertSeparator();
194 m_gDisplayType->addTo(m); 224 m_gDisplayType->addTo(m);
195 } 225 }
196 } 226 }
197 m->setFocus(); 227 m->setFocus();
198 m->exec( QPoint( QCursor::pos().x(), QCursor::pos().y()) ); 228 m->exec( QPoint( QCursor::pos().x(), QCursor::pos().y()) );
199 if (m_hGroup) { 229 if (m_hGroup) {
200 m_hGroup->removeFrom(m); 230 m_hGroup->removeFrom(m);
201 } 231 }
202 if (m_gPrevNext) { 232 if (m_gPrevNext) {
203 m_gPrevNext->removeFrom(m); 233 m_gPrevNext->removeFrom(m);
204 } 234 }
205 if (m_gDisplayType) { 235 if (m_gDisplayType) {
206 m_gDisplayType->removeFrom(m); 236 m_gDisplayType->removeFrom(m);
207 } 237 }
208 delete m; 238 delete m;
209} 239}
210 240
211void ImageView::setFullScreen(bool how,bool force) 241void ImageView::setFullScreen(bool how,bool force)
212{ 242{
213 m_isFullScreen = how; 243 m_isFullScreen = how;
214 if (how) { 244 if (how) {
215 m_ignore_next_in = true; 245 m_ignore_next_in = true;
216 setFixedSize(qApp->desktop()->size()); 246// setFixedSize(qApp->desktop()->size());
247 setGeometry(0,0,qApp->desktop()->size().width(),qApp->desktop()->size().height());
217 if (force) showFullScreen(); 248 if (force) showFullScreen();
218 } else { 249 } else {
219 setMinimumSize(10,10); 250// setMinimumSize(10,10);
220 } 251 }
221} 252}
222 253
223void ImageView::focusInEvent(QFocusEvent *) 254void ImageView::focusInEvent(QFocusEvent *)
224{ 255{
225 // Always do it here, no matter the size. 256 // Always do it here, no matter the size.
226 odebug << "Focus in (view)" << oendl; 257 odebug << "Focus in (view)" << oendl;
227 //if (fullScreen()) parentWidget()->showNormal(); 258 //if (fullScreen()) parentWidget()->showNormal();
228 if (m_ignore_next_in){m_ignore_next_in=false;return;} 259 if (m_ignore_next_in){m_ignore_next_in=false;return;}
229 if (fullScreen()) enableFullscreen(); 260 if (fullScreen()) enableFullscreen();
230} 261}
231 262
232void ImageView::hide() 263void ImageView::hide()
233{ 264{
234 if (fullScreen()) { 265 if (fullScreen()) {
235 m_ignore_next_in = true; 266 m_ignore_next_in = true;
236 showNormal(); 267 showNormal();
237 } 268 }
238 QWidget::hide(); 269 QWidget::hide();
239} 270}
240void ImageView::enableFullscreen() 271void ImageView::enableFullscreen()
241{ 272{
242 if (!fullScreen()) return; 273 if (!fullScreen()) return;
243 if (m_ignore_next_in) {m_ignore_next_in = false;return;} 274 if (m_ignore_next_in) {m_ignore_next_in = false;return;}
244 275
245 setUpdatesEnabled(false); 276 setUpdatesEnabled(false);
246 // This is needed because showNormal() forcefully changes the window 277 // This is needed because showNormal() forcefully changes the window
247 // style to WSTyle_TopLevel. 278 // style to WSTyle_TopLevel.
248 reparent(0, WStyle_Customize | WStyle_NoBorder, QPoint(0,0)); 279 reparent(0, WStyle_Customize | WStyle_NoBorder, QPoint(0,0));
249 // Enable fullscreen. 280 // Enable fullscreen.
250 /* this is the trick - I don't now why, but after a showFullScreen QTE toggles the focus 281 /* this is the trick - I don't now why, but after a showFullScreen QTE toggles the focus
251 * so we must block it here! */ 282 * so we must block it here! */
252 m_ignore_next_in = true; 283 m_ignore_next_in = true;
253 showFullScreen(); 284 showFullScreen();
254 setUpdatesEnabled(true); 285 setUpdatesEnabled(true);
255} 286}
diff --git a/noncore/graphics/opie-eye/gui/imageview.h b/noncore/graphics/opie-eye/gui/imageview.h
index f1067bb..e8c8df7 100644
--- a/noncore/graphics/opie-eye/gui/imageview.h
+++ b/noncore/graphics/opie-eye/gui/imageview.h
@@ -1,78 +1,85 @@
1#ifndef _IMAGE_VIEW_H 1#ifndef _IMAGE_VIEW_H
2#define _IMAGE_VIEW_H 2#define _IMAGE_VIEW_H
3 3
4#include <opie2/oimagescrollview.h> 4#include <opie2/oimagescrollview.h>
5 5
6#include <qwidget.h> 6#include <qwidget.h>
7 7
8class QTimer; 8class QTimer;
9class QActionGroup; 9class QActionGroup;
10class QAction; 10class QAction;
11 11
12class QCopChannel;
13
12namespace Opie { 14namespace Opie {
13 namespace Core { 15 namespace Core {
14 class OConfig; 16 class OConfig;
15 class OKeyConfigManager; 17 class OKeyConfigManager;
16 } 18 }
17} 19}
18 20
19class ImageView:public Opie::MM::OImageScrollView 21class ImageView:public Opie::MM::OImageScrollView
20{ 22{
21 Q_OBJECT 23 Q_OBJECT
22 24
23 enum ActionIds { 25 enum ActionIds {
24 ViewInfo, 26 ViewInfo,
25 FullScreen, 27 FullScreen,
26 ShowNext, 28 ShowNext,
27 ShowPrevious, 29 ShowPrevious,
28 Zoomer, 30 Zoomer,
29 Autorotate, 31 Autorotate,
30 Autoscale 32 Autoscale
31 }; 33 };
32 34
33public: 35public:
34 ImageView(Opie::Core::OConfig *cfg,QWidget* parent,const char* name = 0, WFlags fl = 0 ); 36 ImageView(Opie::Core::OConfig *cfg,QWidget* parent,const char* name = 0, WFlags fl = 0 );
35 virtual ~ImageView(); 37 virtual ~ImageView();
36 Opie::Core::OKeyConfigManager* manager(); 38 Opie::Core::OKeyConfigManager* manager();
37 void setFullScreen(bool how,bool force=true); 39 void setFullScreen(bool how,bool force=true);
38 bool fullScreen(){return m_isFullScreen;} 40 bool fullScreen(){return m_isFullScreen;}
39 virtual void enableFullscreen(); 41 virtual void enableFullscreen();
40 void stopSlide(); 42 void stopSlide();
41 void setMenuActions(QActionGroup*hGroup,QActionGroup*nextprevGroup, QActionGroup*disptypeGroup); 43 void setMenuActions(QActionGroup*hGroup,QActionGroup*nextprevGroup, QActionGroup*disptypeGroup);
42 void setCloseIfHide(bool); 44 void setCloseIfHide(bool);
43 45
44signals: 46signals:
45 void dispImageInfo(const QString&); 47 void dispImageInfo(const QString&);
46 void dispNext(); 48 void dispNext();
47 void dispPrev(); 49 void dispPrev();
48 void toggleFullScreen(); 50 void toggleFullScreen();
49 void hideMe(); 51 void hideMe();
50 void toggleZoomer(); 52 void toggleZoomer();
51 void toggleAutoscale(); 53 void toggleAutoscale();
52 void toggleAutorotate(); 54 void toggleAutorotate();
53 55
54protected: 56protected:
55 Opie::Core::OConfig * m_cfg; 57 Opie::Core::OConfig * m_cfg;
56 Opie::Core::OKeyConfigManager*m_viewManager; 58 Opie::Core::OKeyConfigManager*m_viewManager;
57 void initKeys(); 59 void initKeys();
58 bool m_isFullScreen:1; 60 bool m_isFullScreen:1;
59 bool m_ignore_next_in:1; 61 bool m_ignore_next_in:1;
62 bool m_Rotated:1;
63
60 int focus_in_count; 64 int focus_in_count;
61 QTimer*m_slideTimer; 65 QTimer*m_slideTimer;
62 int m_slideValue; 66 int m_slideValue;
63 virtual void focusInEvent ( QFocusEvent * ); 67 virtual void focusInEvent ( QFocusEvent * );
64 QActionGroup *m_gDisplayType,*m_gPrevNext,*m_hGroup; 68 QActionGroup *m_gDisplayType,*m_gPrevNext,*m_hGroup;
65 bool closeIfHide:1; 69 bool closeIfHide:1;
70 QCopChannel* m_sysChannel;
71 int m_rotation;
66 72
67public slots: 73public slots:
68 virtual void hide(); 74 virtual void hide();
69 virtual void startSlide(int); 75 virtual void startSlide(int);
70 virtual void nextSlide(); 76 virtual void nextSlide();
77 virtual void systemMessage( const QCString&, const QByteArray& );
71 78
72protected slots: 79protected slots:
73 virtual void slotShowImageInfo(); 80 virtual void slotShowImageInfo();
74 virtual void keyReleaseEvent(QKeyEvent * e); 81 virtual void keyReleaseEvent(QKeyEvent * e);
75 virtual void contentsMousePressEvent ( QMouseEvent * e); 82 virtual void contentsMousePressEvent ( QMouseEvent * e);
76}; 83};
77 84
78#endif 85#endif
diff --git a/noncore/graphics/opie-eye/gui/mainwindow.cpp b/noncore/graphics/opie-eye/gui/mainwindow.cpp
index 7570ee3..90e2e99 100644
--- a/noncore/graphics/opie-eye/gui/mainwindow.cpp
+++ b/noncore/graphics/opie-eye/gui/mainwindow.cpp
@@ -162,258 +162,264 @@ void PMainWindow::slotConfig() {
162 _wid->reparent(wid, QPoint() ); 162 _wid->reparent(wid, QPoint() );
163 lst.insert( view, _wid ); 163 lst.insert( view, _wid );
164 wid->addTab( _wid, "fileopen", inf->name() ); 164 wid->addTab( _wid, "fileopen", inf->name() );
165 } 165 }
166 166
167/* 167/*
168 * Add the KeyConfigWidget 168 * Add the KeyConfigWidget
169 */ 169 */
170 Opie::Ui::OKeyConfigWidget* keyWid = new Opie::Ui::OKeyConfigWidget( wid, "key config" ); 170 Opie::Ui::OKeyConfigWidget* keyWid = new Opie::Ui::OKeyConfigWidget( wid, "key config" );
171 keyWid->setChangeMode( Opie::Ui::OKeyConfigWidget::Queue ); 171 keyWid->setChangeMode( Opie::Ui::OKeyConfigWidget::Queue );
172 keyWid->insert( tr("Browser Keyboard Actions"), m_view->manager() ); 172 keyWid->insert( tr("Browser Keyboard Actions"), m_view->manager() );
173 QWidget*w = m_stack->visibleWidget(); 173 QWidget*w = m_stack->visibleWidget();
174 174
175 bool reminfo = false; 175 bool reminfo = false;
176 if ( !m_info ) { 176 if ( !m_info ) {
177 reminfo = true; 177 reminfo = true;
178 initInfo(); 178 initInfo();
179 m_info->hide(); 179 m_info->hide();
180 } 180 }
181 keyWid->insert( tr("Imageinfo Keyboard Actions"), m_info->manager() ); 181 keyWid->insert( tr("Imageinfo Keyboard Actions"), m_info->manager() );
182 182
183 bool remdisp = false; 183 bool remdisp = false;
184 if ( !m_disp ) { 184 if ( !m_disp ) {
185 remdisp = true; 185 remdisp = true;
186 initDisp(); 186 initDisp();
187 m_disp->hide(); 187 m_disp->hide();
188 } 188 }
189 keyWid->insert( tr("Imageview Keyboard Actions"), m_disp->manager() ); 189 keyWid->insert( tr("Imageview Keyboard Actions"), m_disp->manager() );
190 190
191 keyWid->load(); 191 keyWid->load();
192 wid->addTab( keyWid, QString::fromLatin1("AppsIcon" ), tr("Keyboard Configuration") ); 192 wid->addTab( keyWid, QString::fromLatin1("AppsIcon" ), tr("Keyboard Configuration") );
193 wid->setCurrentTab(0); 193 wid->setCurrentTab(0);
194 bool act = ( QPEApplication::execDialog( &dlg ) == QDialog::Accepted ); 194 bool act = ( QPEApplication::execDialog( &dlg ) == QDialog::Accepted );
195 195
196/* 196/*
197 * clean up 197 * clean up
198 *apply changes 198 *apply changes
199 */ 199 */
200 200
201 QMap<PDirView*, QWidget*>::Iterator it; 201 QMap<PDirView*, QWidget*>::Iterator it;
202 for ( it = lst.begin(); it != lst.end(); ++it ) { 202 for ( it = lst.begin(); it != lst.end(); ++it ) {
203 if ( act ) 203 if ( act )
204 it.key()->interfaceInfo()->writeConfig(it.data(), *m_cfg); 204 it.key()->interfaceInfo()->writeConfig(it.data(), *m_cfg);
205 delete it.key(); 205 delete it.key();
206 } 206 }
207 207
208 208
209 if ( act ) { 209 if ( act ) {
210 keyWid->save(); 210 keyWid->save();
211 m_disp->manager()->save(); 211 m_disp->manager()->save();
212 m_info->manager()->save(); 212 m_info->manager()->save();
213 m_view->manager()->save(); 213 m_view->manager()->save();
214 bSetup->save_values(); 214 bSetup->save_values();
215 m_view->resetView(); 215 m_view->resetView();
216 readConfig(); 216 readConfig();
217 } 217 }
218 delete keyWid; 218 delete keyWid;
219 219
220 m_stack->raiseWidget(w); 220 m_stack->raiseWidget(w);
221 if (remdisp) { 221 if (remdisp) {
222 m_disp->hide(); 222 m_disp->hide();
223 } 223 }
224 if (reminfo) { 224 if (reminfo) {
225 m_info->hide(); 225 m_info->hide();
226 } 226 }
227} 227}
228 228
229/* 229/*
230 * create a new image info component 230 * create a new image info component
231 * and detach the current one 231 * and detach the current one
232 * we will make the other delete on exit 232 * we will make the other delete on exit
233 */ 233 */
234template<class T> 234template<class T>
235void PMainWindow::initT( const char* name, T** ptr, int id) { 235void PMainWindow::initT( const char* name, T** ptr, int id) {
236 if ( *ptr ) { 236 if ( *ptr ) {
237 (*ptr)->disconnect(this, SLOT(slotReturn())); 237 (*ptr)->disconnect(this, SLOT(slotReturn()));
238 (*ptr)->setDestructiveClose(); 238 (*ptr)->setDestructiveClose();
239 m_stack->removeWidget( *ptr ); 239 m_stack->removeWidget( *ptr );
240 } 240 }
241 *ptr = new T(m_cfg, m_stack, name ); 241 *ptr = new T(m_cfg, m_stack, name );
242 m_stack->addWidget( *ptr, id ); 242 m_stack->addWidget( *ptr, id );
243 243
244 connect(*ptr, SIGNAL(sig_return()), 244 connect(*ptr, SIGNAL(sig_return()),
245 this,SLOT(slotReturn())); 245 this,SLOT(slotReturn()));
246 246
247} 247}
248 248
249void PMainWindow::initInfo() { 249void PMainWindow::initInfo() {
250 initT<imageinfo>( "Image Info", &m_info, ImageInfo ); 250 initT<imageinfo>( "Image Info", &m_info, ImageInfo );
251 connect(m_info,SIGNAL(dispImage(const QString&)),this,SLOT(slotDisplay(const QString&))); 251 connect(m_info,SIGNAL(dispImage(const QString&)),this,SLOT(slotDisplay(const QString&)));
252} 252}
253 253
254void PMainWindow::initDisp() { 254void PMainWindow::initDisp() {
255 initT<ImageView>( "Image ScrollView", &m_disp, ImageDisplay ); 255 initT<ImageView>( "Image ScrollView", &m_disp, ImageDisplay );
256 if (m_disp) { 256 if (m_disp) {
257 if (m_stack->mode() != Opie::Ui::OWidgetStack::SmallScreen) { 257 if (m_stack->mode() != Opie::Ui::OWidgetStack::SmallScreen) {
258 m_disp->setMinimumSize(QApplication::desktop()->size()/2); 258 //m_disp->setMinimumSize(QApplication::desktop()->size()/2);
259 } 259 }
260 m_disp->setMenuActions(m_hGroup,m_gPrevNext,m_gDisplayType); 260 m_disp->setMenuActions(m_hGroup,m_gPrevNext,m_gDisplayType);
261 m_disp->setAutoScale(!m_aUnscaled->isOn()); 261 m_disp->setAutoScale(!m_aUnscaled->isOn());
262 m_disp->setAutoRotate(m_aAutoRotate->isOn()); 262 m_disp->setAutoRotate(m_aAutoRotate->isOn());
263 m_disp->setShowZoomer(m_aZoomer->isOn()); 263 m_disp->setShowZoomer(m_aZoomer->isOn());
264 m_disp->setBackgroundColor(white); 264 m_disp->setBackgroundColor(white);
265 connect(m_disp,SIGNAL(dispImageInfo(const QString&)),this,SLOT(slotShowInfo(const QString&))); 265 connect(m_disp,SIGNAL(dispImageInfo(const QString&)),this,SLOT(slotShowInfo(const QString&)));
266 connect(m_disp,SIGNAL(dispNext()),m_view,SLOT(slotShowNext())); 266 connect(m_disp,SIGNAL(dispNext()),m_view,SLOT(slotShowNext()));
267 connect(m_disp,SIGNAL(dispPrev()),m_view,SLOT(slotShowPrev())); 267 connect(m_disp,SIGNAL(dispPrev()),m_view,SLOT(slotShowPrev()));
268 connect(m_disp,SIGNAL(toggleFullScreen()),this,SLOT(slotToggleFullScreen())); 268 connect(m_disp,SIGNAL(toggleFullScreen()),this,SLOT(slotToggleFullScreen()));
269 connect(m_disp,SIGNAL(hideMe()),this,SLOT(raiseIconView())); 269 connect(m_disp,SIGNAL(hideMe()),this,SLOT(raiseIconView()));
270 connect(m_disp,SIGNAL(toggleZoomer()),this,SLOT(slotToggleZoomer())); 270 connect(m_disp,SIGNAL(toggleZoomer()),this,SLOT(slotToggleZoomer()));
271 connect(m_disp,SIGNAL(toggleAutoscale()),this,SLOT(slotToggleAutoscale())); 271 connect(m_disp,SIGNAL(toggleAutoscale()),this,SLOT(slotToggleAutoscale()));
272 connect(m_disp,SIGNAL(toggleAutorotate()),this,SLOT(slotToggleAutorotate())); 272 connect(m_disp,SIGNAL(toggleAutorotate()),this,SLOT(slotToggleAutorotate()));
273 connect(m_view,SIGNAL(sig_startslide(int)),m_disp,SLOT(startSlide(int))); 273 connect(m_view,SIGNAL(sig_startslide(int)),m_disp,SLOT(startSlide(int)));
274 slotFullScreenToggled(m_aFullScreen->isOn()); 274 slotFullScreenToggled(m_aFullScreen->isOn());
275 } 275 }
276} 276}
277 277
278void PMainWindow::slotToggleFullScreen() 278void PMainWindow::slotToggleFullScreen()
279{ 279{
280 bool current = !m_aFullScreen->isOn(); 280 bool current = !m_aFullScreen->isOn();
281 m_aFullScreen->setOn(current); 281 m_aFullScreen->setOn(current);
282} 282}
283 283
284void PMainWindow::slotFullScreenButton(bool current) 284void PMainWindow::slotFullScreenButton(bool current)
285{ 285{
286 if (autoSave) { 286 if (autoSave) {
287 m_cfg->writeEntry("fullscreen",current); 287 m_cfg->writeEntry("fullscreen",current);
288 } 288 }
289 if (!m_disp) return; 289 if (!m_disp) return;
290 if (m_disp->isVisible()) { 290 if (m_disp->isVisible()) {
291 setupViewWindow(current, true); 291 setupViewWindow(current, true);
292 } 292 }
293} 293}
294 294
295void PMainWindow::setupViewWindow(bool current, bool forceDisplay) 295void PMainWindow::setupViewWindow(bool current, bool forceDisplay)
296{ 296{
297 if (!m_disp) return; 297 if (!m_disp) {
298 return;
299 }
298 if (current) { 300 if (current) {
299 m_disp->setBackgroundColor(black); 301 m_disp->setBackgroundColor(black);
300 m_disp->reparent(0, WStyle_Customize | WStyle_NoBorder, QPoint(0,0)); 302 m_disp->reparent(0, WStyle_Customize | WStyle_NoBorder, QPoint(0,0));
301 m_disp->setVScrollBarMode(QScrollView::AlwaysOff); 303 m_disp->setVScrollBarMode(QScrollView::AlwaysOff);
302 m_disp->setHScrollBarMode(QScrollView::AlwaysOff); 304 m_disp->setHScrollBarMode(QScrollView::AlwaysOff);
303 m_disp->resize(qApp->desktop()->width(), qApp->desktop()->height()); 305 m_disp->resize(qApp->desktop()->width(), qApp->desktop()->height());
306 m_disp->setFullScreen(current,forceDisplay);
304 } else { 307 } else {
305 setUpdatesEnabled(false); 308 setUpdatesEnabled(false);
306 if (m_stack->mode() != Opie::Ui::OWidgetStack::SmallScreen) { 309 if (m_stack->mode() != Opie::Ui::OWidgetStack::SmallScreen) {
307 m_disp->setMinimumSize(QApplication::desktop()->size()/2); 310
311 //m_disp->setMinimumSize(QApplication::desktop()->size()/2);
308 } else { 312 } else {
309 m_disp->setMinimumSize(10,10); 313 //m_disp->setMinimumSize(10,10);
310 } 314 }
311 if (m_stack->mode() != Opie::Ui::OWidgetStack::SmallScreen) { 315 if (m_stack->mode() != Opie::Ui::OWidgetStack::SmallScreen) {
312 m_disp->reparent(0,QPoint(50,50)); 316 m_disp->reparent(0,QPoint(10,10));
313 } else { 317 } else {
314 m_disp->reparent(0,QPoint(0,0)); 318 m_disp->reparent(0,QPoint(0,0));
315 } 319 }
316 m_disp->setBackgroundColor(white); 320 m_disp->setBackgroundColor(white);
317 m_stack->addWidget(m_disp,ImageDisplay); 321 m_stack->addWidget(m_disp,ImageDisplay);
318 m_disp->setVScrollBarMode(QScrollView::Auto); 322 m_disp->setVScrollBarMode(QScrollView::Auto);
319 m_disp->setHScrollBarMode(QScrollView::Auto); 323 m_disp->setHScrollBarMode(QScrollView::Auto);
320 if (forceDisplay || m_disp->isVisible())
321 m_stack->raiseWidget(m_disp);
322 if (m_stack->mode() != Opie::Ui::OWidgetStack::SmallScreen) { 324 if (m_stack->mode() != Opie::Ui::OWidgetStack::SmallScreen) {
323 m_disp->resize(m_disp->minimumSize()); 325 m_disp->setGeometry(30,30,QApplication::desktop()->width()-60,QApplication::desktop()->height()-60);
326 }
327 if (forceDisplay || m_disp->isVisible()) {
328 m_stack->raiseWidget(m_disp);
329 m_disp->setFocus();
324 } 330 }
325 setUpdatesEnabled(true); 331 setUpdatesEnabled(true);
326 } 332 }
327 m_disp->setFullScreen(current,forceDisplay); 333 m_disp->setFullScreen(current,forceDisplay);
328} 334}
329 335
330void PMainWindow::slotFullScreenToggled(bool current) 336void PMainWindow::slotFullScreenToggled(bool current)
331{ 337{
332 setupViewWindow(current,true); 338 setupViewWindow(current,true);
333} 339}
334 340
335/** 341/**
336 * With big Screen the plan could be to 'detach' the image 342 * With big Screen the plan could be to 'detach' the image
337 * window if visible and to create a ne wone 343 * window if visible and to create a ne wone
338 * init* already supports it but I make no use of it for 344 * init* already supports it but I make no use of it for
339 * now. We set filename and raise 345 * now. We set filename and raise
340 * 346 *
341 * ### FIXME and talk to alwin 347 * ### FIXME and talk to alwin
342 */ 348 */
343void PMainWindow::slotShowInfo( const QString& inf ) { 349void PMainWindow::slotShowInfo( const QString& inf ) {
344 if (m_disp && m_disp->fullScreen() && m_disp->isVisible()) { 350 if (m_disp && m_disp->fullScreen() && m_disp->isVisible()) {
345 return; 351 return;
346 } 352 }
347 if ( !m_info ) { 353 if ( !m_info ) {
348 initInfo(); 354 initInfo();
349 } 355 }
350 m_info->setPath( inf ); 356 m_info->setPath( inf );
351 if (m_stack->mode() == Opie::Ui::OWidgetStack::SmallScreen) { 357 if (m_stack->mode() == Opie::Ui::OWidgetStack::SmallScreen) {
352 m_aNext->removeFrom(toolBar); 358 m_aNext->removeFrom(toolBar);
353 m_aPrevious->removeFrom(toolBar); 359 m_aPrevious->removeFrom(toolBar);
354 m_aNext->setEnabled(false); 360 m_aNext->setEnabled(false);
355 m_aPrevious->setEnabled(false); 361 m_aPrevious->setEnabled(false);
356 m_aDirUp->setEnabled(false); 362 m_aDirUp->setEnabled(false);
357 m_aShowInfo->setEnabled(false); 363 m_aShowInfo->setEnabled(false);
358 m_aViewfile->setEnabled(true); 364 m_aViewfile->setEnabled(true);
359 m_aStartSlide->setEnabled(false); 365 m_aStartSlide->setEnabled(false);
360 fsButton->hide(); 366 fsButton->hide();
361 } 367 }
362 m_stack->raiseWidget( ImageInfo ); 368 m_stack->raiseWidget( ImageInfo );
363} 369}
364 370
365void PMainWindow::slotDisplay( const QString& inf ) { 371void PMainWindow::slotDisplay( const QString& inf ) {
366 bool nwindow = false; 372 bool nwindow = false;
367 if ( !m_disp ) { 373 if ( !m_disp ) {
368 nwindow = true; 374 nwindow = true;
369 initDisp(); 375 initDisp();
370 } 376 }
371 m_disp->setImage( inf ); 377 m_disp->setImage( inf );
372 if (m_stack->mode() == Opie::Ui::OWidgetStack::SmallScreen) { 378 if (m_stack->mode() == Opie::Ui::OWidgetStack::SmallScreen) {
373 if (m_gPrevNext->isEnabled()==false) { 379 if (m_gPrevNext->isEnabled()==false) {
374 m_gPrevNext->addTo(toolBar); 380 m_gPrevNext->addTo(toolBar);
375 m_gPrevNext->setEnabled(true); 381 m_gPrevNext->setEnabled(true);
376 382
377 m_aDirUp->setEnabled(false); 383 m_aDirUp->setEnabled(false);
378 m_aShowInfo->setEnabled(true); 384 m_aShowInfo->setEnabled(true);
379 m_aViewfile->setEnabled(false); 385 m_aViewfile->setEnabled(false);
380 m_aStartSlide->setEnabled(false); 386 m_aStartSlide->setEnabled(false);
381 fsButton->hide(); 387 fsButton->hide();
382 } 388 }
383 } 389 }
384 if (!nwindow && m_disp->fullScreen()!=m_aFullScreen->isOn()) { 390 if (!nwindow && m_disp->fullScreen()!=m_aFullScreen->isOn()) {
385 slotFullScreenToggled(m_aFullScreen->isOn()); 391 slotFullScreenToggled(m_aFullScreen->isOn());
386 } 392 }
387 if (m_disp->fullScreen()) { 393 if (m_disp->fullScreen()) {
388 qwsDisplay()->requestFocus( m_disp->winId(), TRUE); 394 qwsDisplay()->requestFocus( m_disp->winId(), TRUE);
389 } else { 395 } else {
390 m_stack->raiseWidget( ImageDisplay ); 396 m_stack->raiseWidget( ImageDisplay );
391 } 397 }
392} 398}
393 399
394void PMainWindow::raiseIconView() { 400void PMainWindow::raiseIconView() {
395 setUpdatesEnabled(false); 401 setUpdatesEnabled(false);
396 if (m_stack->mode() == Opie::Ui::OWidgetStack::SmallScreen) { 402 if (m_stack->mode() == Opie::Ui::OWidgetStack::SmallScreen) {
397 m_gPrevNext->removeFrom(toolBar); 403 m_gPrevNext->removeFrom(toolBar);
398 m_gPrevNext->setEnabled(false); 404 m_gPrevNext->setEnabled(false);
399 m_aDirUp->setEnabled(true); 405 m_aDirUp->setEnabled(true);
400 m_aShowInfo->setEnabled(true); 406 m_aShowInfo->setEnabled(true);
401 m_aViewfile->setEnabled(true); 407 m_aViewfile->setEnabled(true);
402 m_aStartSlide->setEnabled(true); 408 m_aStartSlide->setEnabled(true);
403 fsButton->show(); 409 fsButton->show();
404 } 410 }
405 if (m_disp && m_disp->fullScreen() && m_disp->isVisible()) { 411 if (m_disp && m_disp->fullScreen() && m_disp->isVisible()) {
406 m_disp->stopSlide(); 412 m_disp->stopSlide();
407 m_disp->hide(); 413 m_disp->hide();
408 } 414 }
409 m_stack->raiseWidget( IconView ); 415 m_stack->raiseWidget( IconView );
410 setUpdatesEnabled(true); 416 setUpdatesEnabled(true);
411 repaint(); 417 repaint();
412} 418}
413 419
414void PMainWindow::slotReturn() { 420void PMainWindow::slotReturn() {
415 raiseIconView(); 421 raiseIconView();
416} 422}
417 423
418 424
419void PMainWindow::closeEvent( QCloseEvent* ev ) { 425void PMainWindow::closeEvent( QCloseEvent* ev ) {