summaryrefslogtreecommitdiffabout
path: root/kaddressbook
Side-by-side diff
Diffstat (limited to 'kaddressbook') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/kabcore.cpp95
-rw-r--r--kaddressbook/kabcore.h5
2 files changed, 86 insertions, 14 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index 49c3b19..e912941 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -127,105 +127,108 @@ $Id$
#include <kabc/vcardconverter.h>
#include "addresseeutil.h"
#include "undocmds.h"
#include "addresseeeditordialog.h"
#include "viewmanager.h"
#include "details/detailsviewcontainer.h"
#include "kabprefs.h"
#include "xxportmanager.h"
#include "incsearchwidget.h"
#include "jumpbuttonbar.h"
#include "extensionmanager.h"
#include "addresseeconfig.h"
#include <kcmultidialog.h>
#ifdef _WIN32_
#include "kaimportoldialog.h"
#else
#include <unistd.h>
#endif
// sync includes
#include <libkdepim/ksyncprofile.h>
+#include <libkdepim/ksyncprefsdialog.h>
bool pasteWithNewUid = true;
#ifdef KAB_EMBEDDED
KABCore::KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name )
: QWidget( parent, name ), mGUIClient( client ), mViewManager( 0 ),
mExtensionManager( 0 ),mConfigureDialog( 0 ),/*US mLdapSearchDialog( 0 ),*/
mReadWrite( readWrite ), mModified( false ), mMainWindow(client)
#else //KAB_EMBEDDED
KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name )
: QWidget( parent, name ), mGUIClient( client ), mViewManager( 0 ),
mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ),
mReadWrite( readWrite ), mModified( false )
#endif //KAB_EMBEDDED
{
mBlockSaveFlag = false;
mExtensionBarSplitter = 0;
mIsPart = !parent->inherits( "KAddressBookMain" );
mAddressBook = KABC::StdAddressBook::self();
KABC::StdAddressBook::setAutomaticSave( false );
#ifndef KAB_EMBEDDED
mAddressBook->setErrorHandler( new KABC::GUIErrorHandler );
#endif //KAB_EMBEDDED
connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ),
SLOT( addressBookChanged() ) );
+#if 0
+ // LP moved to addressbook init method
mAddressBook->addCustomField( i18n( "Department" ), KABC::Field::Organization,
"X-Department", "KADDRESSBOOK" );
mAddressBook->addCustomField( i18n( "Profession" ), KABC::Field::Organization,
"X-Profession", "KADDRESSBOOK" );
mAddressBook->addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization,
"X-AssistantsName", "KADDRESSBOOK" );
mAddressBook->addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization,
"X-ManagersName", "KADDRESSBOOK" );
mAddressBook->addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal,
"X-SpousesName", "KADDRESSBOOK" );
mAddressBook->addCustomField( i18n( "Office" ), KABC::Field::Personal,
"X-Office", "KADDRESSBOOK" );
mAddressBook->addCustomField( i18n( "IM Address" ), KABC::Field::Personal,
"X-IMAddress", "KADDRESSBOOK" );
mAddressBook->addCustomField( i18n( "Anniversary" ), KABC::Field::Personal,
"X-Anniversary", "KADDRESSBOOK" );
//US added this field to become compatible with Opie/qtopia addressbook
// values can be "female" or "male" or "". An empty field represents undefined.
mAddressBook->addCustomField( i18n( "Gender" ), KABC::Field::Personal,
"X-Gender", "KADDRESSBOOK" );
mAddressBook->addCustomField( i18n( "Children" ), KABC::Field::Personal,
"X-Children", "KADDRESSBOOK" );
mAddressBook->addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal,
"X-FreeBusyUrl", "KADDRESSBOOK" );
-
+#endif
initGUI();
mIncSearchWidget->setFocus();
connect( mViewManager, SIGNAL( selected( const QString& ) ),
SLOT( setContactSelected( const QString& ) ) );
connect( mViewManager, SIGNAL( executed( const QString& ) ),
SLOT( executeContact( const QString& ) ) );
connect( mViewManager, SIGNAL( deleteRequest( ) ),
SLOT( deleteContacts( ) ) );
connect( mViewManager, SIGNAL( modified() ),
SLOT( setModified() ) );
connect( mExtensionManager, SIGNAL( modified( const KABC::Addressee::List& ) ), this, SLOT( extensionModified( const KABC::Addressee::List& ) ) );
connect( mExtensionManager, SIGNAL( changedActiveExtension( int ) ), this, SLOT( extensionChanged( int ) ) );
connect( mXXPortManager, SIGNAL( modified() ),
SLOT( setModified() ) );
connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ),
SLOT( incrementalSearch( const QString& ) ) );
connect( mIncSearchWidget, SIGNAL( fieldChanged() ),
@@ -2174,50 +2177,50 @@ void KABCore::slotSyncMenu( int action )
mCurrentSyncName = KABPrefs::instance()->mLocalMachineName ;
KConfig config ( locateLocal( "config","ksyncprofilesrc" ) );
KSyncProfile* temp = new KSyncProfile ();
temp->setName(KABPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile]);
temp->readConfig(&config);
KABPrefs::instance()->mAskForPreferences = temp->getAskForPreferences();
KABPrefs::instance()->mSyncAlgoPrefs = temp->getSyncPrefs();
KABPrefs::instance()->mWriteBackFile = temp->getWriteBackFile();
KABPrefs::instance()->mWriteBackExistingOnly = temp->getWriteBackExisting();
KABPrefs::instance()->mWriteBackInFuture = 0;
if ( temp->getWriteBackFuture() )
KABPrefs::instance()->mWriteBackInFuture = temp->getWriteBackFutureWeeks( );
KABPrefs::instance()->mShowSyncSummary = temp->getShowSummaryAfterSync();
if ( action == 1000 ) {
syncSharp();
} else if ( action == 1001 ) {
syncLocalFile();
} else if ( action == 1002 ) {
quickSyncLocalFile();
} else if ( action >= 1003 ) {
if ( temp->getIsLocalFileSync() ) {
- if ( syncWithFile( temp->getRemoteFileName( ), false ) )
- KABPrefs::instance()->mLastSyncedLocalFile = temp->getRemoteFileName();
+ if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) )
+ KABPrefs::instance()->mLastSyncedLocalFile = temp->getRemoteFileNameAB();
} else {
if ( temp->getIsPhoneSync() ) {
KABPrefs::instance()->mPhoneDevice = temp->getPhoneDevice( ) ;
KABPrefs::instance()->mPhoneConnection = temp->getPhoneConnection( );
KABPrefs::instance()->mPhoneModel = temp->getPhoneModel( );
syncPhone();
} else
syncRemote( temp );
}
}
delete temp;
mBlockSaveFlag = false;
}
void KABCore::syncLocalFile()
{
QString fn =KABPrefs::instance()->mLastSyncedLocalFile;
fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename(*.ics/*.vcs)"), this );
if ( fn == "" )
return;
if ( syncWithFile( fn, false ) ) {
@@ -2296,143 +2299,143 @@ void KABCore::multiSync( bool askforPrefs )
if ( num > 1 )
ringSync();
mBlockSaveFlag = false;
if ( num )
save();
if ( num )
setCaption(i18n("%1 profiles synced. Multiple sync completed!").arg(num) );
else
setCaption(i18n("Nothing synced! No profiles defined for multisync!"));
return;
}
int KABCore::ringSync()
{
int syncedProfiles = 0;
int i;
QTime timer;
KConfig config ( locateLocal( "config","ksyncprofilesrc" ) );
QStringList syncProfileNames = KABPrefs::instance()->mSyncProfileNames;
KSyncProfile* temp = new KSyncProfile ();
KABPrefs::instance()->mAskForPreferences = false;
for ( i = 0; i < syncProfileNames.count(); ++i ) {
mCurrentSyncProfile = i;
temp->setName(syncProfileNames[mCurrentSyncProfile]);
temp->readConfig(&config);
- if ( temp->getIncludeInRingSync() && ( i < 1 || i > 2 )) {
+ if ( temp->getIncludeInRingSyncAB() && ( i < 1 || i > 2 )) {
setCaption(i18n("Profile ")+syncProfileNames[mCurrentSyncProfile]+ i18n(" is synced ... "));
++syncedProfiles;
// KABPrefs::instance()->mAskForPreferences = temp->getAskForPreferences();
KABPrefs::instance()->mWriteBackFile = temp->getWriteBackFile();
KABPrefs::instance()->mWriteBackExistingOnly = temp->getWriteBackExisting();
KABPrefs::instance()->mWriteBackInFuture = 0;
if ( temp->getWriteBackFuture() )
KABPrefs::instance()->mWriteBackInFuture = temp->getWriteBackFutureWeeks( );
KABPrefs::instance()->mShowSyncSummary = false;
mCurrentSyncDevice = syncProfileNames[i] ;
mCurrentSyncName = KABPrefs::instance()->mLocalMachineName;
if ( i == 0 ) {
syncSharp();
} else {
if ( temp->getIsLocalFileSync() ) {
- if ( syncWithFile( temp->getRemoteFileName( ), true ) )
- KABPrefs::instance()->mLastSyncedLocalFile = temp->getRemoteFileName();
+ if ( syncWithFile( temp->getRemoteFileNameAB( ), true ) )
+ KABPrefs::instance()->mLastSyncedLocalFile = temp->getRemoteFileNameAB();
} else {
if ( temp->getIsPhoneSync() ) {
KABPrefs::instance()->mPhoneDevice = temp->getPhoneDevice( ) ;
KABPrefs::instance()->mPhoneConnection = temp->getPhoneConnection( );
KABPrefs::instance()->mPhoneModel = temp->getPhoneModel( );
syncPhone();
} else
syncRemote( temp, false );
}
}
timer.start();
setCaption(i18n("Multiple sync in progress ... please wait!") );
while ( timer.elapsed () < 2000 ) {
qApp->processEvents();
#ifndef _WIN32_
sleep (1);
#endif
}
}
}
delete temp;
return syncedProfiles;
}
void KABCore::syncRemote( KSyncProfile* prof, bool ask)
{
QString question;
if ( ask ) {
question = i18n("Do you really want\nto remote sync\nwith profile \n")+ prof->getName()+" ?\n";
if ( QMessageBox::information( this, i18n("KO/Pi Sync"),
question,
i18n("Yes"), i18n("No"),
0, 0 ) != 0 )
return;
}
- QString command = prof->getPreSyncCommand();
+ QString command = prof->getPreSyncCommandAB();
int fi;
if ( (fi = command.find("$PWD$")) > 0 ) {
QString pwd = getPassword();
command = command.left( fi )+ pwd + command.mid( fi+5 );
}
int maxlen = 30;
if ( QApplication::desktop()->width() > 320 )
maxlen += 25;
setCaption ( i18n( "Copy remote file to local machine..." ) );
int fileSize = 0;
int result = system ( command );
// 0 : okay
// 256: no such file or dir
//
qDebug("KO: Remote copy result(0 = okay): %d ",result );
if ( result != 0 ) {
int len = maxlen;
while ( len < command.length() ) {
command.insert( len , "\n" );
len += maxlen +2;
}
question = i18n("Sorry, the copy command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n").arg (command) ;
QMessageBox::information( this, i18n("KO/Pi Sync - ERROR"),
question,
i18n("Okay!")) ;
setCaption ("KO/Pi");
return;
}
setCaption ( i18n( "Copying succeed." ) );
//qDebug(" file **%s** ",prof->getLocalTempFile().latin1() );
- if ( syncWithFile( prof->getLocalTempFile(), true ) ) {
+ if ( syncWithFile( prof->getLocalTempFileAB(), true ) ) {
// Event* e = mView->getLastSyncEvent();
// e->setReadOnly( false );
// e->setLocation( KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile]);
// e->setReadOnly( true );
if ( KABPrefs::instance()->mWriteBackFile ) {
- command = prof->getPostSyncCommand();
+ command = prof->getPostSyncCommandAB();
int fi;
if ( (fi = command.find("$PWD$")) > 0 ) {
QString pwd = getPassword();
command = command.left( fi )+ pwd + command.mid( fi+5 );
}
setCaption ( i18n( "Writing back file ..." ) );
result = system ( command );
qDebug("KO: Writing back file result: %d ", result);
if ( result != 0 ) {
setCaption ( i18n( "Writing back file result: " )+QString::number( result ) );
return;
} else {
setCaption ( i18n( "Syncronization sucessfully completed" ) );
}
}
}
return;
}
#include <qpushbutton.h>
#include <qradiobutton.h>
#include <qbuttongroup.h>
void KABCore::edit_sync_options()
{
@@ -2489,55 +2492,121 @@ void KABCore::edit_sync_options()
QString KABCore::getPassword( )
{
QString retfile = "";
QDialog dia ( this, "input-dialog", true );
QLineEdit lab ( &dia );
lab.setEchoMode( QLineEdit::Password );
QVBoxLayout lay( &dia );
lay.setMargin(7);
lay.setSpacing(7);
lay.addWidget( &lab);
dia.setFixedSize( 230,50 );
dia.setCaption( i18n("Enter password") );
QPushButton pb ( "OK", &dia);
lay.addWidget( &pb );
connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
dia.show();
int res = dia.exec();
if ( res )
retfile = lab.text();
dia.hide();
qApp->processEvents();
return retfile;
}
+bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode)
+{
+}
bool KABCore::syncAB(QString filename, int mode)
{
+
+
+ mGlobalSyncMode = SYNC_MODE_NORMAL;
+ AddressBook abLocal(filename,"syncContact");
+ bool syncOK = false;
+ if ( abLocal.load() ) {
+ qDebug("AB loaded %s mode %d",filename.latin1(), mode );
+ AddressBook::Iterator it;
+ QStringList vcards;
+ for ( it = abLocal.begin(); it != abLocal.end(); ++it ) {
+ qDebug("Name %s ", (*it).familyName().latin1());
+ }
+ syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode );
+ if ( syncOK ) {
+ if ( KABPrefs::instance()->mWriteBackFile )
+ {
+ abLocal.saveAB();
+ }
+ }
+ setModified();
+
+ }
+ if ( syncOK )
+ ;//updateView();
+ return syncOK;
+#if 0
+ mGlobalSyncMode = SYNC_MODE_NORMAL;
+ CalendarLocal* calendar = new CalendarLocal();
+ calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
+ FileStorage* storage = new FileStorage( calendar );
+ bool syncOK = false;
+ storage->setFileName( filename );
+ // qDebug("loading ... ");
+ if ( storage->load(KOPrefs::instance()->mUseQuicksave) ) {
+ getEventViewerDialog()->setSyncMode( true );
+ syncOK = synchronizeCalendar( mCalendar, calendar, mode );
+ getEventViewerDialog()->setSyncMode( false );
+ if ( syncOK ) {
+ if ( KOPrefs::instance()->mWriteBackFile )
+ {
+ storage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) );
+ storage->save();
+ }
+ }
+ setModified();
+ }
+ delete storage;
+ delete calendar;
+ if ( syncOK )
+ updateView();
+ return syncOK;
+#endif
}
void KABCore::confSync()
-{
- //mView->confSync();
- qDebug("pending KABCore::confSync() ");
+{
+ static KSyncPrefsDialog* sp = 0;
+ if ( ! sp ) {
+ sp = new KSyncPrefsDialog( this, "syncprefs", true );
+ }
+ sp->usrReadConfig();
+#ifndef DESKTOP_VERSION
+ sp->showMaximized();
+#else
+ sp->show();
+#endif
+ sp->exec();
+ KABPrefs::instance()->mSyncProfileNames = sp->getSyncProfileNames();
+ KABPrefs::instance()->mLocalMachineName = sp->getLocalMachineName ();
fillSyncMenu();
}
void KABCore::syncSharp()
{
if ( mModified )
save();
qDebug("pending syncSharp() ");
//mView->syncSharp();
- mModified = true ;
+ setModified();
}
void KABCore::syncPhone()
{
if ( mModified )
save();
qDebug("pending syncPhone(); ");
//mView->syncPhone();
setModified();
}
diff --git a/kaddressbook/kabcore.h b/kaddressbook/kabcore.h
index 10ce8f4..4487a8a 100644
--- a/kaddressbook/kabcore.h
+++ b/kaddressbook/kabcore.h
@@ -435,44 +435,47 @@ class KABCore : public QWidget
QPopupMenu *settingsMenu;
QPopupMenu *changeMenu;
//US QAction *mActionSave;
QPopupMenu *ImportMenu;
QPopupMenu *ExportMenu;
//LR additional methods
KAction *mActionRemoveVoice;
KAction * mActionImportOL;
#ifndef KAB_EMBEDDED
KAddressBookService *mAddressBookService;
#endif //KAB_EMBEDDED
class KABCorePrivate;
KABCorePrivate *d;
bool mBlockSaveFlag;
#ifdef KAB_EMBEDDED
KAddressBookMain *mMainWindow; // should be the same like mGUIClient
#endif //KAB_EMBEDDED
// LR *******************************
// sync stuff!
QPopupMenu *syncMenu;
void fillSyncMenu();
- void confSync();
QString mCurrentSyncDevice;
QString mCurrentSyncName;
void quickSyncLocalFile();
bool syncWithFile( QString fn , bool quick );
void KABCore::syncLocalFile();
void KABCore::syncPhone();
void KABCore::syncSharp();
void multiSync( bool askforPrefs );
int mCurrentSyncProfile ;
void syncRemote( KSyncProfile* prof, bool ask = true);
void edit_sync_options();
bool syncAB(QString filename, int mode);
int ringSync();
QString getPassword( );
+ int mGlobalSyncMode;
+ bool synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode);
+ public slots:
+ void confSync();
// *********************
};
#endif