qtinternetradio/irqsettings/src/irqsettings_p.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 18 Aug 2010 09:40:26 +0300
changeset 14 896e9dbc5f19
permissions -rw-r--r--
Revision: 201031 Kit: 201033

/*
 * 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 "irqsettings_p.h"
#include "irinternalcrkeys.h"
#include <XQSettingsKey>
#include <XQSettingsManager>
#include <QDesktopServices>
#include <QTextCodec>

const int KDefaultVolume            = 6;
const int KDefaultHttpTimeOut       = 60000000; // unit: us, 6s
const int KIRDefaultMinDiskSpace    = 3145728;  // byte, 3MB
const QString KIRDefaultIsdsUrl     = "http://idirectory.xgns.net/isds";
#ifdef USE_TEST_ISDS_SERVER
const QString KIRTestIsdsUrl        = "http://88.114.146.238/isds";
#endif

IRQSettingsPrivate::IRQSettingsPrivate() :
    mSettingsManager(new XQSettingsManager())
{
    mPrivatePath = QDesktopServices::storageLocation(QDesktopServices::DataLocation) + "/";
}

IRQSettingsPrivate::~IRQSettingsPrivate()
{
    if (mSettingsManager)
    {
        delete mSettingsManager;
    }
}

QString IRQSettingsPrivate::privatePath()
{
    return mPrivatePath;
}

// ---------------------------------------------------------------------------
// IRQSettingsPrivate::isFlagTermsAndConditions()
//
// ---------------------------------------------------------------------------
//
bool IRQSettingsPrivate::isFlagTermsAndConditions(bool& aFlag)
{
    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
            KCRUidInternetRadio.iUid, KIRTermsAndConditionsFlag);

    Q_ASSERT(mSettingsManager);
    QVariant value = mSettingsManager->readItemValue(profileKey);

    bool br = !value.isNull();

    if (br)
    {
        int nFlag = value.toInt();
        aFlag = ( nFlag == 1 );         
    }

    return br;
}

// ---------------------------------------------------------------------------
// IRQSettingsPrivate::setFlagTermsAndConditions()
//
// ---------------------------------------------------------------------------
//
void IRQSettingsPrivate::setFlagTermsAndConditions()
{
    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
            KCRUidInternetRadio.iUid, KIRTermsAndConditionsFlag);

    Q_ASSERT(mSettingsManager);
    mSettingsManager->writeItemValue(profileKey, 1);
}

// ---------------------------------------------------------------------------
// IRQSettingsPrivate::reSetFlagTermsAndConditions()
//
// ---------------------------------------------------------------------------
//
void IRQSettingsPrivate::reSetFlagTermsAndConditions()
{
    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
            KCRUidInternetRadio.iUid, KIRTermsAndConditionsFlag);

    Q_ASSERT(mSettingsManager);
    mSettingsManager->writeItemValue(profileKey, 0);
}

// ---------------------------------------------------------------------------
// IRQSettingsPrivate::getIRID()
//
// ---------------------------------------------------------------------------
//
bool IRQSettingsPrivate::getIRID(QString& aIRID)
{
    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
            KCRUidInternetRadio.iUid, KIRIrId);

    Q_ASSERT(mSettingsManager);
    QVariant value = mSettingsManager->readItemValue(profileKey);

    bool br = !value.isNull();

    if (br)
    {
        aIRID = QTextCodec::codecForName("UTF-16")->toUnicode(value.toByteArray());
    }

    return br;
}

// ---------------------------------------------------------------------------
// IRQSettingsPrivate::getVolumeSetting()
//
// ---------------------------------------------------------------------------
//
int IRQSettingsPrivate::getVolumeSetting()
{
    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
            KCRUidInternetRadio.iUid, KIRPlayerVolume);

    Q_ASSERT(mSettingsManager);
    QVariant value = mSettingsManager->readItemValue(profileKey);

    int ir = KDefaultVolume;

    if (!value.isNull())
    {
        ir = value.toInt();
    }

    return ir;
}

// ---------------------------------------------------------------------------
// IRQSettingsPrivate::setVolumeSetting()
//
// ---------------------------------------------------------------------------
//
void IRQSettingsPrivate::setVolumeSetting(int aPlayVolume)
{
    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
            KCRUidInternetRadio.iUid, KIRPlayerVolume);

    Q_ASSERT(mSettingsManager);
    mSettingsManager->writeItemValue(profileKey, aPlayVolume);
}

// ---------------------------------------------------------------------------
// IRQSettingsPrivate::setTimeOut()
//
// ---------------------------------------------------------------------------
//
void IRQSettingsPrivate::setTimeOut(int aTimeOut)
{
    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
            KCRUidInternetRadio.iUid, KIRHttpTimeout);

    Q_ASSERT(mSettingsManager);
    mSettingsManager->writeItemValue(profileKey, aTimeOut);
}

// ---------------------------------------------------------------------------
// IRQSettingsPrivate::getTimeOut()
//
// ---------------------------------------------------------------------------
//
int IRQSettingsPrivate::getTimeOut()
{
    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
            KCRUidInternetRadio.iUid, KIRHttpTimeout);

    Q_ASSERT(mSettingsManager);
    QVariant value = mSettingsManager->readItemValue(profileKey);

    int ir = KDefaultHttpTimeOut;

    if (!value.isNull())
    {
        ir = value.toInt();
    }

    return ir;
}

void IRQSettingsPrivate::setSongHistoryShow(int aShowFlag)
{
    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
            KCRUidInternetRadio.iUid, KIRSongHistoryFTU);

    Q_ASSERT(mSettingsManager);
    mSettingsManager->writeItemValue(profileKey, aShowFlag);
}

int IRQSettingsPrivate::getSongHistoryShow()
{
    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
            KCRUidInternetRadio.iUid, KIRSongHistoryFTU);

    Q_ASSERT(mSettingsManager);
    QVariant value = mSettingsManager->readItemValue(profileKey);

    int ir = 0;

    if (!value.isNull())
    {
        ir = value.toInt();
    }

    return ir;
}

// ---------------------------------------------------------------------------
// IRQSettingsPrivate::setStartingViewId()
// Sets the starting view Id in cenrep
// ---------------------------------------------------------------------------
//
void IRQSettingsPrivate::setStartingViewId(int aStartingViewId)
{
    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
            KCRUidInternetRadio.iUid, KIRStartingViewId);

    Q_ASSERT(mSettingsManager);
    mSettingsManager->writeItemValue(profileKey, aStartingViewId);
}

// ---------------------------------------------------------------------------
// IRQSettingsPrivate::getStartingViewId()
// Gets the starting view Id from cenrep
// ---------------------------------------------------------------------------
//
bool IRQSettingsPrivate::getStartingViewId(TIRViewId& aStartingViewId)
{
    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
            KCRUidInternetRadio.iUid, KIRStartingViewId);

    Q_ASSERT(mSettingsManager);
    QVariant value = mSettingsManager->readItemValue(profileKey);

    bool br = !value.isNull();

    if (br)
    {
        aStartingViewId = (TIRViewId) value.toInt();
    }
    else
    {
        aStartingViewId = EIRView_CategoryView;
    }

    return br;
}

// ---------------------------------------------------------------------------
// IRQSettingsPrivate::setPreferredQuality()
//
// ---------------------------------------------------------------------------
//
void IRQSettingsPrivate::setPreferredQuality(IRQPreferredQuality aQualityValue)
{
    TInt value = 0;
    switch (aQualityValue)
    {
    case EIRQHighQuality:
        value = 1;
        break;
    default:
        break;
    }

    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
            KCRUidInternetRadio.iUid, KIRPreferredQuality);

    Q_ASSERT(mSettingsManager);
    mSettingsManager->writeItemValue(profileKey, value);
}

// ---------------------------------------------------------------------------
// IRQSettingsPrivate::getPreferredQuality()
//
// ---------------------------------------------------------------------------
//
IRQPreferredQuality IRQSettingsPrivate::getPreferredQuality() const
{
    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
            KCRUidInternetRadio.iUid, KIRPreferredQuality);

    Q_ASSERT(mSettingsManager);
    QVariant value = mSettingsManager->readItemValue(profileKey);

    int ir = 0;

    if (!value.isNull())
    {
        ir = value.toInt();
    }

    switch (ir)
    {
    case 1:
        return EIRQHighQuality;
    default:
        return EIRQStandardQuality;
    }
}

// ---------------------------------------------------------------------------
// IRQSettingsPrivate::getGlobalAdvFlag()
// Gets the global advertisement flag from cenrep
// ---------------------------------------------------------------------------
//
bool IRQSettingsPrivate::getGlobalAdvFlag(bool& aFlag)
{
    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
            KCRUidInternetRadio.iUid, KIRGlobalAdvEnabled);

    Q_ASSERT(mSettingsManager);
    QVariant value = mSettingsManager->readItemValue(profileKey);

    bool br = !value.isNull();

    if (br)
    {
        aFlag = value.toBool();
    }

    return br;
}

// ---------------------------------------------------------------------------
// IRQSettingsPrivate::getManuallyInputtedStationUrl(QString& aUrl)
//
// ---------------------------------------------------------------------------
//
bool IRQSettingsPrivate::getManuallyInputtedStationUrl(QString& aUrl)
{
    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
            KCRUidInternetRadio.iUid, KIRManuallyInputStationUrl);

    Q_ASSERT(mSettingsManager);
    QVariant value = mSettingsManager->readItemValue(profileKey);

    bool br = !value.isNull();

    if (br)
    {
        aUrl = QTextCodec::codecForName("UTF-16")->toUnicode(value.toByteArray());
    }

    return br;
}

// ---------------------------------------------------------------------------
// IRQSettingsPrivate::setManuallyInputtedStationUrl(const QString& aUrl)
//
// ---------------------------------------------------------------------------
//
void IRQSettingsPrivate::setManuallyInputtedStationUrl(const QString& aUrl)
{
    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
            KCRUidInternetRadio.iUid, KIRManuallyInputStationUrl);

    Q_ASSERT(mSettingsManager);
    mSettingsManager->writeItemValue(profileKey, QString::fromUtf16(aUrl.utf16()));
}

// ---------------------------------------------------------------------------
// IRQSettingsPrivate::getManuallyInputtedStationName(QString& aName)
//
// ---------------------------------------------------------------------------
//
bool IRQSettingsPrivate::getManuallyInputtedStationName(QString& aName)
{
    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
            KCRUidInternetRadio.iUid, KIRManuallyInputStationName);

    Q_ASSERT(mSettingsManager);
    QVariant value = mSettingsManager->readItemValue(profileKey);

    bool br = !value.isNull();

    if (br)
    {
        aName = QTextCodec::codecForName("UTF-16")->toUnicode(value.toByteArray());
    }

    return br;
}

// ---------------------------------------------------------------------------
// IRQSettingsPrivate::setManuallyInputtedStationName(const QString& aName)
//
// ---------------------------------------------------------------------------
//
void IRQSettingsPrivate::setManuallyInputtedStationName(const QString& aName)
{
    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
            KCRUidInternetRadio.iUid, KIRManuallyInputStationName);

    Q_ASSERT(mSettingsManager);
    mSettingsManager->writeItemValue(profileKey, QString::fromUtf16(aName.utf16()));
}

// ---------------------------------------------------------------------------
// IRQSettingsPrivate::getSearchText(QString& aSearchText)
//
// ---------------------------------------------------------------------------
//
bool IRQSettingsPrivate::getSearchText(QString& aSearchText)
{
    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
            KCRUidInternetRadio.iUid, KIRSearchText);

    Q_ASSERT(mSettingsManager);
    QVariant value = mSettingsManager->readItemValue(profileKey);

    bool br = !value.isNull();

    if (br)
    {
        aSearchText = value.toString();
    }

    return br;
}

// ---------------------------------------------------------------------------
// IRQSettingsPrivate::setSearchText(const QString& aSearchText)
//
// ---------------------------------------------------------------------------
//
void IRQSettingsPrivate::setSearchText(const QString& aSearchText)
{
    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
            KCRUidInternetRadio.iUid, KIRSearchText);

    Q_ASSERT(mSettingsManager);
    mSettingsManager->writeItemValue(profileKey, aSearchText.toUtf8());    
}

int IRQSettingsPrivate::getMinDiskSpaceRequired()
{
    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
            KCRUidInternetRadio.iUid, KIRMinDiskSpaceRequired);

    Q_ASSERT(mSettingsManager);
    QVariant value = mSettingsManager->readItemValue(profileKey);

    int retVal = KIRDefaultMinDiskSpace;
        
    if (!value.isNull())
    {
        retVal = value.toInt();
    }

    return retVal;
}

bool IRQSettingsPrivate::getIdentifySongEnabled()
{
    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
            KCRUidInternetRadio.iUid, KIRIdentifySongEnabled);

    Q_ASSERT(mSettingsManager);
    QVariant value = mSettingsManager->readItemValue(profileKey);

    bool retVal = false;
        
    if (!value.isNull())
    {
        retVal = value.toBool();
    }

    return retVal;
}
   
int IRQSettingsPrivate::getSongRecognitionAppUid()
{
    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
            KCRUidInternetRadio.iUid, KIRSongRecognitionAppUid);

    Q_ASSERT(mSettingsManager);
    QVariant value = mSettingsManager->readItemValue(profileKey);

    int retVal = 0;
        
    if (!value.isNull())
    {
        retVal = value.toInt();
    }

    return retVal;
}

QString IRQSettingsPrivate::getIsdsUrl()
{
#ifdef USE_TEST_ISDS_SERVER
    return KIRTestIsdsUrl;
#else    
    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
            KCRUidInternetRadio.iUid, KIRIsdsUrl);

    Q_ASSERT(mSettingsManager);
    QVariant value = mSettingsManager->readItemValue(profileKey);

    QString retVal = KIRDefaultIsdsUrl;
        
    if (!value.isNull())
    {
        retVal = QTextCodec::codecForName("UTF-16")->toUnicode(value.toByteArray());;
    }

    return retVal;    
#endif    
}