summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-01-21 15:38:31 (UTC)
committer zautrix <zautrix>2005-01-21 15:38:31 (UTC)
commit4afdcfcac216b428ada79f4750cf7447e3175333 (patch) (unidiff)
tree8f70936ac23137c3f6fb00fce33edbfe3d821f59
parent234b9425bebd41b556277cdd94138fafecc32b45 (diff)
downloadkdepimpi-4afdcfcac216b428ada79f4750cf7447e3175333.zip
kdepimpi-4afdcfcac216b428ada79f4750cf7447e3175333.tar.gz
kdepimpi-4afdcfcac216b428ada79f4750cf7447e3175333.tar.bz2
some fixes
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/SyncHowto.txt2
-rw-r--r--korganizer/kotodoviewitem.cpp6
-rw-r--r--microkde/kdeui/klistview.cpp14
-rw-r--r--version2
4 files changed, 16 insertions, 8 deletions
diff --git a/bin/kdepim/SyncHowto.txt b/bin/kdepim/SyncHowto.txt
index 64f6f14..b0473a1 100644
--- a/bin/kdepim/SyncHowto.txt
+++ b/bin/kdepim/SyncHowto.txt
@@ -25,129 +25,129 @@ CONTENT:
25Note: 25Note:
26The recommended and easiest way to syncronize two devices where 26The recommended and easiest way to syncronize two devices where
27KO/Pi, KA/Pi or PWM/Pi is installed, is the profile kind "Pi-Sync". 27KO/Pi, KA/Pi or PWM/Pi is installed, is the profile kind "Pi-Sync".
28Details about that in 6) b). 28Details about that in 6) b).
29 29
30In KDE-Pim/Pi you can synchronize ( sync ) your calendar/addressbook/ 30In KDE-Pim/Pi you can synchronize ( sync ) your calendar/addressbook/
31passwordfile with another calendar/addressbook/passwordfile, 31passwordfile with another calendar/addressbook/passwordfile,
32by syncing your (local) calendar/addressbook/passwordfile 32by syncing your (local) calendar/addressbook/passwordfile
33with a (remote) file. 33with a (remote) file.
34This remote file may on your local filesystem 34This remote file may on your local filesystem
35or on another (remote) device. 35or on another (remote) device.
36 36
37If you want to sync with another remote device, you have to create 37If you want to sync with another remote device, you have to create
38a sync profile. 38a sync profile.
39You have two choices for choosing the profil kind: 39You have two choices for choosing the profil kind:
40I) You can choose profile kind "Remote file" and specify a 40I) You can choose profile kind "Remote file" and specify a
41 command line download/upload command ( like scp, ftp, ...) to 41 command line download/upload command ( like scp, ftp, ...) to
42 a) download the remote file to your local machine to a temp file 42 a) download the remote file to your local machine to a temp file
43 b) sync with this temp file 43 b) sync with this temp file
44 c) upload the synced file to the remote device 44 c) upload the synced file to the remote device
45II) If you want to sync with a device, where KO/Pi( or KA/Pi, PWM/Pi) is 45II) If you want to sync with a device, where KO/Pi( or KA/Pi, PWM/Pi) is
46 installed, you can easily get the remote file via network 46 installed, you can easily get the remote file via network
47 with the build in file transfer feature: 47 with the build in file transfer feature:
48 Choose profile kind "Pi-Sync" and 48 Choose profile kind "Pi-Sync" and
49 a) Start KO/Pi,KA/Pi or PWM/Pi on remote device and 49 a) Start KO/Pi,KA/Pi or PWM/Pi on remote device and
50 enable "Pi-Sync" on remote device with password and port. 50 enable "Pi-Sync" on remote device with password and port.
51 b) Specify password, port and IP address in your profile. 51 b) Specify password, port and IP address in your profile.
52 52
53 53
54You can sync with your mobile phone as well. 54You can sync with your mobile phone as well.
55Everything is explained in more details below. 55Everything is explained in more details below.
56 56
57NOTE: 57NOTE:
58If you do not use profile kind "Pi-Sync", 58If you do not use profile kind "Pi-Sync",
59it is recommended to close 59it is recommended to close
60a running KO/Pi (KA/Pi, PWM/Pi) on the remote device. 60a running KO/Pi (KA/Pi, PWM/Pi) on the remote device.
61(Note: KO/Pi(KA/Pi, PWM/Pi) running on Zaurus with 61(Note: KO/Pi(KA/Pi, PWM/Pi) running on Zaurus with
62FastLoad enabled will never be closed!) 62FastLoad enabled will never be closed!)
63After syncing with a running KO/Pi on the remote device, 63After syncing with a running KO/Pi on the remote device,
64a "save" on the remote device will tell you that it needs to merge (sync). 64a "save" on the remote device will tell you that it needs to merge (sync).
65After merging (just a syncing with the changed file) 65After merging (just a syncing with the changed file)
66you will get the new data showing in remote KO/Pi. 66you will get the new data showing in remote KO/Pi.
67 67
68************************************************************************* 68*************************************************************************
691) Qick overview of settings 691) Qick overview of settings
70************************************************************************* 70*************************************************************************
71 71
72a) Open sync settings dialog (Menu Synchronize - Configure...) 72a) Open sync settings dialog (Menu Synchronize - Configure...)
73b) Give your device a unique name. 73b) Give your device a unique name.
74 (unique in the set of all devices you want to sync with). 74 (unique in the set of all devices you want to sync with).
75 If you have already configured another devive and created 75 If you have already configured another devive and created
76 there a sync profile to sync with this device, give your device 76 there a sync profile to sync with this device, give your device
77 the same name as this sync profile! The same name is important, 77 the same name as this sync profile! The same name is important,
78 because it makes it possible to sync first A->B 78 because it makes it possible to sync first A->B
79 (A local device, that performs the sync, B remote device) 79 (A local device, that performs the sync, B remote device)
80 and then B->A. Such that the B->A sync knows about the 80 and then B->A. Such that the B->A sync knows about the
81 already performed A->B sync. 81 already performed A->B sync.
82 That means: It is unimportant if you sync A->B or B->A, 82 That means: It is unimportant if you sync A->B or B->A,
83 the devices A and B will be synced properly. 83 the devices A and B will be synced properly.
84c) Create a new sync profile and give it a unique name. 84c) Create a new sync profile and give it a unique name.
85 (unique in the set of all sync profiles on this device). 85 (unique in the set of all sync profiles on this device).
86 If you want to sync with a device, where KO/Pi is already installed 86 If you want to sync with a device, where KO/Pi is already installed
87 and which has a given unique device name, use this device name as 87 and which has a given unique device name, use this device name as
88 your profile name ( refer to b) ). 88 your profile name ( refer to b) ).
89d) Coose the profile kind of your syncing method: 89d) Choose the profile kind of your syncing method:
90 (i) Local file or 90 (i) Local file or
91 (ii) Pi-Sync or 91 (ii) Pi-Sync or
92 (iii) Remote file or 92 (iii) Remote file or
93 (iiii) Mobile Phone. 93 (iiii) Mobile Phone.
94 Detailed explanation in 6) 94 Detailed explanation in 6)
95e) Choose the other profile options. 95e) Choose the other profile options.
96 Detailed explanation in 2) 96 Detailed explanation in 2)
97f) Close sync dialog with OK. 97f) Close sync dialog with OK.
98g) Sync. 98g) Sync.
99 99
100NOTE: 100NOTE:
101AFTER SYNCING THERE ARE "SYNC EVENTS" CREATED 101AFTER SYNCING THERE ARE "SYNC EVENTS" CREATED
102(OR UPDATED, IF IT ALREADY EXITS) FOR EACH SYNC PROFILE. 102(OR UPDATED, IF IT ALREADY EXITS) FOR EACH SYNC PROFILE.
103YOU MAY NOT DELETE OR CHANGE THESE EVENTS. 103YOU MAY NOT DELETE OR CHANGE THESE EVENTS.
104 104
105************************************************************************* 105*************************************************************************
1062) Sync settings in sync dialog 1062) Sync settings in sync dialog
107************************************************************************* 107*************************************************************************
108 108
109a) Local device name: 109a) Local device name:
110 -> 1) b) 110 -> 1) b)
111b) Profile: 111b) Profile:
112 -> 1) c) 112 -> 1) c)
113c) Multiple Sync options: Include in multiple sync: 113c) Multiple Sync options: Include in multiple sync:
114 In the Synchronize menu, there is a multiple sync menu entry. 114 In the Synchronize menu, there is a multiple sync menu entry.
115 If you choose this menu entry, all user defined profiles with this 115 If you choose this menu entry, all user defined profiles with this
116 'Include in multiple sync' option enabled will be synced 116 'Include in multiple sync' option enabled will be synced
117 one after another. And this twice. This will take some time. 117 one after another. And this twice. This will take some time.
118 After that sync, on all devices should be the same data. 118 After that sync, on all devices should be the same data.
119 119
120d)- j) Sync algo options: 120d)- j) Sync algo options:
121 121
122d) Ask for preferences before sync: 122d) Ask for preferences before sync:
123 Check this to be asked for "Sync preferences" settings before each sync. 123 Check this to be asked for "Sync preferences" settings before each sync.
124 If the profile kind is "Pi-Sync" you will be asked to confirm 124 If the profile kind is "Pi-Sync" you will be asked to confirm
125 the "Pi-Sync" specific settings (Password,IP address, port number) 125 the "Pi-Sync" specific settings (Password,IP address, port number)
126 as well. That makes it possible to use that profile for a 126 as well. That makes it possible to use that profile for a
127 device that is connected via DHCP to the network and gets different 127 device that is connected via DHCP to the network and gets different
128 IP addresses when connecting to the network. 128 IP addresses when connecting to the network.
129e) Sync preferences: 129e) Sync preferences:
130 Choose here your sync preferences. 130 Choose here your sync preferences.
131 Details -> 4) 131 Details -> 4)
132f) Show summary after sync: 132f) Show summary after sync:
133 Check this to get a small summary dialog after sync 133 Check this to get a small summary dialog after sync
134 about number of added/changed/deleted events on local/remote. 134 about number of added/changed/deleted events on local/remote.
135g) Apply filter when adding data to local: 135g) Apply filter when adding data to local:
136 What is a filter? You can read this in -> 5) 136 What is a filter? You can read this in -> 5)
137 With this option you can specify a filter for events/contacts, 137 With this option you can specify a filter for events/contacts,
138 which should be added to the local database, because they are 138 which should be added to the local database, because they are
139 in the remote database and not in the local database. 139 in the remote database and not in the local database.
140 (Database = calendar file or addressbook file). 140 (Database = calendar file or addressbook file).
141 Note that the filter is NOT applied to the remote 141 Note that the filter is NOT applied to the remote
142 database before syncing. It is only applied to a particular 142 database before syncing. It is only applied to a particular
143 item which should be added to the local database. 143 item which should be added to the local database.
144 Well, but what is the difference? 144 Well, but what is the difference?
145 The differnce is: If the remote database AND the local database contain 145 The differnce is: If the remote database AND the local database contain
146 an already synced item, which does not match the filter, then this item is synced. 146 an already synced item, which does not match the filter, then this item is synced.
147 If the remote database contains an item which does not match the filter 147 If the remote database contains an item which does not match the filter
148 and the local database does not contain this item, then this item is not added 148 and the local database does not contain this item, then this item is not added
149 to the local database, but it is still in the remote database after syncing. 149 to the local database, but it is still in the remote database after syncing.
150g) Write back synced data: 150g) Write back synced data:
151 Uncheck this to update the local calendar only. 151 Uncheck this to update the local calendar only.
152 I.e. your local calendar is synced with the remote calendar 152 I.e. your local calendar is synced with the remote calendar
153 but nothing on the remote calendar is changed. 153 but nothing on the remote calendar is changed.
diff --git a/korganizer/kotodoviewitem.cpp b/korganizer/kotodoviewitem.cpp
index 347d982..ead8628 100644
--- a/korganizer/kotodoviewitem.cpp
+++ b/korganizer/kotodoviewitem.cpp
@@ -133,185 +133,185 @@ void KOTodoViewItem::construct()
133 QTime t = mTodo->dtStart().time(); 133 QTime t = mTodo->dtStart().time();
134 skeyt.sprintf("%02d%02d",t.hour(),t.minute()); 134 skeyt.sprintf("%02d%02d",t.hour(),t.minute());
135 135
136 } 136 }
137 } else { 137 } else {
138 setText(5,""); 138 setText(5,"");
139 setText(6,""); 139 setText(6,"");
140 } 140 }
141 setSortKey(5,skeyd); 141 setSortKey(5,skeyd);
142 setSortKey(6,skeyt); 142 setSortKey(6,skeyt);
143 143
144 setText(7,mTodo->cancelled() ? i18n("Yes") : i18n("No")); 144 setText(7,mTodo->cancelled() ? i18n("Yes") : i18n("No"));
145 setText(8,mTodo->categoriesStr()); 145 setText(8,mTodo->categoriesStr());
146 146
147#if 0 147#if 0
148 // Find sort id in description. It's the text behind the last '#' character 148 // Find sort id in description. It's the text behind the last '#' character
149 // found in the description. White spaces are removed from beginning and end 149 // found in the description. White spaces are removed from beginning and end
150 // of sort id. 150 // of sort id.
151 int pos = mTodo->description().findRev('#'); 151 int pos = mTodo->description().findRev('#');
152 if (pos < 0) { 152 if (pos < 0) {
153 setText(6,""); 153 setText(6,"");
154 } else { 154 } else {
155 QString str = mTodo->description().mid(pos+1); 155 QString str = mTodo->description().mid(pos+1);
156 str.stripWhiteSpace(); 156 str.stripWhiteSpace();
157 setText(6,str); 157 setText(6,str);
158 } 158 }
159#endif 159#endif
160 160
161 m_known = false; 161 m_known = false;
162 m_init = false; 162 m_init = false;
163 163
164 setMyPixmap(); 164 setMyPixmap();
165 165
166} 166}
167void KOTodoViewItem::setMyPixmap() 167void KOTodoViewItem::setMyPixmap()
168{ 168{
169 int size = 5; 169 int size = 5;
170 QPixmap pixi = QPixmap( 1, 1 ); 170 QPixmap pixi = QPixmap( 1, 1 );
171 // if ( !mTodo->isCompleted() && mTodo->hasDueDate() && mTodo->dtDue() < QDateTime::currentDateTime() ) { 171 // if ( !mTodo->isCompleted() && mTodo->hasDueDate() && mTodo->dtDue() < QDateTime::currentDateTime() ) {
172// pixi = SmallIcon("redcross16"); 172// pixi = SmallIcon("redcross16");
173// } else { 173// } else {
174 QPainter p; 174 QPainter p;
175 175
176 int pixSize = 0; 176 int pixSize = 0;
177 QPixmap pPix = QPixmap( size, size ); 177 QPixmap pPix = QPixmap( size, size );
178 if ( mTodo->description().length() > 0 ) { 178 if ( mTodo->description().length() > 0 ) {
179 pixi.resize(size, pixSize+size); 179 pixi.resize(size, pixSize+size);
180 pPix.fill( Qt::darkGreen ); 180 pPix.fill( Qt::darkGreen );
181 p.begin( &pixi ); 181 p.begin( &pixi );
182 p. drawPixmap ( 0, pixSize, pPix); 182 p. drawPixmap ( 0, pixSize, pPix);
183 p.end(); 183 p.end();
184 pixSize += size; 184 pixSize += size;
185 } 185 }
186 if ( mTodo->isAlarmEnabled() ) { 186 if ( mTodo->isAlarmEnabled() ) {
187 pixi.resize(size, pixSize+size); 187 pixi.resize(size, pixSize+size);
188 pPix.fill( Qt::red ); 188 pPix.fill( Qt::red );
189 p.begin( &pixi ); 189 p.begin( &pixi );
190 p. drawPixmap ( 0, pixSize, pPix); 190 p. drawPixmap ( 0, pixSize, pPix);
191 p.end(); 191 p.end();
192 pixSize += size; 192 pixSize += size;
193 } 193 }
194 // } 194 // }
195 if ( pixi.width() > 1 ) { 195 if ( pixi.width() > 1 ) {
196 setPixmap ( 0,pixi ) ; 196 setPixmap ( 0,pixi ) ;
197 } else {
198 setPixmap ( 0,QPixmap() ) ;
197 } 199 }
198
199
200} 200}
201void KOTodoViewItem::stateChange(bool state) 201void KOTodoViewItem::stateChange(bool state)
202{ 202{
203 // qDebug("KOTodoViewItem::stateChange "); 203 // qDebug("KOTodoViewItem::stateChange ");
204 // do not change setting on startup 204 // do not change setting on startup
205 if ( m_init ) return; 205 if ( m_init ) return;
206 206
207 kdDebug() << "State changed, modified " << state << endl; 207 kdDebug() << "State changed, modified " << state << endl;
208 QString keyd = "=="; 208 QString keyd = "==";
209 QString keyt = "=="; 209 QString keyt = "==";
210 210
211 if (state) mTodo->setCompleted(state); 211 if (state) mTodo->setCompleted(state);
212 else mTodo->setPercentComplete(0); 212 else mTodo->setPercentComplete(0);
213 if (isOn()!=state) { 213 if (isOn()!=state) {
214 setOn(state); 214 setOn(state);
215 } 215 }
216 216
217 if (mTodo->hasDueDate()) { 217 if (mTodo->hasDueDate()) {
218 setText(3, mTodo->dtDueDateStr()); 218 setText(3, mTodo->dtDueDateStr());
219 QDate d = mTodo->dtDue().date(); 219 QDate d = mTodo->dtDue().date();
220 keyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); 220 keyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day());
221 setSortKey(3,keyd); 221 setSortKey(3,keyd);
222 if (mTodo->doesFloat()) { 222 if (mTodo->doesFloat()) {
223 setText(4,""); 223 setText(4,"");
224 } 224 }
225 else { 225 else {
226 setText(4,mTodo->dtDueTimeStr()); 226 setText(4,mTodo->dtDueTimeStr());
227 QTime t = mTodo->dtDue().time(); 227 QTime t = mTodo->dtDue().time();
228 keyt.sprintf("%02d%02d",t.hour(),t.minute()); 228 keyt.sprintf("%02d%02d",t.hour(),t.minute());
229 setSortKey(4,keyt); 229 setSortKey(4,keyt);
230 } 230 }
231 } 231 }
232 if (mTodo->isCompleted()) setSortKey(1,QString::number(9)+keyd+keyt); 232 if (mTodo->isCompleted()) setSortKey(1,QString::number(9)+keyd+keyt);
233 else setSortKey(1,QString::number(mTodo->priority())+keyd+keyt); 233 else setSortKey(1,QString::number(mTodo->priority())+keyd+keyt);
234 234
235 setText(2,i18n("%1 %").arg(QString::number(mTodo->percentComplete()))); 235 setText(2,i18n("%1 %").arg(QString::number(mTodo->percentComplete())));
236 if (mTodo->percentComplete()<100) { 236 if (mTodo->percentComplete()<100) {
237 if (mTodo->isCompleted()) setSortKey(2,QString::number(999)); 237 if (mTodo->isCompleted()) setSortKey(2,QString::number(999));
238 else setSortKey(2,QString::number(mTodo->percentComplete())); 238 else setSortKey(2,QString::number(mTodo->percentComplete()));
239 } 239 }
240 else { 240 else {
241 if (mTodo->isCompleted()) setSortKey(2,QString::number(999)); 241 if (mTodo->isCompleted()) setSortKey(2,QString::number(999));
242 else setSortKey(2,QString::number(99)); 242 else setSortKey(2,QString::number(99));
243 } 243 }
244 QListViewItem * myChild = firstChild(); 244 QListViewItem * myChild = firstChild();
245 KOTodoViewItem *item; 245 KOTodoViewItem *item;
246 while( myChild ) { 246 while( myChild ) {
247 item = static_cast<KOTodoViewItem*>(myChild); 247 item = static_cast<KOTodoViewItem*>(myChild);
248 item->stateChange(state); 248 item->stateChange(state);
249 myChild = myChild->nextSibling(); 249 myChild = myChild->nextSibling();
250 } 250 }
251 mTodoView->modified(true); 251 mTodoView->modified(true);
252 mTodoView->setTodoModified( mTodo );
253 setMyPixmap(); 252 setMyPixmap();
253 mTodoView->setTodoModified( mTodo );
254} 254}
255 255
256bool KOTodoViewItem::isAlternate() 256bool KOTodoViewItem::isAlternate()
257{ 257{
258#ifndef KORG_NOLVALTERNATION 258#ifndef KORG_NOLVALTERNATION
259 KOTodoListView *lv = static_cast<KOTodoListView *>(listView()); 259 KOTodoListView *lv = static_cast<KOTodoListView *>(listView());
260 if (lv && lv->alternateBackground().isValid()) 260 if (lv && lv->alternateBackground().isValid())
261 { 261 {
262 KOTodoViewItem *above = 0; 262 KOTodoViewItem *above = 0;
263 above = dynamic_cast<KOTodoViewItem *>(itemAbove()); 263 above = dynamic_cast<KOTodoViewItem *>(itemAbove());
264 m_known = above ? above->m_known : true; 264 m_known = above ? above->m_known : true;
265 if (m_known) 265 if (m_known)
266 { 266 {
267 m_odd = above ? !above->m_odd : false; 267 m_odd = above ? !above->m_odd : false;
268 } 268 }
269 else 269 else
270 { 270 {
271 KOTodoViewItem *item; 271 KOTodoViewItem *item;
272 bool previous = true; 272 bool previous = true;
273 if (QListViewItem::parent()) 273 if (QListViewItem::parent())
274 { 274 {
275 item = dynamic_cast<KOTodoViewItem *>(QListViewItem::parent()); 275 item = dynamic_cast<KOTodoViewItem *>(QListViewItem::parent());
276 if (item) 276 if (item)
277 previous = item->m_odd; 277 previous = item->m_odd;
278 item = dynamic_cast<KOTodoViewItem *>(QListViewItem::parent()->firstChild()); 278 item = dynamic_cast<KOTodoViewItem *>(QListViewItem::parent()->firstChild());
279 } 279 }
280 else 280 else
281 { 281 {
282 item = dynamic_cast<KOTodoViewItem *>(lv->firstChild()); 282 item = dynamic_cast<KOTodoViewItem *>(lv->firstChild());
283 } 283 }
284 284
285 while(item) 285 while(item)
286 { 286 {
287 item->m_odd = previous = !previous; 287 item->m_odd = previous = !previous;
288 item->m_known = true; 288 item->m_known = true;
289 item = dynamic_cast<KOTodoViewItem *>(item->nextSibling()); 289 item = dynamic_cast<KOTodoViewItem *>(item->nextSibling());
290 } 290 }
291 } 291 }
292 return m_odd; 292 return m_odd;
293 } 293 }
294 return false; 294 return false;
295#else 295#else
296 return false; 296 return false;
297#endif 297#endif
298} 298}
299 299
300void KOTodoViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment) 300void KOTodoViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment)
301{ 301{
302 QColorGroup _cg = cg; 302 QColorGroup _cg = cg;
303 QColorGroup::ColorRole role; 303 QColorGroup::ColorRole role;
304 if ( KOPrefs::instance()->mTodoViewUsesForegroundColor ) 304 if ( KOPrefs::instance()->mTodoViewUsesForegroundColor )
305 role = QColorGroup::Text; 305 role = QColorGroup::Text;
306 else 306 else
307 role = QColorGroup::Base; 307 role = QColorGroup::Base;
308 //#ifndef KORG_NOLVALTERNATION 308 //#ifndef KORG_NOLVALTERNATION
309 // if (isAlternate()) 309 // if (isAlternate())
310 // _cg.setColor(QColorGroup::Base, static_cast< KOTodoListView* >(listView())->alternateBackground()); 310 // _cg.setColor(QColorGroup::Base, static_cast< KOTodoListView* >(listView())->alternateBackground());
311 bool setColor = KOPrefs::instance()->mTodoViewUsesCatColors; 311 bool setColor = KOPrefs::instance()->mTodoViewUsesCatColors;
312 QColor colorToSet; 312 QColor colorToSet;
313 if ( setColor ) { 313 if ( setColor ) {
314 QStringList categories = mTodo->categories(); 314 QStringList categories = mTodo->categories();
315 QString cat = categories.first(); 315 QString cat = categories.first();
316 if ( !cat.isEmpty()) { 316 if ( !cat.isEmpty()) {
317 colorToSet = *(KOPrefs::instance()->categoryColor(cat) ); 317 colorToSet = *(KOPrefs::instance()->categoryColor(cat) );
diff --git a/microkde/kdeui/klistview.cpp b/microkde/kdeui/klistview.cpp
index 6859d36..154cd02 100644
--- a/microkde/kdeui/klistview.cpp
+++ b/microkde/kdeui/klistview.cpp
@@ -1848,131 +1848,139 @@ void KListView::setSelectionModeExt (SelectionModeExt mode)
1848 setSelectionMode (QListView::Extended); 1848 setSelectionMode (QListView::Extended);
1849 break; 1849 break;
1850 1850
1851 default: 1851 default:
1852 kdWarning () << "Warning: illegal selection mode " << int(mode) << " set!" << endl; 1852 kdWarning () << "Warning: illegal selection mode " << int(mode) << " set!" << endl;
1853 break; 1853 break;
1854 } 1854 }
1855} 1855}
1856 1856
1857KListView::SelectionModeExt KListView::selectionModeExt () const 1857KListView::SelectionModeExt KListView::selectionModeExt () const
1858{ 1858{
1859 return d->selectionMode; 1859 return d->selectionMode;
1860} 1860}
1861 1861
1862int KListView::itemIndex( const QListViewItem *item ) const 1862int KListView::itemIndex( const QListViewItem *item ) const
1863{ 1863{
1864 if ( !item ) 1864 if ( !item )
1865 return -1; 1865 return -1;
1866 1866
1867 if ( item == firstChild() ) 1867 if ( item == firstChild() )
1868 return 0; 1868 return 0;
1869 else { 1869 else {
1870 QListViewItemIterator it(firstChild()); 1870 QListViewItemIterator it(firstChild());
1871 uint j = 0; 1871 uint j = 0;
1872 for (; it.current() && it.current() != item; ++it, ++j ); 1872 for (; it.current() && it.current() != item; ++it, ++j );
1873 1873
1874 if( !it.current() ) 1874 if( !it.current() )
1875 return -1; 1875 return -1;
1876 1876
1877 return j; 1877 return j;
1878 } 1878 }
1879} 1879}
1880 1880
1881QListViewItem* KListView::itemAtIndex(int index) 1881QListViewItem* KListView::itemAtIndex(int index)
1882{ 1882{
1883 if (index<0) 1883 if (index<0)
1884 return 0; 1884 return 0;
1885 1885
1886 int j(0); 1886 int j(0);
1887 for (QListViewItemIterator it=firstChild(); it.current(); it++) 1887 for (QListViewItemIterator it=firstChild(); it.current(); it++)
1888 { 1888 {
1889 if (j==index) 1889 if (j==index)
1890 return it.current(); 1890 return it.current();
1891 j++; 1891 j++;
1892 }; 1892 };
1893 return 0; 1893 return 0;
1894} 1894}
1895 1895
1896 1896
1897void KListView::emitContextMenu (KListView*, QListViewItem* i) 1897void KListView::emitContextMenu (KListView*, QListViewItem* i)
1898{ 1898{
1899 QPoint p; 1899 QPoint p;
1900 // qDebug("KListView::emitContextMenu "); 1900 // qDebug("KListView::emitContextMenu ");
1901 1901
1902 if (i) 1902 if (i)
1903 p = viewport()->mapToGlobal(itemRect(i).center()); 1903 p = viewport()->mapToGlobal(itemRect(i).center());
1904 else 1904 else
1905 p = mapToGlobal(rect().center()); 1905 p = mapToGlobal(rect().center());
1906 1906
1907 emit contextMenu (this, i, p); 1907 emit contextMenu (this, i, p);
1908} 1908}
1909 1909
1910void KListView::emitContextMenu (QListViewItem* i, const QPoint& p, int col) 1910void KListView::emitContextMenu (QListViewItem* i, const QPoint& p, int col)
1911{ 1911{
1912 // qDebug("KListView::emitContextMenu col"); 1912 QListViewItem* item = i;
1913 emit contextRequest( i, p, col ); 1913 int c = col;
1914 emit contextMenu (this, i, p); 1914 // do not trust the values for QListViewItem* i and int col;
1915 // qDebug("KListView::emitContextMenu col");
1916 if ( col == -1 ) {
1917 QPoint pp = viewport()->mapFromGlobal(p);
1918 item = itemAt( pp);
1919 c = header()->sectionAt(pp.x() );
1920 }
1921 emit contextRequest( item, p, c );
1922 emit contextMenu (this, item, p);
1915} 1923}
1916 1924
1917void KListView::setAcceptDrops (bool val) 1925void KListView::setAcceptDrops (bool val)
1918{ 1926{
1919 QListView::setAcceptDrops (val); 1927 QListView::setAcceptDrops (val);
1920 viewport()->setAcceptDrops (val); 1928 viewport()->setAcceptDrops (val);
1921} 1929}
1922 1930
1923int KListView::dropVisualizerWidth () const 1931int KListView::dropVisualizerWidth () const
1924{ 1932{
1925 return d->mDropVisualizerWidth; 1933 return d->mDropVisualizerWidth;
1926} 1934}
1927 1935
1928 1936
1929void KListView::viewportPaintEvent(QPaintEvent *e) 1937void KListView::viewportPaintEvent(QPaintEvent *e)
1930{ 1938{
1931 QListView::viewportPaintEvent(e); 1939 QListView::viewportPaintEvent(e);
1932 1940
1933 if (d->mOldDropVisualizer.isValid() && e->rect().intersects(d->mOldDropVisualizer)) 1941 if (d->mOldDropVisualizer.isValid() && e->rect().intersects(d->mOldDropVisualizer))
1934 { 1942 {
1935 QPainter painter(viewport()); 1943 QPainter painter(viewport());
1936 1944
1937 // This is where we actually draw the drop-visualizer 1945 // This is where we actually draw the drop-visualizer
1938 painter.fillRect(d->mOldDropVisualizer, Dense4Pattern); 1946 painter.fillRect(d->mOldDropVisualizer, Dense4Pattern);
1939 } 1947 }
1940 if (d->mOldDropHighlighter.isValid() && e->rect().intersects(d->mOldDropHighlighter)) 1948 if (d->mOldDropHighlighter.isValid() && e->rect().intersects(d->mOldDropHighlighter))
1941 { 1949 {
1942 QPainter painter(viewport()); 1950 QPainter painter(viewport());
1943 1951
1944qDebug("KListView::viewportPaintEvent has to be verified"); 1952qDebug("KListView::viewportPaintEvent has to be verified");
1945 1953
1946 // This is where we actually draw the drop-highlighter 1954 // This is where we actually draw the drop-highlighter
1947//US style().drawPrimitive(QStyle::PE_FocusRect, &painter, d->mOldDropHighlighter, colorGroup(), 1955//US style().drawPrimitive(QStyle::PE_FocusRect, &painter, d->mOldDropHighlighter, colorGroup(),
1948//US QStyle::Style_FocusAtBorder); 1956//US QStyle::Style_FocusAtBorder);
1949 1957
1950//LR style().drawFocusRect(&painter, d->mOldDropHighlighter, colorGroup(), (const QColor*)0, true); 1958//LR style().drawFocusRect(&painter, d->mOldDropHighlighter, colorGroup(), (const QColor*)0, true);
1951 1959
1952 1960
1953 } 1961 }
1954} 1962}
1955 1963
1956void KListView::setFullWidth() 1964void KListView::setFullWidth()
1957{ 1965{
1958 setFullWidth(true); 1966 setFullWidth(true);
1959} 1967}
1960 1968
1961void KListView::setFullWidth(bool fullWidth) 1969void KListView::setFullWidth(bool fullWidth)
1962{ 1970{
1963 d->fullWidth = fullWidth; 1971 d->fullWidth = fullWidth;
1964//US header()->setStretchEnabled(fullWidth, columns()-1); 1972//US header()->setStretchEnabled(fullWidth, columns()-1);
1965} 1973}
1966 1974
1967bool KListView::fullWidth() const 1975bool KListView::fullWidth() const
1968{ 1976{
1969 return d->fullWidth; 1977 return d->fullWidth;
1970} 1978}
1971 1979
1972int KListView::addColumn(const QString& label, int width) 1980int KListView::addColumn(const QString& label, int width)
1973{ 1981{
1974 int result = QListView::addColumn(label, width); 1982 int result = QListView::addColumn(label, width);
1975 if (d->fullWidth) { 1983 if (d->fullWidth) {
1976//US header()->setStretchEnabled(false, columns()-2); 1984//US header()->setStretchEnabled(false, columns()-2);
1977//US header()->setStretchEnabled(true, columns()-1); 1985//US header()->setStretchEnabled(true, columns()-1);
1978 } 1986 }
diff --git a/version b/version
index dedf950..02b0fb1 100644
--- a/version
+++ b/version
@@ -1 +1 @@
version = "1.9.19"; version = "1.9.20";