bluetoothengine/btui/inc/btuiiconutil.h
author hgs
Fri, 23 Jul 2010 15:57:13 +0300
changeset 47 9e2a905b887f
parent 42 b72428996822
permissions -rw-r--r--
201029_02

/*
 * Copyright (c) 2010 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:  
 *   
 */

#ifndef BTUIICONUTIL_H
#define BTUIICONUTIL_H

#include <qglobal.h>
#include <bt_sock.h>
#include <HbIcon>
//#include "btdevicemodel.h"
#include "btuidevtypemap.h"

enum BtuiIconCorner {
    BtuiNoCorners   = 0x00,   // No badge needed
    BtuiBottomLeft  = 0x01,   // Badge for : Paired, Paired & Authorized, Blocked
    BtuiBottomRight = 0x02,   // Badge for : Connected
    BtuiTopLeft     = 0x04,   // Badge for : Signal strength
    BtuiTopRight    = 0x08    // Badge for : Battery low
};

/*!
  Creates a HbIcon according to the type of the CBTDevice dev,
  Creates badges in the icon's 4 corners according to the parameters 
  passed to the function
  bottom left corner: Paired, Paired & Authorized, Blocked
  bottom right corner: Connected
  top right corner: Battery low
  top left corner: signal strength
*/

inline void setBadging(HbIcon &deviceIcon, int majorProperty, int corners)
{
    if (corners & BtuiBottomLeft) {
         if (majorProperty & BtuiDevProperty::Trusted ) {
             HbIcon badge("qtg_small_authorised");
             badge.setIconName("qtg_small_authorised");
             deviceIcon.addBadge(Qt::AlignLeft|Qt::AlignBottom, badge);
         }
         else if (majorProperty & BtuiDevProperty::Bonded) {
             HbIcon badge("qtg_small_pair");
             badge.setIconName("qtg_small_pair");
             deviceIcon.addBadge(Qt::AlignLeft|Qt::AlignBottom, badge);
         }
         else if (majorProperty & BtuiDevProperty::Blocked) {
             HbIcon badge("qtg_small_blocked");
             badge.setIconName("qtg_small_blocked");
             deviceIcon.addBadge(Qt::AlignLeft|Qt::AlignBottom, badge);
         }
     }
     if (corners & BtuiBottomRight) {
         if (majorProperty & BtuiDevProperty::Connected) {
             HbIcon badge("qtg_small_connection");
             badge.setIconName("qtg_small_connection");
             deviceIcon.addBadge(Qt::AlignRight|Qt::AlignBottom, badge);
         }
     }
     if (corners & BtuiTopRight) {
     //ToDo: when power level added to model
     }
     if (corners & BtuiTopLeft) {
     //ToDo: add signal strength.    
     }
}


/*!
 * builds device icon based on device type, including badging with connection info, etc.
 * 
 * \param cod the integer value of the CoD.
 * \param majorProperty the major property consisting of BtuiDevProperty::DevMajorProperty bits
 * \param corners specifies which corners of primary icon 
 *          should be badged with connectivity, pairing, trust, etc information
 * \return an HbIcon
 *       
 */
inline HbIcon getBadgedDeviceTypeIcon(int cod, int majorProperty = 0, int corners = BtuiNoCorners)
{   
    int uiMajorDevice;
    int uiMinorDevice;
    // device type is mapped according to CoD:
    BtuiDevProperty::mapDeiveType(uiMajorDevice, uiMinorDevice, cod);
    
    // Set icon according to the device category
    QString name;
    if (uiMajorDevice & BtuiDevProperty::Phone) {
        name = QString("qtg_large_mobile");
    }
    else if (uiMajorDevice & BtuiDevProperty::Computer) {
        name = QString("qtg_large_computer");
    }
    else if (uiMajorDevice & BtuiDevProperty::AVDev) {
        name = QString("qtg_large_generic_audio");
    }
    else if (uiMajorDevice & BtuiDevProperty::Peripheral) {
        // todo: map to keyboard & mouse from uiMinorDevice
        name = QString("qtg_large_input_device");
    }
    else {
        name = QString("qtg_large_generic_bluetooth");
    }
    HbIcon icon(name);
    if (corners > BtuiNoCorners) {
        setBadging(icon, majorProperty, corners);
    }
    return icon;
}

/*
 * returns device type as a translated string based on  
 * Class of Device (CoD) parameter
 */
inline QString getDeviceTypeString( int cod )
{   
    int uiMajorDevice;
    int uiMinorDevice;
    // device type is mapped according to CoD:
    BtuiDevProperty::mapDeiveType(uiMajorDevice, uiMinorDevice, cod);
    
    // Set icon according to the device category
    if (uiMajorDevice & BtuiDevProperty::Phone) {
        return hbTrId("txt_bt_list_phone");
    }
    else if (uiMajorDevice & BtuiDevProperty::Computer) {
        return hbTrId("txt_bt_list_computer");
    }
    else if (uiMajorDevice & BtuiDevProperty::AVDev) {  
        return hbTrId("txt_bt_list_audio_device");
    }
    else if (uiMajorDevice & BtuiDevProperty::Peripheral) {
        // todo: map to keyboard & mouse
        return hbTrId("txt_bt_list_input_device");
    }
    else {
        return hbTrId("txt_bt_list_other");
    }
}

#endif // BTUIMODELUTIL_H