diff -r 6aeb7a756187 -r 3c88a81ff781 utilities/downloadmanager/src/downloadinfo.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/utilities/downloadmanager/src/downloadinfo.cpp Fri Oct 15 17:30:59 2010 -0400 @@ -0,0 +1,346 @@ +/** + This file is part of CWRT package ** + + Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). ** + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU (Lesser) General Public License as + published by the Free Software Foundation, version 2.1 of the License. + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + (Lesser) General Public License for more details. You should have + received a copy of the GNU (Lesser) General Public License along + with this program. If not, see . +*/ + +#include "downloadinfo.h" +#include "dmcommon.h" +#include +#include +#define ORGANIZATION "Nokia" + +class DownloadInfoPrivate +{ + DM_DECLARE_PUBLIC(DownloadInfo); +public: + DownloadInfoPrivate(); + ~DownloadInfoPrivate(); + + QSettings* m_dlInfo; + QString m_clientName; + +}; + +DownloadInfoPrivate::DownloadInfoPrivate() +{ + m_dlInfo = 0; + m_clientName = ""; +} + +DownloadInfoPrivate::~DownloadInfoPrivate() +{ + if(m_dlInfo) + { + m_dlInfo->sync(); + delete m_dlInfo; + m_dlInfo = 0; + } +} + +/* +Constructor +*/ +DownloadInfo::DownloadInfo(const QString& clientName) +{ + DM_INITIALIZE(DownloadInfo); + priv->m_clientName = clientName; + priv->m_dlInfo = new QSettings(ORGANIZATION, clientName); +} + +/* +Destructor +*/ +DownloadInfo::~DownloadInfo() +{ + DM_UNINITIALIZE(DownloadInfo); +} + +/* +Sets a string value. Gives option to updte the info file immediately or later +Returns : 0 on success, non zero on error +*/ +int DownloadInfo::setValue(int aDlId, Key aKey, const QString& aStrValue, int aParentId /*= INVALID_DL_ID*/) +{ + DM_PRIVATE(DownloadInfo); + if(aParentId > INVALID_DL_ID) + priv->m_dlInfo->setValue(genStrKey(aParentId, aDlId, aKey), aStrValue); + else + priv->m_dlInfo->setValue(genStrKey(aDlId, aKey), aStrValue); + return 0; +} + +/* +Sets a string value. Gives option to updte the info file immediately or later +Returns : 0 on success, non zero on error +*/ +int DownloadInfo::setValueForChild(int aDlId, Key aKey, const QString& aStrValue, int aChildId /*= INVALID_DL_ID*/) +{ + DM_PRIVATE(DownloadInfo); + if(aChildId > INVALID_DL_ID) + priv->m_dlInfo->setValue(genStrKey(aDlId, aChildId, aKey), aStrValue); + else + priv->m_dlInfo->setValue(genStrKey(aDlId, aKey), aStrValue); + return 0; +} + +/* +Sets an int value. Gives option to updte the info file immediately or later +Returns : 0 on success, non zero on error +*/ +int DownloadInfo::setValue(int aDlId, Key aKeyInt, long aLongValue, int aParentId /*= INVALID_DL_ID*/) +{ + DM_PRIVATE(DownloadInfo); + QString strKey; + if(aParentId > INVALID_DL_ID) + strKey = genStrKey(aParentId, aDlId, aKeyInt); + else + strKey = genStrKey(aDlId, aKeyInt); + QVariant v((int)aLongValue); + priv->m_dlInfo->setValue(strKey, v); + return 0; +} + +/* +Sets an int value. Gives option to updte the info file immediately or later +Returns : 0 on success, non zero on error +*/ +int DownloadInfo::setValueForChild(int aDlId, Key aKeyInt, long aLongValue, int aChildId /*= INVALID_DL_ID*/) +{ + DM_PRIVATE(DownloadInfo); + QString strKey; + if(aChildId > INVALID_DL_ID) + strKey = genStrKey(aDlId, aChildId, aKeyInt); + else + strKey = genStrKey(aDlId, aKeyInt); + QVariant v((int)aLongValue); + priv->m_dlInfo->setValue(strKey, v); + return 0; +} + +/* +Sets media object list belonging to the parent. Gives option to updte the info file immediately or later +Returns : 0 on success, non zero on error +*/ +int DownloadInfo::setValue(int aDlId, Key aKey, const QList& aChildIds) +{ + DM_PRIVATE(DownloadInfo); + QString strKey = genStrKey(aDlId, aKey); + QVariant v(aChildIds); + priv->m_dlInfo->setValue(strKey, v); + return 0; +} + +/* +Updates(serializes) the info with all set values at once. +Returns : 0 on success, non zero on error +*/ +int DownloadInfo::update() +{ + DM_PRIVATE(DownloadInfo); + priv->m_dlInfo->sync(); + return 0; +} + +/* +Deletes the download info of a particular download represented by aDlId. +Returns : 0 on success, non zero on error +*/ +int DownloadInfo::remove(int aDlId, int aParentId /*= INVALID_DL_ID*/) +{ + DM_PRIVATE(DownloadInfo); + QString strDlId; + strDlId = priv->m_clientName; + strDlId.append("/"); + + QString str; + if(aParentId > INVALID_DL_ID) + { + str.setNum(aParentId); + strDlId.append(str); + strDlId.append("/"); + } + + str.setNum(aDlId); + strDlId.append(str); + priv->m_dlInfo->remove(strDlId); + return 0; +} + +/* +Retrieves the string value +Returns : 0 on success, non zero on error +*/ +int DownloadInfo::getValue(int aDlId, Key aKeyStr, QString& aStrValue, int aParentId) +{ + DM_PRIVATE(DownloadInfo); + aStrValue = ""; + QString strDlId; + if (aParentId > INVALID_DL_ID) + strDlId = genStrKey(aParentId, aDlId, aKeyStr); + else + strDlId = genStrKey(aDlId, aKeyStr); + + if(priv->m_dlInfo->contains(strDlId)) + { + aStrValue = priv->m_dlInfo->value(strDlId).toString(); + return 0; + } + return -1; +} + +/* +Retrieves the string value +Returns : 0 on success, non zero on error +*/ +int DownloadInfo::getValueForChild(int aDlId, Key aKeyStr, QString& aStrValue, int aChildId /*= INVALID_DL_ID*/) +{ + DM_PRIVATE(DownloadInfo); + aStrValue = ""; + QString strDlId; + if (aChildId > INVALID_DL_ID) + strDlId = genStrKey(aDlId, aChildId, aKeyStr); + else + strDlId = genStrKey(aDlId, aKeyStr); + + if(priv->m_dlInfo->contains(strDlId)) + { + aStrValue = priv->m_dlInfo->value(strDlId).toString(); + return 0; + } + return -1; +} + +/* +Retrieves the int value +Returns : 0 on success, non zero on error +*/ +int DownloadInfo::getValue(int aDlId, Key aKeyInt, long& aLongValue, int aParentId) +{ + DM_PRIVATE(DownloadInfo); + QString strDlId; + if(aParentId > INVALID_DL_ID) + strDlId = genStrKey(aParentId, aDlId, aKeyInt); + else + strDlId = genStrKey(aDlId, aKeyInt); + + if(priv->m_dlInfo->contains(strDlId)) + { + aLongValue = priv->m_dlInfo->value(strDlId).toInt(); + return 0; + } + return -1; +} + +/* +Retrieves the int value +Returns : 0 on success, non zero on error +*/ +int DownloadInfo::getValueForChild(int aDlId, Key aKeyInt, long& aLongValue, int aChildId /*= INVALID_DL_ID*/) +{ + DM_PRIVATE(DownloadInfo); + QString strDlId; + if(aChildId > INVALID_DL_ID) + strDlId = genStrKey(aDlId, aChildId, aKeyInt); + else + strDlId = genStrKey(aDlId, aKeyInt); + + if(priv->m_dlInfo->contains(strDlId)) + { + aLongValue = priv->m_dlInfo->value(strDlId).toInt(); + return 0; + } + return -1; +} + +/* +Retrieves the mediaObject list +Returns : 0 on success, non zero on error +*/ +int DownloadInfo::getValue(int aDlId, Key aKey, QList& aChildIds) +{ + DM_PRIVATE(DownloadInfo); + QString strDlId = genStrKey(aDlId, aKey); + if(priv->m_dlInfo->contains(strDlId)) + { + QStringList strList(priv->m_dlInfo->value(strDlId).toStringList()); + for (int i = 0; i < strList.count(); i++) + aChildIds.append(strList[i]); + return 0; + } + return -1; +} + +/* +Returns all download ids in a vector +*/ +QVector DownloadInfo::getAllDownloads(const QString& aClientName) +{ + QVector ids; + QSettings *dlInfo = new QSettings(ORGANIZATION, aClientName); + dlInfo->beginGroup(aClientName); + QStringList idList = dlInfo->childGroups(); + dlInfo->endGroup(); + for(int i=0; im_clientName; + strDlId.append("/"); + + QString str; + str.setNum(aDlId); + strDlId.append(str); + + strDlId.append("/"); + str.setNum((int)aKey); + strDlId.append(str); + + return strDlId; +} + +/* +Helper function to generate a string key combining dlId, mediaObjdlId and the InfoKey +*/ +QString DownloadInfo::genStrKey(int aParentId, int aChildId, Key aKey) +{ + DM_PRIVATE(DownloadInfo); + QString strDlId = ""; + strDlId = priv->m_clientName; + strDlId.append("/"); + + QString str; + str.setNum(aParentId); + strDlId.append(str); + strDlId.append("/"); + + str.setNum(aChildId); + strDlId.append(str); + + strDlId.append("/"); + str.setNum((int)aKey); + strDlId.append(str); + + return strDlId; +}