diff -r 5723da102db1 -r 38bbf2dcd608 qtinternetradio/ui/src/irlogoprovider.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtinternetradio/ui/src/irlogoprovider.cpp Mon Oct 04 00:07:46 2010 +0300 @@ -0,0 +1,123 @@ +/* +* 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 "irlogoprovider.h" +#include "imgwrapper.h" +#include "irqisdsclient.h" +#include "irqisdsdatastructure.h" +#include "iruidefines.h" + + +IRLogoProvider::IRLogoProvider(IRQIsdsClient *aIsdsClient) : iIsdsClient(aIsdsClient) +{ + +} + +IRLogoProvider::~IRLogoProvider() +{ +} + +void IRLogoProvider::getLogo(IRQPreset *aPreset) +{ + imgWrapper wrapper; + columnMap map; + + map.insert(channelId, QString::number(aPreset->presetId)); + map.insert(imgUrl, aPreset->imgUrl); + QList *dataSet = wrapper.getImg(&map); + if (dataSet) + { + //logo data has been saved into database + if (dataSet->count() > 0) + { + QVariant *row = dataSet->at(0); + QByteArray logo = row[sLogoGet].toByteArray(); + if (logo.size() > 0) + { + emit logoData(logo); + } + else + { + //logo data hasn't been saved into database, call isds client to get it + iIsdsClient->isdsLogoDownSendRequest(aPreset, 0, KBitmapSize, KBitmapSize); + } + } + else + { + //logo data hasn't been saved into database, call isds client to get it + iIsdsClient->isdsLogoDownSendRequest(aPreset, 0, KBitmapSize, KBitmapSize); + } + + while (!dataSet->isEmpty()) + { + delete []dataSet->takeFirst(); + } + delete dataSet; + } + else + { + //logo data hasn't been saved into database, call isds client to get it + iIsdsClient->isdsLogoDownSendRequest(aPreset, 0, KBitmapSize, KBitmapSize); + } +} + +void IRLogoProvider::activate(const QObject *aReceiver, const char *aFunc) +{ + connect(iIsdsClient, SIGNAL(presetLogoDownloaded(IRQPreset* )), + this, SLOT(presetLogoDownload(IRQPreset* ))); + connect(iIsdsClient, SIGNAL(presetLogoDownloadError()), + this, SLOT(presetLogoDownloadError())); + connect(this, SIGNAL(logoData(const QByteArray&)), aReceiver, aFunc); +} + +void IRLogoProvider::deactivate() +{ + disconnect(iIsdsClient, SIGNAL(presetLogoDownloaded(IRQPreset*)), + this, SLOT(presetLogoDownload(IRQPreset* ))); + disconnect(iIsdsClient, SIGNAL(presetLogoDownloadError()), + this, SLOT(presetLogoDownloadError())); + disconnect(SIGNAL(logoData(const QByteArray&))); +} + +void IRLogoProvider::presetLogoDownload(IRQPreset* aPreset) +{ + if (NULL == aPreset) + { + presetLogoDownloadError(); + return; + } + + //logo data is available, save it to database + imgWrapper wrapper; + columnMap rowData; + rowData.insert(imgUrl, aPreset->imgUrl); + + logoMap logo; + logo.insert(bLogo, QByteArray()); + logo.insert(sLogo, aPreset->logoData); + bool ret = wrapper.updateImg(&rowData, aPreset->presetId, &logo); + + emit logoData(aPreset->logoData); + delete aPreset; +} + +void IRLogoProvider::presetLogoDownloadError() +{ + QByteArray data; + emit logoData(data); +}