-rw-r--r-- | noncore/tools/pimconverter/converter.cpp | 87 | ||||
-rwxr-xr-x | noncore/tools/pimconverter/converter.h | 2 | ||||
-rw-r--r-- | noncore/tools/pimconverter/converter_base.ui | 62 |
3 files changed, 141 insertions, 10 deletions
diff --git a/noncore/tools/pimconverter/converter.cpp b/noncore/tools/pimconverter/converter.cpp index e9de3c3..2cd6969 100644 --- a/noncore/tools/pimconverter/converter.cpp +++ b/noncore/tools/pimconverter/converter.cpp @@ -1,8 +1,10 @@ #include "converter.h" +#include <stdlib.h> // For "system()" command + /* OPIE */ #include <opie2/oapplicationfactory.h> #include <opie2/odebug.h> #include <opie2/opimglobal.h> // Include SQL related header files #define __USE_SQL @@ -221,6 +223,91 @@ void Converter::closeEvent( QCloseEvent *e ) if ( m_criticalState ){ e->ignore(); return; } e->accept(); } + + + +void Converter::start_upgrade() +{ + odebug << "Start upgrading" << oendl; + switch( QMessageBox::warning( this, "Pim-Converter", + "Are you really sure that you\n" + "want to convert your database from\n" + "sqlite V2 to sqlite V3?", + QMessageBox::Ok | QMessageBox::Default, + QMessageBox::Abort | QMessageBox::Escape )) { + + case QMessageBox::Abort: // Abort clicked or Escape pressed + // abort + return; + break; + } + odebug << "Checking whether sqlite is installed" << oendl; + if ( system( "which sqlite" ) != 0 ){ + QMessageBox::critical( this, "Pim-Converter", + QString("An internal error occurred:\n") + + "sqlite was not accessible!\n"+ + "Please correct the PATH or install \n" + + "this packages!" ); + return; + } + if ( system( "which sqlite3" ) != 0 ){ + QMessageBox::critical( this, "Pim-Converter", + QString("An internal error occurred:\n") + + "sqlite3 was not accessible!\n"+ + "Please correct the PATH or install \n" + + "this packages!" ); + return; + } + if ( QFile::exists( "~/Applications/addressbook/addressbook.db" ) + && !QFile::exists( "~/Applications/addressbook/addressbook.db_v2" ) ){ + odebug << "Executing conversion commands" << oendl; + QString addr_convert_string = "cd ~/Applications/addressbook/;cp addressbook.db addressbook.db_v2;sqlite addressbook.db_v2 .dump | sqlite3 addressbook.db"; + odebug << "1. Addressbook Command:" << addr_convert_string << oendl; + if ( system( addr_convert_string ) != 0 ){ + QMessageBox::critical( this, "Pim-Converter", + QString("An internal error occurred:\n") + + "Converting the addressbook command was impossible!\n"+ + "Executed the following command:\n" + + addr_convert_string ); + return; + } + } + if ( QFile::exists( "~/Applications/datebook/datebook.db" ) + && !QFile::exists( "~/Applications/datebook/datebook.db_v2" ) ){ + QString dateb_convert_string = "cd ~/Applications/datebook/;cp datebook.db datebook.db_v2;sqlite datebook.db_v2 .dump | sqlite3 datebook.db"; + odebug << "2. Datebook Command" << dateb_convert_string << oendl; + if ( system( dateb_convert_string ) != 0 ){ + QMessageBox::critical( this, "Pim-Converter", + QString("An internal error occurred:\n") + + "Converting the datebook command was impossible!\n"+ + "Executed the following command:\n" + + dateb_convert_string ); + return; + } + } + + if ( QFile::exists( "~/Applications/todolist/todolist.db" ) + && !QFile::exists( "~/Applications/todolist/todolist.db_v2" ) ){ + QString todo_convert_string = "cd ~/Applications/todolist/;cp todolist.db todolist.db_v2;sqlite todolist.db_v2 .dump | sqlite3 todolist.db"; + odebug << "3. Todolist Command:" << todo_convert_string << oendl; + if ( system( todo_convert_string ) != 0 ){ + QMessageBox::critical( this, "Pim-Converter", + QString("An internal error occurred:\n") + + "Converting the todolist command was impossible!\n"+ + "Executed the following command:\n" + + todo_convert_string ); + return; + } + } + + QMessageBox::information( this, "Pim-Converter", + "Conversion is finished!", + "&OK", NULL, NULL, + 0, // Enter == button 0 + 0 ); + + +} diff --git a/noncore/tools/pimconverter/converter.h b/noncore/tools/pimconverter/converter.h index 344562a..9d75d79 100755 --- a/noncore/tools/pimconverter/converter.h +++ b/noncore/tools/pimconverter/converter.h @@ -9,22 +9,24 @@ class Converter: public converter_base { public: Converter(QWidget *parent, const char* name, WFlags fl); static QString appName() { return QString::fromLatin1("opimconverter");} // Slots defined in the ui-description file void start_conversion(); + void start_upgrade(); void selectedDatabase( int num ); void selectedDestFormat( int num ); void selectedSourceFormat( int num ); void closeEvent( QCloseEvent *e ); private: // Caution: // The order and value of the following enums must be regarding // the predefinition in the UI-File !! + // If you don't understand what I am talking about: Keep your fingers away!! enum DataBases{ ADDRESSBOOK = 0, TODOLIST = 1, DATEBOOK = 2, }; diff --git a/noncore/tools/pimconverter/converter_base.ui b/noncore/tools/pimconverter/converter_base.ui index a5b22c9..b519f2e 100644 --- a/noncore/tools/pimconverter/converter_base.ui +++ b/noncore/tools/pimconverter/converter_base.ui @@ -8,14 +8,14 @@ </property> <property stdset="1"> <name>geometry</name> <rect> <x>0</x> <y>0</y> - <width>269</width> - <height>324</height> + <width>308</width> + <height>323</height> </rect> </property> <property stdset="1"> <name>caption</name> <string>PIM-Database Converter</string> </property> @@ -54,29 +54,46 @@ </property> <property stdset="1"> <name>spacing</name> <number>2</number> </property> <widget> + <class>QPushButton</class> + <property stdset="1"> + <name>name</name> + <cstring>PushButton2</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Upgrade to SQLite3</string> + </property> + </widget> + <widget> <class>QGroupBox</class> <property stdset="1"> <name>name</name> <cstring>GroupBox1</cstring> </property> <property stdset="1"> <name>title</name> <string>Select Database:</string> </property> + <property> + <name>layoutMargin</name> + </property> + <property> + <name>layoutSpacing</name> + </property> <grid> <property stdset="1"> <name>margin</name> - <number>11</number> + <number>4</number> </property> <property stdset="1"> <name>spacing</name> - <number>6</number> + <number>2</number> </property> <widget row="0" column="1" > <class>QComboBox</class> <item> <property> <name>text</name> @@ -109,20 +126,26 @@ <cstring>GroupBox2</cstring> </property> <property stdset="1"> <name>title</name> <string>Source/Destination:</string> </property> + <property> + <name>layoutMargin</name> + </property> + <property> + <name>layoutSpacing</name> + </property> <grid> <property stdset="1"> <name>margin</name> - <number>11</number> + <number>4</number> </property> <property stdset="1"> <name>spacing</name> - <number>6</number> + <number>2</number> </property> <widget row="1" column="0" > <class>QLabel</class> <property stdset="1"> <name>name</name> <cstring>TextLabel3_2</cstring> @@ -190,20 +213,26 @@ <cstring>GroupBox5</cstring> </property> <property stdset="1"> <name>title</name> <string>Config:</string> </property> + <property> + <name>layoutMargin</name> + </property> + <property> + <name>layoutSpacing</name> + </property> <grid> <property stdset="1"> <name>margin</name> - <number>11</number> + <number>4</number> </property> <property stdset="1"> <name>spacing</name> - <number>6</number> + <number>4</number> </property> <widget row="0" column="0" > <class>QCheckBox</class> <property stdset="1"> <name>name</name> <cstring>m_eraseDB</cstring> @@ -222,20 +251,26 @@ <cstring>GroupBox4</cstring> </property> <property stdset="1"> <name>title</name> <string>Progress:</string> </property> + <property> + <name>layoutMargin</name> + </property> + <property> + <name>layoutSpacing</name> + </property> <vbox> <property stdset="1"> <name>margin</name> - <number>11</number> + <number>4</number> </property> <property stdset="1"> <name>spacing</name> - <number>6</number> + <number>2</number> </property> <widget> <class>QProgressBar</class> <property stdset="1"> <name>name</name> <cstring>m_progressBar</cstring> @@ -280,12 +315,19 @@ <connection> <sender>m_destFormatSelector</sender> <signal>activated(int)</signal> <receiver>converter_base</receiver> <slot>selectedDestFormat(int)</slot> </connection> + <connection> + <sender>PushButton2</sender> + <signal>clicked()</signal> + <receiver>converter_base</receiver> + <slot>start_upgrade()</slot> + </connection> <slot access="public">selectedDatabase(int)</slot> <slot access="public">selectedDestFormat(int)</slot> <slot access="public">selectedSourceFormat(int)</slot> <slot access="public">start_conversion()</slot> + <slot access="public">start_upgrade()</slot> </connections> </UI> |