summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/addresseedialog.cpp2
-rw-r--r--microkde/kdecore/kstandarddirs.cpp14
2 files changed, 14 insertions, 2 deletions
diff --git a/kabc/addresseedialog.cpp b/kabc/addresseedialog.cpp
index 9ea9d04..34f4160 100644
--- a/kabc/addresseedialog.cpp
+++ b/kabc/addresseedialog.cpp
@@ -1,293 +1,293 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21#include <qlayout.h> 21#include <qlayout.h>
22#include <qpushbutton.h> 22#include <qpushbutton.h>
23#include <qgroupbox.h> 23#include <qgroupbox.h>
24#include <qapplication.h> 24#include <qapplication.h>
25#include <qregexp.h> 25#include <qregexp.h>
26 26
27#include <klocale.h> 27#include <klocale.h>
28#include <kdebug.h> 28#include <kdebug.h>
29#include <kglobalsettings.h> 29#include <kglobalsettings.h>
30 30
31#include "stdaddressbook.h" 31#include "stdaddressbook.h"
32 32
33#include "addresseedialog.h" 33#include "addresseedialog.h"
34//#include "addresseedialog.moc" 34//#include "addresseedialog.moc"
35 35
36using namespace KABC; 36using namespace KABC;
37 37
38AddresseeItem::AddresseeItem( QListView *parent, const Addressee &addressee ) : 38AddresseeItem::AddresseeItem( QListView *parent, const Addressee &addressee ) :
39 QListViewItem( parent ), 39 QListViewItem( parent ),
40 mAddressee( addressee ) 40 mAddressee( addressee )
41{ 41{
42 QString name = addressee.familyName()+", "+ addressee.givenName(); 42 QString name = addressee.familyName()+", "+ addressee.givenName();
43 if ( name.length() == 2 ) 43 if ( name.length() == 2 )
44 name = addressee.organization(); 44 name = addressee.organization();
45 setText( Name,name); 45 setText( Name,name);
46 setText( Email, addressee.preferredEmail() ); 46 setText( Email, addressee.preferredEmail() );
47} 47}
48 48
49QString AddresseeItem::key( int column, bool ) const 49QString AddresseeItem::key( int column, bool ) const
50{ 50{
51 51
52 if (column == Email) { 52 if (column == Email) {
53 QString value = text(Email); 53 QString value = text(Email);
54 int val = value.findRev("@"); 54 int val = value.findRev("@");
55 return value.mid( val) + value.left( val ); 55 return value.mid( val) + value.left( val );
56 } 56 }
57 return text(column).lower(); 57 return text(column).lower();
58} 58}
59 59
60AddresseeDialog::AddresseeDialog( QWidget *parent, bool multiple ) : 60AddresseeDialog::AddresseeDialog( QWidget *parent, bool multiple ) :
61 KDialogBase( KDialogBase::Plain, i18n("Select Addressee"), 61 KDialogBase( KDialogBase::Plain, i18n("Select Addressee"),
62 Ok|Cancel, Ok, parent ), mMultiple( multiple ) 62 Ok|Cancel, Ok, parent ), mMultiple( multiple )
63{ 63{
64 QWidget *topWidget = plainPage(); 64 QWidget *topWidget = plainPage();
65 65
66 QBoxLayout *topLayout = new QHBoxLayout( topWidget ); 66 QBoxLayout *topLayout = new QHBoxLayout( topWidget );
67 QBoxLayout *listLayout = new QVBoxLayout; 67 QBoxLayout *listLayout = new QVBoxLayout;
68 topLayout->addLayout( listLayout ); 68 topLayout->addLayout( listLayout );
69 69
70 mAddresseeList = new KListView( topWidget ); 70 mAddresseeList = new KListView( topWidget );
71 mAddresseeList->addColumn( i18n("Name") ); 71 mAddresseeList->addColumn( i18n("Name") );
72 mAddresseeList->addColumn( i18n("Email") ); 72 mAddresseeList->addColumn( i18n("Email") );
73 mAddresseeList->setAllColumnsShowFocus( true ); 73 mAddresseeList->setAllColumnsShowFocus( true );
74 mAddresseeList->setFullWidth( true ); 74 mAddresseeList->setFullWidth( true );
75 listLayout->addWidget( mAddresseeList ); 75 listLayout->addWidget( mAddresseeList );
76 connect( mAddresseeList, SIGNAL( doubleClicked( QListViewItem * ) ), 76 connect( mAddresseeList, SIGNAL( doubleClicked( QListViewItem * ) ),
77 SLOT( slotOk() ) ); 77 SLOT( slotOk() ) );
78 78
79 mAddresseeEdit = new QLineEdit( topWidget ); 79 mAddresseeEdit = new QLineEdit( topWidget );
80 connect( mAddresseeEdit, SIGNAL( returnPressed() ), 80 connect( mAddresseeEdit, SIGNAL( returnPressed() ),
81 SLOT( loadAddressBook() ) ); 81 SLOT( loadAddressBook() ) );
82 mAddresseeEdit->setFocus(); 82 mAddresseeEdit->setFocus();
83 83
84 listLayout->addWidget( mAddresseeEdit ); 84 listLayout->addWidget( mAddresseeEdit );
85 85
86 if ( mMultiple ) { 86 if ( mMultiple ) {
87 QBoxLayout *selectedLayout = new QVBoxLayout; 87 QBoxLayout *selectedLayout = new QVBoxLayout;
88 topLayout->addLayout( selectedLayout ); 88 topLayout->addLayout( selectedLayout );
89 topLayout->setSpacing( spacingHint() ); 89 topLayout->setSpacing( spacingHint() );
90 90
91 QGroupBox *selectedGroup = new QGroupBox( 1, Horizontal, i18n("Selected"), 91 QGroupBox *selectedGroup = new QGroupBox( 1, Horizontal, i18n("Selected"),
92 topWidget ); 92 topWidget );
93 selectedLayout->addWidget( selectedGroup ); 93 selectedLayout->addWidget( selectedGroup );
94 94
95 mSelectedList = new KListView( selectedGroup ); 95 mSelectedList = new KListView( selectedGroup );
96 mSelectedList->addColumn( i18n("Name") ); 96 mSelectedList->addColumn( i18n("Name") );
97 mSelectedList->addColumn( i18n("Email") ); 97 mSelectedList->addColumn( i18n("Email") );
98 mSelectedList->setAllColumnsShowFocus( true ); 98 mSelectedList->setAllColumnsShowFocus( true );
99 mSelectedList->setFullWidth( true ); 99 mSelectedList->setFullWidth( true );
100 connect( mSelectedList, SIGNAL( doubleClicked( QListViewItem * ) ), 100 connect( mSelectedList, SIGNAL( doubleClicked( QListViewItem * ) ),
101 SLOT( removeSelected() ) ); 101 SLOT( removeSelected() ) );
102 102
103 QPushButton *unselectButton = new QPushButton( i18n("Unselect"), selectedGroup ); 103 QPushButton *unselectButton = new QPushButton( i18n("Unselect"), selectedGroup );
104 connect ( unselectButton, SIGNAL( clicked() ), SLOT( removeSelected() ) ); 104 connect ( unselectButton, SIGNAL( clicked() ), SLOT( removeSelected() ) );
105 105
106 connect( mAddresseeList, SIGNAL( clicked( QListViewItem * ) ), 106 connect( mAddresseeList, SIGNAL( clicked( QListViewItem * ) ),
107 SLOT( addSelected( QListViewItem * ) ) ); 107 SLOT( addSelected( QListViewItem * ) ) );
108 connect( mAddresseeList, SIGNAL( returnPressed( QListViewItem * ) ), 108 connect( mAddresseeList, SIGNAL( returnPressed( QListViewItem * ) ),
109 SLOT( selectNextItem( QListViewItem * ) ) ); 109 SLOT( selectNextItem( QListViewItem * ) ) );
110 110
111 } 111 }
112 112
113 mAddressBook = StdAddressBook::self( true ); 113 mAddressBook = StdAddressBook::self( true );
114 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook* ) ), 114 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook* ) ),
115 SLOT( addressBookChanged() ) ); 115 SLOT( addressBookChanged() ) );
116 connect( mAddressBook, SIGNAL( loadingFinished( Resource* ) ), 116 connect( mAddressBook, SIGNAL( loadingFinished( Resource* ) ),
117 SLOT( addressBookChanged() ) ); 117 SLOT( addressBookChanged() ) );
118 118
119 loadAddressBook(); 119 loadAddressBook();
120} 120}
121 121
122AddresseeDialog::~AddresseeDialog() 122AddresseeDialog::~AddresseeDialog()
123{ 123{
124} 124}
125 125
126void AddresseeDialog::loadAddressBook() 126void AddresseeDialog::loadAddressBook()
127{ 127{
128 mAddresseeList->clear(); 128 mAddresseeList->clear();
129 mItemDict.clear(); 129 mItemDict.clear();
130 if ( mAddresseeEdit->text().isEmpty() ) { 130 if ( mAddresseeEdit->text().isEmpty() ) {
131 AddressBook::Iterator it; 131 AddressBook::Iterator it;
132 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 132 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
133 if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) 133 if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") )
134 continue; 134 continue;
135 new AddresseeItem( mAddresseeList, (*it) ); 135 new AddresseeItem( mAddresseeList, (*it) );
136 } 136 }
137 return; 137 return;
138 } 138 }
139 //mAddresseeEdit->completionObject()->clear(); 139 //mAddresseeEdit->completionObject()->clear();
140 QRegExp re; 140 QRegExp re;
141 re.setWildcard(true); // most people understand these better. 141 re.setWildcard(true); // most people understand these better.
142 re.setCaseSensitive(false); 142 re.setCaseSensitive(false);
143 re.setPattern( "*"+ mAddresseeEdit->text() + "*"); 143 re.setPattern( "*"+ mAddresseeEdit->text() + "*");
144 144
145 AddressBook::Iterator it; 145 AddressBook::Iterator it;
146 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 146 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
147 if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) 147 if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") )
148 continue; 148 continue;
149 QString name = (*it).familyName()+", "+ (*it).givenName(); 149 QString name = (*it).familyName()+", "+ (*it).givenName();
150 if ( name.length() == 2 ) 150 if ( name.length() == 2 )
151 name = (*it).realName(); 151 name = (*it).realName();
152 name += (*it).preferredEmail(); 152 name += (*it).preferredEmail();
153#if QT_VERSION >= 300 153#if QT_VERSION >= 0x030000
154 if (re.search(name) != -1) 154 if (re.search(name) != -1)
155#else 155#else
156 if (re.match(name) != -1) 156 if (re.match(name) != -1)
157#endif 157#endif
158 AddresseeItem *item = new AddresseeItem( mAddresseeList, (*it) ); 158 AddresseeItem *item = new AddresseeItem( mAddresseeList, (*it) );
159 } 159 }
160} 160}
161 161
162void AddresseeDialog::addCompletionItem( const QString &str, QListViewItem *item ) 162void AddresseeDialog::addCompletionItem( const QString &str, QListViewItem *item )
163{ 163{
164 if ( str.isEmpty() ) return; 164 if ( str.isEmpty() ) return;
165 165
166 mItemDict.insert( str, item ); 166 mItemDict.insert( str, item );
167 //mAddresseeEdit->completionObject()->addItem( str ); 167 //mAddresseeEdit->completionObject()->addItem( str );
168} 168}
169 169
170void AddresseeDialog::selectItem( const QString &str ) 170void AddresseeDialog::selectItem( const QString &str )
171{ 171{
172 if ( str.isEmpty() ) return; 172 if ( str.isEmpty() ) return;
173 173
174 QListViewItem *item = mItemDict.find( str ); 174 QListViewItem *item = mItemDict.find( str );
175 if ( item ) { 175 if ( item ) {
176 mAddresseeList->blockSignals( true ); 176 mAddresseeList->blockSignals( true );
177 mAddresseeList->setSelected( item, true ); 177 mAddresseeList->setSelected( item, true );
178 mAddresseeList->ensureItemVisible( item ); 178 mAddresseeList->ensureItemVisible( item );
179 mAddresseeList->blockSignals( false ); 179 mAddresseeList->blockSignals( false );
180 } 180 }
181} 181}
182 182
183void AddresseeDialog::updateEdit( QListViewItem *item ) 183void AddresseeDialog::updateEdit( QListViewItem *item )
184{ 184{
185 mAddresseeEdit->setText( item->text( 0 ) ); 185 mAddresseeEdit->setText( item->text( 0 ) );
186 mAddresseeEdit->setSelection( 0, item->text( 0 ).length() ); 186 mAddresseeEdit->setSelection( 0, item->text( 0 ).length() );
187} 187}
188 188
189void AddresseeDialog::selectNextItem( QListViewItem *item ) 189void AddresseeDialog::selectNextItem( QListViewItem *item )
190{ 190{
191 addSelected( item ); 191 addSelected( item );
192 QListViewItem *next = item->nextSibling(); 192 QListViewItem *next = item->nextSibling();
193 if ( next ) { 193 if ( next ) {
194 next->setSelected( true ); 194 next->setSelected( true );
195 item->setSelected( false ); 195 item->setSelected( false );
196 mAddresseeList->setCurrentItem( next ); 196 mAddresseeList->setCurrentItem( next );
197 } 197 }
198} 198}
199void AddresseeDialog::addSelected( QListViewItem *item ) 199void AddresseeDialog::addSelected( QListViewItem *item )
200{ 200{
201 AddresseeItem *addrItem = (AddresseeItem *)( item ); 201 AddresseeItem *addrItem = (AddresseeItem *)( item );
202 if ( !addrItem ) return; 202 if ( !addrItem ) return;
203 203
204 Addressee a = addrItem->addressee(); 204 Addressee a = addrItem->addressee();
205 205
206 QListViewItem *selectedItem = mSelectedDict.find( a.uid() ); 206 QListViewItem *selectedItem = mSelectedDict.find( a.uid() );
207 if ( !selectedItem ) { 207 if ( !selectedItem ) {
208 selectedItem = new AddresseeItem( mSelectedList, a ); 208 selectedItem = new AddresseeItem( mSelectedList, a );
209 mSelectedDict.insert( a.uid(), selectedItem ); 209 mSelectedDict.insert( a.uid(), selectedItem );
210 } 210 }
211 211
212} 212}
213 213
214void AddresseeDialog::removeSelected() 214void AddresseeDialog::removeSelected()
215{ 215{
216 QListViewItem *item = mSelectedList->selectedItem(); 216 QListViewItem *item = mSelectedList->selectedItem();
217 AddresseeItem *addrItem = (AddresseeItem *)( item ); 217 AddresseeItem *addrItem = (AddresseeItem *)( item );
218 if ( !addrItem ) return; 218 if ( !addrItem ) return;
219 QListViewItem *next = item->nextSibling(); 219 QListViewItem *next = item->nextSibling();
220 mSelectedDict.remove( addrItem->addressee().uid() ); 220 mSelectedDict.remove( addrItem->addressee().uid() );
221 delete addrItem; 221 delete addrItem;
222 if ( next ) 222 if ( next )
223 next->setSelected( true ); 223 next->setSelected( true );
224} 224}
225 225
226Addressee AddresseeDialog::addressee() 226Addressee AddresseeDialog::addressee()
227{ 227{
228 AddresseeItem *aItem = 0; 228 AddresseeItem *aItem = 0;
229 229
230 if ( mMultiple ) 230 if ( mMultiple )
231 aItem = (AddresseeItem *)( mSelectedList->firstChild() ); 231 aItem = (AddresseeItem *)( mSelectedList->firstChild() );
232 else 232 else
233 aItem = (AddresseeItem *)( mAddresseeList->selectedItem() ); 233 aItem = (AddresseeItem *)( mAddresseeList->selectedItem() );
234 234
235 if (aItem) return aItem->addressee(); 235 if (aItem) return aItem->addressee();
236 return Addressee(); 236 return Addressee();
237} 237}
238 238
239Addressee::List AddresseeDialog::addressees() 239Addressee::List AddresseeDialog::addressees()
240{ 240{
241 Addressee::List al; 241 Addressee::List al;
242 AddresseeItem *aItem = 0; 242 AddresseeItem *aItem = 0;
243 243
244 if ( mMultiple ) { 244 if ( mMultiple ) {
245 QListViewItem *item = mSelectedList->firstChild(); 245 QListViewItem *item = mSelectedList->firstChild();
246 while( item ) { 246 while( item ) {
247 aItem = (AddresseeItem *)( item ); 247 aItem = (AddresseeItem *)( item );
248 if ( aItem ) al.append( aItem->addressee() ); 248 if ( aItem ) al.append( aItem->addressee() );
249 item = item->nextSibling(); 249 item = item->nextSibling();
250 } 250 }
251 } 251 }
252 else 252 else
253 { 253 {
254 aItem = (AddresseeItem *)( mAddresseeList->selectedItem() ); 254 aItem = (AddresseeItem *)( mAddresseeList->selectedItem() );
255 if (aItem) al.append( aItem->addressee() ); 255 if (aItem) al.append( aItem->addressee() );
256 } 256 }
257 257
258 return al; 258 return al;
259} 259}
260 260
261Addressee AddresseeDialog::getAddressee( QWidget *parent ) 261Addressee AddresseeDialog::getAddressee( QWidget *parent )
262{ 262{
263 AddresseeDialog *dlg = new AddresseeDialog( parent ); 263 AddresseeDialog *dlg = new AddresseeDialog( parent );
264 Addressee addressee; 264 Addressee addressee;
265 int result = dlg->exec(); 265 int result = dlg->exec();
266 266
267 if ( result == QDialog::Accepted ) { 267 if ( result == QDialog::Accepted ) {
268 addressee = dlg->addressee(); 268 addressee = dlg->addressee();
269 } 269 }
270 270
271 delete dlg; 271 delete dlg;
272 return addressee; 272 return addressee;
273} 273}
274 274
275Addressee::List AddresseeDialog::getAddressees( QWidget *parent ) 275Addressee::List AddresseeDialog::getAddressees( QWidget *parent )
276{ 276{
277 AddresseeDialog *dlg = new AddresseeDialog( parent, true ); 277 AddresseeDialog *dlg = new AddresseeDialog( parent, true );
278 Addressee::List addressees; 278 Addressee::List addressees;
279 if ( QApplication::desktop()->width() <= 640 ) 279 if ( QApplication::desktop()->width() <= 640 )
280 dlg->showMaximized(); 280 dlg->showMaximized();
281 int result = dlg->exec(); 281 int result = dlg->exec();
282 if ( result == QDialog::Accepted ) { 282 if ( result == QDialog::Accepted ) {
283 addressees = dlg->addressees(); 283 addressees = dlg->addressees();
284 } 284 }
285 285
286 delete dlg; 286 delete dlg;
287 return addressees; 287 return addressees;
288} 288}
289 289
290void AddresseeDialog::addressBookChanged() 290void AddresseeDialog::addressBookChanged()
291{ 291{
292 loadAddressBook(); 292 loadAddressBook();
293} 293}
diff --git a/microkde/kdecore/kstandarddirs.cpp b/microkde/kdecore/kstandarddirs.cpp
index f3584d7..cf0d1ee 100644
--- a/microkde/kdecore/kstandarddirs.cpp
+++ b/microkde/kdecore/kstandarddirs.cpp
@@ -1094,385 +1094,397 @@ bool KStandardDirs::makeDir(const QString& dir2, int mode)
1094 return false; 1094 return false;
1095 1095
1096 QString target = dir; 1096 QString target = dir;
1097 uint len = target.length(); 1097 uint len = target.length();
1098 1098
1099 // append trailing slash if missing 1099 // append trailing slash if missing
1100 if (dir.at(len - 1) != '/') 1100 if (dir.at(len - 1) != '/')
1101 target += '/'; 1101 target += '/';
1102 1102
1103 QString base(""); 1103 QString base("");
1104 uint i = 1; 1104 uint i = 1;
1105 1105
1106 while( i < len ) 1106 while( i < len )
1107 { 1107 {
1108//US struct stat st; 1108//US struct stat st;
1109 int pos = target.find('/', i); 1109 int pos = target.find('/', i);
1110 base += target.mid(i - 1, pos - i + 1); 1110 base += target.mid(i - 1, pos - i + 1);
1111 QCString baseEncoded = QFile::encodeName(base); 1111 QCString baseEncoded = QFile::encodeName(base);
1112 // bail out if we encountered a problem 1112 // bail out if we encountered a problem
1113//US if (stat(baseEncoded, &st) != 0) 1113//US if (stat(baseEncoded, &st) != 0)
1114 QFileInfo baseEncodedInfo(baseEncoded); 1114 QFileInfo baseEncodedInfo(baseEncoded);
1115 if (!baseEncodedInfo.exists()) 1115 if (!baseEncodedInfo.exists())
1116 { 1116 {
1117 // Directory does not exist.... 1117 // Directory does not exist....
1118 // Or maybe a dangling symlink ? 1118 // Or maybe a dangling symlink ?
1119//US if (lstat(baseEncoded, &st) == 0) 1119//US if (lstat(baseEncoded, &st) == 0)
1120 if (baseEncodedInfo.isSymLink()) { 1120 if (baseEncodedInfo.isSymLink()) {
1121//US (void)unlink(baseEncoded); // try removing 1121//US (void)unlink(baseEncoded); // try removing
1122 QFile(baseEncoded).remove(); 1122 QFile(baseEncoded).remove();
1123 } 1123 }
1124 1124
1125 //US if ( mkdir(baseEncoded, (mode_t) mode) != 0) 1125 //US if ( mkdir(baseEncoded, (mode_t) mode) != 0)
1126 QDir dirObj; 1126 QDir dirObj;
1127 if ( dirObj.mkdir(baseEncoded) != true ) 1127 if ( dirObj.mkdir(baseEncoded) != true )
1128 { 1128 {
1129 //US perror("trying to create local folder"); 1129 //US perror("trying to create local folder");
1130 return false; // Couldn't create it :-( 1130 return false; // Couldn't create it :-(
1131 } 1131 }
1132 } 1132 }
1133 i = pos + 1; 1133 i = pos + 1;
1134 } 1134 }
1135 return true; 1135 return true;
1136#endif 1136#endif
1137 1137
1138 // ******************************************** 1138 // ********************************************
1139 // new code for WIN32 1139 // new code for WIN32
1140 QDir dirObj; 1140 QDir dirObj;
1141 1141
1142 1142
1143 // we want an absolute path 1143 // we want an absolute path
1144#ifndef _WIN32_ 1144#ifndef _WIN32_
1145 if (dir.at(0) != '/') 1145 if (dir.at(0) != '/')
1146 return false; 1146 return false;
1147#endif 1147#endif
1148 1148
1149 QString target = dir; 1149 QString target = dir;
1150 uint len = target.length(); 1150 uint len = target.length();
1151#ifndef _WIN32_ 1151#ifndef _WIN32_
1152 // append trailing slash if missing 1152 // append trailing slash if missing
1153 if (dir.at(len - 1) != '/') 1153 if (dir.at(len - 1) != '/')
1154 target += '/'; 1154 target += '/';
1155#endif 1155#endif
1156 1156
1157 QString base(""); 1157 QString base("");
1158 uint i = 1; 1158 uint i = 1;
1159 1159
1160 while( i < len ) 1160 while( i < len )
1161 { 1161 {
1162//US struct stat st; 1162//US struct stat st;
1163#ifndef _WIN32_ 1163#ifndef _WIN32_
1164 int pos = target.find('/', i); 1164 int pos = target.find('/', i);
1165#else 1165#else
1166 int pos = target.find('\\', i); 1166 int pos = target.find('\\', i);
1167#endif 1167#endif
1168 if ( pos < 0 ) 1168 if ( pos < 0 )
1169 return true; 1169 return true;
1170 base += target.mid(i - 1, pos - i + 1); 1170 base += target.mid(i - 1, pos - i + 1);
1171 //QMessageBox::information( 0,"cap111", base, 1 ); 1171 //QMessageBox::information( 0,"cap111", base, 1 );
1172/*US 1172/*US
1173 QCString baseEncoded = QFile::encodeName(base); 1173 QCString baseEncoded = QFile::encodeName(base);
1174 // bail out if we encountered a problem 1174 // bail out if we encountered a problem
1175 if (stat(baseEncoded, &st) != 0) 1175 if (stat(baseEncoded, &st) != 0)
1176 { 1176 {
1177 // Directory does not exist.... 1177 // Directory does not exist....
1178 // Or maybe a dangling symlink ? 1178 // Or maybe a dangling symlink ?
1179 if (lstat(baseEncoded, &st) == 0) 1179 if (lstat(baseEncoded, &st) == 0)
1180 (void)unlink(baseEncoded); // try removing 1180 (void)unlink(baseEncoded); // try removing
1181 1181
1182 1182
1183 if ( mkdir(baseEncoded, (mode_t) mode) != 0) { 1183 if ( mkdir(baseEncoded, (mode_t) mode) != 0) {
1184 perror("trying to create local folder"); 1184 perror("trying to create local folder");
1185 return false; // Couldn't create it :-( 1185 return false; // Couldn't create it :-(
1186 } 1186 }
1187 } 1187 }
1188*/ 1188*/
1189 1189
1190 if (dirObj.exists(base) == false) 1190 if (dirObj.exists(base) == false)
1191 { 1191 {
1192 //qDebug("KStandardDirs::makeDir try to create : %s" , base.latin1()); 1192 //qDebug("KStandardDirs::makeDir try to create : %s" , base.latin1());
1193 if (dirObj.mkdir(base) != true) 1193 if (dirObj.mkdir(base) != true)
1194 { 1194 {
1195 qDebug("KStandardDirs::makeDir could not create: %s" , base.latin1()); 1195 qDebug("KStandardDirs::makeDir could not create: %s" , base.latin1());
1196 return false; 1196 return false;
1197 } 1197 }
1198 } 1198 }
1199 1199
1200 i = pos + 1; 1200 i = pos + 1;
1201 } 1201 }
1202 return true; 1202 return true;
1203 1203
1204} 1204}
1205 1205
1206static QString readEnvPath(const char *env) 1206static QString readEnvPath(const char *env)
1207{ 1207{
1208 //#ifdef _WIN32_ 1208 //#ifdef _WIN32_
1209 // return ""; 1209 // return "";
1210 //#else 1210 //#else
1211 QCString c_path; 1211 QCString c_path;
1212 if ( getenv(env) != NULL ) 1212 if ( getenv(env) != NULL )
1213 c_path = QString ( getenv(env) ); 1213 c_path = QString ( getenv(env) );
1214 if (c_path.isEmpty()) 1214 if (c_path.isEmpty())
1215 return QString::null; 1215 return QString::null;
1216 return QFile::decodeName(c_path); 1216 return QFile::decodeName(c_path);
1217 //#endif 1217 //#endif
1218 1218
1219} 1219}
1220 1220
1221void KStandardDirs::addKDEDefaults() 1221void KStandardDirs::addKDEDefaults()
1222{ 1222{
1223 1223
1224 //qDebug("ERROR: KStandardDirs::addKDEDefaults() called "); 1224 //qDebug("ERROR: KStandardDirs::addKDEDefaults() called ");
1225 //return; 1225 //return;
1226 QStringList kdedirList; 1226 QStringList kdedirList;
1227 1227
1228 // begin KDEDIRS 1228 // begin KDEDIRS
1229 QString kdedirs = readEnvPath("MICROKDEDIRS"); 1229 QString kdedirs = readEnvPath("MICROKDEDIRS");
1230 if (!kdedirs.isEmpty()) 1230 if (!kdedirs.isEmpty())
1231 { 1231 {
1232 tokenize(kdedirList, kdedirs, ":"); 1232 tokenize(kdedirList, kdedirs, ":");
1233 } 1233 }
1234 else 1234 else
1235 { 1235 {
1236 QString kdedir = readEnvPath("MICROKDEDIR"); 1236 QString kdedir = readEnvPath("MICROKDEDIR");
1237 if (!kdedir.isEmpty()) 1237 if (!kdedir.isEmpty())
1238 { 1238 {
1239 kdedir = KShell::tildeExpand(kdedir); 1239 kdedir = KShell::tildeExpand(kdedir);
1240 kdedirList.append(kdedir); 1240 kdedirList.append(kdedir);
1241 } 1241 }
1242 } 1242 }
1243//US kdedirList.append(KDEDIR); 1243//US kdedirList.append(KDEDIR);
1244//US for embedded, add qtopia dir as kdedir 1244//US for embedded, add qtopia dir as kdedir
1245 1245
1246#ifndef DESKTOP_VERSION 1246#ifndef DESKTOP_VERSION
1247 QString tmp = readEnvPath("QPEDIR"); 1247 QString tmp = readEnvPath("QPEDIR");
1248 if (!tmp.isEmpty()) 1248 if (!tmp.isEmpty())
1249 kdedirList.append(tmp); 1249 kdedirList.append(tmp);
1250 1250
1251 tmp = readEnvPath("QTDIR"); 1251 tmp = readEnvPath("QTDIR");
1252 if (!tmp.isEmpty()) 1252 if (!tmp.isEmpty())
1253 kdedirList.append(tmp); 1253 kdedirList.append(tmp);
1254 1254
1255 tmp = readEnvPath("OPIEDIR"); 1255 tmp = readEnvPath("OPIEDIR");
1256 if (!tmp.isEmpty()) 1256 if (!tmp.isEmpty())
1257 kdedirList.append(tmp); 1257 kdedirList.append(tmp);
1258 1258
1259#endif 1259#endif
1260 1260
1261#ifdef __KDE_EXECPREFIX 1261#ifdef __KDE_EXECPREFIX
1262 QString execPrefix(__KDE_EXECPREFIX); 1262 QString execPrefix(__KDE_EXECPREFIX);
1263 if (execPrefix!="NONE") 1263 if (execPrefix!="NONE")
1264 kdedirList.append(execPrefix); 1264 kdedirList.append(execPrefix);
1265#endif 1265#endif
1266 1266
1267 QString localKdeDir; 1267 QString localKdeDir;
1268 1268
1269//US if (getuid()) 1269//US if (getuid())
1270 if (true) 1270 if (true)
1271 { 1271 {
1272 localKdeDir = readEnvPath("MICROKDEHOME"); 1272 localKdeDir = readEnvPath("MICROKDEHOME");
1273 if (!localKdeDir.isEmpty()) 1273 if (!localKdeDir.isEmpty())
1274 { 1274 {
1275#ifdef _WIN32_ 1275#ifdef _WIN32_
1276 if (localKdeDir.at(localKdeDir.length()-1) != '\\') 1276 if (localKdeDir.at(localKdeDir.length()-1) != '\\')
1277 localKdeDir += '\\'; 1277 localKdeDir += '\\';
1278#else 1278#else
1279 if (localKdeDir.at(localKdeDir.length()-1) != '/') 1279 if (localKdeDir.at(localKdeDir.length()-1) != '/')
1280 localKdeDir += '/'; 1280 localKdeDir += '/';
1281#endif 1281#endif
1282 //QMessageBox::information( 0,"localKdeDir",localKdeDir, 1 ); 1282 //QMessageBox::information( 0,"localKdeDir",localKdeDir, 1 );
1283 } 1283 }
1284 else 1284 else
1285 { 1285 {
1286 KConfig cfg ( QDir::homeDirPath() + "/.microkdehome" ); 1286 QString confFile;
1287#ifdef DESKTOP_VERSION
1288 confFile = qApp->applicationDirPath ()+ "/.microkdehome" ;
1289 QFileInfo fi ( confFile );
1290 if ( !fi.exists() )
1291 confFile = QDir::homeDirPath() + "/.microkdehome";
1292 else
1293 qDebug("Loading path info from " + confFile );
1294
1295#else
1296 confFile = QDir::homeDirPath() + "/.microkdehome";
1297#endif
1298 KConfig cfg ( confFile );
1287 cfg.setGroup("Global"); 1299 cfg.setGroup("Global");
1288 localKdeDir = cfg.readEntry( "MICROKDEHOME", QDir::homeDirPath() + "/kdepim/" ); 1300 localKdeDir = cfg.readEntry( "MICROKDEHOME", QDir::homeDirPath() + "/kdepim/" );
1289 } 1301 }
1290 } 1302 }
1291 else 1303 else
1292 { 1304 {
1293 // We treat root different to prevent root messing up the 1305 // We treat root different to prevent root messing up the
1294 // file permissions in the users home directory. 1306 // file permissions in the users home directory.
1295 localKdeDir = readEnvPath("MICROKDEROOTHOME"); 1307 localKdeDir = readEnvPath("MICROKDEROOTHOME");
1296 if (!localKdeDir.isEmpty()) 1308 if (!localKdeDir.isEmpty())
1297 { 1309 {
1298 if (localKdeDir.at(localKdeDir.length()-1) != '/') 1310 if (localKdeDir.at(localKdeDir.length()-1) != '/')
1299 localKdeDir += '/'; 1311 localKdeDir += '/';
1300 } 1312 }
1301 else 1313 else
1302 { 1314 {
1303//US struct passwd *pw = getpwuid(0); 1315//US struct passwd *pw = getpwuid(0);
1304//US localKdeDir = QFile::decodeName((pw && pw->pw_dir) ? pw->pw_dir : "/root") + "/.microkde/"; 1316//US localKdeDir = QFile::decodeName((pw && pw->pw_dir) ? pw->pw_dir : "/root") + "/.microkde/";
1305 qDebug("KStandardDirs::addKDEDefaults: 1 has to be fixed"); 1317 qDebug("KStandardDirs::addKDEDefaults: 1 has to be fixed");
1306 } 1318 }
1307 1319
1308 } 1320 }
1309 1321
1310//US localKdeDir = appDir(); 1322//US localKdeDir = appDir();
1311 1323
1312//US 1324//US
1313// qDebug("KStandardDirs::addKDEDefaults: localKdeDir=%s", localKdeDir.latin1()); 1325// qDebug("KStandardDirs::addKDEDefaults: localKdeDir=%s", localKdeDir.latin1());
1314 if (localKdeDir != "-/") 1326 if (localKdeDir != "-/")
1315 { 1327 {
1316 localKdeDir = KShell::tildeExpand(localKdeDir); 1328 localKdeDir = KShell::tildeExpand(localKdeDir);
1317 addPrefix(localKdeDir); 1329 addPrefix(localKdeDir);
1318 } 1330 }
1319 1331
1320 for (QStringList::ConstIterator it = kdedirList.begin(); 1332 for (QStringList::ConstIterator it = kdedirList.begin();
1321 it != kdedirList.end(); it++) 1333 it != kdedirList.end(); it++)
1322 { 1334 {
1323 QString dir = KShell::tildeExpand(*it); 1335 QString dir = KShell::tildeExpand(*it);
1324 addPrefix(dir); 1336 addPrefix(dir);
1325 } 1337 }
1326 // end KDEDIRS 1338 // end KDEDIRS
1327 1339
1328 // begin XDG_CONFIG_XXX 1340 // begin XDG_CONFIG_XXX
1329 QStringList xdgdirList; 1341 QStringList xdgdirList;
1330 QString xdgdirs = readEnvPath("XDG_CONFIG_DIRS"); 1342 QString xdgdirs = readEnvPath("XDG_CONFIG_DIRS");
1331 if (!xdgdirs.isEmpty()) 1343 if (!xdgdirs.isEmpty())
1332 { 1344 {
1333 tokenize(xdgdirList, xdgdirs, ":"); 1345 tokenize(xdgdirList, xdgdirs, ":");
1334 } 1346 }
1335 else 1347 else
1336 { 1348 {
1337 xdgdirList.clear(); 1349 xdgdirList.clear();
1338 xdgdirList.append("/etc/xdg"); 1350 xdgdirList.append("/etc/xdg");
1339 } 1351 }
1340 1352
1341 QString localXdgDir = readEnvPath("XDG_CONFIG_HOME"); 1353 QString localXdgDir = readEnvPath("XDG_CONFIG_HOME");
1342 if (!localXdgDir.isEmpty()) 1354 if (!localXdgDir.isEmpty())
1343 { 1355 {
1344 if (localXdgDir.at(localXdgDir.length()-1) != '/') 1356 if (localXdgDir.at(localXdgDir.length()-1) != '/')
1345 localXdgDir += '/'; 1357 localXdgDir += '/';
1346 } 1358 }
1347 else 1359 else
1348 { 1360 {
1349//US if (getuid()) 1361//US if (getuid())
1350 if (true) 1362 if (true)
1351 { 1363 {
1352 localXdgDir = QDir::homeDirPath() + "/.config/"; 1364 localXdgDir = QDir::homeDirPath() + "/.config/";
1353 } 1365 }
1354 else 1366 else
1355 { 1367 {
1356//US struct passwd *pw = getpwuid(0); 1368//US struct passwd *pw = getpwuid(0);
1357//US localXdgDir = QFile::decodeName((pw && pw->pw_dir) ? pw->pw_dir : "/root") + "/.config/"; 1369//US localXdgDir = QFile::decodeName((pw && pw->pw_dir) ? pw->pw_dir : "/root") + "/.config/";
1358 qDebug("KStandardDirs::addKDEDefaults: 2 has to be fixed"); 1370 qDebug("KStandardDirs::addKDEDefaults: 2 has to be fixed");
1359 } 1371 }
1360 } 1372 }
1361 1373
1362 localXdgDir = KShell::tildeExpand(localXdgDir); 1374 localXdgDir = KShell::tildeExpand(localXdgDir);
1363 addXdgConfigPrefix(localXdgDir); 1375 addXdgConfigPrefix(localXdgDir);
1364 1376
1365 for (QStringList::ConstIterator it = xdgdirList.begin(); 1377 for (QStringList::ConstIterator it = xdgdirList.begin();
1366 it != xdgdirList.end(); it++) 1378 it != xdgdirList.end(); it++)
1367 { 1379 {
1368 QString dir = KShell::tildeExpand(*it); 1380 QString dir = KShell::tildeExpand(*it);
1369 addXdgConfigPrefix(dir); 1381 addXdgConfigPrefix(dir);
1370 } 1382 }
1371 // end XDG_CONFIG_XXX 1383 // end XDG_CONFIG_XXX
1372 1384
1373 // begin XDG_DATA_XXX 1385 // begin XDG_DATA_XXX
1374 xdgdirs = readEnvPath("XDG_DATA_DIRS"); 1386 xdgdirs = readEnvPath("XDG_DATA_DIRS");
1375 if (!xdgdirs.isEmpty()) 1387 if (!xdgdirs.isEmpty())
1376 { 1388 {
1377 tokenize(xdgdirList, xdgdirs, ":"); 1389 tokenize(xdgdirList, xdgdirs, ":");
1378 } 1390 }
1379 else 1391 else
1380 { 1392 {
1381 xdgdirList.clear(); 1393 xdgdirList.clear();
1382 for (QStringList::ConstIterator it = kdedirList.begin(); 1394 for (QStringList::ConstIterator it = kdedirList.begin();
1383 it != kdedirList.end(); it++) 1395 it != kdedirList.end(); it++)
1384 { 1396 {
1385 QString dir = *it; 1397 QString dir = *it;
1386 if (dir.at(dir.length()-1) != '/') 1398 if (dir.at(dir.length()-1) != '/')
1387 dir += '/'; 1399 dir += '/';
1388 xdgdirList.append(dir+"share/"); 1400 xdgdirList.append(dir+"share/");
1389 } 1401 }
1390 1402
1391 xdgdirList.append("/usr/local/share/"); 1403 xdgdirList.append("/usr/local/share/");
1392 xdgdirList.append("/usr/share/"); 1404 xdgdirList.append("/usr/share/");
1393 } 1405 }
1394 1406
1395 localXdgDir = readEnvPath("XDG_DATA_HOME"); 1407 localXdgDir = readEnvPath("XDG_DATA_HOME");
1396 if (!localXdgDir.isEmpty()) 1408 if (!localXdgDir.isEmpty())
1397 { 1409 {
1398 if (localXdgDir.at(localXdgDir.length()-1) != '/') 1410 if (localXdgDir.at(localXdgDir.length()-1) != '/')
1399 localXdgDir += '/'; 1411 localXdgDir += '/';
1400 } 1412 }
1401 else 1413 else
1402 { 1414 {
1403//US if (getuid()) 1415//US if (getuid())
1404 if (true) 1416 if (true)
1405 { 1417 {
1406 localXdgDir = QDir::homeDirPath() + "/.local/share/"; 1418 localXdgDir = QDir::homeDirPath() + "/.local/share/";
1407 } 1419 }
1408 else 1420 else
1409 { 1421 {
1410//US struct passwd *pw = getpwuid(0); 1422//US struct passwd *pw = getpwuid(0);
1411//US localXdgDir = QFile::decodeName((pw && pw->pw_dir) ? pw->pw_dir : "/root") + "/.local/share/"; 1423//US localXdgDir = QFile::decodeName((pw && pw->pw_dir) ? pw->pw_dir : "/root") + "/.local/share/";
1412 qDebug("KStandardDirs::addKDEDefaults: 3 has to be fixed"); 1424 qDebug("KStandardDirs::addKDEDefaults: 3 has to be fixed");
1413 } 1425 }
1414 } 1426 }
1415 1427
1416 localXdgDir = KShell::tildeExpand(localXdgDir); 1428 localXdgDir = KShell::tildeExpand(localXdgDir);
1417 addXdgDataPrefix(localXdgDir); 1429 addXdgDataPrefix(localXdgDir);
1418 1430
1419 for (QStringList::ConstIterator it = xdgdirList.begin(); 1431 for (QStringList::ConstIterator it = xdgdirList.begin();
1420 it != xdgdirList.end(); it++) 1432 it != xdgdirList.end(); it++)
1421 { 1433 {
1422 QString dir = KShell::tildeExpand(*it); 1434 QString dir = KShell::tildeExpand(*it);
1423 1435
1424 addXdgDataPrefix(dir); 1436 addXdgDataPrefix(dir);
1425 } 1437 }
1426 // end XDG_DATA_XXX 1438 // end XDG_DATA_XXX
1427 1439
1428 1440
1429 uint index = 0; 1441 uint index = 0;
1430 while (types[index] != 0) { 1442 while (types[index] != 0) {
1431 addResourceType(types[index], kde_default(types[index])); 1443 addResourceType(types[index], kde_default(types[index]));
1432 index++; 1444 index++;
1433 } 1445 }
1434 1446
1435 addResourceDir("home", QDir::homeDirPath()); 1447 addResourceDir("home", QDir::homeDirPath());
1436} 1448}
1437 1449
1438void KStandardDirs::checkConfig() const 1450void KStandardDirs::checkConfig() const
1439{ 1451{
1440/*US 1452/*US
1441 if (!addedCustoms && KGlobal::_instance && KGlobal::_instance->_config) 1453 if (!addedCustoms && KGlobal::_instance && KGlobal::_instance->_config)
1442 const_cast<KStandardDirs*>(this)->addCustomized(KGlobal::_instance->_config); 1454 const_cast<KStandardDirs*>(this)->addCustomized(KGlobal::_instance->_config);
1443*/ 1455*/
1444 if (!addedCustoms && KGlobal::config()) 1456 if (!addedCustoms && KGlobal::config())
1445 const_cast<KStandardDirs*>(this)->addCustomized(KGlobal::config()); 1457 const_cast<KStandardDirs*>(this)->addCustomized(KGlobal::config());
1446} 1458}
1447 1459
1448bool KStandardDirs::addCustomized(KConfig *config) 1460bool KStandardDirs::addCustomized(KConfig *config)
1449{ 1461{
1450 if (addedCustoms) // there are already customized entries 1462 if (addedCustoms) // there are already customized entries
1451 return false; // we just quite and hope they are the right ones 1463 return false; // we just quite and hope they are the right ones
1452 1464
1453 // save the numbers of config directories. If this changes, 1465 // save the numbers of config directories. If this changes,
1454 // we will return true to give KConfig a chance to reparse 1466 // we will return true to give KConfig a chance to reparse
1455 uint configdirs = resourceDirs("config").count(); 1467 uint configdirs = resourceDirs("config").count();
1456 1468
1457 // reading the prefixes in 1469 // reading the prefixes in
1458 QString oldGroup = config->group(); 1470 QString oldGroup = config->group();
1459 config->setGroup("Directories"); 1471 config->setGroup("Directories");
1460 1472
1461 QStringList list; 1473 QStringList list;
1462 QStringList::ConstIterator it; 1474 QStringList::ConstIterator it;
1463 list = config->readListEntry("prefixes"); 1475 list = config->readListEntry("prefixes");
1464 for (it = list.begin(); it != list.end(); it++) 1476 for (it = list.begin(); it != list.end(); it++)
1465 addPrefix(*it); 1477 addPrefix(*it);
1466 1478
1467 // iterating over all entries in the group Directories 1479 // iterating over all entries in the group Directories
1468 // to find entries that start with dir_$type 1480 // to find entries that start with dir_$type
1469/*US 1481/*US
1470 QMap<QString, QString> entries = config->entryMap("Directories"); 1482 QMap<QString, QString> entries = config->entryMap("Directories");
1471 1483
1472 QMap<QString, QString>::ConstIterator it2; 1484 QMap<QString, QString>::ConstIterator it2;
1473 for (it2 = entries.begin(); it2 != entries.end(); it2++) 1485 for (it2 = entries.begin(); it2 != entries.end(); it2++)
1474 { 1486 {
1475 QString key = it2.key(); 1487 QString key = it2.key();
1476 if (key.left(4) == "dir_") { 1488 if (key.left(4) == "dir_") {
1477 // generate directory list, there may be more than 1. 1489 // generate directory list, there may be more than 1.
1478 QStringList dirs = QStringList::split(',', *it2); 1490 QStringList dirs = QStringList::split(',', *it2);