summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-04-03 23:09:08 (UTC)
committer zautrix <zautrix>2005-04-03 23:09:08 (UTC)
commit06fbd5e92ff0cb2a5ef630f7f09ca3e1927f5cf5 (patch) (unidiff)
treea9f01377dc21931e5d267edc3b196232f244d1fb
parent30359da3c126e67f6c75400323fcca4c159c3d93 (diff)
downloadkdepimpi-06fbd5e92ff0cb2a5ef630f7f09ca3e1927f5cf5.zip
kdepimpi-06fbd5e92ff0cb2a5ef630f7f09ca3e1927f5cf5.tar.gz
kdepimpi-06fbd5e92ff0cb2a5ef630f7f09ca3e1927f5cf5.tar.bz2
sync fix
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/plugins/file/resourcefile.cpp18
-rw-r--r--kabc/plugins/file/resourcefile.h1
2 files changed, 13 insertions, 6 deletions
diff --git a/kabc/plugins/file/resourcefile.cpp b/kabc/plugins/file/resourcefile.cpp
index 0e6c2a3..af76558 100644
--- a/kabc/plugins/file/resourcefile.cpp
+++ b/kabc/plugins/file/resourcefile.cpp
@@ -39,145 +39,151 @@ $Id$
39#include <kapplication.h> 39#include <kapplication.h>
40#include <kconfig.h> 40#include <kconfig.h>
41#include <kdebug.h> 41#include <kdebug.h>
42#include <klocale.h> 42#include <klocale.h>
43//US #include <ksavefile.h> 43//US #include <ksavefile.h>
44#include <kstandarddirs.h> 44#include <kstandarddirs.h>
45#include <kmessagebox.h> 45#include <kmessagebox.h>
46 46
47#include "formatfactory.h" 47#include "formatfactory.h"
48 48
49#include "resource.h" 49#include "resource.h"
50#include "resourcefileconfig.h" 50#include "resourcefileconfig.h"
51#include "stdaddressbook.h" 51#include "stdaddressbook.h"
52#define NO_DIRWATCH 52#define NO_DIRWATCH
53#include "resourcefile.h" 53#include "resourcefile.h"
54 54
55//#define ALLOW_LOCKING 55//#define ALLOW_LOCKING
56 56
57 57
58using namespace KABC; 58using namespace KABC;
59 59
60extern "C" 60extern "C"
61#ifdef _WIN32_ 61#ifdef _WIN32_
62__declspec(dllexport) 62__declspec(dllexport)
63#else 63#else
64{ 64{
65#endif 65#endif
66 66
67//US void *init_kabc_file() 67//US void *init_kabc_file()
68 void *init_microkabc_file() 68 void *init_microkabc_file()
69 { 69 {
70 return new KRES::PluginFactory<ResourceFile,ResourceFileConfig>(); 70 return new KRES::PluginFactory<ResourceFile,ResourceFileConfig>();
71 } 71 }
72#ifndef _WIN32_ 72#ifndef _WIN32_
73} 73}
74#endif 74#endif
75 75
76ResourceFile::ResourceFile( const KConfig *config ) 76ResourceFile::ResourceFile( const KConfig *config )
77 : Resource( config ) , mFormat( 0 ) 77 : Resource( config ) , mFormat( 0 )
78{ 78{
79 QString fileName, formatName, default_fileName; 79 QString fileName, formatName, default_fileName;
80 80
81 default_fileName = StdAddressBook::fileName(); 81 default_fileName = StdAddressBook::fileName();
82 82
83 KConfig *cfg = (KConfig *)config; 83 KConfig *cfg = (KConfig *)config;
84 if ( cfg ) { 84 if ( cfg ) {
85 fileName = cfg->readEntry( "FileName", default_fileName ); 85 fileName = cfg->readEntry( "FileName", default_fileName );
86 formatName = cfg->readEntry( "FileFormat", "vcard" ); 86 formatName = cfg->readEntry( "FileFormat", "vcard" );
87 mFamily = cfg->readEntry( "ResourceName", "std" );
87 } else { 88 } else {
88 fileName = default_fileName; 89 fileName = default_fileName;
89 formatName = "vcard"; 90 formatName = "vcard";
90 } 91 }
91 92
92 init( fileName, formatName ); 93 init( fileName, formatName );
93} 94}
94 95
95ResourceFile::ResourceFile( const QString &fileName , 96ResourceFile::ResourceFile( const QString &fileName ,
96 const QString &formatName ) 97 const QString &formatName )
97 : Resource( 0 ) 98 : Resource( 0 )
98{ 99{
99// qDebug("ResourceFile::ResourceFile : 3 %s, %s", fileName.latin1(), formatName.latin1()); 100// qDebug("ResourceFile::ResourceFile : 3 %s, %s", fileName.latin1(), formatName.latin1());
100 101
101 102
102 103
103 init( fileName, formatName ); 104 init( fileName, formatName );
104} 105}
105 106
106void ResourceFile::init( const QString &fileName, const QString &formatName ) 107void ResourceFile::init( const QString &fileName, const QString &formatName )
107{ 108{
108 mFormatName = formatName; 109 mFormatName = formatName;
109 110
110 FormatFactory *factory = FormatFactory::self(); 111 FormatFactory *factory = FormatFactory::self();
111 mFormat = factory->format( mFormatName ); 112 mFormat = factory->format( mFormatName );
112 113
113 if ( !mFormat ) { 114 if ( !mFormat ) {
114 mFormatName = "vcard"; 115 mFormatName = "vcard";
115 mFormat = factory->format( mFormatName ); 116 mFormat = factory->format( mFormatName );
116 } 117 }
117 118
118#ifndef NO_DIRWATCH 119#ifndef NO_DIRWATCH
119 connect( &mDirWatch, SIGNAL( dirty(const QString&) ), SLOT( fileChanged() ) ); 120 connect( &mDirWatch, SIGNAL( dirty(const QString&) ), SLOT( fileChanged() ) );
120 connect( &mDirWatch, SIGNAL( created(const QString&) ), SLOT( fileChanged() ) ); 121 connect( &mDirWatch, SIGNAL( created(const QString&) ), SLOT( fileChanged() ) );
121 connect( &mDirWatch, SIGNAL( deleted(const QString&) ), SLOT( fileChanged() ) ); 122 connect( &mDirWatch, SIGNAL( deleted(const QString&) ), SLOT( fileChanged() ) );
122#endif 123#endif
123 124
124 125 QString localKdeDir;
125 QString localKdeDir;
126 localKdeDir = readEnvPath("LOCALMICROKDEHOME"); 126 localKdeDir = readEnvPath("LOCALMICROKDEHOME");
127 if ( ! localKdeDir.isEmpty() ) { 127 if ( ! localKdeDir.isEmpty() ) {
128 qDebug("LOCALMICROKDEHOME is set to: %s",localKdeDir.latin1() ); 128 qDebug("LOCALMICROKDEHOME is set to: %s",localKdeDir.latin1() );
129 QFileInfo fi ( fileName ); 129 QFileInfo fi ( fileName );
130 QString localname = localKdeDir + "/apps/kabc/" + fi.fileName (); 130 QString localname = localKdeDir + "/apps/kabc/" + fi.fileName ();
131 QFileInfo fi2 ( localname ); 131 QFileInfo fi2 ( localname );
132 if ( ! fi2.exists() ) { 132 if ( ! fi2.exists() || mFamily == "sync_res" ) {
133 KMessageBox::error(0,i18n("Addressbook resource file not found:\n '%1'.\nIn LOCAL mode only resource files in\n'%2'\nare supported.\n(i.e. in the dir ./apps/kabc/ relative to the kapi(.exe) binary.)\n\nIf you are starting KA/Pi for the very first time\nyou will get this error message as well.\nIt will create the missing file automatically for you.").arg(localname).arg(localKdeDir+"/apps/kabc/") ); 133 if ( fi.exists() && mFamily == "sync_res") {
134 setFileName( localname ); 134 qDebug("LOCAL mode SYNC mode using absolute file path ");
135 return; 135 setFileName( fileName );
136 return;
137 } else {
138 KMessageBox::error(0,i18n("Addressbook resource file not found:\n '%1'.\nIn LOCAL mode only resource files in\n'%2'\nare supported.\n(i.e. in the dir ./apps/kabc/ relative to the kapi(.exe) binary.)\n\nIf you are starting KA/Pi for the very first time\nyou will get this error message as well.\nIt will create the missing file automatically for you.").arg(localname).arg(localKdeDir+"/apps/kabc/") );
139 setFileName( localname );
140 return;
141 }
136 142
137 } else { 143 } else {
138 qDebug("Local resource file found. Changing filename to: %s",localname.latin1() ); 144 qDebug("Local resource file found. Changing filename to: %s",localname.latin1() );
139 setFileName( localname ); 145 setFileName( localname );
140 return; 146 return;
141 } 147 }
142 148
143 } 149 }
144 setFileName( fileName ); 150 setFileName( fileName );
145} 151}
146 152
147ResourceFile::~ResourceFile() 153ResourceFile::~ResourceFile()
148{ 154{
149 delete mFormat; 155 delete mFormat;
150 mFormat = 0; 156 mFormat = 0;
151} 157}
152 158
153void ResourceFile::writeConfig( KConfig *config ) 159void ResourceFile::writeConfig( KConfig *config )
154{ 160{
155 161
156 config->setGroup( "Resource_" + identifier() ); 162 config->setGroup( "Resource_" + identifier() );
157 Resource::writeConfig( config ); 163 Resource::writeConfig( config );
158 164
159 config->writeEntry( "FileName", fileName() ); 165 config->writeEntry( "FileName", fileName() );
160 config->writeEntry( "FileFormat", mFormatName ); 166 config->writeEntry( "FileFormat", mFormatName );
161 167
162// qDebug("ResourceFile::writeConfig format %s, %s", mFileName.latin1(), mFormatName.latin1()); 168// qDebug("ResourceFile::writeConfig format %s, %s", mFileName.latin1(), mFormatName.latin1());
163 169
164} 170}
165 171
166Ticket *ResourceFile::requestSaveTicket() 172Ticket *ResourceFile::requestSaveTicket()
167{ 173{
168 kdDebug(5700) << "ResourceFile::requestSaveTicket()" << endl; 174 kdDebug(5700) << "ResourceFile::requestSaveTicket()" << endl;
169 175
170 if ( !addressBook() ) return 0; 176 if ( !addressBook() ) return 0;
171 177
172#ifdef ALLOW_LOCKING 178#ifdef ALLOW_LOCKING
173 if ( !lock( mFileName ) ) { 179 if ( !lock( mFileName ) ) {
174 qDebug("unablt to lock file "); 180 qDebug("unablt to lock file ");
175 return 0; 181 return 0;
176 } 182 }
177#endif 183#endif
178 return createTicket( this ); 184 return createTicket( this );
179} 185}
180 186
181 187
182bool ResourceFile::doOpen() 188bool ResourceFile::doOpen()
183{ 189{
diff --git a/kabc/plugins/file/resourcefile.h b/kabc/plugins/file/resourcefile.h
index dd38a9d..3e9edfc 100644
--- a/kabc/plugins/file/resourcefile.h
+++ b/kabc/plugins/file/resourcefile.h
@@ -102,62 +102,63 @@ public:
102 * Returns true if all addressees could be saved otherwise false. 102 * Returns true if all addressees could be saved otherwise false.
103 * 103 *
104 * @param ticket The ticket returned by @ref requestSaveTicket() 104 * @param ticket The ticket returned by @ref requestSaveTicket()
105 */ 105 */
106 virtual bool save( Ticket *ticket ); 106 virtual bool save( Ticket *ticket );
107 107
108 /** 108 /**
109 * Set name of file to be used for saving. 109 * Set name of file to be used for saving.
110 */ 110 */
111 void setFileName( const QString & ); 111 void setFileName( const QString & );
112 112
113 /** 113 /**
114 * Return name of file used for loading and saving the address book. 114 * Return name of file used for loading and saving the address book.
115 */ 115 */
116 QString fileName() const; 116 QString fileName() const;
117 117
118 /** 118 /**
119 Sets a new format by name. 119 Sets a new format by name.
120 */ 120 */
121 void setFormat( const QString &name ); 121 void setFormat( const QString &name );
122 122
123 /** 123 /**
124 Returns the format name. 124 Returns the format name.
125 */ 125 */
126 QString format() const; 126 QString format() const;
127 127
128 /** 128 /**
129 * Remove a addressee from its source. 129 * Remove a addressee from its source.
130 * This method is mainly called by KABC::AddressBook. 130 * This method is mainly called by KABC::AddressBook.
131 */ 131 */
132 virtual void removeAddressee( const Addressee& addr ); 132 virtual void removeAddressee( const Addressee& addr );
133 133
134 /** 134 /**
135 * This method is called by an error handler if the application 135 * This method is called by an error handler if the application
136 * crashed 136 * crashed
137 */ 137 */
138 virtual void cleanUp(); 138 virtual void cleanUp();
139 139
140protected slots: 140protected slots:
141 void fileChanged(); 141 void fileChanged();
142 142
143protected: 143protected:
144 void init( const QString &fileName, const QString &format ); 144 void init( const QString &fileName, const QString &format );
145 145
146 bool lock( const QString &fileName ); 146 bool lock( const QString &fileName );
147 void unlock( const QString &fileName ); 147 void unlock( const QString &fileName );
148 148
149private: 149private:
150 QString mFamily;
150 QString mFileName2; 151 QString mFileName2;
151 QString mFormatName; 152 QString mFormatName;
152 153
153 FormatPlugin *mFormat; 154 FormatPlugin *mFormat;
154 155
155 QString mLockUniqueName; 156 QString mLockUniqueName;
156#ifndef NO_DIRWATCH 157#ifndef NO_DIRWATCH
157 KDirWatch mDirWatch; 158 KDirWatch mDirWatch;
158#endif 159#endif
159}; 160};
160 161
161} 162}
162 163
163#endif 164#endif