diff -r 773be20e0a25 -r 993ab30e92fc onlinesearchproviders/isproviderdbmanager/src/isproviderdbmanager.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/onlinesearchproviders/isproviderdbmanager/src/isproviderdbmanager.cpp Tue Jul 06 14:17:22 2010 +0300 @@ -0,0 +1,229 @@ +/* + * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * Description: + * + */ + +#include +#include +#include +using namespace QtMobility; +#include +#include + +#include "isproviderdbmanager.h" +#include "isproviderdbconstants.h" + + +/*! + * \brief Constructor + */ +IsProviderDBManager::IsProviderDBManager( QObject *parent ) : QObject(parent) + { + } + +/*! + * \brief Destructor + */ +IsProviderDBManager::~IsProviderDBManager() + { + } + +/*! + * \brief Opens the database + */ +bool IsProviderDBManager::OpenDatabase() + { + m_db = QSqlDatabase::addDatabase(databaseType, connectionName); + m_db.setDatabaseName(databaseName); + + if ( !m_db.isValid()) + { + CloseDatabase(); + return false; + } + + if (!m_db.isOpen()) + { + if (!m_db.open()) + { + CloseDatabase(); + return false; + } + } + return true; + } + +/*! + * \brief Closes the database + */ +void IsProviderDBManager::CloseDatabase() + { + // if (m_db.isValid() && m_db.isOpen()) + // { + m_db.close(); + // } + } + +/*! + * \brief Reads providers allowed in the current country + */ +bool IsProviderDBManager::GetProviders(QList& providers) + { + bool ok = OpenDatabase(); + + if (ok) + { + // Create query that gets providers allowed this country + QString queryString(providerQuery); + // get country code and append to query + queryString.append(GetCountryCode()); + queryString.append("\'"); + + QSqlQuery query(QSqlDatabase::database(connectionName)); + query.prepare(queryString); + query.exec(); + // read all found providers + while (query.next()) + { + ServiceProvider* provider = new ServiceProvider(); + + int providerId = query.value(0).toInt(); + provider->SetId(providerId); + + QString providerName = query.value(1).toString(); + provider->SetName(providerName); + + QString providerDescription = query.value(2).toString(); + provider->SetDescription(providerDescription); + + HbIcon icon(query.value(3).toString()); + provider->SetIcon(icon); + + QString pluginName = query.value(10).toString(); + provider->SetPluginName(pluginName); + providers.append(*provider); + } + } + + CloseDatabase(); + + return ok; + } + +/*! + * \brief Gets selected provider + */ +ServiceProvider* IsProviderDBManager::SelectedProvider() + { + ServiceProvider* provider = NULL; + + bool ok = OpenDatabase(); + if (ok) + { + // Create query that gets providers allowed this country + QSqlQuery query(QSqlDatabase::database(connectionName)); + query.prepare(selectedProviderQuery); + query.exec(); + + // read all found providers + while (query.next()) + { + provider = new ServiceProvider(); + + int providerId = query.value(0).toInt(); + provider->SetId(providerId); + + QString providerName = query.value(1).toString(); + provider->SetName(providerName); + + QString providerDescription = query.value(2).toString(); + provider->SetDescription(providerDescription); + + HbIcon icon(query.value(3).toString()); + provider->SetIcon(icon); + + QString providerUrl = query.value(4).toString(); + provider->SetProviderUrl(providerUrl); + } + } + + CloseDatabase(); + + return provider; + } + +/*! + * \brief Sets selected provider + */ +bool IsProviderDBManager::SetSelectedProvider(int providerId) + { + bool ok = OpenDatabase(); + if (ok) + { + // Clear selection status from all providers + QSqlQuery query(QSqlDatabase::database(connectionName)); + query.prepare(resetProviderSelection); + ok = query.exec(); + + if (ok) + { + // Set selection status to selected provider + QString queryString(setSelectedProvider); + queryString.append( QString::number(providerId)); + + query.clear(); + query.prepare(queryString); + ok = query.exec(); + } + } + + CloseDatabase(); + + return ok; + } + +/*! + * \brief Reads country list from database + */ +bool IsProviderDBManager::GetCountryList(QStringList& countryList) + { + bool ok = OpenDatabase(); + if (ok) + { + // Create query that gets country list + QSqlQuery query(QSqlDatabase::database(connectionName)); + query.prepare(countryQuery); + ok = query.exec(); + + // read all found providers + while (query.next()) + { + countryList << query.value(0).toString(); + } + } + + CloseDatabase(); + + return ok; + } + +/*! + * \brief Return current country code retrieved from system + */ +QString IsProviderDBManager::GetCountryCode() + { + QSystemInfo *sysInfo = new QSystemInfo(this); + return "FI";//sysInfo->currentCountryCode(); + }