--- /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 <QSqlQuery>
+#include <QSqlError>
+#include <qsysteminfo.h>
+using namespace QtMobility;
+#include <QVariant>
+#include <QStringList.h>
+
+#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<ServiceProvider>& 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();
+ }