diff -r 0930554dc389 -r 3b03c28289e6 qtinternetradio/ui/src/irsearchresultdb.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtinternetradio/ui/src/irsearchresultdb.cpp Fri Jun 11 13:30:40 2010 +0300 @@ -0,0 +1,171 @@ +/* +* 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 +#include +#include + + +#include "irsearchresultdb.h" +#include "irqisdsdatastructure.h" + + +IRSearchResultDB::IRSearchResultDB() +{ + createDBConnection(); +} + +IRSearchResultDB::~IRSearchResultDB() +{ + if (iDB->isOpen()) + { + iDB->close(); + } + + delete iDB; + iDB = NULL; +} + + +IRQError IRSearchResultDB::cacheChannelList(QList *aChannelList) +{ + IRQError ret = EIRQErrorNone; + + if( NULL == aChannelList ) + { + return EIRQErrorBadParameter; + } + + if( iDB->isOpen() ) + { + clearCache(); + + for(int i=0; icount(); i++) + { + IRQChannelItem* insertItem = aChannelList->at(i); + QString name = insertItem->channelName; + int channelID = insertItem->channelID; + QString imageURL = insertItem->imageURL; + QString description = insertItem->shortDescription; + + QSqlQuery query; + bool result; + + result = query.prepare("INSERT INTO searchresult (name, channelID, imageURL, description) " + "VALUES (:name, :channelID, :imageURL, :description)"); + query.bindValue(":name", name); + query.bindValue(":channelID",channelID); + query.bindValue(":imageURL", imageURL); + query.bindValue(":description", description); + + result = query.exec(); + if( !result ) + { + ret = EIRQErrorServiceUnavailable; + break; + } + } + } + else + { + ret = EIRQErrorGeneral; + } + + return ret; +} + +QList *IRSearchResultDB::getCahcedChannelList() +{ + if( !iDB->isOpen() ) + { + return NULL; + } + + QList *channelList = new QList(); + QSqlQuery query("SELECT * FROM searchresult"); + QSqlRecord rec = query.record(); + int nameCol = rec.indexOf("name"); + int channelIDCol = rec.indexOf("channelID"); + int imageURLCol = rec.indexOf("imageURL"); + int descriptionCol = rec.indexOf("description"); + + while(query.next()) + { + IRQChannelItem *oneItem = new IRQChannelItem(); + oneItem->channelName = query.value(nameCol).toString(); + oneItem->channelID = query.value(channelIDCol).toInt(); + oneItem->imageURL = query.value(imageURLCol).toString(); + oneItem->shortDescription = query.value(descriptionCol).toString(); + channelList->append(oneItem); + } + + return channelList; +} + +IRQError IRSearchResultDB::clearCache() +{ + IRQError ret = EIRQErrorNone; + if( !iDB->open()) + { + ret = EIRQErrorServiceUnavailable; + } + else + { + QSqlQuery query("DELETE FROM searchresult"); + bool ret = query.exec(); + if( !ret ) + { + ret = EIRQErrorServiceUnavailable; + } + } + + return ret; +} + +void IRSearchResultDB::createDBConnection() +{ + bool created = QFile::exists("searchresult.dat"); + QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); + iDB = new QSqlDatabase(db); + + iDB->setDatabaseName("searchresult.dat"); + + if (!iDB->open()) + { + return; + } + + + if (!created) + { + bool dbResult = false; + QSqlQuery query; + dbResult = query.exec("CREATE TABLE searchresult (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name VARCHAR(255) NOT NULL, " + "channelID INTEGER, " + "imageURL VARCHAR(255), " + "description VARCHAR(255) NOT NULL)"); + + if (!dbResult) + { + return; + } + } +}