From 0c9020f9016ec7058b6aef3fda36865f293f4f4a Mon Sep 17 00:00:00 2001 From: eilers Date: Wed, 28 Apr 2004 10:40:10 +0000 Subject: First demo release of the PIM database conversion tool.. --- (limited to 'noncore/tools/pimconverter') diff --git a/noncore/tools/pimconverter/config.in b/noncore/tools/pimconverter/config.in new file mode 100644 index 0000000..f797d4f --- a/dev/null +++ b/noncore/tools/pimconverter/config.in @@ -0,0 +1,8 @@ + config PIMCONVERTER + boolean "opie- Pim Converter (converts pim data between different databases)" + default "n" + depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE2CORE && LIBOPIE2PIM && LIBOPIE2DB + + comment "The pim converter needs libqpe, libopie2core, libopie2pim and libopie2db" + depends !(( LIBQPE || LIBQPE-X11 ) && LIBOPIE2CORE && LIBOPIE2PIM && LIBOPIE2DB ) + diff --git a/noncore/tools/pimconverter/converter.cpp b/noncore/tools/pimconverter/converter.cpp new file mode 100644 index 0000000..1091f4a --- a/dev/null +++ b/noncore/tools/pimconverter/converter.cpp @@ -0,0 +1,224 @@ +#include "converter.h" + +#include +#include +#include +#include + +#include + +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +// #define _ADDRESSBOOK_ACCESS + +using namespace Opie; + +Converter::Converter(): + m_selectedDatabase( ADDRESSBOOK ), + m_selectedSourceFormat( XML ), + m_selectedDestFormat( SQL ) +{ + m_dataBaseSelector -> setCurrentItem( m_selectedDatabase ); + m_sourceFormatSelector -> setCurrentItem( m_selectedSourceFormat ); + m_destFormatSelector -> setCurrentItem( m_selectedDestFormat ); + m_eraseDB -> setChecked( true ); // Default erase on copy +} + +void Converter::selectedDatabase( int num ) +{ + m_selectedDatabase = num; +} + +void Converter::selectedDestFormat( int num ) +{ + m_selectedDestFormat = num; +} + +void Converter::selectedSourceFormat( int num ) +{ + m_selectedSourceFormat = num; +} + +void Converter::start_conversion(){ + + // Creating backends to the requested databases.. + OPimBase* sourceDB; + OPimBase* destDB; + + switch( m_selectedSourceFormat ){ + case XML: + qDebug("XMLSourceDB = %d", m_selectedDatabase); + switch( m_selectedDatabase ){ + case ADDRESSBOOK:{ + OPimContactAccessBackend* sourceBackend = new OPimContactAccessBackend_XML( "Converter", QString::null ); + sourceDB = new OPimContactAccess ( "addressbook_xml", QString::null , sourceBackend, true ); + } + break; + case TODOLIST:{ + OPimTodoAccessBackend* sourceBackend = new OPimTodoAccessXML( "Converter" ); + sourceDB = new OPimTodoAccess( sourceBackend ); + }break; + case DATEBOOK:{ + ODateBookAccessBackend_XML* sourceBackend = new ODateBookAccessBackend_XML( "Converter", QString::null ); + sourceDB = new ODateBookAccess ( sourceBackend ); + } + break; + default: + qWarning( "Unknown database selected (%d)", m_selectedDatabase ); + return; + } + break; + case SQL: + qDebug("SQLSourceDB = %d", m_selectedDatabase); + switch( m_selectedDatabase ){ + case ADDRESSBOOK:{ + qDebug("SQLSourceDB = %d", m_selectedDatabase); + OPimContactAccessBackend* sourceBackend = new OPimContactAccessBackend_SQL( QString::null, QString::null ); + sourceDB = new OPimContactAccess ( "Converter", QString::null, sourceBackend, true ); + } + break; + case TODOLIST:{ + OPimTodoAccessBackend* sourceBackend = new OPimTodoAccessBackendSQL( QString::null ); + sourceDB = new OPimTodoAccess( sourceBackend ); + }break; + case DATEBOOK: { + ODateBookAccessBackend_SQL* sourceBackend = new ODateBookAccessBackend_SQL( "Converter", QString::null ); + sourceDB = new ODateBookAccess ( sourceBackend ); + } + break; + default: + qWarning( "Unknown database selected (%d)", m_selectedDatabase ); + return; + } + break; + default: + qWarning( "Unknown source format selected (%d) !!", m_selectedSourceFormat ); + return; + } + + switch ( m_selectedDestFormat ){ + case XML: + qDebug("XMLDestDB = %d", m_selectedDatabase); + switch( m_selectedDatabase ){ + case ADDRESSBOOK:{ + OPimContactAccessBackend* destBackend = new OPimContactAccessBackend_XML( "Converter", QString::null ); + destDB = new OPimContactAccess ( "Converter", QString::null , destBackend, true ); + } + break; + case TODOLIST:{ + OPimTodoAccessBackend* destBackend = new OPimTodoAccessXML( "Converter" ); + destDB = new OPimTodoAccess( destBackend ); + }break; + case DATEBOOK:{ + ODateBookAccessBackend_XML* destBackend = new ODateBookAccessBackend_XML( "Converter", QString::null ); + destDB = new ODateBookAccess ( destBackend ); + } + break; + default: + qWarning( "Unknown database selected (%d)", m_selectedDatabase ); + return; + } + break; + case SQL: + qDebug("SQLDestDB = %d", m_selectedDatabase); + switch( m_selectedDatabase ){ + case ADDRESSBOOK:{ + OPimContactAccessBackend* destBackend = new OPimContactAccessBackend_SQL( QString::null, QString::null ); + destDB = new OPimContactAccess ( "addressbook_xml", QString::null , destBackend, true ); + } + break; + case TODOLIST:{ + OPimTodoAccessBackend* destBackend = new OPimTodoAccessBackendSQL( QString::null ); + destDB = new OPimTodoAccess( destBackend ); + }break; + case DATEBOOK:{ + ODateBookAccessBackend_SQL* destBackend = new ODateBookAccessBackend_SQL( "Converter", QString::null ); + destDB = new ODateBookAccess ( destBackend ); + } + break; + default: + qWarning( "Unknown database selected (%d)", m_selectedDatabase ); + return; + } + break; + default: + qWarning( "Unknown destination format selected (%d)!!", m_selectedDestFormat ); + return; + } + + if ( !sourceDB || !destDB ) + return; + + sourceDB -> load(); + destDB -> load(); + + QTime t; + t.start(); + + // Clean the dest-database if requested (isChecked) + if ( m_eraseDB -> isChecked() ){ + qDebug( "Clearing destination database!" ); + destDB -> clear(); + } + + // Now transmit every pim-item from the source database to the destination -database + QArray uidList = sourceDB->records(); + qDebug( "Try to move data for addressbook.. (%d items) ", uidList.count() ); + m_progressBar->setTotalSteps( uidList.count() ); + int count = 0; + for ( uint i = 0; i < uidList.count(); ++i ){ + qDebug( "Adding uid: %d", uidList[i] ); + OPimRecord* rec = sourceDB -> record( uidList[i] ); + destDB -> add( rec ); + m_progressBar->setProgress( ++count ); + } + + // Now commit data.. + destDB -> save(); + + // Delete the frontends. Backends will be deleted automatically, too ! + // We have to cast them back to delete them properly ! + switch( m_selectedDatabase ){ + case ADDRESSBOOK: + delete static_cast (sourceDB); + delete static_cast (destDB); + break; + case TODOLIST: + delete static_cast (sourceDB); + delete static_cast (destDB); + break; + case DATEBOOK: + delete static_cast (sourceDB); + delete static_cast (destDB); + break; + default: + qWarning( "Unknown database selected (%d)", m_selectedDatabase ); + return; + } + + + qWarning("Conversion is finished and needed %d ms !", t.elapsed()); +} + +int main( int argc, char** argv ) { + + QPEApplication a( argc, argv ); + + Converter dlg; + + a.showMainWidget( &dlg ); + // dlg. showMaximized ( ); + + return a.exec(); + +} diff --git a/noncore/tools/pimconverter/converter.h b/noncore/tools/pimconverter/converter.h new file mode 100755 index 0000000..27d7fb2 --- a/dev/null +++ b/noncore/tools/pimconverter/converter.h @@ -0,0 +1,40 @@ +#ifndef _CONVERTER_H_ +#define _CONVERTER_H_ + + +#include "converter_base.h" + + +class Converter: public converter_base { +public: + Converter(); + + // Slots defined in the ui-description file + void start_conversion(); + void selectedDatabase( int num ); + void selectedDestFormat( int num ); + void selectedSourceFormat( int num ); + +private: + // Caution: + // The order and value of the following enums must be regarding + // the predefinition in the UI-File !! + enum DataBases{ + ADDRESSBOOK = 0, + TODOLIST = 1, + DATEBOOK = 2, + }; + + enum DbFormats{ + XML = 0, + SQL = 1, + }; + + int m_selectedDatabase; + int m_selectedSourceFormat; + int m_selectedDestFormat; + +}; + + +#endif diff --git a/noncore/tools/pimconverter/converter.pro b/noncore/tools/pimconverter/converter.pro new file mode 100644 index 0000000..0504a55 --- a/dev/null +++ b/noncore/tools/pimconverter/converter.pro @@ -0,0 +1,11 @@ +CONFIG = qt warn_on debug +# CONFIG = qt warn_on release quick-app +HEADERS = converter.h +SOURCES = converter.cpp +INTERFACES = converter_base.ui +INCLUDEPATH += $(OPIEDIR)/include +DEPENDPATH += $(OPIEDIR)/include +LIBS += -lqpe -lopiecore2 -lopiepim2 -lopiedb2 +TARGET = $(OPIEDIR)/bin/opimconverter + +include ( $(OPIEDIR)/include.pro ) diff --git a/noncore/tools/pimconverter/converter_base.ui b/noncore/tools/pimconverter/converter_base.ui new file mode 100644 index 0000000..c7a2fb5 --- a/dev/null +++ b/noncore/tools/pimconverter/converter_base.ui @@ -0,0 +1,291 @@ + +converter_base + + QDialog + + name + converter_base + + + geometry + + 0 + 0 + 269 + 324 + + + + caption + PIM-Database Converter + + + layoutMargin + + + + margin + 4 + + + spacing + 6 + + + QGroupBox + + name + GroupBox6 + + + title + Converter + + + layoutMargin + + + layoutSpacing + + + + margin + 4 + + + spacing + 2 + + + QGroupBox + + name + GroupBox1 + + + title + Select Database: + + + + margin + 11 + + + spacing + 6 + + + QComboBox + + + text + Addressbook + + + + + text + TodoList + + + + + text + Datebook + + + + name + m_dataBaseSelector + + + + + + QGroupBox + + name + GroupBox2 + + + title + Source/Destination: + + + + margin + 11 + + + spacing + 6 + + + QLabel + + name + TextLabel3_2 + + + text + to + + + + QComboBox + + + text + XML + + + + + text + SQL (SQLite) + + + + name + m_destFormatSelector + + + + QLabel + + name + TextLabel2_2 + + + text + Convert from + + + + QComboBox + + + text + XML + + + + + text + SQL (SQLite) + + + + name + m_sourceFormatSelector + + + + + + QGroupBox + + name + GroupBox5 + + + title + Config: + + + + margin + 11 + + + spacing + 6 + + + QCheckBox + + name + m_eraseDB + + + text + Erase before copy + + + + + + QGroupBox + + name + GroupBox4 + + + title + Progress: + + + + margin + 11 + + + spacing + 6 + + + QProgressBar + + name + m_progressBar + + + + QPushButton + + name + PushButton1 + + + text + Go! + + + + + + + + + + + PushButton1 + clicked() + converter_base + start_conversion() + + + m_sourceFormatSelector + activated(int) + converter_base + selectedSourceFormat(int) + + + m_dataBaseSelector + activated(int) + converter_base + selectedDatabase(int) + + + m_destFormatSelector + activated(int) + converter_base + selectedDestFormat(int) + + selectedDatabase(int) + selectedDestFormat(int) + selectedSourceFormat(int) + start_conversion() + + -- cgit v0.9.0.2