qtinternetradio/irqfavoritesdb/src/irqfavoritesdb.cpp
changeset 0 09774dfdd46b
child 3 ee64f059b8e1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/irqfavoritesdb/src/irqfavoritesdb.cpp	Mon Apr 19 14:01:53 2010 +0300
@@ -0,0 +1,287 @@
+/*
+* 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 <e32err.h>
+#include "irqfavoritesdb.h" 
+#include "irqenums.h"
+#include "irqutility.h" 
+#include "irqisdsdatastructure.h"
+#include "irisdspreset.h"
+#include "irpreset.h"
+#include "irfavoritesdb.h"
+
+EXPORT_C IRQFavoritesDB::IRQFavoritesDB()
+{
+    TRAPD(err, iIRFavoritesDb = CIRFavoritesDb::NewL());
+    if( KErrNone != err)
+        return;
+
+    /* add self to the observers of the CIRFavoritesDb. When the call back function
+     * is called, it means that preset is changed and we send a signal to the uper layer*/
+    iIRFavoritesDb->AddObserver(*this);
+}
+IRQFavoritesDB::~IRQFavoritesDB()
+{
+    delete iIRFavoritesDb;
+}
+
+//add a preset 
+//@param CIRIsdsPreset& the isds preset
+//@return  errcode
+EXPORT_C int IRQFavoritesDB::addPreset(const IRQPreset& aPreset)
+{
+    int returnCode = 0;
+    TRAPD(err, addPresetL(aPreset, returnCode));
+    RETURN_IF_ERR(err);
+
+    int result = 0;
+    IRQUtility::convertSError2QError(returnCode, result);
+    return result;
+}
+
+//add a preset manually
+//@return  errcode
+//@param 
+//
+EXPORT_C int IRQFavoritesDB::addPreset(const QString& aName,
+        const QString& aURL)
+{
+    
+    if( 0 == aName.size() || 0 == aURL.size())
+        return EIRQErrorBadParameter;
+    
+    TPtrC16 nameptr(reinterpret_cast<const TUint16*> (aName.utf16()));
+    TPtrC16 urlptr(reinterpret_cast<const TUint16*> (aURL.utf16()));
+    int returnCode = 0;
+    TRAPD(err, (iIRFavoritesDb->AddPresetL(nameptr, urlptr, returnCode)));
+    RETURN_IF_ERR(err);
+
+    int result = 0;
+    IRQUtility::convertSError2QError(returnCode, result);
+    return result;
+}
+
+//get a preset uniq id
+//@return errcode
+//@param
+//
+EXPORT_C int IRQFavoritesDB::getUniqId(int aNum)
+{
+    if( aNum < 0 || aNum >= iIRFavoritesDb->iFavPresetList.Count())
+        return EIRQErrorBadParameter;
+    
+    return iIRFavoritesDb->iFavPresetList[aNum]->Id();
+}
+
+//delete a preset by uniq id
+//@return errcode
+//@param
+//
+EXPORT_C int IRQFavoritesDB::deletePreset(int aUniqId)
+{
+    TRAPD( err, (iIRFavoritesDb->DeletePresetL(aUniqId)));
+    RETURN_IF_ERR(err);
+    return EIRQErrorNone;
+}
+
+//search a preset by uniqpresetId / isdspresetid
+//warning: the function needs further checking
+//@return errcode
+//
+EXPORT_C int IRQFavoritesDB::searchPreset(int aUniqPresetId, int aIsdsPresetId)
+{
+    int returnCode = 0;
+    int result = 0; //for QT
+    returnCode = iIRFavoritesDb->SearchPreset(aUniqPresetId, aIsdsPresetId);
+    IRQUtility::convertSError2QError(returnCode, result);
+    return result;
+}
+
+//
+//get the previouse preset index in the internal list
+//@return the index
+//
+EXPORT_C int IRQFavoritesDB::getPreviousPreset(int aIndex)
+{
+    return iIRFavoritesDb->GetPreviousPreset(aIndex);
+}
+
+//
+//get the next preset index
+//@return the index
+//
+EXPORT_C int IRQFavoritesDB::getNextPreset(int aIndex)
+{
+    return iIRFavoritesDb->GetNextPreset(aIndex);
+}
+
+ 
+//replace with new preset
+//@return errcode 
+//
+EXPORT_C int IRQFavoritesDB::replacePreset(const IRQPreset& aNewPreset)
+{
+    TRAPD(err, replacePresetL(aNewPreset));
+    RETURN_IF_ERR(err);
+    return EIRQErrorNone;
+}
+
+//@return errcode
+//
+EXPORT_C int IRQFavoritesDB::replaceUserDefinedPreset(const IRQPreset& aNewPreset)
+{
+    TRAPD(err, replaceUserDefinedPresetL(aNewPreset));
+    RETURN_IF_ERR(err);
+    return EIRQErrorNone;
+}
+
+//change the preset type to user defined
+//@return errcode
+//
+EXPORT_C int IRQFavoritesDB::makePresetUserDefined(int aChannelId,
+        int aUserDefinedChannelId)
+{
+    TRAPD(err, (iIRFavoritesDb->MakePresetUserDefinedL(aChannelId, aUserDefinedChannelId)));
+    RETURN_IF_ERR(err);
+    return EIRQErrorNone;
+}
+
+//get the empty preset left count
+//@return the count of empty presets left 
+//
+EXPORT_C int IRQFavoritesDB::emptyPresetCount() const
+{
+    return iIRFavoritesDb->EmptyPresetCount();
+}
+
+//get the max preset count supported now
+//@return errcode 
+//
+EXPORT_C int IRQFavoritesDB::maxPresetCount()
+{
+    return iIRFavoritesDb->MaxPresetCount();
+}
+
+//the interface is not used currently.
+//
+EXPORT_C void IRQFavoritesDB::setMoveStatus(bool aStatus)
+{
+    iIRFavoritesDb->SetMoveStatus(aStatus);    
+}
+
+//the interface is not used currently 
+//
+EXPORT_C bool IRQFavoritesDB::getMoveStatus()
+{
+    return iIRFavoritesDb->GetMoveStatus();
+}
+
+//for CIRPreset is just an interface so we can wrapper it into the IRQPreset.
+//the interface get the IRQPreset list. The upper layer will free all the items
+//in the list and the list self
+//
+EXPORT_C QList<IRQPreset*>* IRQFavoritesDB::getPresets() const
+{
+    QList<IRQPreset*> * presetList = new QList<IRQPreset*> ();
+    const RIRPresetArray& cirPresetList = iIRFavoritesDb->GetAllSortedPresets();
+    int counts = cirPresetList.Count();
+    for (int i = 0; i < counts; i++)
+    {
+        IRQPreset *irqPreset = new IRQPreset();
+        IRQUtility::convertCIRPreset2IRQPreset(*(cirPresetList[i]), *irqPreset);
+        presetList->append(irqPreset);
+    }
+    return presetList;
+}
+
+/*
+ * Increase the played times of the preset if it's in the favorites
+ */
+EXPORT_C void IRQFavoritesDB::increasePlayedTimes(const IRQPreset &aPreset)
+{
+    TRAP_IGNORE(increasePlayedTimesL(aPreset));
+}
+
+EXPORT_C CIRFavoritesDb * IRQFavoritesDB::getCIRFavoriteDB() const
+{
+    return iIRFavoritesDb;
+}
+
+/*  None export functions */
+
+void IRQFavoritesDB::HandlePresetChangedL(TInt aId, TUid aDataHandler,
+        MPSPresetObserver::TPSReason aType)
+{
+    emit presetChanged(aId, aDataHandler, aType);
+}
+
+void IRQFavoritesDB::addPresetL(const IRQPreset& aPreset, int& aRetValue)
+{
+    CIRIsdsPreset * cirPreset = CIRIsdsPreset::NewLC();
+    IRQUtility::convertIRQPreset2CIRIsdsPreset(aPreset, *cirPreset);
+    iIRFavoritesDb->AddPresetL(*cirPreset, aRetValue);
+    CleanupStack::PopAndDestroy(cirPreset);
+}
+
+void IRQFavoritesDB::replacePresetL(const IRQPreset& aNewPreset)
+{
+    CIRIsdsPreset * cirPreset = CIRIsdsPreset::NewLC();
+    IRQUtility::convertIRQPreset2CIRIsdsPreset(aNewPreset, *cirPreset);
+    iIRFavoritesDb->ReplacePresetL(*cirPreset);
+    CleanupStack::PopAndDestroy(cirPreset);
+}
+
+void IRQFavoritesDB::replaceUserDefinedPresetL(const IRQPreset& aNewPreset)
+{
+    CIRIsdsPreset *cirPreset = CIRIsdsPreset::NewLC();
+    IRQUtility::convertIRQPreset2CIRIsdsPreset(aNewPreset, *cirPreset);
+    iIRFavoritesDb->ReplaceUserDefinedPresetL(*cirPreset);
+    CleanupStack::PopAndDestroy(cirPreset);
+}
+
+void IRQFavoritesDB::increasePlayedTimesL(const IRQPreset &aPreset)
+{
+    CIRIsdsPreset * cirPreset = CIRIsdsPreset::NewLC();
+    IRQUtility::convertIRQPreset2CIRIsdsPreset(aPreset, *cirPreset);
+    iIRFavoritesDb->IncreasePlayedTimesL(*cirPreset);    
+    CleanupStack::PopAndDestroy(cirPreset);
+}
+
+
+
+ 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+