summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/kabcore.cpp2
-rw-r--r--microkde/kdecore/klocale.cpp2
-rw-r--r--microkde/kresources/configpage.cpp7
-rw-r--r--microkde/kresources/configwidget.h2
4 files changed, 5 insertions, 8 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index e88706e..505cbf4 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -1077,1537 +1077,1537 @@ void KABCore::pasteContacts( KABC::Addressee::List &list )
1077 1077
1078void KABCore::setWhoAmI() 1078void KABCore::setWhoAmI()
1079{ 1079{
1080 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 1080 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
1081 1081
1082 if ( addrList.count() > 1 ) { 1082 if ( addrList.count() > 1 ) {
1083 KMessageBox::sorry( this, i18n( "Please select only one contact." ) ); 1083 KMessageBox::sorry( this, i18n( "Please select only one contact." ) );
1084 return; 1084 return;
1085 } 1085 }
1086 1086
1087 QString text( i18n( "<qt>Do you really want to use <b>%1</b> as your new personal contact?</qt>" ) ); 1087 QString text( i18n( "<qt>Do you really want to use <b>%1</b> as your new personal contact?</qt>" ) );
1088 if ( KMessageBox::questionYesNo( this, text.arg( addrList[ 0 ].assembledName() ) ) == KMessageBox::Yes ) 1088 if ( KMessageBox::questionYesNo( this, text.arg( addrList[ 0 ].assembledName() ) ) == KMessageBox::Yes )
1089 static_cast<KABC::StdAddressBook*>( KABC::StdAddressBook::self() )->setWhoAmI( addrList[ 0 ] ); 1089 static_cast<KABC::StdAddressBook*>( KABC::StdAddressBook::self() )->setWhoAmI( addrList[ 0 ] );
1090} 1090}
1091void KABCore::editCategories() 1091void KABCore::editCategories()
1092{ 1092{
1093 KPIM::CategoryEditDialog dlg ( KABPrefs::instance(), this, "", true ); 1093 KPIM::CategoryEditDialog dlg ( KABPrefs::instance(), this, "", true );
1094 dlg.exec(); 1094 dlg.exec();
1095} 1095}
1096void KABCore::setCategories() 1096void KABCore::setCategories()
1097{ 1097{
1098 1098
1099 QStringList uids; 1099 QStringList uids;
1100 XXPortSelectDialog dlgx( this, false, this ); 1100 XXPortSelectDialog dlgx( this, false, this );
1101 if ( dlgx.exec() ) 1101 if ( dlgx.exec() )
1102 uids = dlgx.uids(); 1102 uids = dlgx.uids();
1103 else 1103 else
1104 return; 1104 return;
1105 if ( uids.isEmpty() ) 1105 if ( uids.isEmpty() )
1106 return; 1106 return;
1107 // qDebug("count %d ", uids.count()); 1107 // qDebug("count %d ", uids.count());
1108 1108
1109 1109
1110 KPIM::CategorySelectDialog dlg( KABPrefs::instance(), this, "", true ); 1110 KPIM::CategorySelectDialog dlg( KABPrefs::instance(), this, "", true );
1111 if ( !dlg.exec() ) { 1111 if ( !dlg.exec() ) {
1112 message( i18n("Setting categories cancelled") ); 1112 message( i18n("Setting categories cancelled") );
1113 return; 1113 return;
1114 } 1114 }
1115 bool merge = false; 1115 bool merge = false;
1116 QString msg = i18n( "Merge with existing categories?" ); 1116 QString msg = i18n( "Merge with existing categories?" );
1117 if ( KMessageBox::questionYesNo( this, msg ) == KMessageBox::Yes ) 1117 if ( KMessageBox::questionYesNo( this, msg ) == KMessageBox::Yes )
1118 merge = true; 1118 merge = true;
1119 1119
1120 message( i18n("Setting categories ... please wait!") ); 1120 message( i18n("Setting categories ... please wait!") );
1121 QStringList categories = dlg.selectedCategories(); 1121 QStringList categories = dlg.selectedCategories();
1122 1122
1123 //QStringList uids = mViewManager->selectedUids(); 1123 //QStringList uids = mViewManager->selectedUids();
1124 QStringList::Iterator it; 1124 QStringList::Iterator it;
1125 for ( it = uids.begin(); it != uids.end(); ++it ) { 1125 for ( it = uids.begin(); it != uids.end(); ++it ) {
1126 KABC::Addressee addr = mAddressBook->findByUid( *it ); 1126 KABC::Addressee addr = mAddressBook->findByUid( *it );
1127 if ( !addr.isEmpty() ) { 1127 if ( !addr.isEmpty() ) {
1128 if ( !merge ) 1128 if ( !merge )
1129 addr.setCategories( categories ); 1129 addr.setCategories( categories );
1130 else { 1130 else {
1131 QStringList addrCategories = addr.categories(); 1131 QStringList addrCategories = addr.categories();
1132 QStringList::Iterator catIt; 1132 QStringList::Iterator catIt;
1133 for ( catIt = categories.begin(); catIt != categories.end(); ++catIt ) { 1133 for ( catIt = categories.begin(); catIt != categories.end(); ++catIt ) {
1134 if ( !addrCategories.contains( *catIt ) ) 1134 if ( !addrCategories.contains( *catIt ) )
1135 addrCategories.append( *catIt ); 1135 addrCategories.append( *catIt );
1136 } 1136 }
1137 addr.setCategories( addrCategories ); 1137 addr.setCategories( addrCategories );
1138 } 1138 }
1139 mAddressBook->insertAddressee( addr ); 1139 mAddressBook->insertAddressee( addr );
1140 } 1140 }
1141 } 1141 }
1142 1142
1143 if ( uids.count() > 0 ) 1143 if ( uids.count() > 0 )
1144 setModified( true ); 1144 setModified( true );
1145 message( i18n("Setting categories completed!") ); 1145 message( i18n("Setting categories completed!") );
1146} 1146}
1147 1147
1148void KABCore::setSearchFields( const KABC::Field::List &fields ) 1148void KABCore::setSearchFields( const KABC::Field::List &fields )
1149{ 1149{
1150 mIncSearchWidget->setFields( fields ); 1150 mIncSearchWidget->setFields( fields );
1151} 1151}
1152 1152
1153void KABCore::incrementalSearch( const QString& text ) 1153void KABCore::incrementalSearch( const QString& text )
1154{ 1154{
1155 mViewManager->doSearch( text, mIncSearchWidget->currentField() ); 1155 mViewManager->doSearch( text, mIncSearchWidget->currentField() );
1156} 1156}
1157 1157
1158void KABCore::setModified() 1158void KABCore::setModified()
1159{ 1159{
1160 setModified( true ); 1160 setModified( true );
1161} 1161}
1162 1162
1163void KABCore::setModifiedWOrefresh() 1163void KABCore::setModifiedWOrefresh()
1164{ 1164{
1165 // qDebug("KABCore::setModifiedWOrefresh() "); 1165 // qDebug("KABCore::setModifiedWOrefresh() ");
1166 mModified = true; 1166 mModified = true;
1167 mActionSave->setEnabled( mModified ); 1167 mActionSave->setEnabled( mModified );
1168 1168
1169 1169
1170} 1170}
1171void KABCore::setModified( bool modified ) 1171void KABCore::setModified( bool modified )
1172{ 1172{
1173 mModified = modified; 1173 mModified = modified;
1174 mActionSave->setEnabled( mModified ); 1174 mActionSave->setEnabled( mModified );
1175 1175
1176 if ( modified ) 1176 if ( modified )
1177 mJumpButtonBar->recreateButtons(); 1177 mJumpButtonBar->recreateButtons();
1178 1178
1179 mViewManager->refreshView(); 1179 mViewManager->refreshView();
1180 1180
1181} 1181}
1182 1182
1183bool KABCore::modified() const 1183bool KABCore::modified() const
1184{ 1184{
1185 return mModified; 1185 return mModified;
1186} 1186}
1187 1187
1188void KABCore::contactModified( const KABC::Addressee &addr ) 1188void KABCore::contactModified( const KABC::Addressee &addr )
1189{ 1189{
1190 addrModified( addr ); 1190 addrModified( addr );
1191#if 0 // debug only 1191#if 0 // debug only
1192 KABC::Addressee ad = addr; 1192 KABC::Addressee ad = addr;
1193 ad.computeCsum( "123"); 1193 ad.computeCsum( "123");
1194#endif 1194#endif
1195} 1195}
1196 1196
1197void KABCore::addrModified( const KABC::Addressee &addr ,bool updateDetails ) 1197void KABCore::addrModified( const KABC::Addressee &addr ,bool updateDetails )
1198{ 1198{
1199 1199
1200 Command *command = 0; 1200 Command *command = 0;
1201 QString uid; 1201 QString uid;
1202 1202
1203 // check if it exists already 1203 // check if it exists already
1204 KABC::Addressee origAddr = mAddressBook->findByUid( addr.uid() ); 1204 KABC::Addressee origAddr = mAddressBook->findByUid( addr.uid() );
1205 if ( origAddr.isEmpty() ) 1205 if ( origAddr.isEmpty() )
1206 command = new PwNewCommand( mAddressBook, addr ); 1206 command = new PwNewCommand( mAddressBook, addr );
1207 else { 1207 else {
1208 command = new PwEditCommand( mAddressBook, origAddr, addr ); 1208 command = new PwEditCommand( mAddressBook, origAddr, addr );
1209 uid = addr.uid(); 1209 uid = addr.uid();
1210 } 1210 }
1211 1211
1212 UndoStack::instance()->push( command ); 1212 UndoStack::instance()->push( command );
1213 RedoStack::instance()->clear(); 1213 RedoStack::instance()->clear();
1214 if ( updateDetails ) 1214 if ( updateDetails )
1215 mDetails->setAddressee( addr ); 1215 mDetails->setAddressee( addr );
1216 setModified( true ); 1216 setModified( true );
1217} 1217}
1218 1218
1219void KABCore::newContact() 1219void KABCore::newContact()
1220{ 1220{
1221 1221
1222 1222
1223 QPtrList<KABC::Resource> kabcResources = mAddressBook->resources(); 1223 QPtrList<KABC::Resource> kabcResources = mAddressBook->resources();
1224 1224
1225 QPtrList<KRES::Resource> kresResources; 1225 QPtrList<KRES::Resource> kresResources;
1226 QPtrListIterator<KABC::Resource> it( kabcResources ); 1226 QPtrListIterator<KABC::Resource> it( kabcResources );
1227 KABC::Resource *resource; 1227 KABC::Resource *resource;
1228 while ( ( resource = it.current() ) != 0 ) { 1228 while ( ( resource = it.current() ) != 0 ) {
1229 ++it; 1229 ++it;
1230 if ( !resource->readOnly() ) { 1230 if ( !resource->readOnly() ) {
1231 KRES::Resource *res = static_cast<KRES::Resource*>( resource ); 1231 KRES::Resource *res = static_cast<KRES::Resource*>( resource );
1232 if ( res ) 1232 if ( res )
1233 kresResources.append( res ); 1233 kresResources.append( res );
1234 } 1234 }
1235 } 1235 }
1236 1236
1237 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, this ); 1237 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, this );
1238 resource = static_cast<KABC::Resource*>( res ); 1238 resource = static_cast<KABC::Resource*>( res );
1239 1239
1240 if ( resource ) { 1240 if ( resource ) {
1241 KABC::Addressee addr; 1241 KABC::Addressee addr;
1242 addr.setResource( resource ); 1242 addr.setResource( resource );
1243 mEditorDialog->setAddressee( addr ); 1243 mEditorDialog->setAddressee( addr );
1244 KApplication::execDialog ( mEditorDialog ); 1244 KApplication::execDialog ( mEditorDialog );
1245 1245
1246 } else 1246 } else
1247 return; 1247 return;
1248 1248
1249 // mEditorDict.insert( dialog->addressee().uid(), dialog ); 1249 // mEditorDict.insert( dialog->addressee().uid(), dialog );
1250 1250
1251 1251
1252} 1252}
1253 1253
1254void KABCore::addEmail( QString aStr ) 1254void KABCore::addEmail( QString aStr )
1255{ 1255{
1256#ifndef KAB_EMBEDDED 1256#ifndef KAB_EMBEDDED
1257 QString fullName, email; 1257 QString fullName, email;
1258 1258
1259 KABC::Addressee::parseEmailAddress( aStr, fullName, email ); 1259 KABC::Addressee::parseEmailAddress( aStr, fullName, email );
1260 1260
1261 // Try to lookup the addressee matching the email address 1261 // Try to lookup the addressee matching the email address
1262 bool found = false; 1262 bool found = false;
1263 QStringList emailList; 1263 QStringList emailList;
1264 KABC::AddressBook::Iterator it; 1264 KABC::AddressBook::Iterator it;
1265 for ( it = mAddressBook->begin(); !found && (it != mAddressBook->end()); ++it ) { 1265 for ( it = mAddressBook->begin(); !found && (it != mAddressBook->end()); ++it ) {
1266 emailList = (*it).emails(); 1266 emailList = (*it).emails();
1267 if ( emailList.contains( email ) > 0 ) { 1267 if ( emailList.contains( email ) > 0 ) {
1268 found = true; 1268 found = true;
1269 (*it).setNameFromString( fullName ); 1269 (*it).setNameFromString( fullName );
1270 editContact( (*it).uid() ); 1270 editContact( (*it).uid() );
1271 } 1271 }
1272 } 1272 }
1273 1273
1274 if ( !found ) { 1274 if ( !found ) {
1275 KABC::Addressee addr; 1275 KABC::Addressee addr;
1276 addr.setNameFromString( fullName ); 1276 addr.setNameFromString( fullName );
1277 addr.insertEmail( email, true ); 1277 addr.insertEmail( email, true );
1278 1278
1279 mAddressBook->insertAddressee( addr ); 1279 mAddressBook->insertAddressee( addr );
1280 mViewManager->refreshView( addr.uid() ); 1280 mViewManager->refreshView( addr.uid() );
1281 editContact( addr.uid() ); 1281 editContact( addr.uid() );
1282 } 1282 }
1283#else //KAB_EMBEDDED 1283#else //KAB_EMBEDDED
1284 qDebug("KABCore::addEmail finsih method"); 1284 qDebug("KABCore::addEmail finsih method");
1285#endif //KAB_EMBEDDED 1285#endif //KAB_EMBEDDED
1286} 1286}
1287 1287
1288void KABCore::importVCard( const KURL &url, bool showPreview ) 1288void KABCore::importVCard( const KURL &url, bool showPreview )
1289{ 1289{
1290 mXXPortManager->importVCard( url, showPreview ); 1290 mXXPortManager->importVCard( url, showPreview );
1291} 1291}
1292void KABCore::importFromOL() 1292void KABCore::importFromOL()
1293{ 1293{
1294#ifdef _WIN32_ 1294#ifdef _WIN32_
1295 KAImportOLdialog* idgl = new KAImportOLdialog( i18n("Import Contacts from OL"), mAddressBook, this ); 1295 KAImportOLdialog* idgl = new KAImportOLdialog( i18n("Import Contacts from OL"), mAddressBook, this );
1296 idgl->exec(); 1296 idgl->exec();
1297 KABC::Addressee::List list = idgl->getAddressList(); 1297 KABC::Addressee::List list = idgl->getAddressList();
1298 if ( list.count() > 0 ) { 1298 if ( list.count() > 0 ) {
1299 KABC::Addressee::List listNew; 1299 KABC::Addressee::List listNew;
1300 KABC::Addressee::List listExisting; 1300 KABC::Addressee::List listExisting;
1301 KABC::Addressee::List::Iterator it; 1301 KABC::Addressee::List::Iterator it;
1302 KABC::AddressBook::Iterator iter; 1302 KABC::AddressBook::Iterator iter;
1303 for ( it = list.begin(); it != list.end(); ++it ) { 1303 for ( it = list.begin(); it != list.end(); ++it ) {
1304 if ( mAddressBook->findByUid((*it).uid() ).isEmpty()) 1304 if ( mAddressBook->findByUid((*it).uid() ).isEmpty())
1305 listNew.append( (*it) ); 1305 listNew.append( (*it) );
1306 else 1306 else
1307 listExisting.append( (*it) ); 1307 listExisting.append( (*it) );
1308 } 1308 }
1309 if ( listExisting.count() > 0 ) 1309 if ( listExisting.count() > 0 )
1310 KMessageBox::information( this, i18n("%1 contacts not added to addressbook\nbecause they were already in the addressbook!").arg( listExisting.count() )); 1310 KMessageBox::information( this, i18n("%1 contacts not added to addressbook\nbecause they were already in the addressbook!").arg( listExisting.count() ));
1311 if ( listNew.count() > 0 ) { 1311 if ( listNew.count() > 0 ) {
1312 pasteWithNewUid = false; 1312 pasteWithNewUid = false;
1313 pasteContacts( listNew ); 1313 pasteContacts( listNew );
1314 pasteWithNewUid = true; 1314 pasteWithNewUid = true;
1315 } 1315 }
1316 } 1316 }
1317 delete idgl; 1317 delete idgl;
1318#endif 1318#endif
1319} 1319}
1320 1320
1321void KABCore::importVCard( const QString &vCard, bool showPreview ) 1321void KABCore::importVCard( const QString &vCard, bool showPreview )
1322{ 1322{
1323 mXXPortManager->importVCard( vCard, showPreview ); 1323 mXXPortManager->importVCard( vCard, showPreview );
1324} 1324}
1325 1325
1326//US added a second method without defaultparameter 1326//US added a second method without defaultparameter
1327void KABCore::editContact2() { 1327void KABCore::editContact2() {
1328 editContact( QString::null ); 1328 editContact( QString::null );
1329} 1329}
1330 1330
1331void KABCore::editContact( const QString &uid ) 1331void KABCore::editContact( const QString &uid )
1332{ 1332{
1333 1333
1334 if ( mExtensionManager->isQuickEditVisible() ) 1334 if ( mExtensionManager->isQuickEditVisible() )
1335 return; 1335 return;
1336 1336
1337 // First, locate the contact entry 1337 // First, locate the contact entry
1338 QString localUID = uid; 1338 QString localUID = uid;
1339 if ( localUID.isNull() ) { 1339 if ( localUID.isNull() ) {
1340 QStringList uidList = mViewManager->selectedUids(); 1340 QStringList uidList = mViewManager->selectedUids();
1341 if ( uidList.count() > 0 ) 1341 if ( uidList.count() > 0 )
1342 localUID = *( uidList.at( 0 ) ); 1342 localUID = *( uidList.at( 0 ) );
1343 } 1343 }
1344 1344
1345 KABC::Addressee addr = mAddressBook->findByUid( localUID ); 1345 KABC::Addressee addr = mAddressBook->findByUid( localUID );
1346 if ( !addr.isEmpty() ) { 1346 if ( !addr.isEmpty() ) {
1347 mEditorDialog->setAddressee( addr ); 1347 mEditorDialog->setAddressee( addr );
1348 KApplication::execDialog ( mEditorDialog ); 1348 KApplication::execDialog ( mEditorDialog );
1349 } 1349 }
1350} 1350}
1351 1351
1352/** 1352/**
1353 Shows or edits the detail view for the given uid. If the uid is QString::null, 1353 Shows or edits the detail view for the given uid. If the uid is QString::null,
1354 the method will try to find a selected addressee in the view. 1354 the method will try to find a selected addressee in the view.
1355 */ 1355 */
1356void KABCore::executeContact( const QString &uid /*US = QString::null*/ ) 1356void KABCore::executeContact( const QString &uid /*US = QString::null*/ )
1357{ 1357{
1358 if ( mMultipleViewsAtOnce ) 1358 if ( mMultipleViewsAtOnce )
1359 { 1359 {
1360 editContact( uid ); 1360 editContact( uid );
1361 } 1361 }
1362 else 1362 else
1363 { 1363 {
1364 setDetailsVisible( true ); 1364 setDetailsVisible( true );
1365 mActionDetails->setChecked(true); 1365 mActionDetails->setChecked(true);
1366 } 1366 }
1367 1367
1368} 1368}
1369 1369
1370void KABCore::save() 1370void KABCore::save()
1371{ 1371{
1372 if (syncManager->blockSave()) 1372 if (syncManager->blockSave())
1373 return; 1373 return;
1374 if ( !mModified ) 1374 if ( !mModified )
1375 return; 1375 return;
1376 1376
1377 syncManager->setBlockSave(true); 1377 syncManager->setBlockSave(true);
1378 QString text = i18n( "There was an error while attempting to save\n the " 1378 QString text = i18n( "There was an error while attempting to save\n the "
1379 "address book. Please check that some \nother application is " 1379 "address book. Please check that some \nother application is "
1380 "not using it. " ); 1380 "not using it. " );
1381 message(i18n("Saving ... please wait! "), false); 1381 message(i18n("Saving ... please wait! "), false);
1382 //qApp->processEvents(); 1382 //qApp->processEvents();
1383#ifndef KAB_EMBEDDED 1383#ifndef KAB_EMBEDDED
1384 KABC::StdAddressBook *b = dynamic_cast<KABC::StdAddressBook*>( mAddressBook ); 1384 KABC::StdAddressBook *b = dynamic_cast<KABC::StdAddressBook*>( mAddressBook );
1385 if ( !b || !b->save() ) { 1385 if ( !b || !b->save() ) {
1386 KMessageBox::error( this, text, i18n( "Unable to Save" ) ); 1386 KMessageBox::error( this, text, i18n( "Unable to Save" ) );
1387 } 1387 }
1388#else //KAB_EMBEDDED 1388#else //KAB_EMBEDDED
1389 KABC::StdAddressBook *b = (KABC::StdAddressBook*)( mAddressBook ); 1389 KABC::StdAddressBook *b = (KABC::StdAddressBook*)( mAddressBook );
1390 if ( !b || !b->save() ) { 1390 if ( !b || !b->save() ) {
1391 QMessageBox::critical( this, i18n( "Unable to Save" ), text, i18n("Ok")); 1391 QMessageBox::critical( this, i18n( "Unable to Save" ), text, i18n("Ok"));
1392 } 1392 }
1393#endif //KAB_EMBEDDED 1393#endif //KAB_EMBEDDED
1394 1394
1395 message(i18n("Addressbook saved!")); 1395 message(i18n("Addressbook saved!"));
1396 setModified( false ); 1396 setModified( false );
1397 syncManager->setBlockSave(false); 1397 syncManager->setBlockSave(false);
1398} 1398}
1399 1399
1400 1400
1401void KABCore::undo() 1401void KABCore::undo()
1402{ 1402{
1403 UndoStack::instance()->undo(); 1403 UndoStack::instance()->undo();
1404 1404
1405 // Refresh the view 1405 // Refresh the view
1406 mViewManager->refreshView(); 1406 mViewManager->refreshView();
1407} 1407}
1408 1408
1409void KABCore::redo() 1409void KABCore::redo()
1410{ 1410{
1411 RedoStack::instance()->redo(); 1411 RedoStack::instance()->redo();
1412 1412
1413 // Refresh the view 1413 // Refresh the view
1414 mViewManager->refreshView(); 1414 mViewManager->refreshView();
1415} 1415}
1416 1416
1417void KABCore::setJumpButtonBarVisible( bool visible ) 1417void KABCore::setJumpButtonBarVisible( bool visible )
1418{ 1418{
1419 if (mMultipleViewsAtOnce) 1419 if (mMultipleViewsAtOnce)
1420 { 1420 {
1421 if ( visible ) 1421 if ( visible )
1422 mJumpButtonBar->show(); 1422 mJumpButtonBar->show();
1423 else 1423 else
1424 mJumpButtonBar->hide(); 1424 mJumpButtonBar->hide();
1425 } 1425 }
1426 else 1426 else
1427 { 1427 {
1428 // show the jumpbar only if "the details are hidden" == "viewmanager are shown" 1428 // show the jumpbar only if "the details are hidden" == "viewmanager are shown"
1429 if (mViewManager->isVisible()) 1429 if (mViewManager->isVisible())
1430 { 1430 {
1431 if ( visible ) 1431 if ( visible )
1432 mJumpButtonBar->show(); 1432 mJumpButtonBar->show();
1433 else 1433 else
1434 mJumpButtonBar->hide(); 1434 mJumpButtonBar->hide();
1435 } 1435 }
1436 else 1436 else
1437 { 1437 {
1438 mJumpButtonBar->hide(); 1438 mJumpButtonBar->hide();
1439 } 1439 }
1440 } 1440 }
1441} 1441}
1442 1442
1443 1443
1444void KABCore::setDetailsToState() 1444void KABCore::setDetailsToState()
1445{ 1445{
1446 setDetailsVisible( mActionDetails->isChecked() ); 1446 setDetailsVisible( mActionDetails->isChecked() );
1447} 1447}
1448void KABCore::setDetailsToggle() 1448void KABCore::setDetailsToggle()
1449{ 1449{
1450 mActionDetails->setChecked( !mActionDetails->isChecked() ); 1450 mActionDetails->setChecked( !mActionDetails->isChecked() );
1451 setDetailsToState(); 1451 setDetailsToState();
1452} 1452}
1453 1453
1454 1454
1455 1455
1456void KABCore::setDetailsVisible( bool visible ) 1456void KABCore::setDetailsVisible( bool visible )
1457{ 1457{
1458 if (visible && mDetails->isHidden()) 1458 if (visible && mDetails->isHidden())
1459 { 1459 {
1460 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 1460 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
1461 if ( addrList.count() > 0 ) 1461 if ( addrList.count() > 0 )
1462 mDetails->setAddressee( addrList[ 0 ] ); 1462 mDetails->setAddressee( addrList[ 0 ] );
1463 } 1463 }
1464 1464
1465 // mMultipleViewsAtOnce=false: mDetails is always visible. But we switch between 1465 // mMultipleViewsAtOnce=false: mDetails is always visible. But we switch between
1466 // the listview and the detailview. We do that by changing the splitbar size. 1466 // the listview and the detailview. We do that by changing the splitbar size.
1467 if (mMultipleViewsAtOnce) 1467 if (mMultipleViewsAtOnce)
1468 { 1468 {
1469 if ( visible ) 1469 if ( visible )
1470 mDetails->show(); 1470 mDetails->show();
1471 else 1471 else
1472 mDetails->hide(); 1472 mDetails->hide();
1473 } 1473 }
1474 else 1474 else
1475 { 1475 {
1476 if ( visible ) { 1476 if ( visible ) {
1477 mViewManager->hide(); 1477 mViewManager->hide();
1478 mDetails->show(); 1478 mDetails->show();
1479 mIncSearchWidget->setFocus(); 1479 mIncSearchWidget->setFocus();
1480 } 1480 }
1481 else { 1481 else {
1482 mViewManager->show(); 1482 mViewManager->show();
1483 mDetails->hide(); 1483 mDetails->hide();
1484 mViewManager->setFocusAV(); 1484 mViewManager->setFocusAV();
1485 } 1485 }
1486 setJumpButtonBarVisible( !visible ); 1486 setJumpButtonBarVisible( !visible );
1487 } 1487 }
1488 1488
1489} 1489}
1490 1490
1491void KABCore::extensionChanged( int id ) 1491void KABCore::extensionChanged( int id )
1492{ 1492{
1493 //change the details view only for non desktop systems 1493 //change the details view only for non desktop systems
1494#ifndef DESKTOP_VERSION 1494#ifndef DESKTOP_VERSION
1495 1495
1496 if (id == 0) 1496 if (id == 0)
1497 { 1497 {
1498 //the user disabled the extension. 1498 //the user disabled the extension.
1499 1499
1500 if (mMultipleViewsAtOnce) 1500 if (mMultipleViewsAtOnce)
1501 { // enable detailsview again 1501 { // enable detailsview again
1502 setDetailsVisible( true ); 1502 setDetailsVisible( true );
1503 mActionDetails->setChecked( true ); 1503 mActionDetails->setChecked( true );
1504 } 1504 }
1505 else 1505 else
1506 { //go back to the listview 1506 { //go back to the listview
1507 setDetailsVisible( false ); 1507 setDetailsVisible( false );
1508 mActionDetails->setChecked( false ); 1508 mActionDetails->setChecked( false );
1509 mActionDetails->setEnabled(true); 1509 mActionDetails->setEnabled(true);
1510 } 1510 }
1511 1511
1512 } 1512 }
1513 else 1513 else
1514 { 1514 {
1515 //the user enabled the extension. 1515 //the user enabled the extension.
1516 setDetailsVisible( false ); 1516 setDetailsVisible( false );
1517 mActionDetails->setChecked( false ); 1517 mActionDetails->setChecked( false );
1518 1518
1519 if (!mMultipleViewsAtOnce) 1519 if (!mMultipleViewsAtOnce)
1520 { 1520 {
1521 mActionDetails->setEnabled(false); 1521 mActionDetails->setEnabled(false);
1522 } 1522 }
1523 1523
1524 mExtensionManager->setSelectionChanged(); 1524 mExtensionManager->setSelectionChanged();
1525 1525
1526 } 1526 }
1527 1527
1528#endif// DESKTOP_VERSION 1528#endif// DESKTOP_VERSION
1529 1529
1530} 1530}
1531 1531
1532 1532
1533void KABCore::extensionModified( const KABC::Addressee::List &list ) 1533void KABCore::extensionModified( const KABC::Addressee::List &list )
1534{ 1534{
1535 1535
1536 if ( list.count() != 0 ) { 1536 if ( list.count() != 0 ) {
1537 KABC::Addressee::List::ConstIterator it; 1537 KABC::Addressee::List::ConstIterator it;
1538 for ( it = list.begin(); it != list.end(); ++it ) 1538 for ( it = list.begin(); it != list.end(); ++it )
1539 mAddressBook->insertAddressee( *it ); 1539 mAddressBook->insertAddressee( *it );
1540 if ( list.count() > 1 ) 1540 if ( list.count() > 1 )
1541 setModified(); 1541 setModified();
1542 else 1542 else
1543 setModifiedWOrefresh(); 1543 setModifiedWOrefresh();
1544 } 1544 }
1545 if ( list.count() == 0 ) 1545 if ( list.count() == 0 )
1546 mViewManager->refreshView(); 1546 mViewManager->refreshView();
1547 else 1547 else
1548 mViewManager->refreshView( list[ 0 ].uid() ); 1548 mViewManager->refreshView( list[ 0 ].uid() );
1549 1549
1550 1550
1551 1551
1552} 1552}
1553 1553
1554QString KABCore::getNameByPhone( const QString &phone ) 1554QString KABCore::getNameByPhone( const QString &phone )
1555{ 1555{
1556#ifndef KAB_EMBEDDED 1556#ifndef KAB_EMBEDDED
1557 QRegExp r( "[/*/-/ ]" ); 1557 QRegExp r( "[/*/-/ ]" );
1558 QString localPhone( phone ); 1558 QString localPhone( phone );
1559 1559
1560 bool found = false; 1560 bool found = false;
1561 QString ownerName = ""; 1561 QString ownerName = "";
1562 KABC::AddressBook::Iterator iter; 1562 KABC::AddressBook::Iterator iter;
1563 KABC::PhoneNumber::List::Iterator phoneIter; 1563 KABC::PhoneNumber::List::Iterator phoneIter;
1564 KABC::PhoneNumber::List phoneList; 1564 KABC::PhoneNumber::List phoneList;
1565 for ( iter = mAddressBook->begin(); !found && ( iter != mAddressBook->end() ); ++iter ) { 1565 for ( iter = mAddressBook->begin(); !found && ( iter != mAddressBook->end() ); ++iter ) {
1566 phoneList = (*iter).phoneNumbers(); 1566 phoneList = (*iter).phoneNumbers();
1567 for ( phoneIter = phoneList.begin(); !found && ( phoneIter != phoneList.end() ); 1567 for ( phoneIter = phoneList.begin(); !found && ( phoneIter != phoneList.end() );
1568 ++phoneIter) { 1568 ++phoneIter) {
1569 // Get rid of separator chars so just the numbers are compared. 1569 // Get rid of separator chars so just the numbers are compared.
1570 if ( (*phoneIter).number().replace( r, "" ) == localPhone.replace( r, "" ) ) { 1570 if ( (*phoneIter).number().replace( r, "" ) == localPhone.replace( r, "" ) ) {
1571 ownerName = (*iter).formattedName(); 1571 ownerName = (*iter).formattedName();
1572 found = true; 1572 found = true;
1573 } 1573 }
1574 } 1574 }
1575 } 1575 }
1576 1576
1577 return ownerName; 1577 return ownerName;
1578#else //KAB_EMBEDDED 1578#else //KAB_EMBEDDED
1579 qDebug("KABCore::getNameByPhone finsih method"); 1579 qDebug("KABCore::getNameByPhone finsih method");
1580 return ""; 1580 return "";
1581#endif //KAB_EMBEDDED 1581#endif //KAB_EMBEDDED
1582 1582
1583} 1583}
1584 1584
1585void KABCore::openConfigDialog() 1585void KABCore::openConfigDialog()
1586{ 1586{
1587 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"kabconfigdialog", true ); 1587 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"kabconfigdialog", true );
1588 KCMKabConfig* kabcfg = new KCMKabConfig( ConfigureDialog->getNewVBoxPage(i18n( "Addressbook")) , "KCMKabConfig" ); 1588 KCMKabConfig* kabcfg = new KCMKabConfig( ConfigureDialog->getNewVBoxPage(i18n( "Addressbook")) , "KCMKabConfig" );
1589 ConfigureDialog->addModule(kabcfg ); 1589 ConfigureDialog->addModule(kabcfg );
1590 KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" ); 1590 KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" );
1591 ConfigureDialog->addModule(kdelibcfg ); 1591 ConfigureDialog->addModule(kdelibcfg );
1592 1592
1593 connect( ConfigureDialog, SIGNAL( applyClicked() ), 1593 connect( ConfigureDialog, SIGNAL( applyClicked() ),
1594 this, SLOT( configurationChanged() ) ); 1594 this, SLOT( configurationChanged() ) );
1595 connect( ConfigureDialog, SIGNAL( okClicked() ), 1595 connect( ConfigureDialog, SIGNAL( okClicked() ),
1596 this, SLOT( configurationChanged() ) ); 1596 this, SLOT( configurationChanged() ) );
1597 saveSettings(); 1597 saveSettings();
1598#ifndef DESKTOP_VERSION 1598#ifndef DESKTOP_VERSION
1599 ConfigureDialog->showMaximized(); 1599 ConfigureDialog->showMaximized();
1600#endif 1600#endif
1601 if ( ConfigureDialog->exec() ) 1601 if ( ConfigureDialog->exec() )
1602 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") ); 1602 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") );
1603 delete ConfigureDialog; 1603 delete ConfigureDialog;
1604} 1604}
1605 1605
1606void KABCore::openLDAPDialog() 1606void KABCore::openLDAPDialog()
1607{ 1607{
1608#ifndef KAB_EMBEDDED 1608#ifndef KAB_EMBEDDED
1609 if ( !mLdapSearchDialog ) { 1609 if ( !mLdapSearchDialog ) {
1610 mLdapSearchDialog = new LDAPSearchDialog( mAddressBook, this ); 1610 mLdapSearchDialog = new LDAPSearchDialog( mAddressBook, this );
1611 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), mViewManager, 1611 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), mViewManager,
1612 SLOT( refreshView() ) ); 1612 SLOT( refreshView() ) );
1613 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), this, 1613 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), this,
1614 SLOT( setModified() ) ); 1614 SLOT( setModified() ) );
1615 } else 1615 } else
1616 mLdapSearchDialog->restoreSettings(); 1616 mLdapSearchDialog->restoreSettings();
1617 1617
1618 if ( mLdapSearchDialog->isOK() ) 1618 if ( mLdapSearchDialog->isOK() )
1619 mLdapSearchDialog->exec(); 1619 mLdapSearchDialog->exec();
1620#else //KAB_EMBEDDED 1620#else //KAB_EMBEDDED
1621 qDebug("KABCore::openLDAPDialog() finsih method"); 1621 qDebug("KABCore::openLDAPDialog() finsih method");
1622#endif //KAB_EMBEDDED 1622#endif //KAB_EMBEDDED
1623} 1623}
1624 1624
1625void KABCore::print() 1625void KABCore::print()
1626{ 1626{
1627#ifndef KAB_EMBEDDED 1627#ifndef KAB_EMBEDDED
1628 KPrinter printer; 1628 KPrinter printer;
1629 if ( !printer.setup( this ) ) 1629 if ( !printer.setup( this ) )
1630 return; 1630 return;
1631 1631
1632 KABPrinting::PrintingWizard wizard( &printer, mAddressBook, 1632 KABPrinting::PrintingWizard wizard( &printer, mAddressBook,
1633 mViewManager->selectedUids(), this ); 1633 mViewManager->selectedUids(), this );
1634 1634
1635 wizard.exec(); 1635 wizard.exec();
1636#else //KAB_EMBEDDED 1636#else //KAB_EMBEDDED
1637 qDebug("KABCore::print() finsih method"); 1637 qDebug("KABCore::print() finsih method");
1638#endif //KAB_EMBEDDED 1638#endif //KAB_EMBEDDED
1639 1639
1640} 1640}
1641 1641
1642 1642
1643void KABCore::addGUIClient( KXMLGUIClient *client ) 1643void KABCore::addGUIClient( KXMLGUIClient *client )
1644{ 1644{
1645 if ( mGUIClient ) 1645 if ( mGUIClient )
1646 mGUIClient->insertChildClient( client ); 1646 mGUIClient->insertChildClient( client );
1647 else 1647 else
1648 KMessageBox::error( this, "no KXMLGUICLient"); 1648 KMessageBox::error( this, "no KXMLGUICLient");
1649} 1649}
1650 1650
1651 1651
1652void KABCore::configurationChanged() 1652void KABCore::configurationChanged()
1653{ 1653{
1654 mExtensionManager->reconfigure(); 1654 mExtensionManager->reconfigure();
1655} 1655}
1656 1656
1657void KABCore::addressBookChanged() 1657void KABCore::addressBookChanged()
1658{ 1658{
1659/*US 1659/*US
1660 QDictIterator<AddresseeEditorDialog> it( mEditorDict ); 1660 QDictIterator<AddresseeEditorDialog> it( mEditorDict );
1661 while ( it.current() ) { 1661 while ( it.current() ) {
1662 if ( it.current()->dirty() ) { 1662 if ( it.current()->dirty() ) {
1663 QString text = i18n( "Data has been changed externally. Unsaved " 1663 QString text = i18n( "Data has been changed externally. Unsaved "
1664 "changes will be lost." ); 1664 "changes will be lost." );
1665 KMessageBox::information( this, text ); 1665 KMessageBox::information( this, text );
1666 } 1666 }
1667 it.current()->setAddressee( mAddressBook->findByUid( it.currentKey() ) ); 1667 it.current()->setAddressee( mAddressBook->findByUid( it.currentKey() ) );
1668 ++it; 1668 ++it;
1669 } 1669 }
1670*/ 1670*/
1671 if (mEditorDialog) 1671 if (mEditorDialog)
1672 { 1672 {
1673 if (mEditorDialog->dirty()) 1673 if (mEditorDialog->dirty())
1674 { 1674 {
1675 QString text = i18n( "Data has been changed externally. Unsaved " 1675 QString text = i18n( "Data has been changed externally. Unsaved "
1676 "changes will be lost." ); 1676 "changes will be lost." );
1677 KMessageBox::information( this, text ); 1677 KMessageBox::information( this, text );
1678 } 1678 }
1679 QString currentuid = mEditorDialog->addressee().uid(); 1679 QString currentuid = mEditorDialog->addressee().uid();
1680 mEditorDialog->setAddressee( mAddressBook->findByUid( currentuid ) ); 1680 mEditorDialog->setAddressee( mAddressBook->findByUid( currentuid ) );
1681 } 1681 }
1682 mViewManager->refreshView(); 1682 mViewManager->refreshView();
1683 1683
1684 1684
1685} 1685}
1686 1686
1687AddresseeEditorDialog *KABCore::createAddresseeEditorDialog( QWidget *parent, 1687AddresseeEditorDialog *KABCore::createAddresseeEditorDialog( QWidget *parent,
1688 const char *name ) 1688 const char *name )
1689{ 1689{
1690 1690
1691 if ( mEditorDialog == 0 ) { 1691 if ( mEditorDialog == 0 ) {
1692 mEditorDialog = new AddresseeEditorDialog( this, parent, 1692 mEditorDialog = new AddresseeEditorDialog( this, parent,
1693 name ? name : "editorDialog" ); 1693 name ? name : "editorDialog" );
1694 1694
1695 1695
1696 connect( mEditorDialog, SIGNAL( contactModified( const KABC::Addressee& ) ), 1696 connect( mEditorDialog, SIGNAL( contactModified( const KABC::Addressee& ) ),
1697 SLOT( contactModified( const KABC::Addressee& ) ) ); 1697 SLOT( contactModified( const KABC::Addressee& ) ) );
1698 //connect( mEditorDialog, SIGNAL( editorDestroyed( const QString& ) ), 1698 //connect( mEditorDialog, SIGNAL( editorDestroyed( const QString& ) ),
1699 // SLOT( slotEditorDestroyed( const QString& ) ) ; 1699 // SLOT( slotEditorDestroyed( const QString& ) ) ;
1700 } 1700 }
1701 1701
1702 return mEditorDialog; 1702 return mEditorDialog;
1703} 1703}
1704 1704
1705void KABCore::slotEditorDestroyed( const QString &uid ) 1705void KABCore::slotEditorDestroyed( const QString &uid )
1706{ 1706{
1707 //mEditorDict.remove( uid ); 1707 //mEditorDict.remove( uid );
1708} 1708}
1709 1709
1710void KABCore::initGUI() 1710void KABCore::initGUI()
1711{ 1711{
1712#ifndef KAB_EMBEDDED 1712#ifndef KAB_EMBEDDED
1713 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1713 QHBoxLayout *topLayout = new QHBoxLayout( this );
1714 topLayout->setSpacing( KDialogBase::spacingHint() ); 1714 topLayout->setSpacing( KDialogBase::spacingHint() );
1715 1715
1716 mExtensionBarSplitter = new QSplitter( this ); 1716 mExtensionBarSplitter = new QSplitter( this );
1717 mExtensionBarSplitter->setOrientation( Qt::Vertical ); 1717 mExtensionBarSplitter->setOrientation( Qt::Vertical );
1718 1718
1719 mDetailsSplitter = new QSplitter( mExtensionBarSplitter ); 1719 mDetailsSplitter = new QSplitter( mExtensionBarSplitter );
1720 1720
1721 QVBox *viewSpace = new QVBox( mDetailsSplitter ); 1721 QVBox *viewSpace = new QVBox( mDetailsSplitter );
1722 mIncSearchWidget = new IncSearchWidget( viewSpace ); 1722 mIncSearchWidget = new IncSearchWidget( viewSpace );
1723 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1723 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1724 SLOT( incrementalSearch( const QString& ) ) ); 1724 SLOT( incrementalSearch( const QString& ) ) );
1725 1725
1726 mViewManager = new ViewManager( this, viewSpace ); 1726 mViewManager = new ViewManager( this, viewSpace );
1727 viewSpace->setStretchFactor( mViewManager, 1 ); 1727 viewSpace->setStretchFactor( mViewManager, 1 );
1728 1728
1729 mDetails = new ViewContainer( mDetailsSplitter ); 1729 mDetails = new ViewContainer( mDetailsSplitter );
1730 1730
1731 mJumpButtonBar = new JumpButtonBar( this, this ); 1731 mJumpButtonBar = new JumpButtonBar( this, this );
1732 1732
1733 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter ); 1733 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter );
1734 1734
1735 topLayout->addWidget( mExtensionBarSplitter ); 1735 topLayout->addWidget( mExtensionBarSplitter );
1736 topLayout->setStretchFactor( mExtensionBarSplitter, 100 ); 1736 topLayout->setStretchFactor( mExtensionBarSplitter, 100 );
1737 topLayout->addWidget( mJumpButtonBar ); 1737 topLayout->addWidget( mJumpButtonBar );
1738 topLayout->setStretchFactor( mJumpButtonBar, 1 ); 1738 topLayout->setStretchFactor( mJumpButtonBar, 1 );
1739 1739
1740 mXXPortManager = new XXPortManager( this, this ); 1740 mXXPortManager = new XXPortManager( this, this );
1741 1741
1742#else //KAB_EMBEDDED 1742#else //KAB_EMBEDDED
1743 //US initialize viewMenu before settingup viewmanager. 1743 //US initialize viewMenu before settingup viewmanager.
1744 // Viewmanager needs this menu to plugin submenues. 1744 // Viewmanager needs this menu to plugin submenues.
1745 viewMenu = new QPopupMenu( this ); 1745 viewMenu = new QPopupMenu( this );
1746 settingsMenu = new QPopupMenu( this ); 1746 settingsMenu = new QPopupMenu( this );
1747 //filterMenu = new QPopupMenu( this ); 1747 //filterMenu = new QPopupMenu( this );
1748 ImportMenu = new QPopupMenu( this ); 1748 ImportMenu = new QPopupMenu( this );
1749 ExportMenu = new QPopupMenu( this ); 1749 ExportMenu = new QPopupMenu( this );
1750 syncMenu = new QPopupMenu( this ); 1750 syncMenu = new QPopupMenu( this );
1751 changeMenu= new QPopupMenu( this ); 1751 changeMenu= new QPopupMenu( this );
1752 beamMenu= new QPopupMenu( this ); 1752 beamMenu= new QPopupMenu( this );
1753 1753
1754//US since we have no splitter for the embedded system, setup 1754//US since we have no splitter for the embedded system, setup
1755// a layout with two frames. One left and one right. 1755// a layout with two frames. One left and one right.
1756 1756
1757 QBoxLayout *topLayout; 1757 QBoxLayout *topLayout;
1758 1758
1759 // = new QHBoxLayout( this ); 1759 // = new QHBoxLayout( this );
1760// QBoxLayout *topLayout = (QBoxLayout*)layout(); 1760// QBoxLayout *topLayout = (QBoxLayout*)layout();
1761 1761
1762// QWidget *mainBox = new QWidget( this ); 1762// QWidget *mainBox = new QWidget( this );
1763// QBoxLayout * mainBoxLayout = new QHBoxLayout(mainBox); 1763// QBoxLayout * mainBoxLayout = new QHBoxLayout(mainBox);
1764 1764
1765#ifdef DESKTOP_VERSION 1765#ifdef DESKTOP_VERSION
1766 topLayout = new QHBoxLayout( this ); 1766 topLayout = new QHBoxLayout( this );
1767 1767
1768 1768
1769 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 1769 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
1770 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 1770 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
1771 1771
1772 topLayout->addWidget(mMiniSplitter ); 1772 topLayout->addWidget(mMiniSplitter );
1773 1773
1774 mExtensionBarSplitter = new KDGanttMinimizeSplitter( Qt::Vertical,mMiniSplitter ); 1774 mExtensionBarSplitter = new KDGanttMinimizeSplitter( Qt::Vertical,mMiniSplitter );
1775 mExtensionBarSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 1775 mExtensionBarSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
1776 mViewManager = new ViewManager( this, mExtensionBarSplitter ); 1776 mViewManager = new ViewManager( this, mExtensionBarSplitter );
1777 mDetails = new ViewContainer( mMiniSplitter ); 1777 mDetails = new ViewContainer( mMiniSplitter );
1778 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter ); 1778 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter );
1779#else 1779#else
1780 if ( QApplication::desktop()->width() > 480 ) { 1780 if ( QApplication::desktop()->width() > 480 ) {
1781 topLayout = new QHBoxLayout( this ); 1781 topLayout = new QHBoxLayout( this );
1782 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 1782 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
1783 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 1783 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
1784 } else { 1784 } else {
1785 1785
1786 topLayout = new QHBoxLayout( this ); 1786 topLayout = new QHBoxLayout( this );
1787 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this); 1787 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this);
1788 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 1788 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
1789 } 1789 }
1790 1790
1791 topLayout->addWidget(mMiniSplitter ); 1791 topLayout->addWidget(mMiniSplitter );
1792 mViewManager = new ViewManager( this, mMiniSplitter ); 1792 mViewManager = new ViewManager( this, mMiniSplitter );
1793 mDetails = new ViewContainer( mMiniSplitter ); 1793 mDetails = new ViewContainer( mMiniSplitter );
1794 1794
1795 1795
1796 mExtensionManager = new ExtensionManager( this, mMiniSplitter ); 1796 mExtensionManager = new ExtensionManager( this, mMiniSplitter );
1797#endif 1797#endif
1798 //eh->hide(); 1798 //eh->hide();
1799 // topLayout->addWidget(mExtensionManager ); 1799 // topLayout->addWidget(mExtensionManager );
1800 1800
1801 1801
1802/*US 1802/*US
1803#ifndef KAB_NOSPLITTER 1803#ifndef KAB_NOSPLITTER
1804 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1804 QHBoxLayout *topLayout = new QHBoxLayout( this );
1805//US topLayout->setSpacing( KDialogBase::spacingHint() ); 1805//US topLayout->setSpacing( KDialogBase::spacingHint() );
1806 topLayout->setSpacing( 10 ); 1806 topLayout->setSpacing( 10 );
1807 1807
1808 mDetailsSplitter = new QSplitter( this ); 1808 mDetailsSplitter = new QSplitter( this );
1809 1809
1810 QVBox *viewSpace = new QVBox( mDetailsSplitter ); 1810 QVBox *viewSpace = new QVBox( mDetailsSplitter );
1811 1811
1812 mViewManager = new ViewManager( this, viewSpace ); 1812 mViewManager = new ViewManager( this, viewSpace );
1813 viewSpace->setStretchFactor( mViewManager, 1 ); 1813 viewSpace->setStretchFactor( mViewManager, 1 );
1814 1814
1815 mDetails = new ViewContainer( mDetailsSplitter ); 1815 mDetails = new ViewContainer( mDetailsSplitter );
1816 1816
1817 topLayout->addWidget( mDetailsSplitter ); 1817 topLayout->addWidget( mDetailsSplitter );
1818 topLayout->setStretchFactor( mDetailsSplitter, 100 ); 1818 topLayout->setStretchFactor( mDetailsSplitter, 100 );
1819#else //KAB_NOSPLITTER 1819#else //KAB_NOSPLITTER
1820 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1820 QHBoxLayout *topLayout = new QHBoxLayout( this );
1821//US topLayout->setSpacing( KDialogBase::spacingHint() ); 1821//US topLayout->setSpacing( KDialogBase::spacingHint() );
1822 topLayout->setSpacing( 10 ); 1822 topLayout->setSpacing( 10 );
1823 1823
1824// mDetailsSplitter = new QSplitter( this ); 1824// mDetailsSplitter = new QSplitter( this );
1825 1825
1826 QVBox *viewSpace = new QVBox( this ); 1826 QVBox *viewSpace = new QVBox( this );
1827 1827
1828 mViewManager = new ViewManager( this, viewSpace ); 1828 mViewManager = new ViewManager( this, viewSpace );
1829 viewSpace->setStretchFactor( mViewManager, 1 ); 1829 viewSpace->setStretchFactor( mViewManager, 1 );
1830 1830
1831 mDetails = new ViewContainer( this ); 1831 mDetails = new ViewContainer( this );
1832 1832
1833 topLayout->addWidget( viewSpace ); 1833 topLayout->addWidget( viewSpace );
1834// topLayout->setStretchFactor( mDetailsSplitter, 100 ); 1834// topLayout->setStretchFactor( mDetailsSplitter, 100 );
1835 topLayout->addWidget( mDetails ); 1835 topLayout->addWidget( mDetails );
1836#endif //KAB_NOSPLITTER 1836#endif //KAB_NOSPLITTER
1837*/ 1837*/
1838 1838
1839 syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu); 1839 syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu);
1840 syncManager->setBlockSave(false); 1840 syncManager->setBlockSave(false);
1841 1841
1842 connect(syncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) ); 1842 connect(syncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) );
1843 connect(syncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) ); 1843 connect(syncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) );
1844 QString sync_file = sentSyncFile(); 1844 QString sync_file = sentSyncFile();
1845 qDebug("KABCore::initGUI()::setting tmp sync file to:%s ",sync_file.latin1()); 1845 //qDebug("KABCore::initGUI()::setting tmp sync file to:%s ",sync_file.latin1());
1846 syncManager->setDefaultFileName( sync_file ); 1846 syncManager->setDefaultFileName( sync_file );
1847 //connect(syncManager , SIGNAL( ), this, SLOT( ) ); 1847 //connect(syncManager , SIGNAL( ), this, SLOT( ) );
1848 1848
1849#endif //KAB_EMBEDDED 1849#endif //KAB_EMBEDDED
1850 initActions(); 1850 initActions();
1851 1851
1852#ifdef KAB_EMBEDDED 1852#ifdef KAB_EMBEDDED
1853 addActionsManually(); 1853 addActionsManually();
1854 //US make sure the export and import menues are initialized before creating the xxPortManager. 1854 //US make sure the export and import menues are initialized before creating the xxPortManager.
1855 mXXPortManager = new XXPortManager( this, this ); 1855 mXXPortManager = new XXPortManager( this, this );
1856 1856
1857 // LR mIncSearchWidget = new IncSearchWidget( mMainWindow->getIconToolBar() ); 1857 // LR mIncSearchWidget = new IncSearchWidget( mMainWindow->getIconToolBar() );
1858 //mMainWindow->toolBar()->insertWidget(-1, 4, mIncSearchWidget); 1858 //mMainWindow->toolBar()->insertWidget(-1, 4, mIncSearchWidget);
1859 // mActionQuit->plug ( mMainWindow->toolBar()); 1859 // mActionQuit->plug ( mMainWindow->toolBar());
1860 //mIncSearchWidget = new IncSearchWidget( mMainWindow->toolBar() ); 1860 //mIncSearchWidget = new IncSearchWidget( mMainWindow->toolBar() );
1861 //mMainWindow->toolBar()->insertWidget(-1, 0, mIncSearchWidget); 1861 //mMainWindow->toolBar()->insertWidget(-1, 0, mIncSearchWidget);
1862 // mIncSearchWidget->hide(); 1862 // mIncSearchWidget->hide();
1863 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1863 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1864 SLOT( incrementalSearch( const QString& ) ) ); 1864 SLOT( incrementalSearch( const QString& ) ) );
1865 connect( mIncSearchWidget, SIGNAL( scrollUP() ),mViewManager, SLOT( scrollUP() ) ); 1865 connect( mIncSearchWidget, SIGNAL( scrollUP() ),mViewManager, SLOT( scrollUP() ) );
1866 connect( mIncSearchWidget, SIGNAL( scrollDOWN() ),mViewManager, SLOT( scrollDOWN() ) ); 1866 connect( mIncSearchWidget, SIGNAL( scrollDOWN() ),mViewManager, SLOT( scrollDOWN() ) );
1867 1867
1868 mJumpButtonBar = new JumpButtonBar( this, this ); 1868 mJumpButtonBar = new JumpButtonBar( this, this );
1869 1869
1870 topLayout->addWidget( mJumpButtonBar ); 1870 topLayout->addWidget( mJumpButtonBar );
1871//US topLayout->setStretchFactor( mJumpButtonBar, 10 ); 1871//US topLayout->setStretchFactor( mJumpButtonBar, 10 );
1872 1872
1873// mMainWindow->getIconToolBar()->raise(); 1873// mMainWindow->getIconToolBar()->raise();
1874 1874
1875#endif //KAB_EMBEDDED 1875#endif //KAB_EMBEDDED
1876 1876
1877} 1877}
1878void KABCore::initActions() 1878void KABCore::initActions()
1879{ 1879{
1880//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); 1880//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart);
1881 1881
1882#ifndef KAB_EMBEDDED 1882#ifndef KAB_EMBEDDED
1883 connect( QApplication::clipboard(), SIGNAL( dataChanged() ), 1883 connect( QApplication::clipboard(), SIGNAL( dataChanged() ),
1884 SLOT( clipboardDataChanged() ) ); 1884 SLOT( clipboardDataChanged() ) );
1885#endif //KAB_EMBEDDED 1885#endif //KAB_EMBEDDED
1886 1886
1887 // file menu 1887 // file menu
1888 1888
1889 mActionMail = KStdAction::mail( this, SLOT( sendMail() ), actionCollection() ); 1889 mActionMail = KStdAction::mail( this, SLOT( sendMail() ), actionCollection() );
1890 //mActionPrint = KStdAction::print( this, SLOT( print() ), actionCollection() ); 1890 //mActionPrint = KStdAction::print( this, SLOT( print() ), actionCollection() );
1891 mActionPrint = new KAction( i18n( "&Print View" ), "fileprint", CTRL + Key_P, mViewManager, 1891 mActionPrint = new KAction( i18n( "&Print View" ), "fileprint", CTRL + Key_P, mViewManager,
1892 SLOT( printView() ), actionCollection(), "kaddressbook_print" ); 1892 SLOT( printView() ), actionCollection(), "kaddressbook_print" );
1893 1893
1894 1894
1895 mActionPrintDetails = new KAction( i18n( "&Print Details" ), "fileprint", 0, mDetails, 1895 mActionPrintDetails = new KAction( i18n( "&Print Details" ), "fileprint", 0, mDetails,
1896 SLOT( printView() ), actionCollection(), "kaddressbook_print2" ); 1896 SLOT( printView() ), actionCollection(), "kaddressbook_print2" );
1897 1897
1898 mActionSave = new KAction( i18n( "&Save" ), "filesave", CTRL+Key_S, this, 1898 mActionSave = new KAction( i18n( "&Save" ), "filesave", CTRL+Key_S, this,
1899 SLOT( save() ), actionCollection(), "file_sync" ); 1899 SLOT( save() ), actionCollection(), "file_sync" );
1900 1900
1901 mActionNewContact = new KAction( i18n( "&New Contact..." ), "filenew", CTRL+Key_N, this, 1901 mActionNewContact = new KAction( i18n( "&New Contact..." ), "filenew", CTRL+Key_N, this,
1902 SLOT( newContact() ), actionCollection(), "file_new_contact" ); 1902 SLOT( newContact() ), actionCollection(), "file_new_contact" );
1903 1903
1904 mActionMailVCard = new KAction(i18n("Mail &vCard..."), "mail_post_to", 0, 1904 mActionMailVCard = new KAction(i18n("Mail &vCard..."), "mail_post_to", 0,
1905 this, SLOT( mailVCard() ), 1905 this, SLOT( mailVCard() ),
1906 actionCollection(), "file_mail_vcard"); 1906 actionCollection(), "file_mail_vcard");
1907 1907
1908 mActionExport2phone = new KAction( i18n( "Export to phone" ), "ex2phone", 0, this, 1908 mActionExport2phone = new KAction( i18n( "Export to phone" ), "ex2phone", 0, this,
1909 SLOT( export2phone() ), actionCollection(), 1909 SLOT( export2phone() ), actionCollection(),
1910 "kaddressbook_ex2phone" ); 1910 "kaddressbook_ex2phone" );
1911 1911
1912 mActionBeamVCard = 0; 1912 mActionBeamVCard = 0;
1913 mActionBeam = 0; 1913 mActionBeam = 0;
1914 1914
1915#ifndef DESKTOP_VERSION 1915#ifndef DESKTOP_VERSION
1916 if ( Ir::supported() ) { 1916 if ( Ir::supported() ) {
1917 mActionBeamVCard = new KAction( i18n( "Beam v&Card(s)..." ), "beam", 0, this, 1917 mActionBeamVCard = new KAction( i18n( "Beam v&Card(s)..." ), "beam", 0, this,
1918 SLOT( beamVCard() ), actionCollection(), 1918 SLOT( beamVCard() ), actionCollection(),
1919 "kaddressbook_beam_vcard" ); 1919 "kaddressbook_beam_vcard" );
1920 1920
1921 mActionBeam = new KAction( i18n( "&Beam personal vCard" ), "beam", 0, this, 1921 mActionBeam = new KAction( i18n( "&Beam personal vCard" ), "beam", 0, this,
1922 SLOT( beamMySelf() ), actionCollection(), 1922 SLOT( beamMySelf() ), actionCollection(),
1923 "kaddressbook_beam_myself" ); 1923 "kaddressbook_beam_myself" );
1924 } 1924 }
1925#endif 1925#endif
1926 1926
1927 mActionEditAddressee = new KAction( i18n( "&Edit Contact..." ), "edit", 0, 1927 mActionEditAddressee = new KAction( i18n( "&Edit Contact..." ), "edit", 0,
1928 this, SLOT( editContact2() ), 1928 this, SLOT( editContact2() ),
1929 actionCollection(), "file_properties" ); 1929 actionCollection(), "file_properties" );
1930 1930
1931#ifdef KAB_EMBEDDED 1931#ifdef KAB_EMBEDDED
1932 // mActionQuit = KStdAction::quit( mMainWindow, SLOT( exit() ), actionCollection() ); 1932 // mActionQuit = KStdAction::quit( mMainWindow, SLOT( exit() ), actionCollection() );
1933 mActionQuit = new KAction( i18n( "&Exit" ), "exit", 0, 1933 mActionQuit = new KAction( i18n( "&Exit" ), "exit", 0,
1934 mMainWindow, SLOT( exit() ), 1934 mMainWindow, SLOT( exit() ),
1935 actionCollection(), "quit" ); 1935 actionCollection(), "quit" );
1936#endif //KAB_EMBEDDED 1936#endif //KAB_EMBEDDED
1937 1937
1938 // edit menu 1938 // edit menu
1939 if ( mIsPart ) { 1939 if ( mIsPart ) {
1940 mActionCopy = new KAction( i18n( "&Copy" ), "editcopy", CTRL + Key_C, this, 1940 mActionCopy = new KAction( i18n( "&Copy" ), "editcopy", CTRL + Key_C, this,
1941 SLOT( copyContacts() ), actionCollection(), 1941 SLOT( copyContacts() ), actionCollection(),
1942 "kaddressbook_copy" ); 1942 "kaddressbook_copy" );
1943 mActionCut = new KAction( i18n( "Cu&t" ), "editcut", CTRL + Key_X, this, 1943 mActionCut = new KAction( i18n( "Cu&t" ), "editcut", CTRL + Key_X, this,
1944 SLOT( cutContacts() ), actionCollection(), 1944 SLOT( cutContacts() ), actionCollection(),
1945 "kaddressbook_cut" ); 1945 "kaddressbook_cut" );
1946 mActionPaste = new KAction( i18n( "&Paste" ), "editpaste", CTRL + Key_V, this, 1946 mActionPaste = new KAction( i18n( "&Paste" ), "editpaste", CTRL + Key_V, this,
1947 SLOT( pasteContacts() ), actionCollection(), 1947 SLOT( pasteContacts() ), actionCollection(),
1948 "kaddressbook_paste" ); 1948 "kaddressbook_paste" );
1949 mActionSelectAll = new KAction( i18n( "Select &All" ), CTRL + Key_A, this, 1949 mActionSelectAll = new KAction( i18n( "Select &All" ), CTRL + Key_A, this,
1950 SLOT( selectAllContacts() ), actionCollection(), 1950 SLOT( selectAllContacts() ), actionCollection(),
1951 "kaddressbook_select_all" ); 1951 "kaddressbook_select_all" );
1952 mActionUndo = new KAction( i18n( "&Undo" ), "undo", CTRL + Key_Z, this, 1952 mActionUndo = new KAction( i18n( "&Undo" ), "undo", CTRL + Key_Z, this,
1953 SLOT( undo() ), actionCollection(), 1953 SLOT( undo() ), actionCollection(),
1954 "kaddressbook_undo" ); 1954 "kaddressbook_undo" );
1955 mActionRedo = new KAction( i18n( "Re&do" ), "redo", CTRL + SHIFT + Key_Z, 1955 mActionRedo = new KAction( i18n( "Re&do" ), "redo", CTRL + SHIFT + Key_Z,
1956 this, SLOT( redo() ), actionCollection(), 1956 this, SLOT( redo() ), actionCollection(),
1957 "kaddressbook_redo" ); 1957 "kaddressbook_redo" );
1958 } else { 1958 } else {
1959 mActionCopy = KStdAction::copy( this, SLOT( copyContacts() ), actionCollection() ); 1959 mActionCopy = KStdAction::copy( this, SLOT( copyContacts() ), actionCollection() );
1960 mActionCut = KStdAction::cut( this, SLOT( cutContacts() ), actionCollection() ); 1960 mActionCut = KStdAction::cut( this, SLOT( cutContacts() ), actionCollection() );
1961 mActionPaste = KStdAction::paste( this, SLOT( pasteContacts() ), actionCollection() ); 1961 mActionPaste = KStdAction::paste( this, SLOT( pasteContacts() ), actionCollection() );
1962 mActionSelectAll = KStdAction::selectAll( this, SLOT( selectAllContacts() ), actionCollection() ); 1962 mActionSelectAll = KStdAction::selectAll( this, SLOT( selectAllContacts() ), actionCollection() );
1963 mActionUndo = KStdAction::undo( this, SLOT( undo() ), actionCollection() ); 1963 mActionUndo = KStdAction::undo( this, SLOT( undo() ), actionCollection() );
1964 mActionRedo = KStdAction::redo( this, SLOT( redo() ), actionCollection() ); 1964 mActionRedo = KStdAction::redo( this, SLOT( redo() ), actionCollection() );
1965 } 1965 }
1966 1966
1967 mActionDelete = new KAction( i18n( "&Delete Contact" ), "editdelete", 1967 mActionDelete = new KAction( i18n( "&Delete Contact" ), "editdelete",
1968 Key_Delete, this, SLOT( deleteContacts() ), 1968 Key_Delete, this, SLOT( deleteContacts() ),
1969 actionCollection(), "edit_delete" ); 1969 actionCollection(), "edit_delete" );
1970 1970
1971 mActionUndo->setEnabled( false ); 1971 mActionUndo->setEnabled( false );
1972 mActionRedo->setEnabled( false ); 1972 mActionRedo->setEnabled( false );
1973 1973
1974 // settings menu 1974 // settings menu
1975#ifdef KAB_EMBEDDED 1975#ifdef KAB_EMBEDDED
1976//US special menuentry to configure the addressbook resources. On KDE 1976//US special menuentry to configure the addressbook resources. On KDE
1977// you do that through the control center !!! 1977// you do that through the control center !!!
1978 mActionConfigResources = new KAction( i18n( "Configure &Resources..." ), "configure_resources", 0, this, 1978 mActionConfigResources = new KAction( i18n( "Configure &Resources..." ), "configure_resources", 0, this,
1979 SLOT( configureResources() ), actionCollection(), 1979 SLOT( configureResources() ), actionCollection(),
1980 "kaddressbook_configure_resources" ); 1980 "kaddressbook_configure_resources" );
1981#endif //KAB_EMBEDDED 1981#endif //KAB_EMBEDDED
1982 1982
1983 if ( mIsPart ) { 1983 if ( mIsPart ) {
1984 mActionConfigKAddressbook = new KAction( i18n( "&Configure KAddressBook..." ), "configure", 0, this, 1984 mActionConfigKAddressbook = new KAction( i18n( "&Configure KAddressBook..." ), "configure", 0, this,
1985 SLOT( openConfigDialog() ), actionCollection(), 1985 SLOT( openConfigDialog() ), actionCollection(),
1986 "kaddressbook_configure" ); 1986 "kaddressbook_configure" );
1987 1987
1988 //US not implemented yet 1988 //US not implemented yet
1989 //mActionConfigShortcuts = new KAction( i18n( "Configure S&hortcuts..." ), "configure_shortcuts", 0, 1989 //mActionConfigShortcuts = new KAction( i18n( "Configure S&hortcuts..." ), "configure_shortcuts", 0,
1990 // this, SLOT( configureKeyBindings() ), actionCollection(), 1990 // this, SLOT( configureKeyBindings() ), actionCollection(),
1991 // "kaddressbook_configure_shortcuts" ); 1991 // "kaddressbook_configure_shortcuts" );
1992#ifdef KAB_EMBEDDED 1992#ifdef KAB_EMBEDDED
1993 mActionConfigureToolbars = KStdAction::configureToolbars( this, SLOT( mMainWindow->configureToolbars() ), actionCollection() ); 1993 mActionConfigureToolbars = KStdAction::configureToolbars( this, SLOT( mMainWindow->configureToolbars() ), actionCollection() );
1994 mActionConfigureToolbars->setEnabled( false ); 1994 mActionConfigureToolbars->setEnabled( false );
1995#endif //KAB_EMBEDDED 1995#endif //KAB_EMBEDDED
1996 1996
1997 } else { 1997 } else {
1998 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() ); 1998 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() );
1999 1999
2000 //US not implemented yet 2000 //US not implemented yet
2001 //mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() ); 2001 //mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() );
2002 } 2002 }
2003 2003
2004 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0, 2004 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0,
2005 actionCollection(), "options_show_jump_bar" ); 2005 actionCollection(), "options_show_jump_bar" );
2006 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBarVisible( bool ) ) ); 2006 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBarVisible( bool ) ) );
2007 2007
2008 mActionDetails = new KToggleAction( i18n( "Show Details" ), "listview", 0, 2008 mActionDetails = new KToggleAction( i18n( "Show Details" ), "listview", 0,
2009 actionCollection(), "options_show_details" ); 2009 actionCollection(), "options_show_details" );
2010 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) ); 2010 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) );
2011 2011
2012 2012
2013 mActionBR = new KToggleAction( i18n( "Beam receive enabled" ), "beam", 0, this, 2013 mActionBR = new KToggleAction( i18n( "Beam receive enabled" ), "beam", 0, this,
2014 SLOT( toggleBeamReceive() ), actionCollection(), 2014 SLOT( toggleBeamReceive() ), actionCollection(),
2015 "kaddressbook_beam_rec" ); 2015 "kaddressbook_beam_rec" );
2016 2016
2017 2017
2018 // misc 2018 // misc
2019 // only enable LDAP lookup if we can handle the protocol 2019 // only enable LDAP lookup if we can handle the protocol
2020#ifndef KAB_EMBEDDED 2020#ifndef KAB_EMBEDDED
2021 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) { 2021 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) {
2022 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0, 2022 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0,
2023 this, SLOT( openLDAPDialog() ), actionCollection(), 2023 this, SLOT( openLDAPDialog() ), actionCollection(),
2024 "ldap_lookup" ); 2024 "ldap_lookup" );
2025 } 2025 }
2026#else //KAB_EMBEDDED 2026#else //KAB_EMBEDDED
2027 //qDebug("KABCore::initActions() LDAP has to be implemented"); 2027 //qDebug("KABCore::initActions() LDAP has to be implemented");
2028#endif //KAB_EMBEDDED 2028#endif //KAB_EMBEDDED
2029 2029
2030 2030
2031 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this, 2031 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this,
2032 SLOT( setWhoAmI() ), actionCollection(), 2032 SLOT( setWhoAmI() ), actionCollection(),
2033 "set_personal" ); 2033 "set_personal" );
2034 2034
2035 2035
2036 mActionCategories = new KAction( i18n( "Set Categories" ), 0, this, 2036 mActionCategories = new KAction( i18n( "Set Categories" ), 0, this,
2037 SLOT( setCategories() ), actionCollection(), 2037 SLOT( setCategories() ), actionCollection(),
2038 "edit_set_categories" ); 2038 "edit_set_categories" );
2039 mActionEditCategories = new KAction( i18n( "Edit Categories" ), 0, this, 2039 mActionEditCategories = new KAction( i18n( "Edit Categories" ), 0, this,
2040 SLOT( editCategories() ), actionCollection(), 2040 SLOT( editCategories() ), actionCollection(),
2041 "edit__categories" ); 2041 "edit__categories" );
2042 2042
2043 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this, 2043 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this,
2044 SLOT( removeVoice() ), actionCollection(), 2044 SLOT( removeVoice() ), actionCollection(),
2045 "remove_voice" ); 2045 "remove_voice" );
2046 mActionSetFormattedName = new KAction( i18n( "Set formatted name..." ), 0, this, 2046 mActionSetFormattedName = new KAction( i18n( "Set formatted name..." ), 0, this,
2047 SLOT( setFormattedName() ), actionCollection(), 2047 SLOT( setFormattedName() ), actionCollection(),
2048 "set_formatted" ); 2048 "set_formatted" );
2049 2049
2050 mActionManageCategories= new KAction( i18n( "Manage new categories..." ), 0, this, 2050 mActionManageCategories= new KAction( i18n( "Manage new categories..." ), 0, this,
2051 SLOT( manageCategories() ), actionCollection(), 2051 SLOT( manageCategories() ), actionCollection(),
2052 "remove_voice" ); 2052 "remove_voice" );
2053 2053
2054 2054
2055 mActionImportOL = new KAction( i18n( "Import from Outlook..." ), 0, this, 2055 mActionImportOL = new KAction( i18n( "Import from Outlook..." ), 0, this,
2056 SLOT( importFromOL() ), actionCollection(), 2056 SLOT( importFromOL() ), actionCollection(),
2057 "import_OL" ); 2057 "import_OL" );
2058#ifdef KAB_EMBEDDED 2058#ifdef KAB_EMBEDDED
2059 mActionLicence = new KAction( i18n( "Licence" ), 0, 2059 mActionLicence = new KAction( i18n( "Licence" ), 0,
2060 this, SLOT( showLicence() ), actionCollection(), 2060 this, SLOT( showLicence() ), actionCollection(),
2061 "licence_about_data" ); 2061 "licence_about_data" );
2062 mActionFaq = new KAction( i18n( "Faq" ), 0, 2062 mActionFaq = new KAction( i18n( "Faq" ), 0,
2063 this, SLOT( faq() ), actionCollection(), 2063 this, SLOT( faq() ), actionCollection(),
2064 "faq_about_data" ); 2064 "faq_about_data" );
2065 mActionWN = new KAction( i18n( "What's New?" ), 0, 2065 mActionWN = new KAction( i18n( "What's New?" ), 0,
2066 this, SLOT( whatsnew() ), actionCollection(), 2066 this, SLOT( whatsnew() ), actionCollection(),
2067 "wn" ); 2067 "wn" );
2068 mActionSyncHowto = new KAction( i18n( "Sync HowTo" ), 0, 2068 mActionSyncHowto = new KAction( i18n( "Sync HowTo" ), 0,
2069 this, SLOT( synchowto() ), actionCollection(), 2069 this, SLOT( synchowto() ), actionCollection(),
2070 "sync" ); 2070 "sync" );
2071 mActionKdeSyncHowto = new KAction( i18n( "Kde Sync HowTo" ), 0, 2071 mActionKdeSyncHowto = new KAction( i18n( "Kde Sync HowTo" ), 0,
2072 this, SLOT( kdesynchowto() ), actionCollection(), 2072 this, SLOT( kdesynchowto() ), actionCollection(),
2073 "kdesync" ); 2073 "kdesync" );
2074 mActionMultiSyncHowto = new KAction( i18n( "Multi Sync HowTo" ), 0, 2074 mActionMultiSyncHowto = new KAction( i18n( "Multi Sync HowTo" ), 0,
2075 this, SLOT( multisynchowto() ), actionCollection(), 2075 this, SLOT( multisynchowto() ), actionCollection(),
2076 "multisync" ); 2076 "multisync" );
2077 2077
2078 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0, 2078 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0,
2079 this, SLOT( createAboutData() ), actionCollection(), 2079 this, SLOT( createAboutData() ), actionCollection(),
2080 "kaddressbook_about_data" ); 2080 "kaddressbook_about_data" );
2081#endif //KAB_EMBEDDED 2081#endif //KAB_EMBEDDED
2082 2082
2083 clipboardDataChanged(); 2083 clipboardDataChanged();
2084 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 2084 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
2085 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 2085 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
2086} 2086}
2087 2087
2088//US we need this function, to plug all actions into the correct menues. 2088//US we need this function, to plug all actions into the correct menues.
2089// KDE uses a XML format to plug the actions, but we work her without this overhead. 2089// KDE uses a XML format to plug the actions, but we work her without this overhead.
2090void KABCore::addActionsManually() 2090void KABCore::addActionsManually()
2091{ 2091{
2092//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); 2092//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart);
2093 2093
2094#ifdef KAB_EMBEDDED 2094#ifdef KAB_EMBEDDED
2095 QPopupMenu *fileMenu = new QPopupMenu( this ); 2095 QPopupMenu *fileMenu = new QPopupMenu( this );
2096 QPopupMenu *editMenu = new QPopupMenu( this ); 2096 QPopupMenu *editMenu = new QPopupMenu( this );
2097 QPopupMenu *helpMenu = new QPopupMenu( this ); 2097 QPopupMenu *helpMenu = new QPopupMenu( this );
2098 2098
2099 KToolBar* tb = mMainWindow->toolBar(); 2099 KToolBar* tb = mMainWindow->toolBar();
2100 2100
2101#ifndef DESKTOP_VERSION 2101#ifndef DESKTOP_VERSION
2102 if ( KABPrefs::instance()->mFullMenuBarVisible ) { 2102 if ( KABPrefs::instance()->mFullMenuBarVisible ) {
2103#endif 2103#endif
2104 QMenuBar* mb = mMainWindow->menuBar(); 2104 QMenuBar* mb = mMainWindow->menuBar();
2105 2105
2106 //US setup menubar. 2106 //US setup menubar.
2107 //Disable the following block if you do not want to have a menubar. 2107 //Disable the following block if you do not want to have a menubar.
2108 mb->insertItem( i18n("&File"), fileMenu ); 2108 mb->insertItem( i18n("&File"), fileMenu );
2109 mb->insertItem( i18n("&Edit"), editMenu ); 2109 mb->insertItem( i18n("&Edit"), editMenu );
2110 mb->insertItem( i18n("&View"), viewMenu ); 2110 mb->insertItem( i18n("&View"), viewMenu );
2111 mb->insertItem( i18n("&Settings"), settingsMenu ); 2111 mb->insertItem( i18n("&Settings"), settingsMenu );
2112 mb->insertItem( i18n("Synchronize"), syncMenu ); 2112 mb->insertItem( i18n("Synchronize"), syncMenu );
2113 //mb->insertItem( i18n("&Change"), changeMenu ); 2113 //mb->insertItem( i18n("&Change"), changeMenu );
2114 mb->insertItem( i18n("&Help"), helpMenu ); 2114 mb->insertItem( i18n("&Help"), helpMenu );
2115 mIncSearchWidget = new IncSearchWidget( tb ); 2115 mIncSearchWidget = new IncSearchWidget( tb );
2116 // tb->insertWidget(-1, 0, mIncSearchWidget); 2116 // tb->insertWidget(-1, 0, mIncSearchWidget);
2117#ifndef DESKTOP_VERSION 2117#ifndef DESKTOP_VERSION
2118 } else { 2118 } else {
2119 //US setup toolbar 2119 //US setup toolbar
2120 QPEMenuBar *menuBarTB = new QPEMenuBar( tb ); 2120 QPEMenuBar *menuBarTB = new QPEMenuBar( tb );
2121 QPopupMenu *popupBarTB = new QPopupMenu( this ); 2121 QPopupMenu *popupBarTB = new QPopupMenu( this );
2122 menuBarTB->insertItem( "ME", popupBarTB); 2122 menuBarTB->insertItem( "ME", popupBarTB);
2123 tb->insertWidget(-1, 0, menuBarTB); 2123 tb->insertWidget(-1, 0, menuBarTB);
2124 mIncSearchWidget = new IncSearchWidget( tb ); 2124 mIncSearchWidget = new IncSearchWidget( tb );
2125 2125
2126 tb->enableMoving(false); 2126 tb->enableMoving(false);
2127 popupBarTB->insertItem( i18n("&File"), fileMenu ); 2127 popupBarTB->insertItem( i18n("&File"), fileMenu );
2128 popupBarTB->insertItem( i18n("&Edit"), editMenu ); 2128 popupBarTB->insertItem( i18n("&Edit"), editMenu );
2129 popupBarTB->insertItem( i18n("&View"), viewMenu ); 2129 popupBarTB->insertItem( i18n("&View"), viewMenu );
2130 popupBarTB->insertItem( i18n("&Settings"), settingsMenu ); 2130 popupBarTB->insertItem( i18n("&Settings"), settingsMenu );
2131 popupBarTB->insertItem( i18n("Synchronize"), syncMenu ); 2131 popupBarTB->insertItem( i18n("Synchronize"), syncMenu );
2132 mViewManager->getFilterAction()->plug ( popupBarTB); 2132 mViewManager->getFilterAction()->plug ( popupBarTB);
2133 //popupBarTB->insertItem( i18n("&Change selected"), changeMenu ); 2133 //popupBarTB->insertItem( i18n("&Change selected"), changeMenu );
2134 popupBarTB->insertItem( i18n("&Help"), helpMenu ); 2134 popupBarTB->insertItem( i18n("&Help"), helpMenu );
2135 if (QApplication::desktop()->width() > 320 ) { 2135 if (QApplication::desktop()->width() > 320 ) {
2136 // mViewManager->getFilterAction()->plug ( tb); 2136 // mViewManager->getFilterAction()->plug ( tb);
2137 } 2137 }
2138 } 2138 }
2139#endif 2139#endif
2140 // mActionQuit->plug ( mMainWindow->toolBar()); 2140 // mActionQuit->plug ( mMainWindow->toolBar());
2141 2141
2142 2142
2143 2143
2144 //US Now connect the actions with the menue entries. 2144 //US Now connect the actions with the menue entries.
2145#ifdef DESKTOP_VERSION 2145#ifdef DESKTOP_VERSION
2146 mActionPrint->plug( fileMenu ); 2146 mActionPrint->plug( fileMenu );
2147 mActionPrintDetails->plug( fileMenu ); 2147 mActionPrintDetails->plug( fileMenu );
2148 fileMenu->insertSeparator(); 2148 fileMenu->insertSeparator();
2149#endif 2149#endif
2150 mActionMail->plug( fileMenu ); 2150 mActionMail->plug( fileMenu );
2151 fileMenu->insertSeparator(); 2151 fileMenu->insertSeparator();
2152 2152
2153 mActionNewContact->plug( fileMenu ); 2153 mActionNewContact->plug( fileMenu );
2154 mActionNewContact->plug( tb ); 2154 mActionNewContact->plug( tb );
2155 2155
2156 mActionEditAddressee->plug( fileMenu ); 2156 mActionEditAddressee->plug( fileMenu );
2157 // if ((KGlobal::getDesktopSize() > KGlobal::Small ) || 2157 // if ((KGlobal::getDesktopSize() > KGlobal::Small ) ||
2158 // (!KABPrefs::instance()->mMultipleViewsAtOnce )) 2158 // (!KABPrefs::instance()->mMultipleViewsAtOnce ))
2159 mActionEditAddressee->plug( tb ); 2159 mActionEditAddressee->plug( tb );
2160 2160
2161 fileMenu->insertSeparator(); 2161 fileMenu->insertSeparator();
2162 mActionSave->plug( fileMenu ); 2162 mActionSave->plug( fileMenu );
2163 fileMenu->insertItem( "&Import", ImportMenu ); 2163 fileMenu->insertItem( "&Import", ImportMenu );
2164 fileMenu->insertItem( "&Export", ExportMenu ); 2164 fileMenu->insertItem( "&Export", ExportMenu );
2165 fileMenu->insertItem( i18n("&Change"), changeMenu ); 2165 fileMenu->insertItem( i18n("&Change"), changeMenu );
2166#ifndef DESKTOP_VERSION 2166#ifndef DESKTOP_VERSION
2167 if ( Ir::supported() ) fileMenu->insertItem( i18n("&Beam"), beamMenu ); 2167 if ( Ir::supported() ) fileMenu->insertItem( i18n("&Beam"), beamMenu );
2168#endif 2168#endif
2169#if 0 2169#if 0
2170 // PENDING fix MailVCard 2170 // PENDING fix MailVCard
2171 fileMenu->insertSeparator(); 2171 fileMenu->insertSeparator();
2172 mActionMailVCard->plug( fileMenu ); 2172 mActionMailVCard->plug( fileMenu );
2173#endif 2173#endif
2174#ifndef DESKTOP_VERSION 2174#ifndef DESKTOP_VERSION
2175 if ( Ir::supported() ) mActionBR->plug( beamMenu ); 2175 if ( Ir::supported() ) mActionBR->plug( beamMenu );
2176 if ( Ir::supported() ) mActionBeamVCard->plug( beamMenu ); 2176 if ( Ir::supported() ) mActionBeamVCard->plug( beamMenu );
2177 if ( Ir::supported() ) mActionBeam->plug( beamMenu ); 2177 if ( Ir::supported() ) mActionBeam->plug( beamMenu );
2178#endif 2178#endif
2179 fileMenu->insertSeparator(); 2179 fileMenu->insertSeparator();
2180 mActionQuit->plug( fileMenu ); 2180 mActionQuit->plug( fileMenu );
2181#ifdef _WIN32_ 2181#ifdef _WIN32_
2182 mActionImportOL->plug( ImportMenu ); 2182 mActionImportOL->plug( ImportMenu );
2183#endif 2183#endif
2184 // edit menu 2184 // edit menu
2185 mActionUndo->plug( editMenu ); 2185 mActionUndo->plug( editMenu );
2186 mActionRedo->plug( editMenu ); 2186 mActionRedo->plug( editMenu );
2187 editMenu->insertSeparator(); 2187 editMenu->insertSeparator();
2188 mActionCut->plug( editMenu ); 2188 mActionCut->plug( editMenu );
2189 mActionCopy->plug( editMenu ); 2189 mActionCopy->plug( editMenu );
2190 mActionPaste->plug( editMenu ); 2190 mActionPaste->plug( editMenu );
2191 mActionDelete->plug( editMenu ); 2191 mActionDelete->plug( editMenu );
2192 editMenu->insertSeparator(); 2192 editMenu->insertSeparator();
2193 mActionSelectAll->plug( editMenu ); 2193 mActionSelectAll->plug( editMenu );
2194 2194
2195 mActionSetFormattedName->plug( changeMenu ); 2195 mActionSetFormattedName->plug( changeMenu );
2196 mActionRemoveVoice->plug( changeMenu ); 2196 mActionRemoveVoice->plug( changeMenu );
2197 // settings menu 2197 // settings menu
2198//US special menuentry to configure the addressbook resources. On KDE 2198//US special menuentry to configure the addressbook resources. On KDE
2199// you do that through the control center !!! 2199// you do that through the control center !!!
2200 mActionConfigResources->plug( settingsMenu ); 2200 mActionConfigResources->plug( settingsMenu );
2201 settingsMenu->insertSeparator(); 2201 settingsMenu->insertSeparator();
2202 2202
2203 mActionConfigKAddressbook->plug( settingsMenu ); 2203 mActionConfigKAddressbook->plug( settingsMenu );
2204 2204
2205 if ( mIsPart ) { 2205 if ( mIsPart ) {
2206 //US not implemented yet 2206 //US not implemented yet
2207 //mActionConfigShortcuts->plug( settingsMenu ); 2207 //mActionConfigShortcuts->plug( settingsMenu );
2208 //mActionConfigureToolbars->plug( settingsMenu ); 2208 //mActionConfigureToolbars->plug( settingsMenu );
2209 2209
2210 } else { 2210 } else {
2211 //US not implemented yet 2211 //US not implemented yet
2212 //mActionKeyBindings->plug( settingsMenu ); 2212 //mActionKeyBindings->plug( settingsMenu );
2213 } 2213 }
2214 2214
2215 settingsMenu->insertSeparator(); 2215 settingsMenu->insertSeparator();
2216 2216
2217 mActionJumpBar->plug( settingsMenu ); 2217 mActionJumpBar->plug( settingsMenu );
2218 mActionDetails->plug( settingsMenu ); 2218 mActionDetails->plug( settingsMenu );
2219 //if (!KABPrefs::instance()->mMultipleViewsAtOnce || KGlobal::getDesktopSize() == KGlobal::Desktop ) 2219 //if (!KABPrefs::instance()->mMultipleViewsAtOnce || KGlobal::getDesktopSize() == KGlobal::Desktop )
2220 mActionDetails->plug( tb ); 2220 mActionDetails->plug( tb );
2221 settingsMenu->insertSeparator(); 2221 settingsMenu->insertSeparator();
2222#ifndef DESKTOP_VERSION 2222#ifndef DESKTOP_VERSION
2223 if ( Ir::supported() ) mActionBR->plug(settingsMenu ); 2223 if ( Ir::supported() ) mActionBR->plug(settingsMenu );
2224#endif 2224#endif
2225 settingsMenu->insertSeparator(); 2225 settingsMenu->insertSeparator();
2226 2226
2227 mActionWhoAmI->plug( settingsMenu ); 2227 mActionWhoAmI->plug( settingsMenu );
2228 mActionEditCategories->plug( settingsMenu ); 2228 mActionEditCategories->plug( settingsMenu );
2229 mActionEditCategories->plug( changeMenu ); 2229 mActionEditCategories->plug( changeMenu );
2230 mActionCategories->plug( changeMenu ); 2230 mActionCategories->plug( changeMenu );
2231 mActionManageCategories->plug( changeMenu ); 2231 mActionManageCategories->plug( changeMenu );
2232 2232
2233 mActionCategories->plug( settingsMenu ); 2233 mActionCategories->plug( settingsMenu );
2234 mActionManageCategories->plug( settingsMenu ); 2234 mActionManageCategories->plug( settingsMenu );
2235 2235
2236 2236
2237 mActionWN->plug( helpMenu ); 2237 mActionWN->plug( helpMenu );
2238 mActionSyncHowto->plug( helpMenu ); 2238 mActionSyncHowto->plug( helpMenu );
2239 mActionKdeSyncHowto->plug( helpMenu ); 2239 mActionKdeSyncHowto->plug( helpMenu );
2240 mActionMultiSyncHowto->plug( helpMenu ); 2240 mActionMultiSyncHowto->plug( helpMenu );
2241 mActionFaq->plug( helpMenu ); 2241 mActionFaq->plug( helpMenu );
2242 mActionLicence->plug( helpMenu ); 2242 mActionLicence->plug( helpMenu );
2243 mActionAboutKAddressbook->plug( helpMenu ); 2243 mActionAboutKAddressbook->plug( helpMenu );
2244 2244
2245 if (KGlobal::getDesktopSize() > KGlobal::Small ) { 2245 if (KGlobal::getDesktopSize() > KGlobal::Small ) {
2246 2246
2247 mActionSave->plug( tb ); 2247 mActionSave->plug( tb );
2248 mViewManager->getFilterAction()->plug ( tb); 2248 mViewManager->getFilterAction()->plug ( tb);
2249 //LR hide filteraction on started in 480x640 2249 //LR hide filteraction on started in 480x640
2250 if (QApplication::desktop()->width() == 480 ) { 2250 if (QApplication::desktop()->width() == 480 ) {
2251 mViewManager->getFilterAction()->setComboWidth( 0 ); 2251 mViewManager->getFilterAction()->setComboWidth( 0 );
2252 } 2252 }
2253 mActionUndo->plug( tb ); 2253 mActionUndo->plug( tb );
2254 mActionDelete->plug( tb ); 2254 mActionDelete->plug( tb );
2255 mActionRedo->plug( tb ); 2255 mActionRedo->plug( tb );
2256 } else { 2256 } else {
2257 mActionSave->plug( tb ); 2257 mActionSave->plug( tb );
2258 tb->enableMoving(false); 2258 tb->enableMoving(false);
2259 } 2259 }
2260 //mActionQuit->plug ( tb ); 2260 //mActionQuit->plug ( tb );
2261 // tb->insertWidget(-1, 0, mIncSearchWidget, 6); 2261 // tb->insertWidget(-1, 0, mIncSearchWidget, 6);
2262 2262
2263 //US link the searchwidget first to this. 2263 //US link the searchwidget first to this.
2264 // The real linkage to the toolbar happens later. 2264 // The real linkage to the toolbar happens later.
2265//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE); 2265//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE);
2266//US tb->insertItem( mIncSearchWidget ); 2266//US tb->insertItem( mIncSearchWidget );
2267/*US 2267/*US
2268 mIncSearchWidget = new IncSearchWidget( tb ); 2268 mIncSearchWidget = new IncSearchWidget( tb );
2269 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 2269 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
2270 SLOT( incrementalSearch( const QString& ) ) ); 2270 SLOT( incrementalSearch( const QString& ) ) );
2271 2271
2272 mJumpButtonBar = new JumpButtonBar( this, this ); 2272 mJumpButtonBar = new JumpButtonBar( this, this );
2273 2273
2274//US topLayout->addWidget( mJumpButtonBar ); 2274//US topLayout->addWidget( mJumpButtonBar );
2275 this->layout()->add( mJumpButtonBar ); 2275 this->layout()->add( mJumpButtonBar );
2276*/ 2276*/
2277 2277
2278#endif //KAB_EMBEDDED 2278#endif //KAB_EMBEDDED
2279 2279
2280 mActionExport2phone->plug( ExportMenu ); 2280 mActionExport2phone->plug( ExportMenu );
2281 connect ( syncMenu, SIGNAL( activated ( int ) ), syncManager, SLOT (slotSyncMenu( int ) ) ); 2281 connect ( syncMenu, SIGNAL( activated ( int ) ), syncManager, SLOT (slotSyncMenu( int ) ) );
2282 syncManager->fillSyncMenu(); 2282 syncManager->fillSyncMenu();
2283 2283
2284} 2284}
2285void KABCore::showLicence() 2285void KABCore::showLicence()
2286{ 2286{
2287 KApplication::showLicence(); 2287 KApplication::showLicence();
2288} 2288}
2289 2289
2290void KABCore::manageCategories( ) 2290void KABCore::manageCategories( )
2291{ 2291{
2292 KABCatPrefs* cp = new KABCatPrefs(); 2292 KABCatPrefs* cp = new KABCatPrefs();
2293 cp->show(); 2293 cp->show();
2294 int w =cp->sizeHint().width() ; 2294 int w =cp->sizeHint().width() ;
2295 int h = cp->sizeHint().height() ; 2295 int h = cp->sizeHint().height() ;
2296 int dw = QApplication::desktop()->width(); 2296 int dw = QApplication::desktop()->width();
2297 int dh = QApplication::desktop()->height(); 2297 int dh = QApplication::desktop()->height();
2298 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2298 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2299 if ( !cp->exec() ) { 2299 if ( !cp->exec() ) {
2300 delete cp; 2300 delete cp;
2301 return; 2301 return;
2302 } 2302 }
2303 int count = 0; 2303 int count = 0;
2304 int cc = 0; 2304 int cc = 0;
2305 message( i18n("Please wait, processing categories...")); 2305 message( i18n("Please wait, processing categories..."));
2306 if ( cp->addCat() ) { 2306 if ( cp->addCat() ) {
2307 KABC::AddressBook::Iterator it; 2307 KABC::AddressBook::Iterator it;
2308 QStringList catList = KABPrefs::instance()->mCustomCategories; 2308 QStringList catList = KABPrefs::instance()->mCustomCategories;
2309 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 2309 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2310 ++cc; 2310 ++cc;
2311 if ( cc %10 == 0) 2311 if ( cc %10 == 0)
2312 message(i18n("Processing contact #%1").arg(cc)); 2312 message(i18n("Processing contact #%1").arg(cc));
2313 QStringList catIncList = (*it).categories(); 2313 QStringList catIncList = (*it).categories();
2314 int i; 2314 int i;
2315 for( i = 0; i< catIncList.count(); ++i ) { 2315 for( i = 0; i< catIncList.count(); ++i ) {
2316 if ( !catList.contains (catIncList[i])) { 2316 if ( !catList.contains (catIncList[i])) {
2317 catList.append( catIncList[i] ); 2317 catList.append( catIncList[i] );
2318 //qDebug("add cat %s ", catIncList[i].latin1()); 2318 //qDebug("add cat %s ", catIncList[i].latin1());
2319 ++count; 2319 ++count;
2320 } 2320 }
2321 } 2321 }
2322 } 2322 }
2323 catList.sort(); 2323 catList.sort();
2324 KABPrefs::instance()->mCustomCategories = catList; 2324 KABPrefs::instance()->mCustomCategories = catList;
2325 KABPrefs::instance()->writeConfig(); 2325 KABPrefs::instance()->writeConfig();
2326 message(QString::number( count )+ i18n(" categories added to list! ")); 2326 message(QString::number( count )+ i18n(" categories added to list! "));
2327 } else { 2327 } else {
2328 QStringList catList = KABPrefs::instance()->mCustomCategories; 2328 QStringList catList = KABPrefs::instance()->mCustomCategories;
2329 QStringList catIncList; 2329 QStringList catIncList;
2330 QStringList newCatList; 2330 QStringList newCatList;
2331 KABC::AddressBook::Iterator it; 2331 KABC::AddressBook::Iterator it;
2332 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 2332 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2333 ++cc; 2333 ++cc;
2334 if ( cc %10 == 0) 2334 if ( cc %10 == 0)
2335 message(i18n("Processing contact #%1").arg(cc)); 2335 message(i18n("Processing contact #%1").arg(cc));
2336 QStringList catIncList = (*it).categories(); 2336 QStringList catIncList = (*it).categories();
2337 int i; 2337 int i;
2338 if ( catIncList.count() ) { 2338 if ( catIncList.count() ) {
2339 newCatList.clear(); 2339 newCatList.clear();
2340 for( i = 0; i< catIncList.count(); ++i ) { 2340 for( i = 0; i< catIncList.count(); ++i ) {
2341 if ( catList.contains (catIncList[i])) { 2341 if ( catList.contains (catIncList[i])) {
2342 newCatList.append( catIncList[i] ); 2342 newCatList.append( catIncList[i] );
2343 } 2343 }
2344 } 2344 }
2345 newCatList.sort(); 2345 newCatList.sort();
2346 (*it).setCategories( newCatList ); 2346 (*it).setCategories( newCatList );
2347 mAddressBook->insertAddressee( (*it) ); 2347 mAddressBook->insertAddressee( (*it) );
2348 } 2348 }
2349 } 2349 }
2350 setModified( true ); 2350 setModified( true );
2351 mViewManager->refreshView(); 2351 mViewManager->refreshView();
2352 message( i18n("Removing categories done!")); 2352 message( i18n("Removing categories done!"));
2353 } 2353 }
2354 delete cp; 2354 delete cp;
2355} 2355}
2356void KABCore::removeVoice() 2356void KABCore::removeVoice()
2357{ 2357{
2358 if ( KMessageBox::questionYesNo( this, i18n("After importing, phone numbers\nmay have two or more types.\n(E.g. work+voice)\nThese numbers are shown as \"other\".\nClick Yes to remove the voice type\nfrom numbers with more than one type.\n\nRemove voice type?") ) == KMessageBox::No ) 2358 if ( KMessageBox::questionYesNo( this, i18n("After importing, phone numbers\nmay have two or more types.\n(E.g. work+voice)\nThese numbers are shown as \"other\".\nClick Yes to remove the voice type\nfrom numbers with more than one type.\n\nRemove voice type?") ) == KMessageBox::No )
2359 return; 2359 return;
2360 XXPortSelectDialog dlg( this, false, this ); 2360 XXPortSelectDialog dlg( this, false, this );
2361 if ( !dlg.exec() ) 2361 if ( !dlg.exec() )
2362 return; 2362 return;
2363 mAddressBook->setUntagged(); 2363 mAddressBook->setUntagged();
2364 dlg.tagSelected(); 2364 dlg.tagSelected();
2365 message(i18n("Removing voice..."), false ); 2365 message(i18n("Removing voice..."), false );
2366 KABC::AddressBook::Iterator it; 2366 KABC::AddressBook::Iterator it;
2367 for ( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 2367 for ( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2368 if ( (*it).tagged() ) { 2368 if ( (*it).tagged() ) {
2369 (*it).removeVoice(); 2369 (*it).removeVoice();
2370 } 2370 }
2371 } 2371 }
2372 message(i18n("Refreshing view...") ); 2372 message(i18n("Refreshing view...") );
2373 qApp->processEvents(); 2373 qApp->processEvents();
2374 mViewManager->refreshView( "" ); 2374 mViewManager->refreshView( "" );
2375 Addressee add; 2375 Addressee add;
2376 mDetails->setAddressee( add ); 2376 mDetails->setAddressee( add );
2377 message(i18n("Remove voice completed!") ); 2377 message(i18n("Remove voice completed!") );
2378 2378
2379 2379
2380 2380
2381} 2381}
2382 2382
2383void KABCore::setFormattedName() 2383void KABCore::setFormattedName()
2384{ 2384{
2385 KABFormatPrefs setpref; 2385 KABFormatPrefs setpref;
2386 if ( !setpref.exec() ) { 2386 if ( !setpref.exec() ) {
2387 return; 2387 return;
2388 } 2388 }
2389 XXPortSelectDialog dlg( this, false, this ); 2389 XXPortSelectDialog dlg( this, false, this );
2390 if ( !dlg.exec() ) 2390 if ( !dlg.exec() )
2391 return; 2391 return;
2392 mAddressBook->setUntagged(); 2392 mAddressBook->setUntagged();
2393 dlg.tagSelected(); 2393 dlg.tagSelected();
2394 int count = 0; 2394 int count = 0;
2395 KABC::AddressBook::Iterator it; 2395 KABC::AddressBook::Iterator it;
2396 for ( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 2396 for ( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2397 if ( (*it).tagged() ) { 2397 if ( (*it).tagged() ) {
2398 ++count; 2398 ++count;
2399 if ( count %10 == 0 ) 2399 if ( count %10 == 0 )
2400 message(i18n("Changing contact #%1").arg( count ) ); 2400 message(i18n("Changing contact #%1").arg( count ) );
2401 qApp->processEvents(); 2401 qApp->processEvents();
2402 QString fName; 2402 QString fName;
2403 if ( setpref.simple->isChecked() ) 2403 if ( setpref.simple->isChecked() )
2404 fName = NameEditDialog::formattedName( (*it), NameEditDialog::SimpleName ); 2404 fName = NameEditDialog::formattedName( (*it), NameEditDialog::SimpleName );
2405 else if ( setpref.full->isChecked() ) 2405 else if ( setpref.full->isChecked() )
2406 fName = NameEditDialog::formattedName( (*it), NameEditDialog::FullName ); 2406 fName = NameEditDialog::formattedName( (*it), NameEditDialog::FullName );
2407 else if ( setpref.reverse->isChecked() ) 2407 else if ( setpref.reverse->isChecked() )
2408 fName = NameEditDialog::formattedName( (*it), NameEditDialog::ReverseName ); 2408 fName = NameEditDialog::formattedName( (*it), NameEditDialog::ReverseName );
2409 else 2409 else
2410 fName = (*it).organization(); 2410 fName = (*it).organization();
2411 if ( setpref.setCompany->isChecked() ) 2411 if ( setpref.setCompany->isChecked() )
2412 if ( fName.isEmpty() || fName =="," ) 2412 if ( fName.isEmpty() || fName =="," )
2413 fName = (*it).organization(); 2413 fName = (*it).organization();
2414 (*it).setFormattedName( fName ); 2414 (*it).setFormattedName( fName );
2415 } 2415 }
2416 } 2416 }
2417 message(i18n("Refreshing view...") ); 2417 message(i18n("Refreshing view...") );
2418 qApp->processEvents(); 2418 qApp->processEvents();
2419 mViewManager->refreshView( "" ); 2419 mViewManager->refreshView( "" );
2420 Addressee add; 2420 Addressee add;
2421 mDetails->setAddressee( add ); 2421 mDetails->setAddressee( add );
2422 message(i18n("Setting formatted name completed!") ); 2422 message(i18n("Setting formatted name completed!") );
2423} 2423}
2424 2424
2425void KABCore::clipboardDataChanged() 2425void KABCore::clipboardDataChanged()
2426{ 2426{
2427 2427
2428 if ( mReadWrite ) 2428 if ( mReadWrite )
2429 mActionPaste->setEnabled( !QApplication::clipboard()->text().isEmpty() ); 2429 mActionPaste->setEnabled( !QApplication::clipboard()->text().isEmpty() );
2430 2430
2431} 2431}
2432 2432
2433void KABCore::updateActionMenu() 2433void KABCore::updateActionMenu()
2434{ 2434{
2435 UndoStack *undo = UndoStack::instance(); 2435 UndoStack *undo = UndoStack::instance();
2436 RedoStack *redo = RedoStack::instance(); 2436 RedoStack *redo = RedoStack::instance();
2437 2437
2438 if ( undo->isEmpty() ) 2438 if ( undo->isEmpty() )
2439 mActionUndo->setText( i18n( "Undo" ) ); 2439 mActionUndo->setText( i18n( "Undo" ) );
2440 else 2440 else
2441 mActionUndo->setText( i18n( "Undo %1" ).arg( undo->top()->name() ) ); 2441 mActionUndo->setText( i18n( "Undo %1" ).arg( undo->top()->name() ) );
2442 2442
2443 mActionUndo->setEnabled( !undo->isEmpty() ); 2443 mActionUndo->setEnabled( !undo->isEmpty() );
2444 2444
2445 if ( !redo->top() ) 2445 if ( !redo->top() )
2446 mActionRedo->setText( i18n( "Redo" ) ); 2446 mActionRedo->setText( i18n( "Redo" ) );
2447 else 2447 else
2448 mActionRedo->setText( i18n( "Redo %1" ).arg( redo->top()->name() ) ); 2448 mActionRedo->setText( i18n( "Redo %1" ).arg( redo->top()->name() ) );
2449 2449
2450 mActionRedo->setEnabled( !redo->isEmpty() ); 2450 mActionRedo->setEnabled( !redo->isEmpty() );
2451} 2451}
2452 2452
2453void KABCore::configureKeyBindings() 2453void KABCore::configureKeyBindings()
2454{ 2454{
2455#ifndef KAB_EMBEDDED 2455#ifndef KAB_EMBEDDED
2456 KKeyDialog::configure( actionCollection(), true ); 2456 KKeyDialog::configure( actionCollection(), true );
2457#else //KAB_EMBEDDED 2457#else //KAB_EMBEDDED
2458 qDebug("KABCore::configureKeyBindings() not implemented"); 2458 qDebug("KABCore::configureKeyBindings() not implemented");
2459#endif //KAB_EMBEDDED 2459#endif //KAB_EMBEDDED
2460} 2460}
2461 2461
2462#ifdef KAB_EMBEDDED 2462#ifdef KAB_EMBEDDED
2463void KABCore::configureResources() 2463void KABCore::configureResources()
2464{ 2464{
2465 KRES::KCMKResources dlg( this, "" , 0 ); 2465 KRES::KCMKResources dlg( this, "" , 0 );
2466 2466
2467 if ( !dlg.exec() ) 2467 if ( !dlg.exec() )
2468 return; 2468 return;
2469 KMessageBox::information( this, i18n("Please restart to get the \nchanged resources (re)loaded!\n") ); 2469 KMessageBox::information( this, i18n("Please restart to get the \nchanged resources (re)loaded!\n") );
2470} 2470}
2471#endif //KAB_EMBEDDED 2471#endif //KAB_EMBEDDED
2472 2472
2473 2473
2474/* this method will be called through the QCop interface from Ko/Pi to select addresses 2474/* this method will be called through the QCop interface from Ko/Pi to select addresses
2475 * for the attendees list of an event. 2475 * for the attendees list of an event.
2476 */ 2476 */
2477void KABCore::requestForNameEmailUidList(const QString& sourceChannel, const QString& uid) 2477void KABCore::requestForNameEmailUidList(const QString& sourceChannel, const QString& uid)
2478{ 2478{
2479 QStringList nameList; 2479 QStringList nameList;
2480 QStringList emailList; 2480 QStringList emailList;
2481 QStringList uidList; 2481 QStringList uidList;
2482 2482
2483 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this); 2483 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this);
2484 uint i=0; 2484 uint i=0;
2485 for (i=0; i < list.count(); i++) 2485 for (i=0; i < list.count(); i++)
2486 { 2486 {
2487 nameList.append(list[i].realName()); 2487 nameList.append(list[i].realName());
2488 emailList.append(list[i].preferredEmail()); 2488 emailList.append(list[i].preferredEmail());
2489 uidList.append(list[i].uid()); 2489 uidList.append(list[i].uid());
2490 } 2490 }
2491 2491
2492 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI(sourceChannel, uid, nameList, emailList, uidList); 2492 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI(sourceChannel, uid, nameList, emailList, uidList);
2493 2493
2494} 2494}
2495 2495
2496/* this method will be called through the QCop interface from Ko/Pi to select birthdays 2496/* this method will be called through the QCop interface from Ko/Pi to select birthdays
2497 * to put them into the calendar. 2497 * to put them into the calendar.
2498 */ 2498 */
2499void KABCore::requestForBirthdayList(const QString& sourceChannel, const QString& uid) 2499void KABCore::requestForBirthdayList(const QString& sourceChannel, const QString& uid)
2500{ 2500{
2501 // qDebug("KABCore::requestForBirthdayList"); 2501 // qDebug("KABCore::requestForBirthdayList");
2502 QStringList birthdayList; 2502 QStringList birthdayList;
2503 QStringList anniversaryList; 2503 QStringList anniversaryList;
2504 QStringList realNameList; 2504 QStringList realNameList;
2505 QStringList preferredEmailList; 2505 QStringList preferredEmailList;
2506 QStringList assembledNameList; 2506 QStringList assembledNameList;
2507 QStringList uidList; 2507 QStringList uidList;
2508 2508
2509 KABC::AddressBook::Iterator it; 2509 KABC::AddressBook::Iterator it;
2510 2510
2511 int count = 0; 2511 int count = 0;
2512 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 2512 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2513 ++count; 2513 ++count;
2514 } 2514 }
2515 QProgressBar bar(count,0 ); 2515 QProgressBar bar(count,0 );
2516 int w = 300; 2516 int w = 300;
2517 if ( QApplication::desktop()->width() < 320 ) 2517 if ( QApplication::desktop()->width() < 320 )
2518 w = 220; 2518 w = 220;
2519 int h = bar.sizeHint().height() ; 2519 int h = bar.sizeHint().height() ;
2520 int dw = QApplication::desktop()->width(); 2520 int dw = QApplication::desktop()->width();
2521 int dh = QApplication::desktop()->height(); 2521 int dh = QApplication::desktop()->height();
2522 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2522 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2523 bar.show(); 2523 bar.show();
2524 bar.setCaption (i18n("Collecting birthdays - close to abort!") ); 2524 bar.setCaption (i18n("Collecting birthdays - close to abort!") );
2525 qApp->processEvents(); 2525 qApp->processEvents();
2526 2526
2527 QDate bday; 2527 QDate bday;
2528 QString anni; 2528 QString anni;
2529 QString formattedbday; 2529 QString formattedbday;
2530 2530
2531 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) 2531 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it )
2532 { 2532 {
2533 if ( ! bar.isVisible() ) 2533 if ( ! bar.isVisible() )
2534 return; 2534 return;
2535 bar.setProgress( count++ ); 2535 bar.setProgress( count++ );
2536 qApp->processEvents(); 2536 qApp->processEvents();
2537 bday = (*it).birthday().date(); 2537 bday = (*it).birthday().date();
2538 anni = (*it).custom("KADDRESSBOOK", "X-Anniversary" ); 2538 anni = (*it).custom("KADDRESSBOOK", "X-Anniversary" );
2539 2539
2540 if ( bday.isValid() || !anni.isEmpty()) 2540 if ( bday.isValid() || !anni.isEmpty())
2541 { 2541 {
2542 if (bday.isValid()) 2542 if (bday.isValid())
2543 formattedbday = KGlobal::locale()->formatDate(bday, true, KLocale::ISODate); 2543 formattedbday = KGlobal::locale()->formatDate(bday, true, KLocale::ISODate);
2544 else 2544 else
2545 formattedbday = "NOTVALID"; 2545 formattedbday = "NOTVALID";
2546 if (anni.isEmpty()) 2546 if (anni.isEmpty())
2547 anni = "INVALID"; 2547 anni = "INVALID";
2548 2548
2549 birthdayList.append(formattedbday); 2549 birthdayList.append(formattedbday);
2550 anniversaryList.append(anni); //should be ISODate 2550 anniversaryList.append(anni); //should be ISODate
2551 realNameList.append((*it).realName()); 2551 realNameList.append((*it).realName());
2552 preferredEmailList.append((*it).preferredEmail()); 2552 preferredEmailList.append((*it).preferredEmail());
2553 assembledNameList.append((*it).assembledName()); 2553 assembledNameList.append((*it).assembledName());
2554 uidList.append((*it).uid()); 2554 uidList.append((*it).uid());
2555 2555
2556 //qDebug("found birthday in KA/Pi: %s,%s,%s,%s: %s, %s", (*it).realName().latin1(), (*it).preferredEmail().latin1(), (*it).assembledName().latin1(), (*it).uid().latin1(), formattedbday.latin1(), anni.latin1() ); 2556 //qDebug("found birthday in KA/Pi: %s,%s,%s,%s: %s, %s", (*it).realName().latin1(), (*it).preferredEmail().latin1(), (*it).assembledName().latin1(), (*it).uid().latin1(), formattedbday.latin1(), anni.latin1() );
2557 } 2557 }
2558 } 2558 }
2559 2559
2560 bool res = ExternalAppHandler::instance()->returnBirthdayListFromKAPI(sourceChannel, uid, birthdayList, anniversaryList, realNameList, preferredEmailList, assembledNameList, uidList); 2560 bool res = ExternalAppHandler::instance()->returnBirthdayListFromKAPI(sourceChannel, uid, birthdayList, anniversaryList, realNameList, preferredEmailList, assembledNameList, uidList);
2561 2561
2562} 2562}
2563 2563
2564/* this method will be called through the QCop interface from other apps to show details of a contact. 2564/* this method will be called through the QCop interface from other apps to show details of a contact.
2565 */ 2565 */
2566void KABCore::requestForDetails(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid) 2566void KABCore::requestForDetails(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid)
2567{ 2567{
2568 //qDebug("KABCore::requestForDetails %s %s %s %s %s", sourceChannel.latin1(), sessionuid.latin1(), name.latin1(), email.latin1(), uid.latin1()); 2568 //qDebug("KABCore::requestForDetails %s %s %s %s %s", sourceChannel.latin1(), sessionuid.latin1(), name.latin1(), email.latin1(), uid.latin1());
2569 2569
2570 QString foundUid = QString::null; 2570 QString foundUid = QString::null;
2571 if ( ! uid.isEmpty() ) { 2571 if ( ! uid.isEmpty() ) {
2572 Addressee adrr = mAddressBook->findByUid( uid ); 2572 Addressee adrr = mAddressBook->findByUid( uid );
2573 if ( !adrr.isEmpty() ) { 2573 if ( !adrr.isEmpty() ) {
2574 foundUid = uid; 2574 foundUid = uid;
2575 } 2575 }
2576 if ( email == "sendbacklist" ) { 2576 if ( email == "sendbacklist" ) {
2577 //qDebug("ssssssssssssssssssssssend "); 2577 //qDebug("ssssssssssssssssssssssend ");
2578 QStringList nameList; 2578 QStringList nameList;
2579 QStringList emailList; 2579 QStringList emailList;
2580 QStringList uidList; 2580 QStringList uidList;
2581 nameList.append(adrr.realName()); 2581 nameList.append(adrr.realName());
2582 emailList = adrr.emails(); 2582 emailList = adrr.emails();
2583 uidList.append( adrr.preferredEmail()); 2583 uidList.append( adrr.preferredEmail());
2584 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList); 2584 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList);
2585 return; 2585 return;
2586 } 2586 }
2587 2587
2588 } 2588 }
2589 2589
2590 if ( email == "sendbacklist" ) 2590 if ( email == "sendbacklist" )
2591 return; 2591 return;
2592 if (foundUid.isEmpty()) 2592 if (foundUid.isEmpty())
2593 { 2593 {
2594 //find the uid of the person first 2594 //find the uid of the person first
2595 Addressee::List namelist; 2595 Addressee::List namelist;
2596 Addressee::List emaillist; 2596 Addressee::List emaillist;
2597 2597
2598 if (!name.isEmpty()) 2598 if (!name.isEmpty())
2599 namelist = mAddressBook->findByName( name ); 2599 namelist = mAddressBook->findByName( name );
2600 2600
2601 if (!email.isEmpty()) 2601 if (!email.isEmpty())
2602 emaillist = mAddressBook->findByEmail( email ); 2602 emaillist = mAddressBook->findByEmail( email );
2603 //qDebug("count %d %d ", namelist.count(),emaillist.count() ); 2603 //qDebug("count %d %d ", namelist.count(),emaillist.count() );
2604 //check if we have a match in Namelist and Emaillist 2604 //check if we have a match in Namelist and Emaillist
2605 if ((namelist.count() == 0) && (emaillist.count() > 0)) { 2605 if ((namelist.count() == 0) && (emaillist.count() > 0)) {
2606 foundUid = emaillist[0].uid(); 2606 foundUid = emaillist[0].uid();
2607 } 2607 }
2608 else if ((namelist.count() > 0) && (emaillist.count() == 0)) 2608 else if ((namelist.count() > 0) && (emaillist.count() == 0))
2609 foundUid = namelist[0].uid(); 2609 foundUid = namelist[0].uid();
2610 else 2610 else
2611 { 2611 {
2612 for (int i = 0; i < namelist.count(); i++) 2612 for (int i = 0; i < namelist.count(); i++)
2613 { 2613 {
diff --git a/microkde/kdecore/klocale.cpp b/microkde/kdecore/klocale.cpp
index aec74fa..7f31ab1 100644
--- a/microkde/kdecore/klocale.cpp
+++ b/microkde/kdecore/klocale.cpp
@@ -1,779 +1,779 @@
1#include <qregexp.h> 1#include <qregexp.h>
2#include <qapplication.h> 2#include <qapplication.h>
3 3
4#include "kdebug.h" 4#include "kdebug.h"
5#include "kcalendarsystemgregorian.h" 5#include "kcalendarsystemgregorian.h"
6 6
7#include "klocale.h" 7#include "klocale.h"
8 8
9#include <qstringlist.h> 9#include <qstringlist.h>
10 10
11#define COLLECT_TRANSLATION 11//#define COLLECT_TRANSLATION
12 12
13 13
14QDict<QString> *mLocaleDict = 0; 14QDict<QString> *mLocaleDict = 0;
15void setLocaleDict( QDict<QString> * dict ) 15void setLocaleDict( QDict<QString> * dict )
16{ 16{
17 mLocaleDict = dict; 17 mLocaleDict = dict;
18 18
19} 19}
20 20
21#ifdef COLLECT_TRANSLATION 21#ifdef COLLECT_TRANSLATION
22 22
23QStringList missingTrans; 23QStringList missingTrans;
24QStringList existingTrans1; 24QStringList existingTrans1;
25QStringList existingTrans2; 25QStringList existingTrans2;
26 26
27void addMissing(const char *text) 27void addMissing(const char *text)
28{ 28{
29 29
30 QString mis ( text ); 30 QString mis ( text );
31 if ( !missingTrans.contains( mis ) ) 31 if ( !missingTrans.contains( mis ) )
32 missingTrans.append(mis); 32 missingTrans.append(mis);
33 33
34} 34}
35void addExist(const char *text,QString trans ) 35void addExist(const char *text,QString trans )
36{ 36{
37 //return; 37 //return;
38 QString mis ( text ); 38 QString mis ( text );
39 if ( !existingTrans1.contains( mis ) ) { 39 if ( !existingTrans1.contains( mis ) ) {
40 existingTrans1.append(mis); 40 existingTrans1.append(mis);
41 existingTrans2.append(trans); 41 existingTrans2.append(trans);
42 42
43 } 43 }
44 44
45} 45}
46 46
47#include <qfile.h> 47#include <qfile.h>
48#include <qtextstream.h> 48#include <qtextstream.h>
49#include <qtextcodec.h> 49#include <qtextcodec.h>
50#endif 50#endif
51void dumpMissing() 51void dumpMissing()
52{ 52{
53#ifdef COLLECT_TRANSLATION 53#ifdef COLLECT_TRANSLATION
54 QString fileName = "/tmp/usernewtrans.txt"; 54 QString fileName = "/tmp/usernewtrans.txt";
55 QFile file( fileName ); 55 QFile file( fileName );
56 if (!file.open( IO_WriteOnly ) ) { 56 if (!file.open( IO_WriteOnly ) ) {
57 return ; 57 return ;
58 } 58 }
59 QTextStream ts( &file ); 59 QTextStream ts( &file );
60 ts.setCodec( QTextCodec::codecForName("utf8") ); 60 ts.setCodec( QTextCodec::codecForName("utf8") );
61 61
62 int i; 62 int i;
63 for ( i = 0; i< missingTrans.count(); ++i ) { 63 for ( i = 0; i< missingTrans.count(); ++i ) {
64 64
65 QString text = missingTrans[i].replace( QRegExp("\n"),"\\n" ); 65 QString text = missingTrans[i].replace( QRegExp("\n"),"\\n" );
66 ts << "{ \""<<text<< "\",\""<< text <<"\" },\n"; 66 ts << "{ \""<<text<< "\",\""<< text <<"\" },\n";
67 67
68 } 68 }
69 file.close(); 69 file.close();
70 { 70 {
71 QString fileName = "/tmp/usertrans.txt"; 71 QString fileName = "/tmp/usertrans.txt";
72 QFile file( fileName ); 72 QFile file( fileName );
73 if (!file.open( IO_WriteOnly ) ) { 73 if (!file.open( IO_WriteOnly ) ) {
74 return ; 74 return ;
75 } 75 }
76 QTextStream ts( &file ); 76 QTextStream ts( &file );
77 ts.setCodec( QTextCodec::codecForName("utf8") ); 77 ts.setCodec( QTextCodec::codecForName("utf8") );
78 78
79 int i; 79 int i;
80 for ( i = 0; i< existingTrans1.count(); ++i ) { 80 for ( i = 0; i< existingTrans1.count(); ++i ) {
81 81
82 QString text = existingTrans1[i].replace( QRegExp("\n"),"\\n" ); 82 QString text = existingTrans1[i].replace( QRegExp("\n"),"\\n" );
83 QString text2 = existingTrans2[i].replace( QRegExp("\n"),"\\n" ); 83 QString text2 = existingTrans2[i].replace( QRegExp("\n"),"\\n" );
84 ts << "{ \""<<text<< "\",\""<< text2 <<"\" },\n"; 84 ts << "{ \""<<text<< "\",\""<< text2 <<"\" },\n";
85 85
86 } 86 }
87 file.close(); 87 file.close();
88 } 88 }
89#endif 89#endif
90} 90}
91QString i18n(const char *text) 91QString i18n(const char *text)
92{ 92{
93 if ( ! mLocaleDict ) { 93 if ( ! mLocaleDict ) {
94#ifdef COLLECT_TRANSLATION 94#ifdef COLLECT_TRANSLATION
95 addMissing( text ); 95 addMissing( text );
96#endif 96#endif
97 return QString( text ); 97 return QString( text );
98 } 98 }
99 else { 99 else {
100 QString* ret = mLocaleDict->find(QString(text)) ; 100 QString* ret = mLocaleDict->find(QString(text)) ;
101 if ( ret == 0 ) { 101 if ( ret == 0 ) {
102#ifdef COLLECT_TRANSLATION 102#ifdef COLLECT_TRANSLATION
103 addMissing( text ); 103 addMissing( text );
104#endif 104#endif
105 return QString( text ); 105 return QString( text );
106 } 106 }
107 else { 107 else {
108 if ( (*ret).isEmpty() ) { 108 if ( (*ret).isEmpty() ) {
109#ifdef COLLECT_TRANSLATION 109#ifdef COLLECT_TRANSLATION
110 addMissing( text ); 110 addMissing( text );
111#endif 111#endif
112 return QString( text ); 112 return QString( text );
113 } 113 }
114 else { 114 else {
115#ifdef COLLECT_TRANSLATION 115#ifdef COLLECT_TRANSLATION
116 addExist( text, *ret ); 116 addExist( text, *ret );
117#endif 117#endif
118 return (*ret); 118 return (*ret);
119 } 119 }
120 } 120 }
121 } 121 }
122 122
123} 123}
124 124
125QString i18n(const char *,const char *text) 125QString i18n(const char *,const char *text)
126{ 126{
127 return i18n( text ); 127 return i18n( text );
128} 128}
129 129
130QString i18n(const char *text1, const char *textn, int num) 130QString i18n(const char *text1, const char *textn, int num)
131{ 131{
132 if ( num == 1 ) return i18n( text1 ); 132 if ( num == 1 ) return i18n( text1 );
133 else { 133 else {
134 QString text = i18n( textn ); 134 QString text = i18n( textn );
135 int pos = text.find( "%n" ); 135 int pos = text.find( "%n" );
136 if ( pos >= 0 ) text.replace( pos, 2, QString::number( num ) ); 136 if ( pos >= 0 ) text.replace( pos, 2, QString::number( num ) );
137 return text; 137 return text;
138 } 138 }
139} 139}
140 140
141inline void put_it_in( QChar *buffer, uint& index, const QString &s ) 141inline void put_it_in( QChar *buffer, uint& index, const QString &s )
142{ 142{
143 for ( uint l = 0; l < s.length(); l++ ) 143 for ( uint l = 0; l < s.length(); l++ )
144 buffer[index++] = s.at( l ); 144 buffer[index++] = s.at( l );
145} 145}
146 146
147inline void put_it_in( QChar *buffer, uint& index, int number ) 147inline void put_it_in( QChar *buffer, uint& index, int number )
148{ 148{
149 buffer[index++] = number / 10 + '0'; 149 buffer[index++] = number / 10 + '0';
150 buffer[index++] = number % 10 + '0'; 150 buffer[index++] = number % 10 + '0';
151} 151}
152 152
153static int readInt(const QString &str, uint &pos) 153static int readInt(const QString &str, uint &pos)
154{ 154{
155 if (!str.at(pos).isDigit()) return -1; 155 if (!str.at(pos).isDigit()) return -1;
156 int result = 0; 156 int result = 0;
157 for (; str.length() > pos && str.at(pos).isDigit(); pos++) 157 for (; str.length() > pos && str.at(pos).isDigit(); pos++)
158 { 158 {
159 result *= 10; 159 result *= 10;
160 result += str.at(pos).digitValue(); 160 result += str.at(pos).digitValue();
161 } 161 }
162 162
163 return result; 163 return result;
164} 164}
165 165
166KLocale::KLocale() : mCalendarSystem( 0 ) 166KLocale::KLocale() : mCalendarSystem( 0 )
167{ 167{
168 168
169 m_decimalSymbol = "."; 169 m_decimalSymbol = ".";
170 m_positiveSign = ""; 170 m_positiveSign = "";
171 m_negativeSign = "-"; 171 m_negativeSign = "-";
172 m_thousandsSeparator = ","; 172 m_thousandsSeparator = ",";
173 173
174 174
175 175
176 176
177 mWeekStartsMonday = true; 177 mWeekStartsMonday = true;
178 mHourF24Format = true; 178 mHourF24Format = true;
179 mIntDateFormat = Default; 179 mIntDateFormat = Default;
180 mIntTimeFormat = Default; 180 mIntTimeFormat = Default;
181 mLanguage = 0; 181 mLanguage = 0;
182 mDateFormat = "%a %Y %b %d"; 182 mDateFormat = "%a %Y %b %d";
183 mDateFormatShort = "%Y-%m-%d"; 183 mDateFormatShort = "%Y-%m-%d";
184 mTimeZoneList << ("-11:00 US/Samoa") 184 mTimeZoneList << ("-11:00 US/Samoa")
185 << ("-10:00 US/Hawaii") 185 << ("-10:00 US/Hawaii")
186 << ("-09:00 US/Alaska") 186 << ("-09:00 US/Alaska")
187 << ("-08:00 US/Pacific") 187 << ("-08:00 US/Pacific")
188 << ("-07:00 US/Mountain") 188 << ("-07:00 US/Mountain")
189 << ("-06:00 US/Central") 189 << ("-06:00 US/Central")
190 << ("-05:00 US/Eastern") 190 << ("-05:00 US/Eastern")
191 << ("-04:00 Brazil/West") 191 << ("-04:00 Brazil/West")
192 << ("-03:00 Brazil/East") 192 << ("-03:00 Brazil/East")
193 << ("-02:00 Brazil/DeNoronha") 193 << ("-02:00 Brazil/DeNoronha")
194 << ("-01:00 Atlantic/Azores") 194 << ("-01:00 Atlantic/Azores")
195 << (" 00:00 Europe/London(UTC)") 195 << (" 00:00 Europe/London(UTC)")
196 << ("+01:00 Europe/Oslo(CET)") 196 << ("+01:00 Europe/Oslo(CET)")
197 << ("+02:00 Europe/Helsinki") 197 << ("+02:00 Europe/Helsinki")
198 << ("+03:00 Europe/Moscow") 198 << ("+03:00 Europe/Moscow")
199 << ("+04:00 Indian/Mauritius") 199 << ("+04:00 Indian/Mauritius")
200 << ("+05:00 Indian/Maldives") 200 << ("+05:00 Indian/Maldives")
201 << ("+06:00 Indian/Chagos") 201 << ("+06:00 Indian/Chagos")
202 << ("+07:00 Asia/Bangkok") 202 << ("+07:00 Asia/Bangkok")
203 << ("+08:00 Asia/Hongkong") 203 << ("+08:00 Asia/Hongkong")
204 << ("+09:00 Asia/Tokyo") 204 << ("+09:00 Asia/Tokyo")
205 << ("+10:00 Asia/Vladivostok") 205 << ("+10:00 Asia/Vladivostok")
206 << ("+11:00 Asia/Magadan") 206 << ("+11:00 Asia/Magadan")
207 << ("+12:00 Asia/Kamchatka") 207 << ("+12:00 Asia/Kamchatka")
208 // << (" xx:xx User defined offset") 208 // << (" xx:xx User defined offset")
209 << i18n (" Local Time"); 209 << i18n (" Local Time");
210 mSouthDaylight = false; 210 mSouthDaylight = false;
211 mTimeZoneOffset = 0; 211 mTimeZoneOffset = 0;
212 daylightEnabled = false; 212 daylightEnabled = false;
213} 213}
214 214
215void KLocale::setDateFormat( QString s ) 215void KLocale::setDateFormat( QString s )
216{ 216{
217 mDateFormat = s; 217 mDateFormat = s;
218} 218}
219 219
220void KLocale::setDateFormatShort( QString s ) 220void KLocale::setDateFormatShort( QString s )
221{ 221{
222 mDateFormatShort = s; 222 mDateFormatShort = s;
223} 223}
224 224
225void KLocale::setHore24Format ( bool b ) 225void KLocale::setHore24Format ( bool b )
226{ 226{
227 mHourF24Format = b; 227 mHourF24Format = b;
228} 228}
229void KLocale::setWeekStartMonday( bool b ) 229void KLocale::setWeekStartMonday( bool b )
230{ 230{
231 mWeekStartsMonday = b; 231 mWeekStartsMonday = b;
232} 232}
233 233
234KLocale::IntDateFormat KLocale::getIntDateFormat( ) 234KLocale::IntDateFormat KLocale::getIntDateFormat( )
235{ 235{
236 return mIntDateFormat; 236 return mIntDateFormat;
237 237
238} 238}
239void KLocale::setIntDateFormat( KLocale::IntDateFormat i ) 239void KLocale::setIntDateFormat( KLocale::IntDateFormat i )
240{ 240{
241 mIntDateFormat = i; 241 mIntDateFormat = i;
242} 242}
243KLocale::IntDateFormat KLocale::getIntTimeFormat( ) 243KLocale::IntDateFormat KLocale::getIntTimeFormat( )
244{ 244{
245 return mIntTimeFormat; 245 return mIntTimeFormat;
246 246
247} 247}
248void KLocale::setIntTimeFormat( KLocale::IntDateFormat i ) 248void KLocale::setIntTimeFormat( KLocale::IntDateFormat i )
249{ 249{
250 mIntTimeFormat = i; 250 mIntTimeFormat = i;
251} 251}
252 252
253void KLocale::setLanguage( int i ) 253void KLocale::setLanguage( int i )
254{ 254{
255 mLanguage = i; 255 mLanguage = i;
256} 256}
257int KLocale::language( ) 257int KLocale::language( )
258{ 258{
259 return mLanguage; 259 return mLanguage;
260} 260}
261QString KLocale::translate( const char *index ) const 261QString KLocale::translate( const char *index ) const
262{ 262{
263 return i18n( index ); 263 return i18n( index );
264} 264}
265 265
266QString KLocale::translate( const char *, const char *fallback) const 266QString KLocale::translate( const char *, const char *fallback) const
267{ 267{
268 return i18n( fallback ); 268 return i18n( fallback );
269} 269}
270 270
271QString KLocale::formatTime(const QTime &pTime, bool includeSecs, IntDateFormat intIntDateFormat) const 271QString KLocale::formatTime(const QTime &pTime, bool includeSecs, IntDateFormat intIntDateFormat) const
272{ 272{
273 const QString rst = timeFormat(intIntDateFormat); 273 const QString rst = timeFormat(intIntDateFormat);
274 274
275 // only "pm/am" here can grow, the rest shrinks, but 275 // only "pm/am" here can grow, the rest shrinks, but
276 // I'm rather safe than sorry 276 // I'm rather safe than sorry
277 QChar *buffer = new QChar[rst.length() * 3 / 2 + 30]; 277 QChar *buffer = new QChar[rst.length() * 3 / 2 + 30];
278 278
279 uint index = 0; 279 uint index = 0;
280 bool escape = false; 280 bool escape = false;
281 int number = 0; 281 int number = 0;
282 282
283 for ( uint format_index = 0; format_index < rst.length(); format_index++ ) 283 for ( uint format_index = 0; format_index < rst.length(); format_index++ )
284 { 284 {
285 if ( !escape ) 285 if ( !escape )
286 { 286 {
287 if ( rst.at( format_index ).unicode() == '%' ) 287 if ( rst.at( format_index ).unicode() == '%' )
288 escape = true; 288 escape = true;
289 else 289 else
290 buffer[index++] = rst.at( format_index ); 290 buffer[index++] = rst.at( format_index );
291 } 291 }
292 else 292 else
293 { 293 {
294 switch ( rst.at( format_index ).unicode() ) 294 switch ( rst.at( format_index ).unicode() )
295 { 295 {
296 case '%': 296 case '%':
297 buffer[index++] = '%'; 297 buffer[index++] = '%';
298 break; 298 break;
299 case 'H': 299 case 'H':
300 put_it_in( buffer, index, pTime.hour() ); 300 put_it_in( buffer, index, pTime.hour() );
301 break; 301 break;
302 case 'I': 302 case 'I':
303 put_it_in( buffer, index, ( pTime.hour() + 11) % 12 + 1 ); 303 put_it_in( buffer, index, ( pTime.hour() + 11) % 12 + 1 );
304 break; 304 break;
305 case 'M': 305 case 'M':
306 put_it_in( buffer, index, pTime.minute() ); 306 put_it_in( buffer, index, pTime.minute() );
307 break; 307 break;
308 case 'S': 308 case 'S':
309 if (includeSecs) 309 if (includeSecs)
310 put_it_in( buffer, index, pTime.second() ); 310 put_it_in( buffer, index, pTime.second() );
311 else 311 else
312 { 312 {
313 // we remove the seperator sign before the seconds and 313 // we remove the seperator sign before the seconds and
314 // assume that works everywhere 314 // assume that works everywhere
315 --index; 315 --index;
316 break; 316 break;
317 } 317 }
318 break; 318 break;
319 case 'k': 319 case 'k':
320 number = pTime.hour(); 320 number = pTime.hour();
321 case 'l': 321 case 'l':
322 // to share the code 322 // to share the code
323 if ( rst.at( format_index ).unicode() == 'l' ) 323 if ( rst.at( format_index ).unicode() == 'l' )
324 number = (pTime.hour() + 11) % 12 + 1; 324 number = (pTime.hour() + 11) % 12 + 1;
325 if ( number / 10 ) 325 if ( number / 10 )
326 buffer[index++] = number / 10 + '0'; 326 buffer[index++] = number / 10 + '0';
327 buffer[index++] = number % 10 + '0'; 327 buffer[index++] = number % 10 + '0';
328 break; 328 break;
329 case 'p': 329 case 'p':
330 { 330 {
331 QString s; 331 QString s;
332 if ( pTime.hour() >= 12 ) 332 if ( pTime.hour() >= 12 )
333 put_it_in( buffer, index, i18n("pm") ); 333 put_it_in( buffer, index, i18n("pm") );
334 else 334 else
335 put_it_in( buffer, index, i18n("am") ); 335 put_it_in( buffer, index, i18n("am") );
336 break; 336 break;
337 } 337 }
338 default: 338 default:
339 buffer[index++] = rst.at( format_index ); 339 buffer[index++] = rst.at( format_index );
340 break; 340 break;
341 } 341 }
342 escape = false; 342 escape = false;
343 } 343 }
344 } 344 }
345 QString ret( buffer, index ); 345 QString ret( buffer, index );
346 delete [] buffer; 346 delete [] buffer;
347 return ret; 347 return ret;
348} 348}
349 349
350QString KLocale::formatDate(const QDate &pDate, bool shortFormat, IntDateFormat intIntDateFormat) const 350QString KLocale::formatDate(const QDate &pDate, bool shortFormat, IntDateFormat intIntDateFormat) const
351{ 351{
352 const QString rst = shortFormat?dateFormatShort(intIntDateFormat):dateFormat(intIntDateFormat); 352 const QString rst = shortFormat?dateFormatShort(intIntDateFormat):dateFormat(intIntDateFormat);
353 353
354 // I'm rather safe than sorry 354 // I'm rather safe than sorry
355 QChar *buffer = new QChar[rst.length() * 3 / 2 + 50]; 355 QChar *buffer = new QChar[rst.length() * 3 / 2 + 50];
356 356
357 unsigned int index = 0; 357 unsigned int index = 0;
358 bool escape = false; 358 bool escape = false;
359 int number = 0; 359 int number = 0;
360 360
361 for ( uint format_index = 0; format_index < rst.length(); ++format_index ) 361 for ( uint format_index = 0; format_index < rst.length(); ++format_index )
362 { 362 {
363 if ( !escape ) 363 if ( !escape )
364 { 364 {
365 if ( rst.at( format_index ).unicode() == '%' ) 365 if ( rst.at( format_index ).unicode() == '%' )
366 escape = true; 366 escape = true;
367 else 367 else
368 buffer[index++] = rst.at( format_index ); 368 buffer[index++] = rst.at( format_index );
369 } 369 }
370 else 370 else
371 { 371 {
372 switch ( rst.at( format_index ).unicode() ) 372 switch ( rst.at( format_index ).unicode() )
373 { 373 {
374 case '%': 374 case '%':
375 buffer[index++] = '%'; 375 buffer[index++] = '%';
376 break; 376 break;
377 case 'Y': 377 case 'Y':
378 put_it_in( buffer, index, pDate.year() / 100 ); 378 put_it_in( buffer, index, pDate.year() / 100 );
379 case 'y': 379 case 'y':
380 put_it_in( buffer, index, pDate.year() % 100 ); 380 put_it_in( buffer, index, pDate.year() % 100 );
381 break; 381 break;
382 case 'n': 382 case 'n':
383 number = pDate.month(); 383 number = pDate.month();
384 case 'e': 384 case 'e':
385 // to share the code 385 // to share the code
386 if ( rst.at( format_index ).unicode() == 'e' ) 386 if ( rst.at( format_index ).unicode() == 'e' )
387 number = pDate.day(); 387 number = pDate.day();
388 if ( number / 10 ) 388 if ( number / 10 )
389 buffer[index++] = number / 10 + '0'; 389 buffer[index++] = number / 10 + '0';
390 buffer[index++] = number % 10 + '0'; 390 buffer[index++] = number % 10 + '0';
391 break; 391 break;
392 case 'm': 392 case 'm':
393 put_it_in( buffer, index, pDate.month() ); 393 put_it_in( buffer, index, pDate.month() );
394 break; 394 break;
395 case 'b': 395 case 'b':
396 put_it_in( buffer, index, monthName(pDate.month(), true) ); 396 put_it_in( buffer, index, monthName(pDate.month(), true) );
397 break; 397 break;
398 case 'B': 398 case 'B':
399 put_it_in( buffer, index, monthName(pDate.month(), false) ); 399 put_it_in( buffer, index, monthName(pDate.month(), false) );
400 break; 400 break;
401 case 'd': 401 case 'd':
402 put_it_in( buffer, index, pDate.day() ); 402 put_it_in( buffer, index, pDate.day() );
403 break; 403 break;
404 case 'a': 404 case 'a':
405 put_it_in( buffer, index, weekDayName(pDate.dayOfWeek(), true) ); 405 put_it_in( buffer, index, weekDayName(pDate.dayOfWeek(), true) );
406 break; 406 break;
407 case 'A': 407 case 'A':
408 put_it_in( buffer, index, weekDayName(pDate.dayOfWeek(), false) ); 408 put_it_in( buffer, index, weekDayName(pDate.dayOfWeek(), false) );
409 break; 409 break;
410 default: 410 default:
411 buffer[index++] = rst.at( format_index ); 411 buffer[index++] = rst.at( format_index );
412 break; 412 break;
413 } 413 }
414 escape = false; 414 escape = false;
415 } 415 }
416 } 416 }
417 QString ret( buffer, index ); 417 QString ret( buffer, index );
418 delete [] buffer; 418 delete [] buffer;
419 return ret; 419 return ret;
420} 420}
421 421
422QString KLocale::formatDateTime(const QDateTime &pDateTime, 422QString KLocale::formatDateTime(const QDateTime &pDateTime,
423 bool shortFormat, 423 bool shortFormat,
424 bool includeSeconds, 424 bool includeSeconds,
425 IntDateFormat intIntDateFormat) const 425 IntDateFormat intIntDateFormat) const
426{ 426{
427 QString format("%1 %2"); 427 QString format("%1 %2");
428 428
429 if ( intIntDateFormat == Default ) 429 if ( intIntDateFormat == Default )
430 format = "%1 %2"; 430 format = "%1 %2";
431 else if ( intIntDateFormat == Format1 ) 431 else if ( intIntDateFormat == Format1 )
432 format = "%1 %2"; 432 format = "%1 %2";
433 else if ( intIntDateFormat == ISODate ) 433 else if ( intIntDateFormat == ISODate )
434 format = "%1T%2"; 434 format = "%1T%2";
435 435
436 QString res = format.arg(formatDate( pDateTime.date(), shortFormat, intIntDateFormat )) 436 QString res = format.arg(formatDate( pDateTime.date(), shortFormat, intIntDateFormat ))
437 .arg(formatTime( pDateTime.time(), includeSeconds , intIntDateFormat )); 437 .arg(formatTime( pDateTime.time(), includeSeconds , intIntDateFormat ));
438 438
439 //qDebug("KLocale::formatDateTime transformed %s, into %s", pDateTime.toString().latin1(), res.latin1() ); 439 //qDebug("KLocale::formatDateTime transformed %s, into %s", pDateTime.toString().latin1(), res.latin1() );
440 440
441 return res; 441 return res;
442} 442}
443 443
444QString KLocale::formatDateTime(const QDateTime &pDateTime, IntDateFormat intIntDateFormat) const 444QString KLocale::formatDateTime(const QDateTime &pDateTime, IntDateFormat intIntDateFormat) const
445{ 445{
446 return formatDateTime(pDateTime, true, true, intIntDateFormat); 446 return formatDateTime(pDateTime, true, true, intIntDateFormat);
447} 447}
448 448
449QDate KLocale::readDate(const QString &intstr, bool* ok) const 449QDate KLocale::readDate(const QString &intstr, bool* ok) const
450{ 450{
451 QDate date; 451 QDate date;
452 date = readDate(intstr, true, ok); 452 date = readDate(intstr, true, ok);
453 if (date.isValid()) return date; 453 if (date.isValid()) return date;
454 return readDate(intstr, false, ok); 454 return readDate(intstr, false, ok);
455} 455}
456 456
457QDate KLocale::readDate(const QString &intstr, bool shortFormat, bool* ok) const 457QDate KLocale::readDate(const QString &intstr, bool shortFormat, bool* ok) const
458{ 458{
459 QString fmt = (shortFormat ? dateFormatShort() : dateFormat()).simplifyWhiteSpace(); 459 QString fmt = (shortFormat ? dateFormatShort() : dateFormat()).simplifyWhiteSpace();
460 return readDate( intstr, fmt, ok ); 460 return readDate( intstr, fmt, ok );
461} 461}
462 462
463QDate KLocale::readDate(const QString &intstr, const QString &fmt, bool* ok) const 463QDate KLocale::readDate(const QString &intstr, const QString &fmt, bool* ok) const
464{ 464{
465 //kdDebug(173) << "KLocale::readDate intstr=" << intstr << " fmt=" << fmt << endl; 465 //kdDebug(173) << "KLocale::readDate intstr=" << intstr << " fmt=" << fmt << endl;
466 QString str = intstr.simplifyWhiteSpace().lower(); 466 QString str = intstr.simplifyWhiteSpace().lower();
467 int day = -1, month = -1; 467 int day = -1, month = -1;
468 // allow the year to be omitted if not in the format 468 // allow the year to be omitted if not in the format
469 int year = QDate::currentDate().year(); 469 int year = QDate::currentDate().year();
470 uint strpos = 0; 470 uint strpos = 0;
471 uint fmtpos = 0; 471 uint fmtpos = 0;
472 472
473 while (fmt.length() > fmtpos || str.length() > strpos) 473 while (fmt.length() > fmtpos || str.length() > strpos)
474 { 474 {
475 if ( !(fmt.length() > fmtpos && str.length() > strpos) ) 475 if ( !(fmt.length() > fmtpos && str.length() > strpos) )
476 goto error; 476 goto error;
477 477
478 QChar c = fmt.at(fmtpos++); 478 QChar c = fmt.at(fmtpos++);
479 479
480 if (c != '%') { 480 if (c != '%') {
481 if (c.isSpace()) 481 if (c.isSpace())
482 strpos++; 482 strpos++;
483 else if (c != str.at(strpos++)) 483 else if (c != str.at(strpos++))
484 goto error; 484 goto error;
485 continue; 485 continue;
486 } 486 }
487 487
488 // remove space at the begining 488 // remove space at the begining
489 if (str.length() > strpos && str.at(strpos).isSpace()) 489 if (str.length() > strpos && str.at(strpos).isSpace())
490 strpos++; 490 strpos++;
491 491
492 c = fmt.at(fmtpos++); 492 c = fmt.at(fmtpos++);
493 switch (c) 493 switch (c)
494 { 494 {
495 case 'a': 495 case 'a':
496 case 'A': 496 case 'A':
497 // this will just be ignored 497 // this will just be ignored
498 { // Cristian Tache: porting to Win: Block added because of "j" redefinition 498 { // Cristian Tache: porting to Win: Block added because of "j" redefinition
499 for (int j = 1; j < 8; j++) { 499 for (int j = 1; j < 8; j++) {
500 QString s = weekDayName(j, c == 'a').lower(); 500 QString s = weekDayName(j, c == 'a').lower();
501 int len = s.length(); 501 int len = s.length();
502 if (str.mid(strpos, len) == s) 502 if (str.mid(strpos, len) == s)
503 strpos += len; 503 strpos += len;
504 } 504 }
505 break; 505 break;
506 } 506 }
507 case 'b': 507 case 'b':
508 case 'B': 508 case 'B':
509 { // Cristian Tache: porting to Win: Block added because of "j" redefinition 509 { // Cristian Tache: porting to Win: Block added because of "j" redefinition
510 for (int j = 1; j < 13; j++) { 510 for (int j = 1; j < 13; j++) {
511 QString s = monthName(j, c == 'b').lower(); 511 QString s = monthName(j, c == 'b').lower();
512 int len = s.length(); 512 int len = s.length();
513 if (str.mid(strpos, len) == s) { 513 if (str.mid(strpos, len) == s) {
514 month = j; 514 month = j;
515 strpos += len; 515 strpos += len;
516 } 516 }
517 } 517 }
518 break; 518 break;
519 } 519 }
520 case 'd': 520 case 'd':
521 case 'e': 521 case 'e':
522 day = readInt(str, strpos); 522 day = readInt(str, strpos);
523 if (day < 1 || day > 31) 523 if (day < 1 || day > 31)
524 goto error; 524 goto error;
525 525
526 break; 526 break;
527 527
528 case 'n': 528 case 'n':
529 case 'm': 529 case 'm':
530 month = readInt(str, strpos); 530 month = readInt(str, strpos);
531 if (month < 1 || month > 12) 531 if (month < 1 || month > 12)
532 goto error; 532 goto error;
533 533
534 break; 534 break;
535 535
536 case 'Y': 536 case 'Y':
537 case 'y': 537 case 'y':
538 year = readInt(str, strpos); 538 year = readInt(str, strpos);
539 if (year < 0) 539 if (year < 0)
540 goto error; 540 goto error;
541 // Qt treats a year in the range 0-100 as 1900-1999. 541 // Qt treats a year in the range 0-100 as 1900-1999.
542 // It is nicer for the user if we treat 0-68 as 2000-2068 542 // It is nicer for the user if we treat 0-68 as 2000-2068
543 if (year < 69) 543 if (year < 69)
544 year += 2000; 544 year += 2000;
545 else if (c == 'y') 545 else if (c == 'y')
546 year += 1900; 546 year += 1900;
547 547
548 break; 548 break;
549 } 549 }
550 } 550 }
551 //kdDebug(173) << "KLocale::readDate day=" << day << " month=" << month << " year=" << year << endl; 551 //kdDebug(173) << "KLocale::readDate day=" << day << " month=" << month << " year=" << year << endl;
552 if ( year != -1 && month != -1 && day != -1 ) 552 if ( year != -1 && month != -1 && day != -1 )
553 { 553 {
554 if (ok) *ok = true; 554 if (ok) *ok = true;
555 return QDate(year, month, day); 555 return QDate(year, month, day);
556 } 556 }
557 error: 557 error:
558 if (ok) *ok = false; 558 if (ok) *ok = false;
559 return QDate(); // invalid date 559 return QDate(); // invalid date
560} 560}
561 561
562QTime KLocale::readTime(const QString &intstr, bool *ok) const 562QTime KLocale::readTime(const QString &intstr, bool *ok) const
563{ 563{
564 QTime _time; 564 QTime _time;
565 _time = readTime(intstr, false, ok); 565 _time = readTime(intstr, false, ok);
566 if (_time.isValid()) return _time; 566 if (_time.isValid()) return _time;
567 return readTime(intstr, true, ok); 567 return readTime(intstr, true, ok);
568} 568}
569 569
570QTime KLocale::readTime(const QString &intstr, bool seconds, bool *ok) const 570QTime KLocale::readTime(const QString &intstr, bool seconds, bool *ok) const
571{ 571{
572 QString str = intstr.simplifyWhiteSpace().lower(); 572 QString str = intstr.simplifyWhiteSpace().lower();
573 QString Format = timeFormat().simplifyWhiteSpace(); 573 QString Format = timeFormat().simplifyWhiteSpace();
574 if (!seconds) 574 if (!seconds)
575 Format.replace(QRegExp(QString::fromLatin1(".%S")), QString::null); 575 Format.replace(QRegExp(QString::fromLatin1(".%S")), QString::null);
576 576
577 int hour = -1, minute = -1, second = seconds ? -1 : 0; // don't require seconds 577 int hour = -1, minute = -1, second = seconds ? -1 : 0; // don't require seconds
578 578
579 bool g_12h = false; 579 bool g_12h = false;
580 bool pm = false; 580 bool pm = false;
581 uint strpos = 0; 581 uint strpos = 0;
582 uint Formatpos = 0; 582 uint Formatpos = 0;
583 583
584 while (Format.length() > Formatpos || str.length() > strpos) 584 while (Format.length() > Formatpos || str.length() > strpos)
585 { 585 {
586 if ( !(Format.length() > Formatpos && str.length() > strpos) ) goto error; 586 if ( !(Format.length() > Formatpos && str.length() > strpos) ) goto error;
587 587
588 QChar c = Format.at(Formatpos++); 588 QChar c = Format.at(Formatpos++);
589 589
590 if (c != '%') 590 if (c != '%')
591 { 591 {
592 if (c.isSpace()) 592 if (c.isSpace())
593 strpos++; 593 strpos++;
594 else if (c != str.at(strpos++)) 594 else if (c != str.at(strpos++))
595 goto error; 595 goto error;
596 continue; 596 continue;
597 } 597 }
598 598
599 // remove space at the begining 599 // remove space at the begining
600 if (str.length() > strpos && str.at(strpos).isSpace()) 600 if (str.length() > strpos && str.at(strpos).isSpace())
601 strpos++; 601 strpos++;
602 602
603 c = Format.at(Formatpos++); 603 c = Format.at(Formatpos++);
604 switch (c) 604 switch (c)
605 { 605 {
606 case 'p': 606 case 'p':
607 { 607 {
608 QString s; 608 QString s;
609 s = i18n("pm").lower(); 609 s = i18n("pm").lower();
610 int len = s.length(); 610 int len = s.length();
611 if (str.mid(strpos, len) == s) 611 if (str.mid(strpos, len) == s)
612 { 612 {
613 pm = true; 613 pm = true;
614 strpos += len; 614 strpos += len;
615 } 615 }
616 else 616 else
617 { 617 {
618 s = i18n("am").lower(); 618 s = i18n("am").lower();
619 len = s.length(); 619 len = s.length();
620 if (str.mid(strpos, len) == s) { 620 if (str.mid(strpos, len) == s) {
621 pm = false; 621 pm = false;
622 strpos += len; 622 strpos += len;
623 } 623 }
624 else 624 else
625 goto error; 625 goto error;
626 } 626 }
627 } 627 }
628 break; 628 break;
629 629
630 case 'k': 630 case 'k':
631 case 'H': 631 case 'H':
632 g_12h = false; 632 g_12h = false;
633 hour = readInt(str, strpos); 633 hour = readInt(str, strpos);
634 if (hour < 0 || hour > 23) 634 if (hour < 0 || hour > 23)
635 goto error; 635 goto error;
636 636
637 break; 637 break;
638 638
639 case 'l': 639 case 'l':
640 case 'I': 640 case 'I':
641 g_12h = true; 641 g_12h = true;
642 hour = readInt(str, strpos); 642 hour = readInt(str, strpos);
643 if (hour < 1 || hour > 12) 643 if (hour < 1 || hour > 12)
644 goto error; 644 goto error;
645 645
646 break; 646 break;
647 647
648 case 'M': 648 case 'M':
649 minute = readInt(str, strpos); 649 minute = readInt(str, strpos);
650 if (minute < 0 || minute > 59) 650 if (minute < 0 || minute > 59)
651 goto error; 651 goto error;
652 652
653 break; 653 break;
654 654
655 case 'S': 655 case 'S':
656 second = readInt(str, strpos); 656 second = readInt(str, strpos);
657 if (second < 0 || second > 59) 657 if (second < 0 || second > 59)
658 goto error; 658 goto error;
659 659
660 break; 660 break;
661 } 661 }
662 } 662 }
663 if (g_12h) 663 if (g_12h)
664 { 664 {
665 hour %= 12; 665 hour %= 12;
666 if (pm) hour += 12; 666 if (pm) hour += 12;
667 } 667 }
668 668
669 if (ok) *ok = true; 669 if (ok) *ok = true;
670 return QTime(hour, minute, second); 670 return QTime(hour, minute, second);
671 671
672 error: 672 error:
673 if (ok) *ok = false; 673 if (ok) *ok = false;
674 return QTime(-1, -1, -1); // return invalid date if it didn't work 674 return QTime(-1, -1, -1); // return invalid date if it didn't work
675 // This will be removed in the near future, since it gives a warning on stderr. 675 // This will be removed in the near future, since it gives a warning on stderr.
676 // The presence of the bool* (since KDE-3.0) removes the need for an invalid QTime. 676 // The presence of the bool* (since KDE-3.0) removes the need for an invalid QTime.
677} 677}
678 678
679QDateTime KLocale::readDateTime(const QString &intstr, 679QDateTime KLocale::readDateTime(const QString &intstr,
680 IntDateFormat intIntDateFormat, 680 IntDateFormat intIntDateFormat,
681 bool* ok) const 681 bool* ok) const
682{ 682{
683 bool ok1, ok2; 683 bool ok1, ok2;
684 684
685 // AT the moment we can not read any other format then ISODate 685 // AT the moment we can not read any other format then ISODate
686 if ( intIntDateFormat != ISODate ) 686 if ( intIntDateFormat != ISODate )
687 { 687 {
688 qDebug("KLocale::readDateTime, only ISODate is supported."); 688 qDebug("KLocale::readDateTime, only ISODate is supported.");
689 return QDateTime(); 689 return QDateTime();
690 } 690 }
691 691
692 int pos = intstr.find("T"); 692 int pos = intstr.find("T");
693 QString date = intstr.left(pos); 693 QString date = intstr.left(pos);
694 QString time = intstr.mid(pos+1); 694 QString time = intstr.mid(pos+1);
695 695
696 QString dformat = dateFormat(intIntDateFormat); 696 QString dformat = dateFormat(intIntDateFormat);
697 QString tformat = timeFormat(intIntDateFormat); 697 QString tformat = timeFormat(intIntDateFormat);
698 698
699 QDate m_date = readDate(date, dformat, &ok1); 699 QDate m_date = readDate(date, dformat, &ok1);
700 QTime m_time = readTime(time, tformat, &ok2); 700 QTime m_time = readTime(time, tformat, &ok2);
701 701
702 QDateTime m_dt; 702 QDateTime m_dt;
703 703
704 if (ok) 704 if (ok)
705 { 705 {
706 if ((ok1 == false) || (ok2 == false)) 706 if ((ok1 == false) || (ok2 == false))
707 *ok = false; 707 *ok = false;
708 else 708 else
709 *ok = true; 709 *ok = true;
710 } 710 }
711 711
712 //only set values if both operations returned true. 712 //only set values if both operations returned true.
713 if ((ok1 == true) && (ok2 == true)) 713 if ((ok1 == true) && (ok2 == true))
714 { 714 {
715 m_dt.setDate(m_date); 715 m_dt.setDate(m_date);
716 m_dt.setTime(m_time); 716 m_dt.setTime(m_time);
717 } 717 }
718 718
719 //qDebug("KLocale::readDateTime() transformed %s into %s (%s), %s (%s) : err1=%i, err2=%i", intstr.latin1(), date.latin1(), dformat.latin1(), time.latin1(), tformat.latin1(), ok1, ok2); 719 //qDebug("KLocale::readDateTime() transformed %s into %s (%s), %s (%s) : err1=%i, err2=%i", intstr.latin1(), date.latin1(), dformat.latin1(), time.latin1(), tformat.latin1(), ok1, ok2);
720 return m_dt; 720 return m_dt;
721} 721}
722 722
723QDate KLocale::readDate(const QString &intstr, 723QDate KLocale::readDate(const QString &intstr,
724 IntDateFormat intIntDateFormat, 724 IntDateFormat intIntDateFormat,
725 bool* ok) const 725 bool* ok) const
726{ 726{
727 bool ok1; 727 bool ok1;
728 728
729 QString dformat = dateFormat(intIntDateFormat); 729 QString dformat = dateFormat(intIntDateFormat);
730 730
731 QDate m_date = readDate(intstr, dformat, &ok1); 731 QDate m_date = readDate(intstr, dformat, &ok1);
732 732
733 if (ok) 733 if (ok)
734 *ok = ok1; 734 *ok = ok1;
735 735
736 //qDebug("KLocale::readDate() transformed %s into %s (%s), %s (%s) : err1=%i, err2=%i", intstr.latin1(), date.latin1(), dformat.latin1(), time.latin1(), tformat.latin1(), ok1, ok2); 736 //qDebug("KLocale::readDate() transformed %s into %s (%s), %s (%s) : err1=%i, err2=%i", intstr.latin1(), date.latin1(), dformat.latin1(), time.latin1(), tformat.latin1(), ok1, ok2);
737 return m_date; 737 return m_date;
738} 738}
739 739
740 740
741bool KLocale::use12Clock() const 741bool KLocale::use12Clock() const
742{ 742{
743 return !mHourF24Format ;; 743 return !mHourF24Format ;;
744} 744}
745 745
746bool KLocale::weekStartsMonday() const 746bool KLocale::weekStartsMonday() const
747{ 747{
748 return mWeekStartsMonday; 748 return mWeekStartsMonday;
749} 749}
750 750
751int KLocale::weekStartDay() const 751int KLocale::weekStartDay() const
752{ 752{
753 if ( mWeekStartsMonday ) 753 if ( mWeekStartsMonday )
754 return 1; 754 return 1;
755 return 7; 755 return 7;
756} 756}
757 757
758QString KLocale::weekDayName(int i,bool shortName) const 758QString KLocale::weekDayName(int i,bool shortName) const
759{ 759{
760 if ( shortName ) 760 if ( shortName )
761 switch ( i ) 761 switch ( i )
762 { 762 {
763 case 1: return i18n("Monday", "Mon"); 763 case 1: return i18n("Monday", "Mon");
764 case 2: return i18n("Tuesday", "Tue"); 764 case 2: return i18n("Tuesday", "Tue");
765 case 3: return i18n("Wednesday", "Wed"); 765 case 3: return i18n("Wednesday", "Wed");
766 case 4: return i18n("Thursday", "Thu"); 766 case 4: return i18n("Thursday", "Thu");
767 case 5: return i18n("Friday", "Fri"); 767 case 5: return i18n("Friday", "Fri");
768 case 6: return i18n("Saturday", "Sat"); 768 case 6: return i18n("Saturday", "Sat");
769 case 7: return i18n("Sunday", "Sun"); 769 case 7: return i18n("Sunday", "Sun");
770 } 770 }
771 else 771 else
772 switch ( i ) 772 switch ( i )
773 { 773 {
774 case 1: return i18n("Monday"); 774 case 1: return i18n("Monday");
775 case 2: return i18n("Tuesday"); 775 case 2: return i18n("Tuesday");
776 case 3: return i18n("Wednesday"); 776 case 3: return i18n("Wednesday");
777 case 4: return i18n("Thursday"); 777 case 4: return i18n("Thursday");
778 case 5: return i18n("Friday"); 778 case 5: return i18n("Friday");
779 case 6: return i18n("Saturday"); 779 case 6: return i18n("Saturday");
diff --git a/microkde/kresources/configpage.cpp b/microkde/kresources/configpage.cpp
index 533be51..011e47e 100644
--- a/microkde/kresources/configpage.cpp
+++ b/microkde/kresources/configpage.cpp
@@ -1,533 +1,530 @@
1/* 1/*
2 This file is part of libkresources. 2 This file is part of libkresources.
3 3
4 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org> 4 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
5 Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org> 5 Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org>
6 Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org> 6 Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org>
7 7
8 This library is free software; you can redistribute it and/or 8 This library is free software; you can redistribute it and/or
9 modify it under the terms of the GNU Library General Public 9 modify it under the terms of the GNU Library General Public
10 License as published by the Free Software Foundation; either 10 License as published by the Free Software Foundation; either
11 version 2 of the License, or (at your option) any later version. 11 version 2 of the License, or (at your option) any later version.
12 12
13 This library is distributed in the hope that it will be useful, 13 This library is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 Library General Public License for more details. 16 Library General Public License for more details.
17 17
18 You should have received a copy of the GNU Library General Public License 18 You should have received a copy of the GNU Library General Public License
19 along with this library; see the file COPYING.LIB. If not, write to 19 along with this library; see the file COPYING.LIB. If not, write to
20 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 20 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21 Boston, MA 02111-1307, USA. 21 Boston, MA 02111-1307, USA.
22*/ 22*/
23 23
24/* 24/*
25Enhanced Version of the file for platform independent KDE tools. 25Enhanced Version of the file for platform independent KDE tools.
26Copyright (c) 2004 Ulf Schenk 26Copyright (c) 2004 Ulf Schenk
27 27
28$Id$ 28$Id$
29*/ 29*/
30 30
31#include <qgroupbox.h> 31#include <qgroupbox.h>
32#include <qinputdialog.h> 32#include <qinputdialog.h>
33#include <qlabel.h> 33#include <qlabel.h>
34#include <qlayout.h> 34#include <qlayout.h>
35 35
36#include <kapplication.h> 36#include <kapplication.h>
37#include <kcombobox.h> 37#include <kcombobox.h>
38#include <kdebug.h> 38#include <kdebug.h>
39#include <klocale.h> 39#include <klocale.h>
40#include <kmessagebox.h> 40#include <kmessagebox.h>
41#include <ksimpleconfig.h> 41#include <ksimpleconfig.h>
42#include <kstandarddirs.h> 42#include <kstandarddirs.h>
43#include <kurlrequester.h> 43#include <kurlrequester.h>
44#include <klistview.h> 44#include <klistview.h>
45#include <kbuttonbox.h> 45#include <kbuttonbox.h>
46//US #include <ktrader.h> 46//US #include <ktrader.h>
47 47
48#include "resource.h" 48#include "resource.h"
49#include "configdialog.h" 49#include "configdialog.h"
50 50
51#include "configpage.h" 51#include "configpage.h"
52 52
53//US 53//US
54#include <qpushbutton.h> 54#include <qpushbutton.h>
55#include <qfile.h> 55#include <qfile.h>
56#include <kglobal.h> 56#include <kglobal.h>
57 57
58using namespace KRES; 58using namespace KRES;
59 59
60class ConfigViewItem : public QCheckListItem 60class ConfigViewItem : public QCheckListItem
61{ 61{
62 public: 62 public:
63 ConfigViewItem( QListView *parent, Resource* resource ) : 63 ConfigViewItem( QListView *parent, Resource* resource ) :
64 QCheckListItem( parent, resource->resourceName(), CheckBox ), 64 QCheckListItem( parent, resource->resourceName(), CheckBox ),
65 mResource( resource ), 65 mResource( resource ),
66 mIsStandard( false ) 66 mIsStandard( false )
67 { 67 {
68 setText( 1, mResource->type() ); 68 setText( 1, mResource->type() );
69 setOn( mResource->isActive() ); 69 setOn( mResource->isActive() );
70 } 70 }
71 71
72 void setStandard( bool value ) 72 void setStandard( bool value )
73 { 73 {
74 setText( 2, ( value ? i18n( "Yes" ) : QString::null ) ); 74 setText( 2, ( value ? i18n( "Yes" ) : QString::null ) );
75 mIsStandard = value; 75 mIsStandard = value;
76 } 76 }
77 77
78 bool standard() const { return mIsStandard; } 78 bool standard() const { return mIsStandard; }
79 bool readOnly() const { return mResource->readOnly(); } 79 bool readOnly() const { return mResource->readOnly(); }
80 80
81 Resource *resource() { return mResource; } 81 Resource *resource() { return mResource; }
82 82
83 private: 83 private:
84 Resource* mResource; 84 Resource* mResource;
85 85
86 bool mIsStandard; 86 bool mIsStandard;
87}; 87};
88 88
89ConfigPage::ConfigPage( QWidget *parent, const char *name ) 89ConfigPage::ConfigPage( QWidget *parent, const char *name )
90 : QWidget( parent, name ), 90 : QWidget( parent, name ),
91 mCurrentManager( 0 ), 91 mCurrentManager( 0 ),
92 mCurrentConfig( 0 ) 92 mCurrentConfig( 0 )
93{ 93{
94 setCaption( i18n( "Resource Configuration" ) ); 94 setCaption( i18n( "Resource Configuration" ) );
95 95
96 QVBoxLayout *mainLayout = new QVBoxLayout( this ); 96 QVBoxLayout *mainLayout = new QVBoxLayout( this );
97 97
98 QGroupBox *groupBox = new QGroupBox( i18n( "Resources" ), this ); 98 QGroupBox *groupBox = new QGroupBox( i18n( "Resources" ), this );
99 groupBox->setColumnLayout(0, Qt::Vertical ); 99 groupBox->setColumnLayout(0, Qt::Vertical );
100 groupBox->layout()->setSpacing( 3 ); 100 groupBox->layout()->setSpacing( 3 );
101 groupBox->layout()->setMargin( 5 ); 101 groupBox->layout()->setMargin( 5 );
102 QGridLayout *groupBoxLayout = new QGridLayout( groupBox->layout(), 4, 2 ); 102 QGridLayout *groupBoxLayout = new QGridLayout( groupBox->layout(), 4, 2 );
103 103
104//US mFamilyCombo = new KComboBox( false, groupBox ); 104//US mFamilyCombo = new KComboBox( false, groupBox );
105 mFamilyCombo = new KComboBox( groupBox ); 105 mFamilyCombo = new KComboBox( groupBox );
106 groupBoxLayout->addMultiCellWidget( mFamilyCombo, 0, 0, 0, 1 ); 106 groupBoxLayout->addMultiCellWidget( mFamilyCombo, 0, 0, 0, 1 );
107 107
108 mListView = new KListView( groupBox ); 108 mListView = new KListView( groupBox );
109 mListView->setAllColumnsShowFocus( true ); 109 mListView->setAllColumnsShowFocus( true );
110 mListView->addColumn( i18n( "Name" ) ); 110 mListView->addColumn( i18n( "Name" ) );
111 mListView->addColumn( i18n( "Type" ) ); 111 mListView->addColumn( i18n( "Type" ) );
112 mListView->addColumn( i18n( "Standard" ) ); 112 mListView->addColumn( i18n( "Standard" ) );
113 113
114//US groupBoxLayout->addWidget( mListView, 1, 0 ); 114//US groupBoxLayout->addWidget( mListView, 1, 0 );
115 groupBoxLayout->addMultiCellWidget( mListView, 1, 1, 0, 1 ); 115 groupBoxLayout->addMultiCellWidget( mListView, 1, 1, 0, 1 );
116 116
117 117
118 mAddButton = new QPushButton( i18n( "&Add..." ), groupBox ); 118 mAddButton = new QPushButton( i18n( "&Add..." ), groupBox );
119 groupBoxLayout->addWidget( mAddButton, 2, 0 ); 119 groupBoxLayout->addWidget( mAddButton, 2, 0 );
120 mRemoveButton = new QPushButton( i18n( "&Remove" ), groupBox ); 120 mRemoveButton = new QPushButton( i18n( "&Remove" ), groupBox );
121 groupBoxLayout->addWidget( mRemoveButton, 2, 1 ); 121 groupBoxLayout->addWidget( mRemoveButton, 2, 1 );
122 mEditButton = new QPushButton( i18n( "&Edit..." ), groupBox ); 122 mEditButton = new QPushButton( i18n( "&Edit..." ), groupBox );
123 groupBoxLayout->addWidget( mEditButton, 3, 0 ); 123 groupBoxLayout->addWidget( mEditButton, 3, 0 );
124 mStandardButton = new QPushButton( i18n( "&Use as Standard" ), groupBox ); 124 mStandardButton = new QPushButton( i18n( "&Use as Standard" ), groupBox );
125 groupBoxLayout->addWidget( mStandardButton, 3, 1 ); 125 groupBoxLayout->addWidget( mStandardButton, 3, 1 );
126 126
127 mRemoveButton->setEnabled( false ); 127 mRemoveButton->setEnabled( false );
128 mEditButton->setEnabled( false ); 128 mEditButton->setEnabled( false );
129 mStandardButton->setEnabled( false ); 129 mStandardButton->setEnabled( false );
130 130
131 131
132 connect( mAddButton, SIGNAL( clicked() ), SLOT(slotAdd()) ); 132 connect( mAddButton, SIGNAL( clicked() ), SLOT(slotAdd()) );
133 connect( mRemoveButton, SIGNAL( clicked() ), SLOT(slotRemove()) ); 133 connect( mRemoveButton, SIGNAL( clicked() ), SLOT(slotRemove()) );
134 connect( mEditButton, SIGNAL( clicked() ), SLOT(slotEdit()) ); 134 connect( mEditButton, SIGNAL( clicked() ), SLOT(slotEdit()) );
135 connect( mStandardButton, SIGNAL( clicked() ), SLOT(slotStandard()) ); 135 connect( mStandardButton, SIGNAL( clicked() ), SLOT(slotStandard()) );
136 136
137 137
138 mainLayout->addWidget( groupBox ); 138 mainLayout->addWidget( groupBox );
139 139
140 connect( mFamilyCombo, SIGNAL( activated( int ) ), 140 connect( mFamilyCombo, SIGNAL( activated( int ) ),
141 SLOT( slotFamilyChanged( int ) ) ); 141 SLOT( slotFamilyChanged( int ) ) );
142 connect( mListView, SIGNAL( selectionChanged() ), 142 connect( mListView, SIGNAL( selectionChanged() ),
143 SLOT( slotSelectionChanged() ) ); 143 SLOT( slotSelectionChanged() ) );
144 connect( mListView, SIGNAL( clicked( QListViewItem * ) ), 144 connect( mListView, SIGNAL( clicked( QListViewItem * ) ),
145 SLOT( slotItemClicked( QListViewItem * ) ) ); 145 SLOT( slotItemClicked( QListViewItem * ) ) );
146 146
147 mLastItem = 0; 147 mLastItem = 0;
148 148
149//US mConfig = new KConfig( "kcmkresourcesrc" ); 149//US mConfig = new KConfig( "kcmkresourcesrc" );
150 mConfig = new KConfig( locateLocal( "config", "kcmkresourcesrc") ); 150 mConfig = new KConfig( locateLocal( "config", "kcmkresourcesrc") );
151 mConfig->setGroup( "General" ); 151 mConfig->setGroup( "General" );
152 152
153 load(); 153 load();
154} 154}
155 155
156ConfigPage::~ConfigPage() 156ConfigPage::~ConfigPage()
157{ 157{
158 QValueList<ResourcePageInfo>::Iterator it; 158 QValueList<ResourcePageInfo>::Iterator it;
159 for ( it = mInfoMap.begin(); it != mInfoMap.end(); ++it ) { 159 for ( it = mInfoMap.begin(); it != mInfoMap.end(); ++it ) {
160 (*it).mManager->removeListener( this ); 160 (*it).mManager->removeListener( this );
161 delete (*it).mManager; 161 delete (*it).mManager;
162 delete (*it).mConfig; 162 delete (*it).mConfig;
163 } 163 }
164 164
165 mConfig->writeEntry( "CurrentFamily", mFamilyCombo->currentItem() ); 165 mConfig->writeEntry( "CurrentFamily", mFamilyCombo->currentItem() );
166 delete mConfig; 166 delete mConfig;
167 mConfig = 0; 167 mConfig = 0;
168} 168}
169 169
170void ConfigPage::load() 170void ConfigPage::load()
171{ 171{
172 kdDebug(5650) << "ConfigPage::load()" << endl; 172 kdDebug(5650) << "ConfigPage::load()" << endl;
173 173
174 mListView->clear(); 174 mListView->clear();
175 175
176//US we remove the dynamic pluginloader, and set the one family we need (contact) manually. 176//US we remove the dynamic pluginloader, and set the one family we need (contact) manually.
177 177
178//US KTrader::OfferList plugins = KTrader::self()->query( "KResources/Plugin" ); 178//US KTrader::OfferList plugins = KTrader::self()->query( "KResources/Plugin" );
179//US KTrader::OfferList::ConstIterator it; 179//US KTrader::OfferList::ConstIterator it;
180//US for ( it = plugins.begin(); it != plugins.end(); ++it ) { 180//US for ( it = plugins.begin(); it != plugins.end(); ++it ) {
181//US QVariant tmp = (*it)->property( "X-KDE-ResourceFamily" ); 181//US QVariant tmp = (*it)->property( "X-KDE-ResourceFamily" );
182//US QString family = tmp.toString(); 182//US QString family = tmp.toString();
183 QStringList families; 183 QStringList families;
184 families << "contact"; 184 families << "contact";
185 185
186 186
187 for ( QStringList::Iterator it = families.begin(); it != families.end(); ++it ) 187 for ( QStringList::Iterator it = families.begin(); it != families.end(); ++it )
188 { 188 {
189 QString family = (*it); 189 QString family = (*it);
190 if ( !family.isEmpty() ) { 190 if ( !family.isEmpty() ) {
191 if ( !mFamilyMap.contains( family ) ) { 191 if ( !mFamilyMap.contains( family ) ) {
192 mCurrentManager = new Manager<Resource>( family ); 192 mCurrentManager = new Manager<Resource>( family );
193 if ( mCurrentManager ) { 193 if ( mCurrentManager ) {
194 mFamilyMap.append( family ); 194 mFamilyMap.append( family );
195 mCurrentManager->addListener( this ); 195 mCurrentManager->addListener( this );
196 196
197 ResourcePageInfo info; 197 ResourcePageInfo info;
198 info.mManager = mCurrentManager; 198 info.mManager = mCurrentManager;
199 QString configDir = KGlobal::dirs()->saveLocation( "config" ); 199 QString configDir = KGlobal::dirs()->saveLocation( "config" );
200 //QString configDir = KStandardDirs::appDir() + "/config"; 200 //QString configDir = KStandardDirs::appDir() + "/config";
201 if ( family == "contact" && QFile::exists( configDir + "/kabcrc" ) ) { 201 if ( family == "contact" && QFile::exists( configDir + "/kabcrc" ) ) {
202 info.mConfig = new KConfig( locateLocal( "config", "kabcrc" ) ); 202 info.mConfig = new KConfig( locateLocal( "config", "kabcrc" ) );
203 } else if ( family == "calendar" && QFile::exists( configDir + "/kcalrc" ) ) { 203 } else if ( family == "calendar" && QFile::exists( configDir + "/kcalrc" ) ) {
204 info.mConfig = new KConfig( locateLocal( "config", "kcalrc" ) ); 204 info.mConfig = new KConfig( locateLocal( "config", "kcalrc" ) );
205 } else { 205 } else {
206 QString configFile = locateLocal( "config", QString( "kresources/%1/stdrc" ).arg( family ) ); 206 QString configFile = locateLocal( "config", QString( "kresources/%1/stdrc" ).arg( family ) );
207 info.mConfig = new KConfig( configFile ); 207 info.mConfig = new KConfig( configFile );
208 } 208 }
209 info.mManager->readConfig( info.mConfig ); 209 info.mManager->readConfig( info.mConfig );
210 210
211 mInfoMap.append( info ); 211 mInfoMap.append( info );
212 } 212 }
213 } 213 }
214 } 214 }
215 } 215 }
216 mCurrentManager = 0; 216 mCurrentManager = 0;
217 217
218 mFamilyCombo->insertStringList( mFamilyMap ); 218 mFamilyCombo->insertStringList( mFamilyMap );
219 219
220 int currentFamily = mConfig->readNumEntry( "CurrentFamily", 0 ); 220 int currentFamily = mConfig->readNumEntry( "CurrentFamily", 0 );
221 mFamilyCombo->setCurrentItem( currentFamily ); 221 mFamilyCombo->setCurrentItem( currentFamily );
222 slotFamilyChanged( currentFamily ); 222 slotFamilyChanged( currentFamily );
223} 223}
224 224
225void ConfigPage::save() 225void ConfigPage::save()
226{ 226{
227 saveResourceSettings(); 227 saveResourceSettings();
228 228
229 QValueList<ResourcePageInfo>::Iterator it; 229 QValueList<ResourcePageInfo>::Iterator it;
230 for ( it = mInfoMap.begin(); it != mInfoMap.end(); ++it ) 230 for ( it = mInfoMap.begin(); it != mInfoMap.end(); ++it )
231 (*it).mManager->writeConfig( (*it).mConfig ); 231 (*it).mManager->writeConfig( (*it).mConfig );
232 232
233 emit changed( false ); 233 emit changed( false );
234} 234}
235 235
236void ConfigPage::defaults() 236void ConfigPage::defaults()
237{ 237{
238} 238}
239 239
240void ConfigPage::slotFamilyChanged( int pos ) 240void ConfigPage::slotFamilyChanged( int pos )
241{ 241{
242 if ( pos < 0 || pos >= (int)mFamilyMap.count() ) 242 if ( pos < 0 || pos >= (int)mFamilyMap.count() )
243 return; 243 return;
244 244
245 saveResourceSettings(); 245 saveResourceSettings();
246 246
247 mFamily = mFamilyMap[ pos ]; 247 mFamily = mFamilyMap[ pos ];
248 248
249//US qDebug("ConfigPage::slotFamilyChanged 4 family=%s", mFamily.latin1()); 249//US qDebug("ConfigPage::slotFamilyChanged 4 family=%s", mFamily.latin1());
250 250
251 mCurrentManager = mInfoMap[ pos ].mManager; 251 mCurrentManager = mInfoMap[ pos ].mManager;
252 mCurrentConfig = mInfoMap[ pos ].mConfig; 252 mCurrentConfig = mInfoMap[ pos ].mConfig;
253 253
254 if ( !mCurrentManager ) 254 if ( !mCurrentManager )
255 kdDebug(5650) << "ERROR: cannot create ResourceManager<Resource>( mFamily )" << endl; 255 kdDebug(5650) << "ERROR: cannot create ResourceManager<Resource>( mFamily )" << endl;
256 256
257 mListView->clear(); 257 mListView->clear();
258 258
259 if ( mCurrentManager->isEmpty() ) { 259 if ( mCurrentManager->isEmpty() ) {
260//US qDebug("ConfigPage::slotFamilyChanged 4.1 mCurrentManager=%ul", mCurrentManager ); 260//US qDebug("ConfigPage::slotFamilyChanged 4.1 mCurrentManager=%ul", mCurrentManager );
261 261
262 defaults(); 262 defaults();
263 } 263 }
264 264
265 Resource *standardResource = mCurrentManager->standardResource(); 265 Resource *standardResource = mCurrentManager->standardResource();
266 266
267//US qDebug("ConfigPage::slotFamilyChanged 4.4 resourcename=%s", standardResource->resourceName().latin1()); 267//US qDebug("ConfigPage::slotFamilyChanged 4.4 resourcename=%s", standardResource->resourceName().latin1());
268 268
269 269
270 Manager<Resource>::Iterator it; 270 Manager<Resource>::Iterator it;
271 for ( it = mCurrentManager->begin(); it != mCurrentManager->end(); ++it ) { 271 for ( it = mCurrentManager->begin(); it != mCurrentManager->end(); ++it ) {
272 ConfigViewItem *item = new ConfigViewItem( mListView, *it ); 272 ConfigViewItem *item = new ConfigViewItem( mListView, *it );
273 if ( *it == standardResource ) 273 if ( *it == standardResource )
274 item->setStandard( true ); 274 item->setStandard( true );
275 } 275 }
276 276
277 if ( mListView->childCount() == 0 ) { 277 if ( mListView->childCount() == 0 ) {
278//US qDebug("ConfigPage::slotFamilyChanged 4.5 "); 278//US qDebug("ConfigPage::slotFamilyChanged 4.5 ");
279 279
280 defaults(); 280 defaults();
281 emit changed( true ); 281 emit changed( true );
282 mCurrentManager->writeConfig( mCurrentConfig ); 282 mCurrentManager->writeConfig( mCurrentConfig );
283 } else { 283 } else {
284//US qDebug("ConfigPage::slotFamilyChanged 4.6 "); 284//US qDebug("ConfigPage::slotFamilyChanged 4.6 ");
285 285
286 if ( !standardResource ) { 286 if ( !standardResource ) {
287 KMessageBox::sorry( this, i18n( "There is no standard resource!<br> Please select one." ) ); 287 KMessageBox::sorry( this, i18n( "There is no standard resource!<br> Please select one." ) );
288 288
289//US qDebug("ConfigPage::slotFamilyChanged 4.7" ); 289//US qDebug("ConfigPage::slotFamilyChanged 4.7" );
290 290
291 } 291 }
292 292
293 emit changed( false ); 293 emit changed( false );
294 } 294 }
295} 295}
296 296
297void ConfigPage::slotAdd() 297void ConfigPage::slotAdd()
298{ 298{
299 if ( !mCurrentManager ) 299 if ( !mCurrentManager )
300 return; 300 return;
301 301
302 QStringList types = mCurrentManager->resourceTypeNames(); 302 QStringList types = mCurrentManager->resourceTypeNames();
303 QStringList descs = mCurrentManager->resourceTypeDescriptions(); 303 QStringList descs = mCurrentManager->resourceTypeDescriptions();
304 bool ok = false; 304 bool ok = false;
305 305
306 QString desc; 306 QString desc;
307 307
308 desc = QInputDialog::getItem( i18n( "Resource Configuration" ), 308 desc = QInputDialog::getItem( i18n( "Resource Configuration" ),
309 i18n( "Select type of the new resource:" ), descs, 0, 309 i18n( "Select type of the new resource:" ), descs, 0,
310 false, &ok, this ); 310 false, &ok, this );
311 311
312 if ( !ok ) 312 if ( !ok )
313 return; 313 return;
314 314
315 QString type = types[ descs.findIndex( desc ) ]; 315 QString type = types[ descs.findIndex( desc ) ];
316 316
317 // Create new resource 317 // Create new resource
318 Resource *resource = mCurrentManager->createResource( type ); 318 Resource *resource = mCurrentManager->createResource( type );
319 if ( !resource ) { 319 if ( !resource ) {
320 KMessageBox::error( this, i18n("Unable to create resource of type '%1'.") 320 KMessageBox::error( this, i18n("Unable to create resource of type '%1'.")
321 .arg( type ) ); 321 .arg( type ) );
322 return; 322 return;
323 } 323 }
324 324
325 resource->setResourceName( type + "-resource" ); 325 resource->setResourceName( type + "-resource" );
326 326
327 ConfigDialog dlg( this, mFamily, resource, "KRES::ConfigDialog" ); 327 ConfigDialog dlg( this, mFamily, resource, "KRES::ConfigDialog" );
328 328
329 if ( dlg.exec() ) { 329 if ( dlg.exec() ) {
330 mCurrentManager->add( resource ); 330 mCurrentManager->add( resource );
331 331
332 ConfigViewItem *item = new ConfigViewItem( mListView, resource ); 332 ConfigViewItem *item = new ConfigViewItem( mListView, resource );
333 333
334 mLastItem = item; 334 mLastItem = item;
335 335
336 // if there are only read-only resources we'll set this resource 336 // if there are only read-only resources we'll set this resource
337 // as standard resource 337 // as standard resource
338 if ( !resource->readOnly() ) { 338 if ( !resource->readOnly() ) {
339 bool onlyReadOnly = true; 339 bool onlyReadOnly = true;
340 QListViewItem *it = mListView->firstChild(); 340 QListViewItem *it = mListView->firstChild();
341 while ( it != 0 ) { 341 while ( it != 0 ) {
342 ConfigViewItem *confIt = static_cast<ConfigViewItem*>( it ); 342 ConfigViewItem *confIt = static_cast<ConfigViewItem*>( it );
343 if ( !confIt->readOnly() && confIt != item ) 343 if ( !confIt->readOnly() && confIt != item )
344 onlyReadOnly = false; 344 onlyReadOnly = false;
345 345
346 it = it->itemBelow(); 346 it = it->itemBelow();
347 } 347 }
348 348
349 if ( onlyReadOnly ) 349 if ( onlyReadOnly )
350 item->setStandard( true ); 350 item->setStandard( true );
351 } 351 }
352 352
353 emit changed( true ); 353 emit changed( true );
354 } else { 354 } else {
355 delete resource; 355 delete resource;
356 resource = 0; 356 resource = 0;
357 } 357 }
358} 358}
359 359
360void ConfigPage::slotRemove() 360void ConfigPage::slotRemove()
361{ 361{
362 if ( !mCurrentManager ) 362 if ( !mCurrentManager )
363 return; 363 return;
364 364
365 QListViewItem *item = mListView->currentItem(); 365 QListViewItem *item = mListView->currentItem();
366 ConfigViewItem *confItem = static_cast<ConfigViewItem*>( item ); 366 ConfigViewItem *confItem = static_cast<ConfigViewItem*>( item );
367 367
368 if ( !confItem ) 368 if ( !confItem )
369 return; 369 return;
370 370
371 if ( confItem->standard() ) { 371 if ( confItem->standard() ) {
372 KMessageBox::sorry( this, i18n( "You cannot remove your standard resource!\n Please select a new standard resource first." ) ); 372 KMessageBox::sorry( this, i18n( "You cannot remove your standard resource!\n Please select a new standard resource first." ) );
373 return; 373 return;
374 } 374 }
375 375
376 mCurrentManager->remove( confItem->resource() ); 376 mCurrentManager->remove( confItem->resource() );
377 377
378 if ( item == mLastItem ) 378 if ( item == mLastItem )
379 mLastItem = 0; 379 mLastItem = 0;
380 380
381 mListView->takeItem( item ); 381 mListView->takeItem( item );
382 delete item; 382 delete item;
383 383
384 emit changed( true ); 384 emit changed( true );
385} 385}
386 386
387void ConfigPage::slotEdit() 387void ConfigPage::slotEdit()
388{ 388{
389 if ( !mCurrentManager ) 389 if ( !mCurrentManager )
390 return; 390 return;
391 391
392 QListViewItem *item = mListView->currentItem(); 392 QListViewItem *item = mListView->currentItem();
393 ConfigViewItem *configItem = static_cast<ConfigViewItem*>( item ); 393 ConfigViewItem *configItem = static_cast<ConfigViewItem*>( item );
394 if ( !configItem ) 394 if ( !configItem )
395 return; 395 return;
396 396
397 Resource *resource = configItem->resource(); 397 Resource *resource = configItem->resource();
398 398
399 ConfigDialog dlg( this, mFamily, resource, "KRES::ConfigDialog" ); 399 ConfigDialog dlg( this, mFamily, resource, "KRES::ConfigDialog" );
400 400
401 if ( dlg.exec() ) { 401 if ( dlg.exec() ) {
402 configItem->setText( 0, resource->resourceName() ); 402 configItem->setText( 0, resource->resourceName() );
403 configItem->setText( 1, resource->type() ); 403 configItem->setText( 1, resource->type() );
404 404
405 if ( configItem->standard() && configItem->readOnly() ) { 405 if ( configItem->standard() && configItem->readOnly() ) {
406 KMessageBox::sorry( this, i18n( "You cannot use a read-only<br> resource as standard!" ) ); 406 KMessageBox::sorry( this, i18n( "You cannot use a read-only<br> resource as standard!" ) );
407 configItem->setStandard( false ); 407 configItem->setStandard( false );
408 } 408 }
409 409
410 mCurrentManager->resourceChanged( resource ); 410 mCurrentManager->resourceChanged( resource );
411 emit changed( true ); 411 emit changed( true );
412 } 412 }
413} 413}
414 414
415void ConfigPage::slotStandard() 415void ConfigPage::slotStandard()
416{ 416{
417 if ( !mCurrentManager ) 417 if ( !mCurrentManager )
418 return; 418 return;
419 419
420 ConfigViewItem *item = static_cast<ConfigViewItem*>( mListView->currentItem() ); 420 ConfigViewItem *item = static_cast<ConfigViewItem*>( mListView->currentItem() );
421 if ( !item ) 421 if ( !item )
422 return; 422 return;
423 423
424 if ( item->readOnly() ) { 424 if ( item->readOnly() ) {
425 KMessageBox::sorry( this, i18n( "You cannot use a read-only<br>resource as standard!" ) ); 425 KMessageBox::sorry( this, i18n( "You cannot use a read-only<br>resource as standard!" ) );
426 return; 426 return;
427 } 427 }
428 428
429 if ( !item->isOn() ) { 429 if ( !item->isOn() ) {
430 KMessageBox::sorry( this, i18n( "You cannot use an inactive<br>resource as standard!" ) ); 430 KMessageBox::sorry( this, i18n( "You cannot use an inactive<br>resource as standard!" ) );
431 return; 431 return;
432 } 432 }
433 433
434 QListViewItem *it = mListView->firstChild(); 434 QListViewItem *it = mListView->firstChild();
435 while ( it != 0 ) { 435 while ( it != 0 ) {
436 ConfigViewItem *configItem = static_cast<ConfigViewItem*>( it ); 436 ConfigViewItem *configItem = static_cast<ConfigViewItem*>( it );
437 if ( configItem->standard() ) 437 if ( configItem->standard() )
438 configItem->setStandard( false ); 438 configItem->setStandard( false );
439 it = it->itemBelow(); 439 it = it->itemBelow();
440 } 440 }
441 441
442 item->setStandard( true ); 442 item->setStandard( true );
443 mCurrentManager->setStandardResource( item->resource() ); 443 mCurrentManager->setStandardResource( item->resource() );
444 emit changed( true ); 444 emit changed( true );
445 445
446} 446}
447 447
448void ConfigPage::slotSelectionChanged() 448void ConfigPage::slotSelectionChanged()
449{ 449{
450 bool state = ( mListView->currentItem() != 0 ); 450 bool state = ( mListView->currentItem() != 0 );
451 451
452 mRemoveButton->setEnabled( state ); 452 mRemoveButton->setEnabled( state );
453 mEditButton->setEnabled( state ); 453 mEditButton->setEnabled( state );
454 mStandardButton->setEnabled( state ); 454 mStandardButton->setEnabled( state );
455} 455}
456 456
457void ConfigPage::resourceAdded( Resource* resource ) 457void ConfigPage::resourceAdded( Resource* resource )
458{ 458{
459 qDebug("ConfigPage::resourceAdded : %s", resource->resourceName().latin1()); 459 qDebug("ConfigPage::resourceAdded : %s", resource->resourceName().latin1());
460 kdDebug(5650) << "ConfigPage::resourceAdded( " << resource->resourceName() << " )" << endl;
461 ConfigViewItem *item = new ConfigViewItem( mListView, resource ); 460 ConfigViewItem *item = new ConfigViewItem( mListView, resource );
462 461
463 // FIXME: this sucks. This should be in the config file, 462 // FIXME: this sucks. This should be in the config file,
464 // or application-dependent, in which case it's always Off 463 // or application-dependent, in which case it's always Off
465 item->setOn( false ); 464 item->setOn( false );
466 465
467 mLastItem = item; 466 mLastItem = item;
468 467
469 emit changed( true ); 468 emit changed( true );
470} 469}
471 470
472void ConfigPage::resourceModified( Resource* resource ) 471void ConfigPage::resourceModified( Resource* resource )
473{ 472{
474 qDebug("ConfigPage::resourceModified : %s", resource->resourceName().latin1()); 473 qDebug("ConfigPage::resourceModified : %s", resource->resourceName().latin1());
475 kdDebug(5650) << "ConfigPage::resourceModified( " << resource->resourceName() << " )" << endl;
476} 474}
477 475
478void ConfigPage::resourceDeleted( Resource* resource ) 476void ConfigPage::resourceDeleted( Resource* resource )
479{ 477{
480 qDebug("ConfigPage::resourceDeleted : %s", resource->resourceName().latin1()); 478 qDebug("ConfigPage::resourceDeleted : %s", resource->resourceName().latin1());
481 kdDebug(5650) << "ConfigPage::resourceDeleted( " << resource->resourceName() << " )" << endl;
482} 479}
483 480
484void ConfigPage::slotItemClicked( QListViewItem *item ) 481void ConfigPage::slotItemClicked( QListViewItem *item )
485{ 482{
486 ConfigViewItem *configItem = static_cast<ConfigViewItem *>( item ); 483 ConfigViewItem *configItem = static_cast<ConfigViewItem *>( item );
487 if ( !configItem ) return; 484 if ( !configItem ) return;
488 485
489 if ( configItem->standard() && !configItem->isOn() ) { 486 if ( configItem->standard() && !configItem->isOn() ) {
490 KMessageBox::sorry( this, i18n( "You cannot deactivate the<br>standard resource. Choose<br>another standard resource first." ) ); 487 KMessageBox::sorry( this, i18n( "You cannot deactivate the<br>standard resource. Choose<br>another standard resource first." ) );
491 configItem->setOn( true ); 488 configItem->setOn( true );
492 return; 489 return;
493 } 490 }
494 491
495 if ( configItem->isOn() != configItem->resource()->isActive() ) { 492 if ( configItem->isOn() != configItem->resource()->isActive() ) {
496 emit changed( true ); 493 emit changed( true );
497 } 494 }
498} 495}
499 496
500void ConfigPage::saveResourceSettings() 497void ConfigPage::saveResourceSettings()
501{ 498{
502 qDebug("ConfigPage::saveResourceSettings() begin"); 499 //qDebug("ConfigPage::saveResourceSettings() begin");
503 500
504 if ( mCurrentManager ) { 501 if ( mCurrentManager ) {
505 502
506 QListViewItem *item = mListView->firstChild(); 503 QListViewItem *item = mListView->firstChild();
507 while ( item ) { 504 while ( item ) {
508 ConfigViewItem *configItem = static_cast<ConfigViewItem*>( item ); 505 ConfigViewItem *configItem = static_cast<ConfigViewItem*>( item );
509 506
510 // check if standard resource 507 // check if standard resource
511 if ( configItem->standard() && !configItem->readOnly() && 508 if ( configItem->standard() && !configItem->readOnly() &&
512 configItem->isOn() ) { 509 configItem->isOn() ) {
513 510
514 mCurrentManager->setStandardResource( configItem->resource() ); 511 mCurrentManager->setStandardResource( configItem->resource() );
515 } 512 }
516 513
517 // check if active or passive resource 514 // check if active or passive resource
518 configItem->resource()->setActive( configItem->isOn() ); 515 configItem->resource()->setActive( configItem->isOn() );
519 516
520 item = item->nextSibling(); 517 item = item->nextSibling();
521 } 518 }
522 mCurrentManager->writeConfig( mCurrentConfig ); 519 mCurrentManager->writeConfig( mCurrentConfig );
523 520
524 if ( !mCurrentManager->standardResource() ) 521 if ( !mCurrentManager->standardResource() )
525 KMessageBox::sorry( this, i18n( "There is no valid standard resource!<br>Please select one which is neither read-only nor inactive." ) ); 522 KMessageBox::sorry( this, i18n( "There is no valid standard resource!<br>Please select one which is neither read-only nor inactive." ) );
526 } 523 }
527 524
528 qDebug("ConfigPage::saveResourceSettings() end"); 525 //qDebug("ConfigPage::saveResourceSettings() end");
529 526
530} 527}
531 528
532//US #include "configpage.moc" 529//US #include "configpage.moc"
533 530
diff --git a/microkde/kresources/configwidget.h b/microkde/kresources/configwidget.h
index b97e278..aecdda9 100644
--- a/microkde/kresources/configwidget.h
+++ b/microkde/kresources/configwidget.h
@@ -1,61 +1,61 @@
1/* 1/*
2 This file is part of libkresources. 2 This file is part of libkresources.
3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
4 Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org> 4 Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org>
5 5
6 This library is free software; you can redistribute it and/or 6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public 7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either 8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version. 9 version 2 of the License, or (at your option) any later version.
10 10
11 This library is distributed in the hope that it will be useful, 11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details. 14 Library General Public License for more details.
15 15
16 You should have received a copy of the GNU Library General Public License 16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to 17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. 19 Boston, MA 02111-1307, USA.
20*/ 20*/
21 21
22#ifndef KRESOURCES_CONFIGWIDGET_H 22#ifndef KRESOURCES_CONFIGWIDGET_H
23#define KRESOURCES_CONFIGWIDGET_H 23#define KRESOURCES_CONFIGWIDGET_H
24 24
25#include <qwidget.h> 25#include <qwidget.h>
26 26
27#include <kconfig.h> 27#include <kconfig.h>
28 28
29#include "resource.h" 29#include "resource.h"
30 30
31namespace KRES { 31namespace KRES {
32 32
33class ConfigWidget : public QWidget 33class ConfigWidget : public QWidget
34{ 34{
35 Q_OBJECT 35 Q_OBJECT
36 36
37public: 37public:
38 ConfigWidget( QWidget *parent = 0, const char *name = 0 ); 38 ConfigWidget( QWidget *parent = 0, const char *name = 0 );
39 39
40 /** 40 /**
41 Sets the widget to 'edit' mode. Reimplement this method if you are 41 Sets the widget to 'edit' mode. Reimplement this method if you are
42 interested in the mode change (to disable some GUI element for 42 interested in the mode change (to disable some GUI element for
43 example). By default the widget is in 'create new' mode. 43 example). By default the widget is in 'create new' mode.
44 */ 44 */
45 virtual void setInEditMode( bool value ); 45 virtual void setInEditMode( bool value );
46 46
47public slots: 47public slots:
48 virtual void loadSettings( Resource *resource ); 48 virtual void loadSettings( Resource *resource );
49 virtual void saveSettings( Resource *resource ); 49 virtual void saveSettings( Resource *resource );
50 50
51signals: 51signals:
52 void setReadOnly( bool value ); 52 void setReadOnly( bool value );
53 void setPersistentReadOnly( bool value ); 53 void setPersistentReadOnly( bool value );
54 54 void setIncludeInSync(bool);
55 55
56protected: 56protected:
57 Resource* mResource; 57 Resource* mResource;
58}; 58};
59 59
60} 60}
61#endif 61#endif