summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2004-10-29 11:23:51 (UTC)
committer zautrix <zautrix>2004-10-29 11:23:51 (UTC)
commit2d28a226645f56a96fe0a8252e0d7e7b2cc4df2e (patch) (side-by-side diff)
tree183624f038dc3176e89db748f25b024aa75b6365
parent67146a3d92727f6fe3e92eacdb51da58bc7b0adf (diff)
downloadkdepimpi-2d28a226645f56a96fe0a8252e0d7e7b2cc4df2e.zip
kdepimpi-2d28a226645f56a96fe0a8252e0d7e7b2cc4df2e.tar.gz
kdepimpi-2d28a226645f56a96fe0a8252e0d7e7b2cc4df2e.tar.bz2
added filedialog to xml im/export
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--kabc/plugins/qtopia/resourceqtopia.cpp2
-rw-r--r--kaddressbook/xxport/qtopia_xxport.cpp16
-rw-r--r--kaddressbook/xxportobject.cpp9
3 files changed, 19 insertions, 8 deletions
diff --git a/kabc/plugins/qtopia/resourceqtopia.cpp b/kabc/plugins/qtopia/resourceqtopia.cpp
index d6df981..cf6b11a 100644
--- a/kabc/plugins/qtopia/resourceqtopia.cpp
+++ b/kabc/plugins/qtopia/resourceqtopia.cpp
@@ -142,49 +142,49 @@ bool ResourceQtopia::doOpen()
}
void ResourceQtopia::doClose()
{
qDebug("ResourceQtopia::doClose: %s", fileName().latin1());
// it seems so, that deletion of access deletes backend as well
//delete backend;
return;
}
bool ResourceQtopia::load()
{
QFile file( fileName() );
if ( !file.open(IO_ReadOnly ) ) {
return false;
}
QDomDocument doc("mydocument" );
if ( !doc.setContent( &file ) ) {
file.close();
- return false;
+ return true;
}
bool res;
QDomElement docElem = doc.documentElement( );
QDomNode n = docElem.firstChild();
while ( !n.isNull() ) {
QDomElement e = n.toElement();
if ( !e.isNull() ) {
if ( e.tagName() == QString::fromLatin1( "Contacts" ) ) {
QDomNode no = e.firstChild();
while ( !no.isNull() ) {
QDomElement el = no.toElement();
if ( !el.isNull() ) {
KABC::Addressee addressee;
res = mConverter->qtopiaToAddressee( el, addressee );
if ( !addressee.isEmpty() && res )
{
addressee.setResource( this );
addressBook()->insertAddressee( addressee );
}
}
no = no.nextSibling();
}
}
diff --git a/kaddressbook/xxport/qtopia_xxport.cpp b/kaddressbook/xxport/qtopia_xxport.cpp
index 0cf6546..fc4abbb 100644
--- a/kaddressbook/xxport/qtopia_xxport.cpp
+++ b/kaddressbook/xxport/qtopia_xxport.cpp
@@ -12,67 +12,75 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
As a special exception, permission is given to link this program
with any edition of Qt, and distribute the resulting executable,
without including the source code for Qt in the source distribution.
*/
/*
Enhanced Version of the file for platform independent KDE tools.
Copyright (c) 2004 Ulf Schenk
$Id$
*/
#include <qdir.h>
#include "addressee.h"
#include "xxportmanager.h"
#include "qtopia_xxport.h"
+#include <kfiledialog.h>
/*US
class QtopiaXXPortFactory : public XXPortFactory
{
public:
XXPortObject *xxportObject( KABC::AddressBook *ab, QWidget *parent, const char *name )
{
return new QtopiaXXPort( ab, parent, name );
}
};
*/
extern "C"
{
void *init_microkaddrbk_qtopia_xxport()
{
return ( new QtopiaXXPortFactory() );
}
}
QtopiaXXPort::QtopiaXXPort( KABC::AddressBook *ab, QWidget *parent, const char *name )
: XXPortResourceObject( ab, parent, name )
{
defaultFileName = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml";
if ( mFactory && !mFactory->typeName( "qtopia" ).isEmpty() )
{
- createImportAction( i18n( "Import Qtopia..." ) );
- createExportAction( i18n( "Export Qtopia..." ) );
+ createImportAction( i18n( "Import xml (Qtopia)..." ) );
+ createExportAction( i18n( "Export xml (Qtopia)..." ) );
}
}
bool QtopiaXXPort::exportContacts( const KABC::AddresseeList &list, const QString &identifier )
{
- return _exportContacts( list, identifier, defaultFileName );
+ QString fn =KFileDialog::getSaveFileName( defaultFileName, i18n("Import xml file"), 0 );
+ if ( fn == "" )
+ return false;
+
+ return _exportContacts( list, identifier, fn );
}
KABC::AddresseeList QtopiaXXPort::importContacts( const QString &identifier ) const
{
- return _importContacts( identifier, defaultFileName );
+ QString fn =KFileDialog::getOpenFileName( defaultFileName, i18n("Import xml file"), 0 );
+ if ( fn == "" )
+ return KABC::AddresseeList() ;
+ return _importContacts( identifier, fn );
}
diff --git a/kaddressbook/xxportobject.cpp b/kaddressbook/xxportobject.cpp
index 67e8406..bd9d986 100644
--- a/kaddressbook/xxportobject.cpp
+++ b/kaddressbook/xxportobject.cpp
@@ -8,48 +8,49 @@
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
As a special exception, permission is given to link this program
with any edition of Qt, and distribute the resulting executable,
without including the source code for Qt in the source distribution.
*/
/*
Enhanced Version of the file for platform independent KDE tools.
Copyright (c) 2004 Ulf Schenk
$Id$
*/
#include <qmap.h>
+#include <qfile.h>
#include <qsignalmapper.h>
#include <kaction.h>
#include <kmessagebox.h>
#include <factory.h>
#include "kabcore.h"
#include "addressee.h"
#include "tmpaddressbook.h"
#include "xxportobject.h"
class XXPortObject::XXPortObjectPrivate
{
public:
QSignalMapper *mExportMapper;
QSignalMapper *mImportMapper;
};
XXPortObject::XXPortObject( KABC::AddressBook *ab, QWidget *parent,
const char *name )
: QObject( parent, name ), mAddressBook( ab ), mParentWidget( parent ),
d( new XXPortObjectPrivate )
{
@@ -160,80 +161,82 @@ XXPortResourceObject::XXPortResourceObject( KABC::AddressBook *ab, QWidget *pare
: XXPortObject( ab, parent, name ), mFactory(0)
{
mFactory = KRES::Factory::self( "tmpcontact" );
}
XXPortResourceObject::~XXPortResourceObject()
{
//do not delete the factory. It is a singleton, and selfcontained
}
bool XXPortResourceObject::isAvailable()
{
return (mFactory != 0);
}
bool XXPortResourceObject::_exportContacts( const KABC::AddresseeList &list, const QString& identifier, const QString& fileName )
{
//create new resource
KABC::Resource* mResource = (KABC::Resource*)(mFactory->resource( this->identifier(), 0 ));
if (mResource == 0)
return false;
- if (fileName != QString::null)
+ if (fileName != QString::null) {
mResource->setFileName( fileName );
+ } else
+ return false;
KABC::TmpAddressBook tmpAB;
bool res = tmpAB.addResource( mResource );
if (res == false)
{
delete mResource;
return false;
}
-
+ if ( QFile::exists ( fileName ) ) {
res = tmpAB.load();
if (res == false)
{
//removeResource deletes also the resource object, if the linkcount is 0
tmpAB.removeResource( mResource );
return false;
}
//Now check if the file has already entries, and ask the user if he wants to delete them first.
if (tmpAB.begin() != tmpAB.end())
{
QString text( i18n( "Do you want to remove<br>all existing entries from<br>%1<br>before exporting.?" ) );
if ( KMessageBox::questionYesNo( parentWidget(), text.arg( fileName ) ) == KMessageBox::Yes ) {
// Clean the database..
tmpAB.clear();
}
}
-
+ }
KABC::Addressee::List::ConstIterator it;
for ( it = list.begin(); it != list.end(); ++it ) {
tmpAB.insertAddressee(*it);
}
KABC::Ticket * ticket = tmpAB.requestSaveTicket(mResource);
res = false;
if (ticket != 0)
res = tmpAB.save( ticket );
//removeResource deletes also the resource object, if the linkcount is 0
tmpAB.removeResource( mResource );
return res;
}
KABC::AddresseeList XXPortResourceObject::_importContacts( const QString& identifier, const QString& fileName ) const
{
KABC::Resource* mResource = (KABC::Resource*)(mFactory->resource( this->identifier(), 0 ));