summaryrefslogtreecommitdiff
authoralwin <alwin>2004-04-05 22:09:25 (UTC)
committer alwin <alwin>2004-04-05 22:09:25 (UTC)
commit266b184c615022484b988e1638be768b11c0c19b (patch) (unidiff)
treeb2560b3a64c49db414fa950fc3ef4670e25cd5ca
parent930abeed35ee6dd3aaec491f13d400f825b9d9d1 (diff)
downloadopie-266b184c615022484b988e1638be768b11c0c19b.zip
opie-266b184c615022484b988e1638be768b11c0c19b.tar.gz
opie-266b184c615022484b988e1638be768b11c0c19b.tar.bz2
yeah - autoresize and autoscale now have toggle-buttons and the image display
respect these buttons ToDo: find a good way for prescaled loading of images if autoScale is on (in respect to autorotate and so on)
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/graphics/opie-eye/gui/imagescrollview.cpp56
-rw-r--r--noncore/graphics/opie-eye/gui/imagescrollview.h4
-rw-r--r--noncore/graphics/opie-eye/gui/mainwindow.cpp41
-rw-r--r--noncore/graphics/opie-eye/gui/mainwindow.h5
4 files changed, 95 insertions, 11 deletions
diff --git a/noncore/graphics/opie-eye/gui/imagescrollview.cpp b/noncore/graphics/opie-eye/gui/imagescrollview.cpp
index 7d83e29..ee20f40 100644
--- a/noncore/graphics/opie-eye/gui/imagescrollview.cpp
+++ b/noncore/graphics/opie-eye/gui/imagescrollview.cpp
@@ -11,64 +11,94 @@ ImageScrollView::ImageScrollView( QWidget* parent, const char* name, WFlags f )
11 :QScrollView(parent,name,f|Qt::WRepaintNoErase ),_image_data(),_original_data(),scale_to_fit(true), 11 :QScrollView(parent,name,f|Qt::WRepaintNoErase ),_image_data(),_original_data(),scale_to_fit(true),
12 rotate_to_fit(true),first_resize_done(false) 12 rotate_to_fit(true),first_resize_done(false)
13{ 13{
14 init(); 14 init();
15} 15}
16 16
17ImageScrollView::ImageScrollView (const QImage&img, QWidget * parent, const char * name, WFlags f,bool always_scale,bool rfit) 17ImageScrollView::ImageScrollView (const QImage&img, QWidget * parent, const char * name, WFlags f,bool always_scale,bool rfit)
18 :QScrollView(parent,name,f|Qt::WRepaintNoErase),_image_data(),_original_data(img),scale_to_fit(always_scale), 18 :QScrollView(parent,name,f|Qt::WRepaintNoErase),_image_data(),_original_data(img),scale_to_fit(always_scale),
19 rotate_to_fit(rfit),first_resize_done(false) 19 rotate_to_fit(rfit),first_resize_done(false)
20{ 20{
21 init(); 21 init();
22} 22}
23 23
24ImageScrollView::ImageScrollView (const QString&img, QWidget * parent, const char * name, WFlags f,bool always_scale,bool rfit) 24ImageScrollView::ImageScrollView (const QString&img, QWidget * parent, const char * name, WFlags f,bool always_scale,bool rfit)
25 :QScrollView(parent,name,f|Qt::WRepaintNoErase),_image_data(),_original_data(img),scale_to_fit(always_scale), 25 :QScrollView(parent,name,f|Qt::WRepaintNoErase),_image_data(),_original_data(img),scale_to_fit(always_scale),
26 rotate_to_fit(rfit),first_resize_done(false) 26 rotate_to_fit(rfit),first_resize_done(false)
27{ 27{
28 init(); 28 init();
29} 29}
30 30
31void ImageScrollView::setImage(const QImage&img) 31void ImageScrollView::setImage(const QImage&img)
32{ 32{
33 _image_data = QImage(); 33 _image_data = QImage();
34 _original_data=img; 34 _original_data=img;
35 first_resize_done = false; 35 if (first_resize_done) {
36 init(); 36 generateImage();
37 }
37} 38}
38 39
39void ImageScrollView::setImage( const QString& path ) { 40void ImageScrollView::setImage( const QString& path ) {
40 41 odebug << "load new image " << oendl;
42 _original_data.load(path);
43 _image_data = QImage();
44 if (first_resize_done) {
45 generateImage();
46 }
41} 47}
42 48
43/* should be called every time the QImage changed it content */ 49/* should be called every time the QImage changed it content */
44void ImageScrollView::init() 50void ImageScrollView::init()
45{ 51{
52 odebug << "init " << oendl;
46 viewport()->setBackgroundColor(white); 53 viewport()->setBackgroundColor(white);
47 if (_original_data.size().isValid()) { 54 if (first_resize_done) {
55 last_rot = Rotate0;
56 generateImage();
57 odebug << "reinit display " << oendl;
58 } else if (_original_data.size().isValid()) {
48 resizeContents(_original_data.width(),_original_data.height()); 59 resizeContents(_original_data.width(),_original_data.height());
49 } 60 }
50 last_rot = Rotate0; 61}
62
63void ImageScrollView::setAutoRotate(bool how)
64{
65 /* to avoid double repaints */
66 if (rotate_to_fit != how) {
67 rotate_to_fit = how;
68 _image_data = QImage();
69 generateImage();
70 }
71}
72
73void ImageScrollView::setAutoScale(bool how)
74{
75 scale_to_fit = how;
76 if (!how) {
77 rotate_to_fit = false;
78 }
79 _image_data = QImage();
80 generateImage();
51} 81}
52 82
53ImageScrollView::~ImageScrollView() 83ImageScrollView::~ImageScrollView()
54{ 84{
55} 85}
56 86
57void ImageScrollView::rescaleImage(int w, int h) 87void ImageScrollView::rescaleImage(int w, int h)
58{ 88{
59 if (_image_data.width()==w && _image_data.height()==h) { 89 if (_image_data.width()==w && _image_data.height()==h) {
60 return; 90 return;
61 } 91 }
62 double hs = (double)h / (double)_image_data.height() ; 92 double hs = (double)h / (double)_image_data.height() ;
63 double ws = (double)w / (double)_image_data.width() ; 93 double ws = (double)w / (double)_image_data.width() ;
64 double scaleFactor = (hs > ws) ? ws : hs; 94 double scaleFactor = (hs > ws) ? ws : hs;
65 int smoothW = (int)(scaleFactor * _image_data.width()); 95 int smoothW = (int)(scaleFactor * _image_data.width());
66 int smoothH = (int)(scaleFactor * _image_data.height()); 96 int smoothH = (int)(scaleFactor * _image_data.height());
67 _image_data = _image_data.smoothScale(smoothW,smoothH); 97 _image_data = _image_data.smoothScale(smoothW,smoothH);
68} 98}
69 99
70void ImageScrollView::rotate_into_data(Rotation r) 100void ImageScrollView::rotate_into_data(Rotation r)
71{ 101{
72 /* realy - we must do this that way, 'cause when acting direct on _image_data the app will 102 /* realy - we must do this that way, 'cause when acting direct on _image_data the app will
73 segfault :( */ 103 segfault :( */
74 QImage dest; 104 QImage dest;
@@ -160,77 +190,83 @@ void ImageScrollView::rotate_into_data(Rotation r)
160 dest.setNumColors(_original_data.numColors()); 190 dest.setNumColors(_original_data.numColors());
161 srcTable = (unsigned int *)_original_data.colorTable(); 191 srcTable = (unsigned int *)_original_data.colorTable();
162 destTable = (unsigned int *)dest.colorTable(); 192 destTable = (unsigned int *)dest.colorTable();
163 for ( x=0; x < _original_data.numColors(); ++x ) 193 for ( x=0; x < _original_data.numColors(); ++x )
164 destTable[x] = srcTable[x]; 194 destTable[x] = srcTable[x];
165 for ( y=0; y < _original_data.height(); ++y ) 195 for ( y=0; y < _original_data.height(); ++y )
166 { 196 {
167 srcData = (unsigned char *)_original_data.scanLine(y); 197 srcData = (unsigned char *)_original_data.scanLine(y);
168 for ( x=0; x < _original_data.width(); ++x ) 198 for ( x=0; x < _original_data.width(); ++x )
169 { 199 {
170 destData = (unsigned char *)dest.scanLine(_original_data.width()-x-1); 200 destData = (unsigned char *)dest.scanLine(_original_data.width()-x-1);
171 destData[y] = srcData[x]; 201 destData[y] = srcData[x];
172 } 202 }
173 } 203 }
174 break; 204 break;
175 default: 205 default:
176 dest = _original_data; 206 dest = _original_data;
177 break; 207 break;
178 } 208 }
179 209
180 } 210 }
181 _image_data = dest; 211 _image_data = dest;
182} 212}
183 213
184void ImageScrollView::resizeEvent(QResizeEvent * e) 214void ImageScrollView::generateImage()
185{ 215{
186 odebug << "ImageScrollView resizeEvent" << oendl;
187 QScrollView::resizeEvent(e);
188 Rotation r = Rotate0; 216 Rotation r = Rotate0;
189 if (width()>height()&&_original_data.width()<_original_data.height() || 217 if (width()>height()&&_original_data.width()<_original_data.height() ||
190 width()<height()&&_original_data.width()>_original_data.height()) { 218 width()<height()&&_original_data.width()>_original_data.height()) {
191 if (rotate_to_fit) r = Rotate90; 219 if (rotate_to_fit) r = Rotate90;
192 } 220 }
193 odebug << " r = " << r << oendl; 221 odebug << " r = " << r << oendl;
194 if (scale_to_fit) { 222 if (scale_to_fit) {
195 if (!_image_data.size().isValid()||width()>_image_data.width()||height()>_image_data.height()) { 223 if (!_image_data.size().isValid()||width()>_image_data.width()||height()>_image_data.height()) {
224 odebug << "Rescaling data" << oendl;
196 if (r==Rotate0) { 225 if (r==Rotate0) {
197 _image_data = _original_data; 226 _image_data = _original_data;
198 } else { 227 } else {
199 rotate_into_data(r); 228 rotate_into_data(r);
200 } 229 }
201 } 230 }
202 rescaleImage(width(),height()); 231 rescaleImage(width(),height());
203 resizeContents(width()-10,height()-10); 232 resizeContents(_image_data.width(),_image_data.height());
204 } else if (!first_resize_done||r!=last_rot) { 233 } else if (!first_resize_done||r!=last_rot||_image_data.width()==0) {
205 if (r==Rotate0) { 234 if (r==Rotate0) {
206 _image_data = _original_data; 235 _image_data = _original_data;
207 } else { 236 } else {
208 rotate_into_data(r); 237 rotate_into_data(r);
209 } 238 }
210 last_rot = r; 239 last_rot = r;
211 resizeContents(_image_data.width(),_image_data.height()); 240 resizeContents(_image_data.width(),_image_data.height());
212 } 241 }
242}
243
244void ImageScrollView::resizeEvent(QResizeEvent * e)
245{
246 odebug << "ImageScrollView resizeEvent" << oendl;
247 QScrollView::resizeEvent(e);
248 generateImage();
213 first_resize_done = true; 249 first_resize_done = true;
214} 250}
215 251
216void ImageScrollView::drawContents(QPainter * p, int clipx, int clipy, int clipw, int cliph) 252void ImageScrollView::drawContents(QPainter * p, int clipx, int clipy, int clipw, int cliph)
217{ 253{
218 int w = clipw; 254 int w = clipw;
219 int h = cliph; 255 int h = cliph;
220 int x = clipx; 256 int x = clipx;
221 int y = clipy; 257 int y = clipy;
222 bool erase = false; 258 bool erase = false;
223 259
224 if (!_image_data.size().isValid()) { 260 if (!_image_data.size().isValid()) {
225 p->fillRect(clipx,clipy,clipw,cliph,white); 261 p->fillRect(clipx,clipy,clipw,cliph,white);
226 return; 262 return;
227 } 263 }
228 if (w>_image_data.width()) { 264 if (w>_image_data.width()) {
229 w=_image_data.width(); 265 w=_image_data.width();
230 x = 0; 266 x = 0;
231 erase = true; 267 erase = true;
232 } else if (x+w>_image_data.width()){ 268 } else if (x+w>_image_data.width()){
233 x = _image_data.width()-w; 269 x = _image_data.width()-w;
234 } 270 }
235 if (h>_image_data.height()) { 271 if (h>_image_data.height()) {
236 h=_image_data.height(); 272 h=_image_data.height();
diff --git a/noncore/graphics/opie-eye/gui/imagescrollview.h b/noncore/graphics/opie-eye/gui/imagescrollview.h
index 864a015..dcf54ce 100644
--- a/noncore/graphics/opie-eye/gui/imagescrollview.h
+++ b/noncore/graphics/opie-eye/gui/imagescrollview.h
@@ -1,68 +1,72 @@
1#ifndef _IMAGE_SCROLL_VIEW_H 1#ifndef _IMAGE_SCROLL_VIEW_H
2#define _IMAGE_SCROLL_VIEW_H 2#define _IMAGE_SCROLL_VIEW_H
3 3
4#include <qscrollview.h> 4#include <qscrollview.h>
5#include <qimage.h> 5#include <qimage.h>
6#include <qstring.h> 6#include <qstring.h>
7#include <qdialog.h> 7#include <qdialog.h>
8 8
9class QPainter; 9class QPainter;
10 10
11class ImageScrollView:public QScrollView 11class ImageScrollView:public QScrollView
12{ 12{
13 Q_OBJECT 13 Q_OBJECT
14public: 14public:
15 ImageScrollView( QWidget* parent, const char* name = 0, WFlags fl = 0 ); 15 ImageScrollView( QWidget* parent, const char* name = 0, WFlags fl = 0 );
16 ImageScrollView (const QImage&, QWidget * parent=0, const char * name=0, WFlags f=0,bool always_scale=false,bool rfit=false ); 16 ImageScrollView (const QImage&, QWidget * parent=0, const char * name=0, WFlags f=0,bool always_scale=false,bool rfit=false );
17 ImageScrollView (const QString&, QWidget * parent=0, const char * name=0, WFlags f=0,bool always_scale=false,bool rfit=false ); 17 ImageScrollView (const QString&, QWidget * parent=0, const char * name=0, WFlags f=0,bool always_scale=false,bool rfit=false );
18 virtual ~ImageScrollView(); 18 virtual ~ImageScrollView();
19 19
20 void setImage(const QImage&); 20 void setImage(const QImage&);
21 void setImage( const QString& path ); 21 void setImage( const QString& path );
22 void setDestructiveClose(); 22 void setDestructiveClose();
23 23
24 void setAutoRotate(bool);
25 void setAutoScale(bool);
26
24 enum Rotation { 27 enum Rotation {
25 Rotate0, 28 Rotate0,
26 Rotate90, 29 Rotate90,
27 Rotate180, 30 Rotate180,
28 Rotate270 31 Rotate270
29 }; 32 };
30 33
31signals: 34signals:
32 void sig_return(); 35 void sig_return();
33 36
34protected: 37protected:
35 virtual void drawContents ( QPainter * p, int clipx, int clipy, int clipw, int cliph ); 38 virtual void drawContents ( QPainter * p, int clipx, int clipy, int clipw, int cliph );
36 void init(); 39 void init();
37 40
38 QImage _image_data; 41 QImage _image_data;
39 QImage _original_data; 42 QImage _original_data;
40 43
41 int _mouseStartPosX,_mouseStartPosY; 44 int _mouseStartPosX,_mouseStartPosY;
42 45
43 bool scale_to_fit; 46 bool scale_to_fit;
44 bool rotate_to_fit; 47 bool rotate_to_fit;
45 bool first_resize_done; 48 bool first_resize_done;
46 Rotation last_rot; 49 Rotation last_rot;
47 50
48 void rescaleImage(int w, int h); 51 void rescaleImage(int w, int h);
49 52
50 void rotate_into_data(Rotation r); 53 void rotate_into_data(Rotation r);
54 void generateImage();
51 55
52protected slots: 56protected slots:
53 virtual void viewportMouseMoveEvent(QMouseEvent* e); 57 virtual void viewportMouseMoveEvent(QMouseEvent* e);
54 virtual void contentsMousePressEvent ( QMouseEvent * e); 58 virtual void contentsMousePressEvent ( QMouseEvent * e);
55 virtual void contentsMouseReleaseEvent ( QMouseEvent * e); 59 virtual void contentsMouseReleaseEvent ( QMouseEvent * e);
56 virtual void resizeEvent(QResizeEvent * e); 60 virtual void resizeEvent(QResizeEvent * e);
57}; 61};
58 62
59/* for testing */ 63/* for testing */
60class ImageDlg:public QDialog 64class ImageDlg:public QDialog
61{ 65{
62 Q_OBJECT 66 Q_OBJECT
63public: 67public:
64 ImageDlg(const QString&,QWidget * parent=0, const char * name=0); 68 ImageDlg(const QString&,QWidget * parent=0, const char * name=0);
65 virtual ~ImageDlg(); 69 virtual ~ImageDlg();
66}; 70};
67 71
68#endif 72#endif
diff --git a/noncore/graphics/opie-eye/gui/mainwindow.cpp b/noncore/graphics/opie-eye/gui/mainwindow.cpp
index 7f384bd..88acd59 100644
--- a/noncore/graphics/opie-eye/gui/mainwindow.cpp
+++ b/noncore/graphics/opie-eye/gui/mainwindow.cpp
@@ -71,55 +71,88 @@ PMainWindow::PMainWindow(QWidget* wid, const char* name, WFlags style)
71 connect( btn, SIGNAL( changeDir( const QString& ) ), 71 connect( btn, SIGNAL( changeDir( const QString& ) ),
72 m_view, SLOT(slotChangeDir( const QString& ) ) ); 72 m_view, SLOT(slotChangeDir( const QString& ) ) );
73 73
74 btn = new QToolButton( bar ); 74 btn = new QToolButton( bar );
75 btn->setIconSet( Resource::loadIconSet( "edit" ) ); 75 btn->setIconSet( Resource::loadIconSet( "edit" ) );
76 connect( btn, SIGNAL(clicked()), 76 connect( btn, SIGNAL(clicked()),
77 m_view, SLOT(slotRename()) ); 77 m_view, SLOT(slotRename()) );
78 78
79 if ( Ir::supported() ) { 79 if ( Ir::supported() ) {
80 btn = new QToolButton( bar ); 80 btn = new QToolButton( bar );
81 btn->setIconSet( Resource::loadIconSet( "beam" ) ); 81 btn->setIconSet( Resource::loadIconSet( "beam" ) );
82 connect( btn, SIGNAL(clicked()), 82 connect( btn, SIGNAL(clicked()),
83 m_view, SLOT(slotBeam()) ); 83 m_view, SLOT(slotBeam()) );
84 } 84 }
85 85
86 btn = new QToolButton( bar ); 86 btn = new QToolButton( bar );
87 btn->setIconSet( Resource::loadIconSet( "trash" ) ); 87 btn->setIconSet( Resource::loadIconSet( "trash" ) );
88 connect( btn, SIGNAL(clicked() ), 88 connect( btn, SIGNAL(clicked() ),
89 m_view, SLOT(slotTrash() ) ); 89 m_view, SLOT(slotTrash() ) );
90 90
91 btn = new QToolButton( bar ); 91 btn = new QToolButton( bar );
92 btn->setIconSet( Resource::loadIconSet( "SettingsIcon" ) ); 92 btn->setIconSet( Resource::loadIconSet( "SettingsIcon" ) );
93 connect( btn, SIGNAL(clicked() ), 93 connect( btn, SIGNAL(clicked() ),
94 this, SLOT(slotConfig() ) ); 94 this, SLOT(slotConfig() ) );
95
96 rotateButton = new QToolButton(bar);
97 rotateButton->setIconSet( Resource::loadIconSet( "rotate" ) );
98 rotateButton->setToggleButton(true);
99 rotateButton->setOn(true);
100 connect(rotateButton,SIGNAL(toggled(bool)),this,SLOT(slotRotateToggled(bool)));
101 autoRotate = true;
102
103 btn = new QToolButton(bar);
104 btn->setIconSet( Resource::loadIconSet( "1to1" ) );
105 btn->setToggleButton(true);
106 btn->setOn(false);
107 connect(btn,SIGNAL(toggled(bool)),this,SLOT(slotScaleToggled(bool)));
108 autoScale = true;
95 109
96} 110}
97 111
98PMainWindow::~PMainWindow() { 112PMainWindow::~PMainWindow() {
99 odebug << "Shutting down" << oendl; 113 odebug << "Shutting down" << oendl;
100} 114}
101 115
116void PMainWindow::slotRotateToggled(bool how)
117{
118 autoRotate = how;
119 if (m_disp) {
120 m_disp->setAutoRotate(how);
121 }
122}
123
124void PMainWindow::slotScaleToggled(bool how)
125{
126 autoScale = !how;
127 if (m_disp) {
128 m_disp->setAutoScale(autoScale);
129 }
130 if (!autoScale && autoRotate) {
131 rotateButton->setOn(false);
132 }
133 rotateButton->setEnabled(!how);
134}
102 135
103void PMainWindow::slotConfig() { 136void PMainWindow::slotConfig() {
104 /* 137 /*
105 * have a tab with the possible views 138 * have a tab with the possible views
106 * a tab for globals image cache size.. scaled loading 139 * a tab for globals image cache size.. scaled loading
107 * and one tab for the KeyConfigs 140 * and one tab for the KeyConfigs
108 */ 141 */
109 QDialog dlg(this, 0, true); 142 QDialog dlg(this, 0, true);
110 dlg.setCaption( tr("Phunk View - Config" ) ); 143 dlg.setCaption( tr("Phunk View - Config" ) );
111 144
112 QHBoxLayout *lay = new QHBoxLayout(&dlg); 145 QHBoxLayout *lay = new QHBoxLayout(&dlg);
113 Opie::Ui::OTabWidget *wid = new Opie::Ui::OTabWidget(&dlg ); 146 Opie::Ui::OTabWidget *wid = new Opie::Ui::OTabWidget(&dlg );
114 lay->addWidget( wid ); 147 lay->addWidget( wid );
115 ViewMap *vM = viewMap(); 148 ViewMap *vM = viewMap();
116 ViewMap::Iterator _it = vM->begin(); 149 ViewMap::Iterator _it = vM->begin();
117 QMap<PDirView*, QWidget*> lst; 150 QMap<PDirView*, QWidget*> lst;
118 151
119 for( ; _it != vM->end(); ++_it ) { 152 for( ; _it != vM->end(); ++_it ) {
120 PDirView *view = (_it.data())(*m_cfg); 153 PDirView *view = (_it.data())(*m_cfg);
121 PInterfaceInfo *inf = view->interfaceInfo(); 154 PInterfaceInfo *inf = view->interfaceInfo();
122 QWidget *_wid = inf->configWidget( *m_cfg ); 155 QWidget *_wid = inf->configWidget( *m_cfg );
123 _wid->reparent(wid, QPoint() ); 156 _wid->reparent(wid, QPoint() );
124 lst.insert( view, _wid ); 157 lst.insert( view, _wid );
125 wid->addTab( _wid, "fileopen", inf->name() ); 158 wid->addTab( _wid, "fileopen", inf->name() );
@@ -159,68 +192,74 @@ void PMainWindow::slotConfig() {
159/* 192/*
160 * create a new image info component 193 * create a new image info component
161 * and detach the current one 194 * and detach the current one
162 * we will make the other delete on exit 195 * we will make the other delete on exit
163 */ 196 */
164template<class T> 197template<class T>
165void PMainWindow::initT( const char* name, T** ptr, int id) { 198void PMainWindow::initT( const char* name, T** ptr, int id) {
166 if ( *ptr ) { 199 if ( *ptr ) {
167 (*ptr)->disconnect(this, SLOT(slotReturn())); 200 (*ptr)->disconnect(this, SLOT(slotReturn()));
168 (*ptr)->setDestructiveClose(); 201 (*ptr)->setDestructiveClose();
169 m_stack->removeWidget( *ptr ); 202 m_stack->removeWidget( *ptr );
170 } 203 }
171 *ptr = new T( m_stack, name ); 204 *ptr = new T( m_stack, name );
172 m_stack->addWidget( *ptr, id ); 205 m_stack->addWidget( *ptr, id );
173 206
174 connect(*ptr, SIGNAL(sig_return()), 207 connect(*ptr, SIGNAL(sig_return()),
175 this,SLOT(slotReturn())); 208 this,SLOT(slotReturn()));
176 209
177} 210}
178void PMainWindow::initInfo() { 211void PMainWindow::initInfo() {
179 initT<imageinfo>( "Image Info", &m_info, ImageInfo ); 212 initT<imageinfo>( "Image Info", &m_info, ImageInfo );
180} 213}
181void PMainWindow::initDisp() { 214void PMainWindow::initDisp() {
182 initT<ImageScrollView>( "Image ScrollView", &m_disp, ImageDisplay ); 215 initT<ImageScrollView>( "Image ScrollView", &m_disp, ImageDisplay );
216 if (m_disp) {
217 m_disp->setAutoScale(autoScale);
218 m_disp->setAutoRotate(autoRotate);
219 }
220
183} 221}
184 222
185/** 223/**
186 * With big Screen the plan could be to 'detach' the image 224 * With big Screen the plan could be to 'detach' the image
187 * window if visible and to create a ne wone 225 * window if visible and to create a ne wone
188 * init* already supports it but I make no use of it for 226 * init* already supports it but I make no use of it for
189 * now. We set filename and raise 227 * now. We set filename and raise
190 * 228 *
191 * ### FIXME and talk to alwin 229 * ### FIXME and talk to alwin
192 */ 230 */
193void PMainWindow::slotShowInfo( const QString& inf ) { 231void PMainWindow::slotShowInfo( const QString& inf ) {
194 if ( !m_info ) 232 if ( !m_info )
195 initInfo(); 233 initInfo();
196 m_info->setPath( inf ); 234 m_info->setPath( inf );
197 m_stack->raiseWidget( ImageInfo ); 235 m_stack->raiseWidget( ImageInfo );
198} 236}
199 237
200void PMainWindow::slotDisplay( const QString& inf ) { 238void PMainWindow::slotDisplay( const QString& inf ) {
201 if ( !m_disp ) 239 if ( !m_disp ) {
202 initDisp(); 240 initDisp();
241 }
203 m_disp->setImage( inf ); 242 m_disp->setImage( inf );
204 m_stack->raiseWidget( ImageDisplay ); 243 m_stack->raiseWidget( ImageDisplay );
205} 244}
206 245
207void PMainWindow::slotReturn() { 246void PMainWindow::slotReturn() {
208 raiseIconView(); 247 raiseIconView();
209} 248}
210 249
211 250
212void PMainWindow::closeEvent( QCloseEvent* ev ) { 251void PMainWindow::closeEvent( QCloseEvent* ev ) {
213 /* 252 /*
214 * return from view 253 * return from view
215 * or properly quit 254 * or properly quit
216 */ 255 */
217 if ( m_stack->visibleWidget() == m_info || 256 if ( m_stack->visibleWidget() == m_info ||
218 m_stack->visibleWidget() == m_disp ) { 257 m_stack->visibleWidget() == m_disp ) {
219 raiseIconView(); 258 raiseIconView();
220 ev->ignore(); 259 ev->ignore();
221 return; 260 return;
222 } 261 }
223 ev->accept(); 262 ev->accept();
224 QTimer::singleShot(0, qApp, SLOT(closeAllWindows())); 263 QTimer::singleShot(0, qApp, SLOT(closeAllWindows()));
225} 264}
226 265
diff --git a/noncore/graphics/opie-eye/gui/mainwindow.h b/noncore/graphics/opie-eye/gui/mainwindow.h
index 35116ae..6debf7f 100644
--- a/noncore/graphics/opie-eye/gui/mainwindow.h
+++ b/noncore/graphics/opie-eye/gui/mainwindow.h
@@ -16,47 +16,52 @@ namespace Opie {
16namespace Ui{ 16namespace Ui{
17 class OKeyConfigManager; 17 class OKeyConfigManager;
18 class OWidgetStack; 18 class OWidgetStack;
19} 19}
20} 20}
21 21
22class PIconView; 22class PIconView;
23class imageinfo; 23class imageinfo;
24class ImageScrollView; 24class ImageScrollView;
25class PMainWindow : public QMainWindow { 25class PMainWindow : public QMainWindow {
26 Q_OBJECT 26 Q_OBJECT
27 enum Views { IconView, ImageInfo, ImageDisplay }; 27 enum Views { IconView, ImageInfo, ImageDisplay };
28public: 28public:
29 static QString appName() { return QString::fromLatin1("opie-eye" ); } 29 static QString appName() { return QString::fromLatin1("opie-eye" ); }
30 PMainWindow(QWidget*, const char*, WFlags ); 30 PMainWindow(QWidget*, const char*, WFlags );
31 ~PMainWindow(); 31 ~PMainWindow();
32 32
33signals: 33signals:
34 void configChanged(); 34 void configChanged();
35 35
36public slots: 36public slots:
37 void slotShowInfo( const QString& inf ); 37 void slotShowInfo( const QString& inf );
38 void slotDisplay( const QString& inf ); 38 void slotDisplay( const QString& inf );
39 void slotReturn(); 39 void slotReturn();
40 void slotRotateToggled(bool);
41 void slotScaleToggled(bool);
40 42
41protected: 43protected:
42 void raiseIconView(); 44 void raiseIconView();
43 void closeEvent( QCloseEvent* ); 45 void closeEvent( QCloseEvent* );
44 46
45private: 47private:
46 template<class T> void initT( const char* name, T**, int ); 48 template<class T> void initT( const char* name, T**, int );
47 void initInfo(); 49 void initInfo();
48 void initDisp(); 50 void initDisp();
49 51
50private: 52private:
51 Opie::Core::OConfig *m_cfg; 53 Opie::Core::OConfig *m_cfg;
52 Opie::Ui::OWidgetStack *m_stack; 54 Opie::Ui::OWidgetStack *m_stack;
53 PIconView* m_view; 55 PIconView* m_view;
54 imageinfo *m_info; 56 imageinfo *m_info;
55 ImageScrollView *m_disp; 57 ImageScrollView *m_disp;
58 bool autoRotate;
59 bool autoScale;
60 QToolButton*rotateButton;
56 61
57 62
58private slots: 63private slots:
59 void slotConfig(); 64 void slotConfig();
60}; 65};
61 66
62#endif 67#endif