Version 0.7-0
[vicar] / src / vicar-utils / cpp / main.cpp
diff --git a/src/vicar-utils/cpp/main.cpp b/src/vicar-utils/cpp/main.cpp
new file mode 100755 (executable)
index 0000000..a5a19da
--- /dev/null
@@ -0,0 +1,152 @@
+/*
+@version: 0.6
+@author: Sudheer K. <scifi1947 at gmail.com>
+@license: GNU General Public License
+*/
+
+#include "telepathyutility.h"
+#include "databaseutility.h"
+#include "vicarprofiletypes.h"
+#include "connectioninterfacerequeststypes.h"
+#include "harmattanaccountutility.h"
+#include <QDebug>
+#include <QCoreApplication> //DEBUG - Delete this
+#include "dbusutility.h"
+#include <QDBusMetaType>
+#include <QDBusConnection>
+
+int main(int argc, char *argv[])
+{
+
+    QCoreApplication app(argc,argv);
+
+    qDBusRegisterMetaType<org::freedesktop::Telepathy::SimplePresence>();
+    //From Connection Interface Requests
+    qDBusRegisterMetaType<org::freedesktop::Telepathy::ChannelDetails>();
+    qDBusRegisterMetaType<org::freedesktop::Telepathy::ChannelDetailsList>();
+    qDBusRegisterMetaType<org::freedesktop::Telepathy::RequestableChannelClass>();
+    qDBusRegisterMetaType<org::freedesktop::Telepathy::RequestableChannelClassList>();
+    //From Vicar Profile Types
+    //qDBusRegisterMetaType<org::maemo::vicar::Profile>();
+    //qDBusRegisterMetaType<org::maemo::vicar::ProfileList>();
+
+    TelepathyUtility *tpUtility = new TelepathyUtility();
+    DatabaseUtility *databaseUtility = new DatabaseUtility();
+    HarmattanAccountUtility *accountUtility = new HarmattanAccountUtility();
+
+    if (argc > 1 && argv[1]){
+        QString instruction = QString(argv[1]);
+        if (instruction == "INSTALL"){
+            //Check if Account already exists
+            if (!tpUtility->accountExists()){
+                qDebug() << "VICaR account not found. Creating ..";
+                bool result = tpUtility->createAccount();
+                if (!result) exit(1);
+            }
+            else{
+                qDebug() << "VICaR account found.";
+            }
+        }
+        else if (instruction == "REMOVE"){
+            bool result = tpUtility->deleteAccount();
+            if (!result) exit(2);
+        }
+
+        else if (instruction == "CREATEDB"){
+            bool result = databaseUtility->openDatabase();
+            if (!result){
+                qDebug() <<"Error creating profiles database. "
+                        <<databaseUtility->lastError();
+                exit(3);
+            }
+            qDebug() << "VICaR profiles database opened.";
+
+            if (!databaseUtility->tableExists("profiles")){
+                qDebug() << "Creating VICaR profiles table..";
+                result = databaseUtility->createProfilesTable();
+                if (!result){
+                    qDebug() <<"Error creating profiles table. "
+                            <<databaseUtility->lastError();
+                    exit(4);
+                }
+            }
+            else{
+                qDebug()<<"Profiles table exists";
+            }
+            databaseUtility->closeDatabase();
+        }
+        else if (instruction == "DROPDB"){
+            bool result = databaseUtility->deleteDatabase();
+            if (!result){
+                qDebug() <<"Error deleting profiles database. "
+                        <<databaseUtility->lastError();
+                exit(5);
+            }
+            qDebug() << "VICaR profiles database deleted.";
+        }
+        else if (instruction == "TPACCOUNTSTATUS"){
+            QString status = tpUtility->getAccountStatus();
+            qDebug() << "Account Status is "<< status;
+        }
+        else if (instruction == "--create-account"){
+#if defined(Q_WS_MAEMO_6)
+            qDebug() << "Creating account";
+            accountUtility->addAccount();
+#else
+            qDebug() << "This command is applicable only in harmattan";
+#endif
+        }
+        else if (instruction == "--delete-account"){
+#if defined(Q_WS_MAEMO_6)
+            qDebug() << "Deleting account";
+            accountUtility->removeAccount();
+#else
+            qDebug() << "This command is applicable only in harmattan";
+#endif
+        }
+        else if (instruction == "TESTING"){
+            tpUtility->callNumberWithRing(argv[2]);
+        }
+    }
+    else{                        
+
+        qDebug() << "Sending Introspect method call";
+
+        DbusUtility dbusUtility(&app);
+        QList<QVariant> argsToSend;
+
+
+        bool success = dbusUtility.sendMethodCall("org.freedesktop.Telepathy.Connection.ring.tel.ring",
+                                   "/org/freedesktop/Telepathy/Connection/ring/tel/ring",
+                                   "org.freedesktop.DBus.Introspectable",
+                                   "Introspect",argsToSend,false);
+
+        success = dbusUtility.sendMethodCall("org.freedesktop.Telepathy.ConnectionManager.ring",
+                                   "/org/freedesktop/Telepathy/ConnectionManager/ring",
+                                   "org.freedesktop.DBus.Introspectable",
+                                   "Introspect",argsToSend,false);
+
+        /*
+
+        bool success = dbusUtility.sendMethodCall("org.freedesktop.Telepathy.AccountManager",
+                                   "/org/freedesktop/Telepathy/Account/ring/tel/ring",
+                                   "org.freedesktop.Telepathy.Account",
+                                   "Reconnect",argsToSend,false);
+        */
+
+        if (!success){
+            qDebug() << dbusUtility.getErrorMessage();
+        }
+        else{
+            qDebug() << "Method call executed successfully";
+        }
+        app.exec();
+    }
+
+    delete (tpUtility);
+    delete (databaseUtility);
+    delete (accountUtility);
+    tpUtility = 0;
+    databaseUtility = 0;
+    accountUtility = 0;
+}