author | zautrix <zautrix> | 2005-01-29 05:45:29 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2005-01-29 05:45:29 (UTC) |
commit | 0850ade22908615389800c6ee973f5906154d980 (patch) (unidiff) | |
tree | f15401c42b2b4e86662f478c7e148c8de1a04b2b | |
parent | a710cbadcbce154dff51445e756f8e3fc77278f9 (diff) | |
download | kdepimpi-0850ade22908615389800c6ee973f5906154d980.zip kdepimpi-0850ade22908615389800c6ee973f5906154d980.tar.gz kdepimpi-0850ade22908615389800c6ee973f5906154d980.tar.bz2 |
desktop fix
-rw-r--r-- | kabc/addresseedialog.cpp | 2 | ||||
-rw-r--r-- | microkde/kdecore/kstandarddirs.cpp | 14 |
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 | ||
36 | using namespace KABC; | 36 | using namespace KABC; |
37 | 37 | ||
38 | AddresseeItem::AddresseeItem( QListView *parent, const Addressee &addressee ) : | 38 | AddresseeItem::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 | ||
49 | QString AddresseeItem::key( int column, bool ) const | 49 | QString 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 | ||
60 | AddresseeDialog::AddresseeDialog( QWidget *parent, bool multiple ) : | 60 | AddresseeDialog::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 | ||
122 | AddresseeDialog::~AddresseeDialog() | 122 | AddresseeDialog::~AddresseeDialog() |
123 | { | 123 | { |
124 | } | 124 | } |
125 | 125 | ||
126 | void AddresseeDialog::loadAddressBook() | 126 | void 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 | ||
162 | void AddresseeDialog::addCompletionItem( const QString &str, QListViewItem *item ) | 162 | void 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 | ||
170 | void AddresseeDialog::selectItem( const QString &str ) | 170 | void 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 | ||
183 | void AddresseeDialog::updateEdit( QListViewItem *item ) | 183 | void 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 | ||
189 | void AddresseeDialog::selectNextItem( QListViewItem *item ) | 189 | void 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 | } |
199 | void AddresseeDialog::addSelected( QListViewItem *item ) | 199 | void 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 | ||
214 | void AddresseeDialog::removeSelected() | 214 | void 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 | ||
226 | Addressee AddresseeDialog::addressee() | 226 | Addressee 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 | ||
239 | Addressee::List AddresseeDialog::addressees() | 239 | Addressee::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 | ||
261 | Addressee AddresseeDialog::getAddressee( QWidget *parent ) | 261 | Addressee 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 | ||
275 | Addressee::List AddresseeDialog::getAddressees( QWidget *parent ) | 275 | Addressee::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 | ||
290 | void AddresseeDialog::addressBookChanged() | 290 | void 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 | |||
@@ -1030,513 +1030,525 @@ QString KStandardDirs::saveLocation(const char *type, | |||
1030 | } | 1030 | } |
1031 | else { | 1031 | else { |
1032 | dirs = absolutes.find(type); | 1032 | dirs = absolutes.find(type); |
1033 | if (!dirs) | 1033 | if (!dirs) |
1034 | qFatal("KStandardDirs: The resource type %s is not registered", type); | 1034 | qFatal("KStandardDirs: The resource type %s is not registered", type); |
1035 | pPath = new QString(realPath(dirs->last())); | 1035 | pPath = new QString(realPath(dirs->last())); |
1036 | } | 1036 | } |
1037 | 1037 | ||
1038 | savelocations.insert(type, pPath); | 1038 | savelocations.insert(type, pPath); |
1039 | } | 1039 | } |
1040 | 1040 | ||
1041 | QString fullPath = *pPath + suffix; | 1041 | QString fullPath = *pPath + suffix; |
1042 | //US struct stat st; | 1042 | //US struct stat st; |
1043 | //US if (stat(QFile::encodeName(fullPath), &st) != 0 || !(S_ISDIR(st.st_mode))) | 1043 | //US if (stat(QFile::encodeName(fullPath), &st) != 0 || !(S_ISDIR(st.st_mode))) |
1044 | QFileInfo fullPathInfo(QFile::encodeName(fullPath)); | 1044 | QFileInfo fullPathInfo(QFile::encodeName(fullPath)); |
1045 | if (fullPathInfo.isReadable() || !fullPathInfo.isDir()) | 1045 | if (fullPathInfo.isReadable() || !fullPathInfo.isDir()) |
1046 | 1046 | ||
1047 | 1047 | ||
1048 | { | 1048 | { |
1049 | if(!create) { | 1049 | if(!create) { |
1050 | #ifndef NDEBUG | 1050 | #ifndef NDEBUG |
1051 | qDebug("save location %s doesn't exist", fullPath.latin1()); | 1051 | qDebug("save location %s doesn't exist", fullPath.latin1()); |
1052 | #endif | 1052 | #endif |
1053 | return fullPath; | 1053 | return fullPath; |
1054 | } | 1054 | } |
1055 | if(!makeDir(fullPath, 0700)) { | 1055 | if(!makeDir(fullPath, 0700)) { |
1056 | qWarning("failed to create %s", fullPath.latin1()); | 1056 | qWarning("failed to create %s", fullPath.latin1()); |
1057 | return fullPath; | 1057 | return fullPath; |
1058 | } | 1058 | } |
1059 | dircache.remove(type); | 1059 | dircache.remove(type); |
1060 | } | 1060 | } |
1061 | return fullPath; | 1061 | return fullPath; |
1062 | } | 1062 | } |
1063 | 1063 | ||
1064 | QString KStandardDirs::relativeLocation(const char *type, const QString &absPath) | 1064 | QString KStandardDirs::relativeLocation(const char *type, const QString &absPath) |
1065 | { | 1065 | { |
1066 | QString fullPath = absPath; | 1066 | QString fullPath = absPath; |
1067 | int i = absPath.findRev('/'); | 1067 | int i = absPath.findRev('/'); |
1068 | if (i != -1) | 1068 | if (i != -1) |
1069 | { | 1069 | { |
1070 | fullPath = realPath(absPath.left(i+1))+absPath.mid(i+1); // Normalize | 1070 | fullPath = realPath(absPath.left(i+1))+absPath.mid(i+1); // Normalize |
1071 | } | 1071 | } |
1072 | 1072 | ||
1073 | QStringList candidates = resourceDirs(type); | 1073 | QStringList candidates = resourceDirs(type); |
1074 | 1074 | ||
1075 | for (QStringList::ConstIterator it = candidates.begin(); | 1075 | for (QStringList::ConstIterator it = candidates.begin(); |
1076 | it != candidates.end(); it++) | 1076 | it != candidates.end(); it++) |
1077 | if (fullPath.startsWith(*it)) | 1077 | if (fullPath.startsWith(*it)) |
1078 | { | 1078 | { |
1079 | return fullPath.mid((*it).length()); | 1079 | return fullPath.mid((*it).length()); |
1080 | } | 1080 | } |
1081 | 1081 | ||
1082 | return absPath; | 1082 | return absPath; |
1083 | } | 1083 | } |
1084 | 1084 | ||
1085 | 1085 | ||
1086 | bool KStandardDirs::makeDir(const QString& dir2, int mode) | 1086 | bool KStandardDirs::makeDir(const QString& dir2, int mode) |
1087 | { | 1087 | { |
1088 | QString dir = QDir::convertSeparators( dir2 ); | 1088 | QString dir = QDir::convertSeparators( dir2 ); |
1089 | #if 0 | 1089 | #if 0 |
1090 | //LR | 1090 | //LR |
1091 | 1091 | ||
1092 | // we want an absolute path | 1092 | // we want an absolute path |
1093 | if (dir.at(0) != '/') | 1093 | if (dir.at(0) != '/') |
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 | ||
1206 | static QString readEnvPath(const char *env) | 1206 | static 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 | ||
1221 | void KStandardDirs::addKDEDefaults() | 1221 | void 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 | ||
1438 | void KStandardDirs::checkConfig() const | 1450 | void 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 | ||
1448 | bool KStandardDirs::addCustomized(KConfig *config) | 1460 | bool 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); |
1479 | QStringList::Iterator sIt(dirs.begin()); | 1491 | QStringList::Iterator sIt(dirs.begin()); |
1480 | QString resType = key.mid(4, key.length()); | 1492 | QString resType = key.mid(4, key.length()); |
1481 | for (; sIt != dirs.end(); ++sIt) { | 1493 | for (; sIt != dirs.end(); ++sIt) { |
1482 | addResourceDir(resType.latin1(), *sIt); | 1494 | addResourceDir(resType.latin1(), *sIt); |
1483 | } | 1495 | } |
1484 | } | 1496 | } |
1485 | } | 1497 | } |
1486 | 1498 | ||
1487 | // Process KIOSK restrictions. | 1499 | // Process KIOSK restrictions. |
1488 | config->setGroup("KDE Resource Restrictions"); | 1500 | config->setGroup("KDE Resource Restrictions"); |
1489 | entries = config->entryMap("KDE Resource Restrictions"); | 1501 | entries = config->entryMap("KDE Resource Restrictions"); |
1490 | for (it2 = entries.begin(); it2 != entries.end(); it2++) | 1502 | for (it2 = entries.begin(); it2 != entries.end(); it2++) |
1491 | { | 1503 | { |
1492 | QString key = it2.key(); | 1504 | QString key = it2.key(); |
1493 | if (!config->readBoolEntry(key, true)) | 1505 | if (!config->readBoolEntry(key, true)) |
1494 | { | 1506 | { |
1495 | d->restrictionsActive = true; | 1507 | d->restrictionsActive = true; |
1496 | d->restrictions.insert(key.latin1(), &d->restrictionsActive); // Anything will do | 1508 | d->restrictions.insert(key.latin1(), &d->restrictionsActive); // Anything will do |
1497 | dircache.remove(key.latin1()); | 1509 | dircache.remove(key.latin1()); |
1498 | } | 1510 | } |
1499 | } | 1511 | } |
1500 | */ | 1512 | */ |
1501 | // save it for future calls - that will return | 1513 | // save it for future calls - that will return |
1502 | addedCustoms = true; | 1514 | addedCustoms = true; |
1503 | config->setGroup(oldGroup); | 1515 | config->setGroup(oldGroup); |
1504 | 1516 | ||
1505 | // return true if the number of config dirs changed | 1517 | // return true if the number of config dirs changed |
1506 | return (resourceDirs("config").count() != configdirs); | 1518 | return (resourceDirs("config").count() != configdirs); |
1507 | } | 1519 | } |
1508 | 1520 | ||
1509 | QString KStandardDirs::localkdedir() const | 1521 | QString KStandardDirs::localkdedir() const |
1510 | { | 1522 | { |
1511 | // Return the prefix to use for saving | 1523 | // Return the prefix to use for saving |
1512 | return prefixes.first(); | 1524 | return prefixes.first(); |
1513 | } | 1525 | } |
1514 | 1526 | ||
1515 | QString KStandardDirs::localxdgdatadir() const | 1527 | QString KStandardDirs::localxdgdatadir() const |
1516 | { | 1528 | { |
1517 | // Return the prefix to use for saving | 1529 | // Return the prefix to use for saving |
1518 | return d->xdgdata_prefixes.first(); | 1530 | return d->xdgdata_prefixes.first(); |
1519 | } | 1531 | } |
1520 | 1532 | ||
1521 | QString KStandardDirs::localxdgconfdir() const | 1533 | QString KStandardDirs::localxdgconfdir() const |
1522 | { | 1534 | { |
1523 | // Return the prefix to use for saving | 1535 | // Return the prefix to use for saving |
1524 | return d->xdgconf_prefixes.first(); | 1536 | return d->xdgconf_prefixes.first(); |
1525 | } | 1537 | } |
1526 | 1538 | ||
1527 | void KStandardDirs::setAppDir( const QString &appDir ) | 1539 | void KStandardDirs::setAppDir( const QString &appDir ) |
1528 | { | 1540 | { |
1529 | mAppDir = appDir; | 1541 | mAppDir = appDir; |
1530 | 1542 | ||
1531 | if ( mAppDir.right( 1 ) != "/" ) | 1543 | if ( mAppDir.right( 1 ) != "/" ) |
1532 | mAppDir += "/"; | 1544 | mAppDir += "/"; |
1533 | } | 1545 | } |
1534 | 1546 | ||
1535 | QString KStandardDirs::appDir() | 1547 | QString KStandardDirs::appDir() |
1536 | { | 1548 | { |
1537 | return mAppDir; | 1549 | return mAppDir; |
1538 | } | 1550 | } |
1539 | 1551 | ||
1540 | // just to make code more readable without macros | 1552 | // just to make code more readable without macros |
1541 | QString locate( const char *type, | 1553 | QString locate( const char *type, |
1542 | const QString& filename/*US , const KInstance* inst*/ ) | 1554 | const QString& filename/*US , const KInstance* inst*/ ) |