summaryrefslogtreecommitdiff
authoralwin <alwin>2004-11-06 02:57:25 (UTC)
committer alwin <alwin>2004-11-06 02:57:25 (UTC)
commit90d458c63d274a66ca427710b88e2f090a0ab11b (patch) (unidiff)
tree582f2c051681e5c10313a9a79fdc7b544c288f26
parenta93a0ee1fce8b2fb7abac475a97dac8001aed8e0 (diff)
downloadopie-90d458c63d274a66ca427710b88e2f090a0ab11b.zip
opie-90d458c63d274a66ca427710b88e2f090a0ab11b.tar.gz
opie-90d458c63d274a66ca427710b88e2f090a0ab11b.tar.bz2
a lots of tests with the iconview, user can now setup the prefered icon-size,
but still some rewrites/redesigns needed. QIconView(Item) is sometimes horrible. some default-values changed
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/graphics/opie-eye/gui/basesetup.cpp28
-rw-r--r--noncore/graphics/opie-eye/gui/basesetup.h3
-rw-r--r--noncore/graphics/opie-eye/gui/iconview.cpp157
-rw-r--r--noncore/graphics/opie-eye/gui/iconview.h3
-rw-r--r--noncore/graphics/opie-eye/gui/mainwindow.cpp4
5 files changed, 160 insertions, 35 deletions
diff --git a/noncore/graphics/opie-eye/gui/basesetup.cpp b/noncore/graphics/opie-eye/gui/basesetup.cpp
index 20dda5a..fdf3466 100644
--- a/noncore/graphics/opie-eye/gui/basesetup.cpp
+++ b/noncore/graphics/opie-eye/gui/basesetup.cpp
@@ -4,57 +4,77 @@
4#include <qlayout.h> 4#include <qlayout.h>
5#include <qspinbox.h> 5#include <qspinbox.h>
6#include <qcheckbox.h> 6#include <qcheckbox.h>
7 7
8BaseSetup::BaseSetup(Opie::Core::OConfig *a_cfg,QWidget * parent, const char * name, WFlags f) 8BaseSetup::BaseSetup(Opie::Core::OConfig *a_cfg,QWidget * parent, const char * name, WFlags f)
9 :QFrame(parent,name,f) 9 :QFrame(parent,name,f)
10{ 10{
11 setFrameStyle(Box|Raised); 11 setFrameStyle(Box|Raised);
12 m_cfg = a_cfg; 12 m_cfg = a_cfg;
13 m_MainLayout = new QVBoxLayout( this, 11, 6, "m_MainLayout"); 13 m_MainLayout = new QVBoxLayout( this, 11, 6, "m_MainLayout");
14 14
15 m_SlidetimeLayout = new QGridLayout( 0, 1, 1, 0, 6, "m_SlidetimeLayout"); 15 m_SlidetimeLayout = new QGridLayout( 0, 1, 1, 0, 6, "m_SlidetimeLayout");
16 m_IconsizeLayout = new QGridLayout( 0, 1, 1, 0, 6, "m_IconsizeLayout");
16 17
17 m_SlideShowTime = new QSpinBox( this, "m_SlideShowTime" ); 18 m_SlideShowTime = new QSpinBox( this, "m_SlideShowTime" );
18 m_SlideShowTime->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding,QSizePolicy::Fixed)); 19 m_SlideShowTime->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding,QSizePolicy::Fixed));
19 m_SlideShowTime->setButtonSymbols( QSpinBox::PlusMinus ); 20 m_SlideShowTime->setButtonSymbols( QSpinBox::PlusMinus );
20 m_SlideShowTime->setMaxValue( 60 ); 21 m_SlideShowTime->setMaxValue( 60 );
21 m_SlideShowTime->setMinValue(0); 22 m_SlideShowTime->setMinValue(0);
22 m_SlideShowTime->setValue( 2 ); 23 m_SlideShowTime->setValue( 2 );
23 m_SlideShowTime->setSuffix(tr(" seconds")); 24 m_SlideShowTime->setSuffix(tr(" seconds"));
24 25
25 m_SlidetimeLayout->addWidget( m_SlideShowTime, 0, 1 ); 26 m_SlidetimeLayout->addWidget( m_SlideShowTime, 0, 1 );
26 27
27 m_SlidetimeLabel = new QLabel( this, "m_SlidetimeLabel" ); 28 m_SlidetimeLabel = new QLabel( this, "m_SlidetimeLabel" );
28 m_SlidetimeLabel->setText(tr("Slideshow timeout:")); 29 m_SlidetimeLabel->setText(tr("Slideshow timeout:"));
29 m_SlidetimeLayout->addWidget( m_SlidetimeLabel, 0, 0 ); 30 m_SlidetimeLayout->addWidget( m_SlidetimeLabel, 0, 0 );
30 m_MainLayout->addLayout( m_SlidetimeLayout ); 31 m_MainLayout->addLayout( m_SlidetimeLayout );
31 32
33 m_Iconsize = new QSpinBox( this, "m_Iconsize" );
34 m_Iconsize->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding,QSizePolicy::Fixed));
35 m_Iconsize->setButtonSymbols( QSpinBox::PlusMinus );
36 m_Iconsize->setMaxValue( 64 );
37 m_Iconsize->setMinValue(12);
38 m_Iconsize->setValue( 32 );
39 m_Iconsize->setSuffix(tr(" pixel"));
40 m_IconsizeLayout->addWidget( m_Iconsize, 0, 1 );
41 m_IconsizeLabel = new QLabel( this, "m_IconsizeLabel" );
42 m_IconsizeLabel->setText(tr("Size of thumbnails:"));
43 m_IconsizeLayout->addWidget( m_IconsizeLabel, 0, 0 );
44 m_MainLayout->addLayout(m_IconsizeLayout);
45
46
32#if 0 47#if 0
33 m_ShowToolBar = new QCheckBox( this, "m_ShowToolBar" ); 48 m_ShowToolBar = new QCheckBox( this, "m_ShowToolBar" );
34 m_ShowToolBar->setText(tr("Show toolbar on startup")); 49 m_ShowToolBar->setText(tr("Show toolbar on startup"));
35 m_MainLayout->addWidget( m_ShowToolBar ); 50 m_MainLayout->addWidget( m_ShowToolBar );
36#endif 51#endif
37 m_SaveStateAuto = new QCheckBox( this, "m_SaveStateAuto" ); 52 m_SaveStateAuto = new QCheckBox( this, "m_SaveStateAuto" );
38 m_SaveStateAuto->setText(tr("Save status of fullscreen/autorotate")); 53 m_SaveStateAuto->setText(tr("Save status of fullscreen/autorotate"));
39 m_MainLayout->addWidget( m_SaveStateAuto ); 54 m_MainLayout->addWidget( m_SaveStateAuto );
40 55
41 spacer1 = new QSpacerItem( 20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding ); 56 spacer1 = new QSpacerItem( 20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding );
42 m_MainLayout->addItem( spacer1 ); 57 m_MainLayout->addItem( spacer1 );
43 58
44 int stime = m_cfg->readNumEntry("base_slideshowtimeout",2); 59 int stime = m_cfg->readNumEntry("slideshowtimeout",2);
45 if (stime<0) stime=2; 60 if (stime<0) stime=2;
46 if (stime>60) stime=60; 61 if (stime>60) stime=60;
47 m_SlideShowTime->setValue(stime); 62 m_SlideShowTime->setValue(stime);
48 m_SaveStateAuto->setChecked(m_cfg->readBoolEntry("base_savestatus",false)); 63 m_SaveStateAuto->setChecked(m_cfg->readBoolEntry("savestatus",true));
64 stime = m_cfg->readNumEntry("iconsize", 32);
65 if (stime<12)stime = 12;
66 if (stime>64)stime = 64;
67 m_Iconsize->setValue(stime);
49} 68}
50 69
51BaseSetup::~BaseSetup() 70BaseSetup::~BaseSetup()
52{ 71{
53} 72}
54 73
55void BaseSetup::save_values() 74void BaseSetup::save_values()
56{ 75{
57 if (!m_cfg) return; 76 if (!m_cfg) return;
58 m_cfg->writeEntry("base_slideshowtimeout",m_SlideShowTime->value()); 77 m_cfg->writeEntry("slideshowtimeout",m_SlideShowTime->value());
59 m_cfg->writeEntry("base_savestatus",m_SaveStateAuto->isChecked()); 78 m_cfg->writeEntry("savestatus",m_SaveStateAuto->isChecked());
79 m_cfg->writeEntry("iconsize",m_Iconsize->value());
60} 80}
diff --git a/noncore/graphics/opie-eye/gui/basesetup.h b/noncore/graphics/opie-eye/gui/basesetup.h
index c343f88..95929f2 100644
--- a/noncore/graphics/opie-eye/gui/basesetup.h
+++ b/noncore/graphics/opie-eye/gui/basesetup.h
@@ -21,15 +21,18 @@ public:
21 21
22public slots: 22public slots:
23 virtual void save_values(); 23 virtual void save_values();
24 24
25protected: 25protected:
26 Opie::Core::OConfig *m_cfg; 26 Opie::Core::OConfig *m_cfg;
27 QVBoxLayout * m_MainLayout; 27 QVBoxLayout * m_MainLayout;
28 QGridLayout * m_SlidetimeLayout; 28 QGridLayout * m_SlidetimeLayout;
29 QSpinBox * m_SlideShowTime; 29 QSpinBox * m_SlideShowTime;
30 QLabel * m_SlidetimeLabel; 30 QLabel * m_SlidetimeLabel;
31 QCheckBox *m_SaveStateAuto; 31 QCheckBox *m_SaveStateAuto;
32 QSpacerItem *spacer1; 32 QSpacerItem *spacer1;
33 QGridLayout * m_IconsizeLayout;
34 QSpinBox * m_Iconsize;
35 QLabel * m_IconsizeLabel;
33}; 36};
34 37
35#endif 38#endif
diff --git a/noncore/graphics/opie-eye/gui/iconview.cpp b/noncore/graphics/opie-eye/gui/iconview.cpp
index eafff1d..c037d0d 100644
--- a/noncore/graphics/opie-eye/gui/iconview.cpp
+++ b/noncore/graphics/opie-eye/gui/iconview.cpp
@@ -32,79 +32,123 @@
32#include <qtimer.h> 32#include <qtimer.h>
33#include <qstyle.h> 33#include <qstyle.h>
34 34
35 35
36using Opie::Core::OKeyConfigItem; 36using Opie::Core::OKeyConfigItem;
37 37
38/* 38/*
39 * The Icons, Request Cache and IconViewItem for the IconView 39 * The Icons, Request Cache and IconViewItem for the IconView
40 */ 40 */
41namespace { 41namespace {
42 static QPixmap* _dirPix = 0; 42 static QPixmap* _dirPix = 0;
43 static QPixmap* _unkPix = 0; 43 static QPixmap* _unkPix = 0;
44 static QPixmap* _cpyPix = 0;
44 static QPixmap* _emptyPix = 0; 45 static QPixmap* _emptyPix = 0;
45 class IconViewItem : public QIconViewItem { 46 class IconViewItem : public QIconViewItem {
46 public: 47 public:
47 IconViewItem( QIconView*, const QString& path, const QString& name, bool isDir = false); 48 IconViewItem( QIconView*, const QString& path, const QString& name,int a_iconsize, bool isDir = false);
48 QPixmap* pixmap()const; 49 QPixmap* pixmap()const;
49 QString path()const { return m_path; } 50 QString path()const { return m_path; }
50 bool isDir()const { return m_isDir; } 51 bool isDir()const { return m_isDir; }
51 void setText( const QString& ); 52 void setText( const QString& );
52 bool textOnly()const{return m_textOnly;} 53 bool textOnly()const{return m_textOnly;}
53 void setTextOnly(bool how){m_textOnly=how;} 54 void setTextOnly(bool how){m_textOnly=how;}
54 /* just for starting recalc of item rect! */ 55 /* just for starting recalc of item rect! */
55 virtual void setPixmap( const QPixmap & icon, bool recalc, bool redraw = TRUE ); 56 virtual void setPixmap( const QPixmap & icon, bool recalc, bool redraw = TRUE );
56 /* just for starting recalc of item rect! */ 57 /* just for starting recalc of item rect! */
57 virtual void setPixmap( const QPixmap & icon); 58 virtual void setPixmap( const QPixmap & icon);
58 59
59 protected: 60 protected:
60 mutable QPixmap* m_pix; 61 mutable QPixmap* m_pix;
62 int m_iconsize;
63 void check_pix()const;
61 64
62 private: 65 private:
63 QString m_path; 66 QString m_path;
64 bool m_isDir : 1; 67 bool m_isDir : 1;
65 bool m_noInfo :1; 68 bool m_noInfo :1;
66 bool m_textOnly:1; 69 bool m_textOnly:1;
67 bool m_NameOnly:1; 70 bool m_NameOnly:1;
68 bool m_Pixset:1; 71 bool m_Pixset:1;
69 }; 72 };
70 class TextViewItem : public IconViewItem { 73 class TextViewItem : public IconViewItem {
71 TextViewItem( QIconView*, const QString& path, const QString& name, bool isDir = false ); 74 TextViewItem( QIconView*, const QString& path, const QString& name, int a_iconsize , bool isDir = false);
72 QPixmap *pixmap()const; 75 QPixmap *pixmap()const;
73 void setText( const QString& ); 76 void setText( const QString& );
74 }; 77 };
75 class ThumbViewItem : public IconViewItem { 78 class ThumbViewItem : public IconViewItem {
76 ThumbViewItem( QIconView*, const QString& path, const QString& name, bool isDir = false ); 79 ThumbViewItem( QIconView*, const QString& path, const QString& name, int a_iconsize, bool isDir = false );
77 QPixmap *pixmap()const; 80 QPixmap *pixmap()const;
78 void setText( const QString& ); 81 void setText( const QString& );
79 }; 82 };
80 83
81 84
82/* 85/*
83 * If we request an Image or String 86 * If we request an Image or String
84 * we add it to the map 87 * we add it to the map
85 */ 88 */
86 static QMap<QString, IconViewItem*> g_stringInf; 89 static QMap<QString, IconViewItem*> g_stringInf;
87 static QMap<QString, IconViewItem*> g_stringPix; 90 static QMap<QString, IconViewItem*> g_stringPix;
88 91
89 IconViewItem::IconViewItem( QIconView* view,const QString& path, 92 IconViewItem::IconViewItem( QIconView* view,const QString& path,
90 const QString& name, bool isDir ) 93 const QString& name, int a_iconsize, bool isDir)
91 : QIconViewItem( view, name ), m_path( path ), m_isDir( isDir ), 94 : QIconViewItem( view, name ), m_path( path ), m_isDir( isDir ),
92 m_noInfo( false ),m_textOnly(false),m_Pixset(false) 95 m_noInfo( false ),m_textOnly(false),m_Pixset(false)
93 { 96 {
94 if ( isDir && !_dirPix ) 97 m_iconsize = a_iconsize;
98 if ( isDir ) {
99 if (_dirPix && _dirPix->width()!=m_iconsize) {
100 delete _dirPix;
101 _dirPix = 0;
102 }
103 if (!_dirPix ) {
95 _dirPix = new QPixmap( Resource::loadPixmap("advancedfm/FileBrowser")); 104 _dirPix = new QPixmap( Resource::loadPixmap("advancedfm/FileBrowser"));
96 else if ( !isDir && !_unkPix ) 105 }
106 } else {
107 if (!_unkPix ) {
97 _unkPix = new QPixmap( Resource::loadPixmap( "UnknownDocument" ) ); 108 _unkPix = new QPixmap( Resource::loadPixmap( "UnknownDocument" ) );
98 } 109 }
110 }
111 check_pix();
112 }
113
114 inline void IconViewItem::check_pix()const
115 {
116 if (_cpyPix && _cpyPix->width()!=m_iconsize) {
117 delete _cpyPix;
118 _cpyPix = 0;
119 }
120 if (_dirPix && _dirPix->width()>m_iconsize) {
121 QPixmap*Pix = new QPixmap(*_dirPix);
122 Pix->resize(m_iconsize,m_iconsize);
123 delete _dirPix;
124 _dirPix = Pix;
125 }
126 if (!_cpyPix && _unkPix) {
127 if (_unkPix->width()>=m_iconsize) {
128 _cpyPix = new QPixmap(*_unkPix);
129 if (_unkPix->width()>m_iconsize)
130 _cpyPix->resize(m_iconsize,m_iconsize);
131 } else {
132 _cpyPix = new QPixmap(m_iconsize,m_iconsize);
133 _cpyPix->fill();
134 QPainter pa(_cpyPix);
135 int offset = (m_iconsize-_unkPix->width())/2;
136 int offy = (m_iconsize-_unkPix->height())/2;
137 if (offy<0) offy=0;
138 pa.drawPixmap(offset,offy,*_unkPix);
139 pa.end();
140 }
141 }
142 }
99 143
100 inline void IconViewItem::setPixmap( const QPixmap & , bool, bool ) 144 inline void IconViewItem::setPixmap( const QPixmap & , bool, bool )
101 { 145 {
102 m_Pixset = true; 146 m_Pixset = true;
103 calcRect(text()); 147 calcRect(text());
104 } 148 }
105 inline void IconViewItem::setPixmap( const QPixmap & ) 149 inline void IconViewItem::setPixmap( const QPixmap & )
106 { 150 {
107 m_Pixset = true; 151 m_Pixset = true;
108 calcRect(text()); 152 calcRect(text());
109 } 153 }
110 154
@@ -112,78 +156,88 @@ namespace {
112// owarn << "Name is " << m_path.right( 15 ) << " rect is " << rect().x() << " " << rect().y() 156// owarn << "Name is " << m_path.right( 15 ) << " rect is " << rect().x() << " " << rect().y()
113// << " " << rect().width() << " " << rect().height() << " | " << iconView()->contentsX() 157// << " " << rect().width() << " " << rect().height() << " | " << iconView()->contentsX()
114// << " " << iconView()->contentsY() << oendl; 158// << " " << iconView()->contentsY() << oendl;
115 159
116 if (textOnly()&&!m_isDir) { 160 if (textOnly()&&!m_isDir) {
117 if (!_emptyPix) _emptyPix = new QPixmap(0,0,1); 161 if (!_emptyPix) _emptyPix = new QPixmap(0,0,1);
118 return _emptyPix; 162 return _emptyPix;
119 } 163 }
120 if ( m_isDir ) 164 if ( m_isDir )
121 return _dirPix; 165 return _dirPix;
122 else{ 166 else{
123 if (!m_noInfo && !g_stringInf.contains( m_path ) ) { 167 if (!m_noInfo && !g_stringInf.contains( m_path ) ) {
124 currentView()->dirLister()->imageInfo( m_path );
125 g_stringInf.insert( m_path, const_cast<IconViewItem*>(this)); 168 g_stringInf.insert( m_path, const_cast<IconViewItem*>(this));
169 currentView()->dirLister()->imageInfo( m_path );
126 } 170 }
127 171
128 m_pix = PPixmapCache::self()->cachedImage( m_path, 64, 64 ); 172 m_pix = PPixmapCache::self()->cachedImage( m_path, m_iconsize, m_iconsize );
129 if (!m_pix && !g_stringPix.contains( m_path )) { 173 if (!m_pix && !g_stringPix.contains( m_path )) {
130 currentView()->dirLister()->thumbNail( m_path, 64, 64 ); 174 check_pix();
131 g_stringPix.insert( m_path, const_cast<IconViewItem*>(this)); 175 g_stringPix.insert( m_path, const_cast<IconViewItem*>(this));
176 currentView()->dirLister()->thumbNail( m_path, m_iconsize, m_iconsize);
132 } 177 }
133 return m_pix ? m_pix : _unkPix; 178 return m_pix ? m_pix : _cpyPix;
134 } 179 }
135 } 180 }
136 inline void IconViewItem::setText( const QString& str ) { 181 inline void IconViewItem::setText( const QString& str ) {
137 QString text = QIconViewItem::text()+"\n"+str; 182 QString text = QIconViewItem::text()+"\n"+str;
138 m_noInfo = true; 183 m_noInfo = true;
139 QIconViewItem::setText( text ); 184 QIconViewItem::setText( text );
140 } 185 }
141} 186}
142 187
143 188
144/* 189/*
145 * Set up the GUI.. initialize the slave set up gui 190 * Set up the GUI.. initialize the slave set up gui
146 * and also load a dir 191 * and also load a dir
147 */ 192 */
148PIconView::PIconView( QWidget* wid, Opie::Core::OConfig* cfg ) 193PIconView::PIconView( QWidget* wid, Opie::Core::OConfig* cfg )
149 : QVBox( wid ), m_cfg( cfg ), m_updatet( false ) 194 : QVBox( wid ), m_cfg( cfg ), m_updatet( false )
150{ 195{
151 { 196 {
152 QCopEnvelope( "QPE/Application/opie-eye_slave", "refUp()" ); 197 QCopEnvelope( "QPE/Application/opie-eye_slave", "refUp()" );
153 } 198 }
154 m_path = QDir::homeDirPath(); 199 m_path = QDir::homeDirPath();
155 m_mode = 0; 200 m_mode = 0;
201 m_iconsize = 32;
156 m_internalReset = false; 202 m_internalReset = false;
157 203
158 QHBox *hbox = new QHBox( this ); 204 QHBox *hbox = new QHBox( this );
159 QLabel* lbl = new QLabel( hbox ); 205 QLabel* lbl = new QLabel( hbox );
160 lbl->setText( tr("View as" ) ); 206 lbl->setText( tr("View as" ) );
161 207
162 m_views = new QComboBox( hbox, "View As" ); 208 m_views = new QComboBox( hbox, "View As" );
163 209
164 m_view= new QIconView( this ); 210 m_view= new QIconView( this );
165 connect(m_view, SIGNAL(clicked(QIconViewItem*) ), 211 connect(m_view, SIGNAL(clicked(QIconViewItem*) ),
166 this, SLOT(slotClicked(QIconViewItem*)) ); 212 this, SLOT(slotClicked(QIconViewItem*)) );
167 connect(m_view, SIGNAL(returnPressed(QIconViewItem*)), 213 connect(m_view, SIGNAL(returnPressed(QIconViewItem*)),
168 this, SLOT(slotClicked(QIconViewItem*)) ); 214 this, SLOT(slotClicked(QIconViewItem*)) );
169 215
170 m_view->setArrangement( QIconView::LeftToRight ); 216 m_view->setArrangement( QIconView::LeftToRight );
171 217
172 m_mode = m_cfg->readNumEntry("ListViewMode", 1); 218 m_mode = m_cfg->readNumEntry("ListViewMode", 1);
173 QString lastView = m_cfg->readEntry("LastView",""); 219 QString lastView = m_cfg->readEntry("LastView","");
174 220
175 if (m_mode < 1 || m_mode>3) m_mode = 1; 221 if (m_mode < 1 || m_mode>3) m_mode = 1;
176 222
177 m_view->setItemTextPos( QIconView::Right ); 223 m_view->setItemTextPos( QIconView::Right );
224 if (m_mode >1) {
225 m_view->setResizeMode(QIconView::Adjust);
226 } else {
227 m_view->setResizeMode(QIconView::Fixed);
228 }
229 m_iconsize = m_cfg->readNumEntry("iconsize", 32);
230 if (m_iconsize<12)m_iconsize = 12;
231 if (m_iconsize>64)m_iconsize = 64;
178 232
179 calculateGrid(); 233 calculateGrid();
180 234
181 initKeys(); 235 initKeys();
182 236
183 loadViews(); 237 loadViews();
184 int cc=0; 238 int cc=0;
185 for (; cc<m_views->count();++cc) { 239 for (; cc<m_views->count();++cc) {
186 if (m_views->text(cc)==lastView) { 240 if (m_views->text(cc)==lastView) {
187 break; 241 break;
188 } 242 }
189 } 243 }
@@ -271,35 +325,35 @@ void PIconView::slotChangeDir(const QString& path) {
271 if (!lister ) 325 if (!lister )
272 return; 326 return;
273 327
274 /* 328 /*
275 * Say what we want and take what we get 329 * Say what we want and take what we get
276 */ 330 */
277 lister->setStartPath( path ); 331 lister->setStartPath( path );
278 m_path = lister->currentPath(); 332 m_path = lister->currentPath();
279 333
280 m_view->viewport()->setUpdatesEnabled( false ); 334 m_view->viewport()->setUpdatesEnabled( false );
281 m_view->clear(); 335 m_view->clear();
282 336
337 // Also invalidate the cache. We can't cancel the operations anyway
338 g_stringPix.clear();
339 g_stringInf.clear();
340
283 /* 341 /*
284 * add files and folders 342 * add files and folders
285 */ 343 */
286 addFolders( lister->folders() ); 344 addFolders( lister->folders() );
287 addFiles( lister->files() ); 345 addFiles( lister->files() );
288 m_view->viewport()->setUpdatesEnabled( true ); 346 m_view->viewport()->setUpdatesEnabled( true );
289 347
290 // Also invalidate the cache. We can't cancel the operations anyway
291 g_stringPix.clear();
292 g_stringInf.clear();
293
294 // looks ugly 348 // looks ugly
295 static_cast<QMainWindow*>(parent())->setCaption( QObject::tr("%1 - O View", "Name of the dir").arg( m_path ) ); 349 static_cast<QMainWindow*>(parent())->setCaption( QObject::tr("%1 - O View", "Name of the dir").arg( m_path ) );
296} 350}
297 351
298/** 352/**
299 * get the current file name 353 * get the current file name
300 * @param isDir see if this is a dir or real file 354 * @param isDir see if this is a dir or real file
301 */ 355 */
302QString PIconView::currentFileName(bool &isDir)const { 356QString PIconView::currentFileName(bool &isDir)const {
303 isDir = false; 357 isDir = false;
304 QIconViewItem* _it = m_view->currentItem(); 358 QIconViewItem* _it = m_view->currentItem();
305 if ( !_it ) 359 if ( !_it )
@@ -356,24 +410,34 @@ void PIconView::slotTrash() {
356/* 410/*
357 * see what views are available 411 * see what views are available
358 */ 412 */
359void PIconView::loadViews() { 413void PIconView::loadViews() {
360 ViewMap::Iterator it; 414 ViewMap::Iterator it;
361 ViewMap* map = viewMap(); 415 ViewMap* map = viewMap();
362 for ( it = map->begin(); it != map->end(); ++it ) 416 for ( it = map->begin(); it != map->end(); ++it )
363 m_views->insertItem( it.key() ); 417 m_views->insertItem( it.key() );
364} 418}
365 419
366void PIconView::resetView() { 420void PIconView::resetView() {
367 m_internalReset = true; 421 m_internalReset = true;
422 // Also invalidate the cache. We can't cancel the operations anyway
423 g_stringPix.clear();
424 g_stringInf.clear();
425 if (m_mode>1) {
426 m_iconsize = m_cfg->readNumEntry("iconsize", 32);
427 if (m_iconsize<12)m_iconsize = 12;
428 if (m_iconsize>64)m_iconsize = 64;
429 } else {
430 m_iconsize = 64;
431 }
368 slotViewChanged(m_views->currentItem()); 432 slotViewChanged(m_views->currentItem());
369 m_internalReset = false; 433 m_internalReset = false;
370} 434}
371 435
372/* 436/*
373 *swicth view reloadDir and connect signals 437 *swicth view reloadDir and connect signals
374 */ 438 */
375void PIconView::slotViewChanged( int i) { 439void PIconView::slotViewChanged( int i) {
376 if (!m_views->count() ) { 440 if (!m_views->count() ) {
377 setCurrentView( 0l); 441 setCurrentView( 0l);
378 return; 442 return;
379 } 443 }
@@ -404,59 +468,60 @@ void PIconView::slotViewChanged( int i) {
404 this, SLOT( slotThumbInfo(const QString&, const QString&))); 468 this, SLOT( slotThumbInfo(const QString&, const QString&)));
405 connect(lis, SIGNAL( sig_thumbNail(const QString&, const QPixmap&)), 469 connect(lis, SIGNAL( sig_thumbNail(const QString&, const QPixmap&)),
406 this, SLOT(slotThumbNail(const QString&, const QPixmap&))); 470 this, SLOT(slotThumbNail(const QString&, const QPixmap&)));
407 connect(lis, SIGNAL(sig_start()), 471 connect(lis, SIGNAL(sig_start()),
408 this, SLOT(slotStart())); 472 this, SLOT(slotStart()));
409 connect(lis, SIGNAL(sig_end()) , 473 connect(lis, SIGNAL(sig_end()) ,
410 this, SLOT(slotEnd()) ); 474 this, SLOT(slotEnd()) );
411 475
412 476
413 /* reload now with default Path 477 /* reload now with default Path
414 * but only if it isn't a reset like from setupdlg 478 * but only if it isn't a reset like from setupdlg
415 */ 479 */
416 if (!m_internalReset) 480 if (!m_internalReset) {
417 m_path = lis->defaultPath(); 481 m_path = lis->defaultPath();
482 }
418 QTimer::singleShot( 0, this, SLOT(slotReloadDir())); 483 QTimer::singleShot( 0, this, SLOT(slotReloadDir()));
419} 484}
420 485
421 486
422void PIconView::slotReloadDir() { 487void PIconView::slotReloadDir() {
423 slotChangeDir( m_path ); 488 slotChangeDir( m_path );
424} 489}
425 490
426 491
427/* 492/*
428 * add files and folders 493 * add files and folders
429 */ 494 */
430void PIconView::addFolders( const QStringList& lst) { 495void PIconView::addFolders( const QStringList& lst) {
431 QStringList::ConstIterator it; 496 QStringList::ConstIterator it;
432 IconViewItem * _iv; 497 IconViewItem * _iv;
433 498
434 for(it=lst.begin(); it != lst.end(); ++it ) { 499 for(it=lst.begin(); it != lst.end(); ++it ) {
435 _iv = new IconViewItem( m_view, m_path+"/"+(*it), (*it), true ); 500 _iv = new IconViewItem( m_view, m_path+"/"+(*it), (*it),m_iconsize, true );
436 if (m_mode==3) _iv->setTextOnly(true); 501 if (m_mode==3) _iv->setTextOnly(true);
437 } 502 }
438} 503}
439 504
440void PIconView::addFiles( const QStringList& lst) { 505void PIconView::addFiles( const QStringList& lst) {
441 QStringList::ConstIterator it; 506 QStringList::ConstIterator it;
442 IconViewItem * _iv; 507 IconViewItem * _iv;
443 QPixmap*m_pix = 0; 508 QPixmap*m_pix = 0;
444 QString pre = ""; 509 QString pre = "";
445 if (!m_path.isEmpty()) { 510 if (!m_path.isEmpty()) {
446 pre = m_path+"/"; 511 pre = m_path+"/";
447 } 512 }
448 for (it=lst.begin(); it!= lst.end(); ++it ) { 513 for (it=lst.begin(); it!= lst.end(); ++it ) {
449 m_pix = PPixmapCache::self()->cachedImage( pre+(*it), 64, 64 ); 514 m_pix = PPixmapCache::self()->cachedImage( pre+(*it), m_iconsize, m_iconsize );
450 _iv = new IconViewItem( m_view, pre+(*it), (*it) ); 515 _iv = new IconViewItem( m_view, pre+(*it), (*it),m_iconsize );
451 if (m_mode==3) { 516 if (m_mode==3) {
452 _iv->setTextOnly(true); 517 _iv->setTextOnly(true);
453 _iv->setPixmap(QPixmap()); 518 _iv->setPixmap(QPixmap());
454 519
455 520
456 521
457 } else { 522 } else {
458 if (m_pix) _iv->setPixmap(*m_pix); 523 if (m_pix) _iv->setPixmap(*m_pix);
459 } 524 }
460 } 525 }
461 526
462} 527}
@@ -515,30 +580,45 @@ void PIconView::slotThumbInfo( const QString& _path, const QString& str ) {
515 * got thumbnail and see if it is visible so we need to update later 580 * got thumbnail and see if it is visible so we need to update later
516 */ 581 */
517void PIconView::slotThumbNail(const QString& _path, const QPixmap &pix) { 582void PIconView::slotThumbNail(const QString& _path, const QPixmap &pix) {
518 IconViewItem* item = g_stringPix[_path]; 583 IconViewItem* item = g_stringPix[_path];
519 if (!item ) 584 if (!item )
520 return; 585 return;
521 586
522 if ( item->intersects(QRect( m_view->contentsX(),m_view->contentsY(), 587 if ( item->intersects(QRect( m_view->contentsX(),m_view->contentsY(),
523 m_view->contentsWidth(), m_view->contentsHeight() ) ) ) 588 m_view->contentsWidth(), m_view->contentsHeight() ) ) )
524 m_updatet = true; 589 m_updatet = true;
525 590
526 if (pix.width()>0) { 591 if (pix.width()>0) {
527 PPixmapCache::self()->insertImage( _path, pix, 64, 64 ); 592 if (pix.width()<m_iconsize) {
593 QPixmap p(m_iconsize,m_iconsize);
594 p.fill();
595 QPainter pa(&p);
596 int offset = (m_iconsize-pix.width())/2;
597 int offy = (m_iconsize-pix.height())/2;
598 if (offy<0) offy=0;
599 pa.drawPixmap(offset,offy,pix);
600 pa.end();
601 PPixmapCache::self()->insertImage( _path, p, m_iconsize, m_iconsize );
602 item->setPixmap(p,true);
603 } else {
604 PPixmapCache::self()->insertImage( _path, pix, m_iconsize, m_iconsize );
528 item->setPixmap(pix,true); 605 item->setPixmap(pix,true);
606 }
607
529 } else { 608 } else {
530 PPixmapCache::self()->insertImage( _path, Resource::loadPixmap( "UnknownDocument" ), 64, 64 ); 609 PPixmapCache::self()->insertImage( _path, Resource::loadPixmap( "UnknownDocument" ), m_iconsize, m_iconsize );
531 } 610 }
532 g_stringPix.remove( _path ); 611 g_stringPix.remove( _path );
612 m_view->arrangeItemsInGrid(true);
533} 613}
534 614
535 615
536/* 616/*
537 * FIXME rename 617 * FIXME rename
538 */ 618 */
539void PIconView::slotRename() { 619void PIconView::slotRename() {
540 620
541} 621}
542 622
543 623
544/* 624/*
@@ -682,83 +762,104 @@ void PIconView::slotShowImage( const QString& name) {
682 emit sig_display(r_name); 762 emit sig_display(r_name);
683} 763}
684 764
685void PIconView::slotStartSlide() { 765void PIconView::slotStartSlide() {
686 bool isDir = false; 766 bool isDir = false;
687 QString name = currentFileName(isDir); 767 QString name = currentFileName(isDir);
688 if (isDir) { 768 if (isDir) {
689 if (!slotShowFirst()) 769 if (!slotShowFirst())
690 return; 770 return;
691 } else { 771 } else {
692 slotShowImage( name ); 772 slotShowImage( name );
693 } 773 }
694 int t = m_cfg->readNumEntry("base_slideshowtimeout", 2); 774 int t = m_cfg->readNumEntry("slideshowtimeout", 2);
695 emit sig_startslide(t); 775 emit sig_startslide(t);
696} 776}
697 777
698void PIconView::slotImageInfo() { 778void PIconView::slotImageInfo() {
699 bool isDir = false; 779 bool isDir = false;
700 QString name = currentFileName(isDir); 780 QString name = currentFileName(isDir);
701 if (isDir) return; 781 if (isDir) return;
702 slotImageInfo( name ); 782 slotImageInfo( name );
703} 783}
704 784
705void PIconView::slotImageInfo( const QString& name) { 785void PIconView::slotImageInfo( const QString& name) {
706 PDirLister *lister = currentView()->dirLister(); 786 PDirLister *lister = currentView()->dirLister();
707 QString r_name = lister->nameToFname(name); 787 QString r_name = lister->nameToFname(name);
708 emit sig_showInfo(r_name ); 788 emit sig_showInfo(r_name );
709} 789}
710 790
711 791
712void PIconView::slotChangeMode( int mode ) { 792void PIconView::slotChangeMode( int mode ) {
713 if ( mode >= 1 && mode <= 3 ) 793 if ( mode >= 1 && mode <= 3 ) {
714 m_mode = mode; 794 m_mode = mode;
715
716 m_cfg->writeEntry("ListViewMode", m_mode); 795 m_cfg->writeEntry("ListViewMode", m_mode);
717 /* performance! */ 796 /* performance! */
718 m_view->clear(); 797 m_view->clear();
798 if (m_mode >1) {
799 m_view->setResizeMode(QIconView::Adjust);
800 } else {
801 m_view->setResizeMode(QIconView::Fixed);
802 }
803 if (m_mode==1) {
804 m_iconsize = 64;
805 } else {
806 m_iconsize = m_cfg->readNumEntry("iconsize", 32);
807 if (m_iconsize<12)m_iconsize = 12;
808 if (m_iconsize>64)m_iconsize = 64;
809 }
810
719 calculateGrid(); 811 calculateGrid();
720 slotReloadDir(); 812 slotReloadDir();
721} 813}
814}
722 815
723 816
724void PIconView::resizeEvent( QResizeEvent* re ) { 817void PIconView::resizeEvent( QResizeEvent* re ) {
818 calculateGrid(re);
725 QVBox::resizeEvent( re ); 819 QVBox::resizeEvent( re );
726 calculateGrid(); 820 //calculateGrid();
727} 821}
728 822
729 823
730void PIconView::calculateGrid() { 824void PIconView::calculateGrid(QResizeEvent* re)
825{
826 int viewerWidth;
827 if (re) {
828 viewerWidth=re->size().width();
829 } else {
731 int dw = QApplication::desktop()->width(); 830 int dw = QApplication::desktop()->width();
732 int viewerWidth = dw-style().scrollBarExtent().width(); 831 viewerWidth = dw-style().scrollBarExtent().width();
832 }
733 833
734 QIconView::ItemTextPos pos; 834 QIconView::ItemTextPos pos;
735 switch( m_mode ) { 835 switch( m_mode ) {
736 case 2: 836 case 2:
737 pos = QIconView::Bottom; 837 pos = QIconView::Bottom;
738 break; 838 break;
739 case 3: 839 case 3:
740 case 1: 840 case 1:
741 default: 841 default:
742 pos = QIconView::Right; 842 pos = QIconView::Right;
743 break; 843 break;
744 } 844 }
745 m_view->setItemTextPos( pos ); 845 m_view->setItemTextPos( pos );
746 switch (m_mode) { 846 switch (m_mode) {
747 case 2: 847 case 2:
748 m_view->setGridX(50); 848 m_view->setGridX(m_iconsize);
749 m_view->setGridY(20); 849 m_view->setGridY(-1);
750 PPixmapCache::self()->setMaxImages(40); 850 PPixmapCache::self()->setMaxImages(40);
751 break; 851 break;
752 case 3: 852 case 3:
753 m_view->setGridX( fontMetrics().width("testimage.jpg")+20); 853 m_view->setGridX( fontMetrics().width("testimage.jpg")+20);
754 m_view->setGridY(8); 854 m_view->setGridY(8);
755 PPixmapCache::self()->setMaxImages(2); 855 PPixmapCache::self()->setMaxImages(2);
756 break; 856 break;
757 case 1: 857 case 1:
758 default: 858 default:
759 m_view->setGridX( viewerWidth-3*m_view->spacing()); 859 m_view->setGridX( viewerWidth-3*m_view->spacing());
760 m_view->setGridY( fontMetrics().height()*2+40 ); 860 m_view->setGridY( fontMetrics().height()*2+40 );
761 PPixmapCache::self()->setMaxImages(20); 861 PPixmapCache::self()->setMaxImages(20);
762 break; 862 break;
763 } 863 }
864 m_view->setSpacing(10);
764} 865}
diff --git a/noncore/graphics/opie-eye/gui/iconview.h b/noncore/graphics/opie-eye/gui/iconview.h
index bea35c2..b018c51 100644
--- a/noncore/graphics/opie-eye/gui/iconview.h
+++ b/noncore/graphics/opie-eye/gui/iconview.h
@@ -46,25 +46,25 @@ public slots:
46 virtual void slotShowLast(); 46 virtual void slotShowLast();
47 virtual bool slotShowFirst(); 47 virtual bool slotShowFirst();
48 48
49protected: 49protected:
50 void resizeEvent( QResizeEvent* ); 50 void resizeEvent( QResizeEvent* );
51 51
52private: 52private:
53 void initKeys(); 53 void initKeys();
54 QString currentFileName(bool &isDir)const; 54 QString currentFileName(bool &isDir)const;
55 QString nextFileName(bool &isDir)const; 55 QString nextFileName(bool &isDir)const;
56 QString prevFileName(bool &isDir)const; 56 QString prevFileName(bool &isDir)const;
57 void loadViews(); 57 void loadViews();
58 void calculateGrid(); 58 void calculateGrid(QResizeEvent*e = 0);
59 59
60private slots: 60private slots:
61 void slotDirUp(); 61 void slotDirUp();
62 void slotChangeDir(const QString&); 62 void slotChangeDir(const QString&);
63 void slotTrash(); 63 void slotTrash();
64 void slotViewChanged( int ); 64 void slotViewChanged( int );
65 void slotReloadDir(); 65 void slotReloadDir();
66 void slotRename(); 66 void slotRename();
67 void slotBeam(); 67 void slotBeam();
68 void slotBeamDone( Ir* ); 68 void slotBeamDone( Ir* );
69 69
70 void slotShowImage(); 70 void slotShowImage();
@@ -87,15 +87,16 @@ private slots:
87 void slotThumbNail(const QString&, const QPixmap&); 87 void slotThumbNail(const QString&, const QPixmap&);
88 88
89 void slotChangeMode( int ); 89 void slotChangeMode( int );
90private: 90private:
91 Opie::Core::OKeyConfigManager *m_viewManager; 91 Opie::Core::OKeyConfigManager *m_viewManager;
92 Opie::Core::OConfig *m_cfg; 92 Opie::Core::OConfig *m_cfg;
93 QComboBox* m_views; 93 QComboBox* m_views;
94 QIconView* m_view; 94 QIconView* m_view;
95 QString m_path; 95 QString m_path;
96 bool m_updatet : 1; 96 bool m_updatet : 1;
97 int m_mode; 97 int m_mode;
98 bool m_internalReset:1; 98 bool m_internalReset:1;
99 int m_iconsize;
99}; 100};
100 101
101#endif 102#endif
diff --git a/noncore/graphics/opie-eye/gui/mainwindow.cpp b/noncore/graphics/opie-eye/gui/mainwindow.cpp
index 30c9bf1..67eb277 100644
--- a/noncore/graphics/opie-eye/gui/mainwindow.cpp
+++ b/noncore/graphics/opie-eye/gui/mainwindow.cpp
@@ -195,30 +195,30 @@ void PMainWindow::slotConfig() {
195 *apply changes 195 *apply changes
196 */ 196 */
197 197
198 QMap<PDirView*, QWidget*>::Iterator it; 198 QMap<PDirView*, QWidget*>::Iterator it;
199 for ( it = lst.begin(); it != lst.end(); ++it ) { 199 for ( it = lst.begin(); it != lst.end(); ++it ) {
200 if ( act ) 200 if ( act )
201 it.key()->interfaceInfo()->writeConfig(it.data(), *m_cfg); 201 it.key()->interfaceInfo()->writeConfig(it.data(), *m_cfg);
202 delete it.key(); 202 delete it.key();
203 } 203 }
204 204
205 205
206 if ( act ) { 206 if ( act ) {
207 m_view->resetView();
208 keyWid->save(); 207 keyWid->save();
209 m_disp->manager()->save(); 208 m_disp->manager()->save();
210 m_info->manager()->save(); 209 m_info->manager()->save();
211 m_view->manager()->save(); 210 m_view->manager()->save();
212 bSetup->save_values(); 211 bSetup->save_values();
212 m_view->resetView();
213 readConfig(); 213 readConfig();
214 } 214 }
215 delete keyWid; 215 delete keyWid;
216 216
217 m_stack->raiseWidget(w); 217 m_stack->raiseWidget(w);
218 if (remdisp) { 218 if (remdisp) {
219 m_disp->hide(); 219 m_disp->hide();
220 } 220 }
221 if (reminfo) { 221 if (reminfo) {
222 m_info->hide(); 222 m_info->hide();
223 } 223 }
224} 224}
@@ -683,14 +683,14 @@ void PMainWindow::listviewselected(QAction*which)
683 } else if (which==m_aDirShort) { 683 } else if (which==m_aDirShort) {
684 val = 2; 684 val = 2;
685// name = "opie-eye/opie-eye-thumbonly"; 685// name = "opie-eye/opie-eye-thumbonly";
686 } else if (which==m_aDirLong) { 686 } else if (which==m_aDirLong) {
687 val = 1; 687 val = 1;
688// name = "opie-eye/opie-eye-thumb"; 688// name = "opie-eye/opie-eye-thumb";
689 } 689 }
690 emit changeListMode(val); 690 emit changeListMode(val);
691} 691}
692 692
693void PMainWindow::readConfig() 693void PMainWindow::readConfig()
694{ 694{
695 autoSave =m_cfg->readBoolEntry("base_savestatus",true); 695 autoSave =m_cfg->readBoolEntry("savestatus",true);
696} 696}