Vicar release 0.6-1 (a.k.a I'm still here release)
[vicar] / src / vicar-config / src / profileswindow.cpp
index 78785a8..88fdfdd 100644 (file)
@@ -1,5 +1,5 @@
 /*
-@version: 0.5
+@version: 0.6
 @author: Sudheer K. <scifi1947 at gmail.com>
 @license: GNU General Public License
 */
@@ -39,7 +39,7 @@ public:
     TelepathyUtility *tpUtility;
     DatabaseUtility *databaseUtility;
     org::maemo::vicar::Profile *profile;
-    ProfilesWindow * const parent;
+    ProfilesWindow * const parent;    
 };
 
 // ---------------------------------------------------------------------------
@@ -72,13 +72,20 @@ void ProfilesWindow::loadProfilesList(){
         qDebug() << "Error fetching profiles list. "<< d->databaseUtility->lastError();
     }
     else{
-        //ui->profilesListWidget->clear();
         org::maemo::vicar::Profile currentProfile;
-        foreach (currentProfile,profileList){
-            QString strProfileDetails = QString("Number starts with %1 then call via %2")
-                                        .arg(currentProfile.phoneNumberPattern)
-                                        .arg(currentProfile.gatewayNumber);
-            QListWidgetItem *item = new QListWidgetItem(strProfileDetails,ui->profilesListWidget);
+        QString strProfileDetails;
+        QListWidgetItem *item;
+        foreach (currentProfile,profileList){            
+            if (currentProfile.phoneNumberPattern != "%"){
+                strProfileDetails = QString("Number starts with %1, then call via %2")
+                                            .arg(currentProfile.phoneNumberPattern)
+                                            .arg(currentProfile.gatewayNumber);
+            }
+            else{
+                strProfileDetails = QString("No profile found, then call via %1")
+                                            .arg(currentProfile.gatewayNumber);
+            }
+            item = new QListWidgetItem(strProfileDetails,ui->profilesListWidget);
             item->setData(Qt::UserRole,currentProfile.profileID);
         }
     }
@@ -97,7 +104,7 @@ void ProfilesWindow::on_addButton_clicked()
             qDebug() << "Error inserting new profile record. "<< d->databaseUtility->lastError();
         }
         else{
-            QString strProfileDetails = QString("Number starts with %1 then call via %2")
+            QString strProfileDetails = QString("Number starts with %1, then call via %2")
                                         .arg(newProfile.phoneNumberPattern)
                                         .arg(newProfile.gatewayNumber);
             QListWidgetItem *item = new QListWidgetItem(strProfileDetails,ui->profilesListWidget);
@@ -129,11 +136,18 @@ void ProfilesWindow::on_editButton_clicked(){
                             <<". "<< d->databaseUtility->lastError();
                 }
                 else{
-                    QString strProfileDetails = QString("Number starts with %1 then \n call via %2")
-                                                .arg(profile.phoneNumberPattern)
-                                                .arg(profile.gatewayNumber);
+                    QString strProfileDetails;
+                    if (profile.phoneNumberPattern != "%"){
+                        strProfileDetails = QString("Number starts with %1, then call via %2")
+                                                    .arg(profile.phoneNumberPattern)
+                                                    .arg(profile.gatewayNumber);
+                    }
+                    else{
+                        strProfileDetails = QString("No profile found, then call via %1")
+                                                    .arg(profile.gatewayNumber);
+                    }
                     item->setText(strProfileDetails);
-                    item->setData(Qt::UserRole,result);
+                    item->setData(Qt::UserRole,profile.profileID);
                 }
             }
         }
@@ -146,6 +160,7 @@ void ProfilesWindow::on_editButton_clicked(){
 void ProfilesWindow::on_removeButton_clicked(){
     QListWidgetItem *item = ui->profilesListWidget->currentItem();
     if (item != 0){
+        qDebug() << "Selected item data is " << item->data(Qt::UserRole).toInt();
         int intProfileID = item->data(Qt::UserRole).toInt();
         bool result = d->databaseUtility->deleteProfile(intProfileID);
         if (!result){
@@ -193,3 +208,46 @@ void ProfilesWindow::on_actionRoutingEnabled_triggered(bool checked){
 void ProfilesWindow::on_actionRouteOnDefault_triggered(bool checked){
     d->gconfUtility->setGconfValueBoolean("route_on_default",checked);
 }
+
+void ProfilesWindow::on_actionEditDefaultProfile_triggered(){
+    org::maemo::vicar::Profile profile;
+    bool result = d->databaseUtility->getDefaultProfile(&profile);
+    qDebug() << "Default profile exits? " <<result;
+    if (result){
+        //Default profile does not exist - edit it
+        ProfileSettingsDialog *dialog = new ProfileSettingsDialog(this,&profile);
+        int response = dialog->exec();
+        if (response == QDialog::Accepted){
+            qDebug() << "Updating default profile record";
+            bool result = d->databaseUtility->updateProfile(profile);
+            if (!result){
+                d->dbusUtility->displayNotification("Unable to update default profile.");
+                qDebug() << "Error updating default profile."<< d->databaseUtility->lastError();
+            }
+            else{
+                ui->profilesListWidget->clear();
+                this->loadProfilesList();
+            }
+        }
+    }
+    else{
+       //Create new default profile
+        profile.phoneNumberPattern = "%";
+        ProfileSettingsDialog *dialog = new ProfileSettingsDialog(this,&profile);
+        int result = dialog->exec();
+        if (result == QDialog::Accepted){
+            qDebug() << "Inserting new default profile record";
+            int result = d->databaseUtility->insertProfile(profile);
+            if (result == -1){
+                d->dbusUtility->displayNotification("Unable to create default profile.");
+                qDebug() << "Error inserting new default profile record. "<< d->databaseUtility->lastError();
+            }
+            else{
+                QString strProfileDetails = QString("No profile found, then call via %1")
+                                            .arg(profile.gatewayNumber);
+                QListWidgetItem *item = new QListWidgetItem(strProfileDetails,ui->profilesListWidget);
+                item->setData(Qt::UserRole,result);
+            }
+        }
+    }
+}