phonebookengines/cntimageutility/src/cntorientationhelper.cpp
author hgs
Fri, 15 Oct 2010 12:24:46 +0300
changeset 81 640d30f4fb64
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
81
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#include "cntorientationhelper.h"
hgs
parents:
diff changeset
    19
#include <restricted/hbcorepskeys_r.h>
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
CntOrientationHelper::CntOrientationHelper( QObject* parent ) : 
hgs
parents:
diff changeset
    22
QObject( parent ),
hgs
parents:
diff changeset
    23
mSettings( NULL ),
hgs
parents:
diff changeset
    24
mOrientationKey( NULL )
hgs
parents:
diff changeset
    25
{
hgs
parents:
diff changeset
    26
    mSettings = new XQSettingsManager();
hgs
parents:
diff changeset
    27
    
hgs
parents:
diff changeset
    28
    mOrientationKey = new XQSettingsKey( XQSettingsKey::TargetPublishAndSubscribe, 
hgs
parents:
diff changeset
    29
        KHbPsForegroundAppOrientationCategoryUid.iUid, 
hgs
parents:
diff changeset
    30
        KHbPsForegroundAppOrientationKey);
hgs
parents:
diff changeset
    31
    
hgs
parents:
diff changeset
    32
    connect( mSettings, SIGNAL(valueChanged(const XQSettingsKey&, const QVariant&)),
hgs
parents:
diff changeset
    33
             this, SLOT(emitOrientationChanged(const XQSettingsKey&, const QVariant&)) );
hgs
parents:
diff changeset
    34
hgs
parents:
diff changeset
    35
    int orientation = mSettings->readItemValue(*mOrientationKey, XQSettingsManager::TypeInt).toInt(); 
hgs
parents:
diff changeset
    36
    mOrientation = Qt::Orientation(orientation & 0x7F);
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
    mSettings->startMonitoring( *mOrientationKey, XQSettingsManager::TypeInt );
hgs
parents:
diff changeset
    39
}
hgs
parents:
diff changeset
    40
hgs
parents:
diff changeset
    41
CntOrientationHelper::~CntOrientationHelper()
hgs
parents:
diff changeset
    42
{
hgs
parents:
diff changeset
    43
    mSettings->stopMonitoring( *mOrientationKey );
hgs
parents:
diff changeset
    44
    
hgs
parents:
diff changeset
    45
    delete mSettings;
hgs
parents:
diff changeset
    46
    delete mOrientationKey;
hgs
parents:
diff changeset
    47
}
hgs
parents:
diff changeset
    48
hgs
parents:
diff changeset
    49
Qt::Orientation& CntOrientationHelper::orientation()
hgs
parents:
diff changeset
    50
{
hgs
parents:
diff changeset
    51
    return mOrientation;
hgs
parents:
diff changeset
    52
}
hgs
parents:
diff changeset
    53
hgs
parents:
diff changeset
    54
void CntOrientationHelper::emitOrientationChanged( const XQSettingsKey& key, const QVariant& value )
hgs
parents:
diff changeset
    55
{
hgs
parents:
diff changeset
    56
    if ( key.uid() == mOrientationKey->uid() && key.key() == mOrientationKey->key() ) 
hgs
parents:
diff changeset
    57
    {
hgs
parents:
diff changeset
    58
        bool ok;
hgs
parents:
diff changeset
    59
        int orientation = value.toInt( &ok );
hgs
parents:
diff changeset
    60
        if ( ok ) {
hgs
parents:
diff changeset
    61
            // Bits 0-7 contain the Qt::Orientation value.
hgs
parents:
diff changeset
    62
            // If bit 8 is set then the orientation is a fixed (forced) one.
hgs
parents:
diff changeset
    63
            // If bit 8 is not set then the orientation is managed automatically by the framework.
hgs
parents:
diff changeset
    64
            mOrientation = Qt::Orientation( orientation & 0x7F ); 
hgs
parents:
diff changeset
    65
            emit orientationChanged( mOrientation );   
hgs
parents:
diff changeset
    66
        }
hgs
parents:
diff changeset
    67
    }
hgs
parents:
diff changeset
    68
}