+++ /dev/null
-/*
-@version: 0.6
-@author: Sudheer K. <scifi1947 at gmail.com>
-@license: GNU General Public License
-*/
-
-#include "profileswindow.h"
-#include "ui_profileswindow.h"
-#include "profilesettingsdialog.h"
-#include "gconfutility.h"
-#include "dbusutility.h"
-#include "telepathyutility.h"
-#include "databaseutility.h"
-#include <QDebug>
-#include <QDBusMetaType>
-
-class ProfilesWindowPrivate
-{
-public:
- ProfilesWindowPrivate(ProfilesWindow * p) :
- gconfUtility(new GConfUtility(p)),
- dbusUtility(new DbusUtility(p)),
- tpUtility(new TelepathyUtility(p)),
- databaseUtility(new DatabaseUtility(p)),
- parent(p)
- {
- databaseUtility->openDatabase();
-
- }
-
- ~ProfilesWindowPrivate()
- {
- databaseUtility->closeDatabase();
- qDebug() << "VICaR: ProfilesWindowPrivate Destructing";
- }
-
- GConfUtility * gconfUtility;
- DbusUtility * dbusUtility;
- TelepathyUtility *tpUtility;
- DatabaseUtility *databaseUtility;
- org::maemo::vicar::Profile *profile;
- ProfilesWindow * const parent;
-};
-
-// ---------------------------------------------------------------------------
-
-ProfilesWindow::ProfilesWindow(QWidget *parent) :
- QMainWindow(parent),
- ui(new Ui::ProfilesWindow),
- d(new ProfilesWindowPrivate(this))
-{
- ui->setupUi(this);
- loadProfilesList();
-
- ui->actionRoutingEnabled->setChecked(d->tpUtility->accountExists());
-
- bool routeOnDefault = d->gconfUtility->getGconfValueBoolean("route_on_default");
- ui->actionRouteOnDefault->setChecked(routeOnDefault);
-
-}
-
-ProfilesWindow::~ProfilesWindow()
-{
- delete ui;
-}
-
-void ProfilesWindow::loadProfilesList(){
- org::maemo::vicar::ProfileList profileList;
- bool result = d->databaseUtility->getAllProfiles(&profileList);
- if (!result){
- d->dbusUtility->displayNotification("Unable to get profiles list.");
- qDebug() << "Error fetching profiles list. "<< d->databaseUtility->lastError();
- }
- else{
- org::maemo::vicar::Profile currentProfile;
- 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);
- }
- }
-}
-
-void ProfilesWindow::on_addButton_clicked()
-{
- org::maemo::vicar::Profile newProfile;
- ProfileSettingsDialog *dialog = new ProfileSettingsDialog(this,&newProfile);
- int result = dialog->exec();
- if (result == QDialog::Accepted){
- qDebug() << "Inserting new profile record";
- int result = d->databaseUtility->insertProfile(newProfile);
- if (result == -1){
- d->dbusUtility->displayNotification("Unable to create new profile.");
- qDebug() << "Error inserting new profile record. "<< d->databaseUtility->lastError();
- }
- else{
- QString strProfileDetails = QString("Number starts with %1, then call via %2")
- .arg(newProfile.phoneNumberPattern)
- .arg(newProfile.gatewayNumber);
- QListWidgetItem *item = new QListWidgetItem(strProfileDetails,ui->profilesListWidget);
- item->setData(Qt::UserRole,result);
- }
- }
-}
-
-void ProfilesWindow::on_editButton_clicked(){
- QListWidgetItem *item = ui->profilesListWidget->currentItem();
- if (item != 0){
- int intProfileID = item->data(Qt::UserRole).toInt();
- org::maemo::vicar::Profile profile;
- bool result = d->databaseUtility->selectProfile(intProfileID,&profile);
- if (!result){
- d->dbusUtility->displayNotification("Unable to fetch profile details.");
- qDebug() << "Error fetching profile record for id "<< intProfileID
- <<". "<< d->databaseUtility->lastError();
- }
- else{
- ProfileSettingsDialog *dialog = new ProfileSettingsDialog(this,&profile);
- int response = dialog->exec();
- if (response == QDialog::Accepted){
- qDebug() << "Updating profile record";
- bool result = d->databaseUtility->updateProfile(profile);
- if (!result){
- d->dbusUtility->displayNotification("Unable to update profile.");
- qDebug() << "Error fetching profile record for id "<< intProfileID
- <<". "<< d->databaseUtility->lastError();
- }
- else{
- 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,profile.profileID);
- }
- }
- }
- }
- else{
- d->dbusUtility->displayNotification("Select a profile to edit.");
- }
-}
-
-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){
- d->dbusUtility->displayNotification("Unable to delete profile.");
- qDebug() << "Error deleting profile record for id "<< intProfileID
- <<". "<< d->databaseUtility->lastError();
- }
- else{
- //ui->profilesListWidget->removeItemWidget(item);
- ui->profilesListWidget->clear();
- this->loadProfilesList();
- }
- }
- else{
- d->dbusUtility->displayNotification("Select a profile to delete.");
- }
-}
-
-void ProfilesWindow::on_actionRoutingEnabled_triggered(bool checked){
-
- qDBusRegisterMetaType<org::freedesktop::Telepathy::SimplePresence>();
-
- bool result;
-
- if (checked){
- if (!d->tpUtility->accountExists()){
- result = d->tpUtility->createAccount();
- if (!result){
- d->dbusUtility->displayNotification("Unable to enable call routing.");
- ui->actionRoutingEnabled->setChecked(false);
- }
- }
- }
- else{
- if (d->tpUtility->accountExists()){
- result = d->tpUtility->deleteAccount();
- if (!result){
- d->dbusUtility->displayNotification("Unable to disable call routing.");
- ui->actionRoutingEnabled->setChecked(true);
- }
- }
- }
-}
-
-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);
- }
- }
- }
-}