diff -r 2eacb6118286 -r ba76fc04e6c2 phoneapp/phoneuiqtviewadapter/src/phoneresourceadapter.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneuiqtviewadapter/src/phoneresourceadapter.cpp Fri Jun 04 10:19:18 2010 +0100 @@ -0,0 +1,614 @@ +/*! +* 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: Converts Symbian resources to PhoneAction objects. +*/ + +#include "phoneresourceadapter.h" +#include "phoneresourceids.h" +#include "phoneui.hrh" +#include "phoneuiqtbuttonscontroller.h" +#include +#include +#include +#include +#include +#include +#include + +PhoneResourceAdapter *pinstance = 0;// initialize pointer + +PhoneResourceAdapter* PhoneResourceAdapter::Instance (QObject *parent) +{ + if (pinstance == 0) // is it the first call? + { + pinstance = new PhoneResourceAdapter (parent); // create sole instance + } + return pinstance; // address of sole instance +} + +PhoneResourceAdapter::PhoneResourceAdapter (QObject *parent) : QObject (parent) +{ + m_buttonsCtrl = new PhoneUIQtButtonsController(); + +} + +PhoneResourceAdapter::~PhoneResourceAdapter () +{ + delete m_buttonsCtrl; +} + +PhoneUIQtButtonsController* PhoneResourceAdapter::buttonsController () +{ + PhoneUIQtButtonsController* retValue = 0; + + if (m_buttonsCtrl) + { + retValue = m_buttonsCtrl; + } + + return retValue; +} + +QMap PhoneResourceAdapter::convert (int symbianResourceId, ...) +{ + QMap translatedActions; + + switch (symbianResourceId) { + + case R_PHONEUI_CALLHANDLING_INCOMINGCALL_CBA: + { + PhoneAction *leftButton = new PhoneAction; + leftButton->setIcon (HbIcon("qtg_mono_send")); + leftButton->setCommand(EPhoneCallComingCmdSoftReject); + translatedActions [PhoneAction::ToolbarButton1] = leftButton; + + PhoneAction *rightButton = new PhoneAction; + rightButton->setIcon (HbIcon("qtg_mono_speaker_off")); + rightButton->setCommand (EPhoneCallComingCmdSilent); + translatedActions [PhoneAction::ToolbarButton2] = rightButton; + } + break; + + case R_PHONEUI_CALLHANDLING_INCOMINGCALL_REJECT_CBA: + { + PhoneAction *leftButton = new PhoneAction; + leftButton->setIcon (HbIcon("qtg_mono_send")); + leftButton->setCommand(EPhoneCallComingCmdSoftReject); + translatedActions [PhoneAction::ToolbarButton1] = leftButton; + + PhoneAction *rightButton = new PhoneAction; + rightButton->setIcon (HbIcon("qtg_mono_reject_call")); + rightButton->setCommand (EPhoneCallComingCmdReject); + translatedActions [PhoneAction::ToolbarButton2] = rightButton; + } + break; + + case R_PHONEUI_CALLHANDLING_INCOMINGCALL_SOFT_REJECT_CBA: + { + PhoneAction *leftButton = new PhoneAction; + leftButton->setIcon (HbIcon("qtg_mono_send")); + leftButton->setCommand(EPhoneCallComingCmdSoftReject); + translatedActions [PhoneAction::ToolbarButton1] = leftButton; + + PhoneAction *rightButton = new PhoneAction; + rightButton->setIcon (HbIcon("qtg_mono_speaker_off")); + rightButton->setDisabled(true); + translatedActions [PhoneAction::ToolbarButton2] = rightButton; + } + break; + + case R_PHONEUI_CALLHANDLING_CALLWAITING_CBA: + { + PhoneAction *leftButton = new PhoneAction; + leftButton->setIcon (HbIcon("qtg_mono_send")); + leftButton->setCommand(EPhoneCallComingCmdSoftReject); + translatedActions [PhoneAction::ToolbarButton1] = leftButton; + + PhoneAction *rightButton = new PhoneAction; + rightButton->setIcon (HbIcon("qtg_mono_join_call")); + rightButton->setCommand (EPhoneInCallCmdJoin); + rightButton->setDisabled(true); + translatedActions [PhoneAction::ToolbarButton2] = rightButton; + } + break; + + case R_PHONEUI_DIALER_CBA: + case R_PHONEUI_INCALL_DIALER_CBA: + case R_PHONEUI_CALLHANDLING_CALLSETUP_EMPTY_DTMFDIALER_CBA: + case R_PHONEUI_CALLHANDLING_INCALL_UNHOLD_CBA: + { + PhoneAction *leftButton = new PhoneAction; + leftButton->setIcon (HbIcon("qtg_mono_dialer")); + leftButton->setCommand(EPhoneInCallCmdDialer); + translatedActions [PhoneAction::ToolbarButton1] = leftButton; + + PhoneAction *centerButton = new PhoneAction; + centerButton->setIcon (HbIcon("qtg_mono_mic_mute")); + centerButton->setCommand (EPhoneInCallCmdMute); + translatedActions [PhoneAction::ToolbarButton2] = centerButton; + + PhoneAction *centerButton2 = new PhoneAction; + if (!m_buttonsCtrl->getButtonFlags(PhoneUIQtButtonsController::Ihf)) + { + centerButton2->setIcon (HbIcon("qtg_mono_speaker")); + centerButton2->setCommand (EPhoneInCallCmdActivateIhf); + } + else + { + centerButton2->setIcon (HbIcon("qtg_mono_mobile")); + centerButton2->setCommand (EPhoneInCallCmdDeactivateIhf); + } + translatedActions [PhoneAction::ToolbarButton3] = centerButton2; + + PhoneAction *rightButton = new PhoneAction; + rightButton->setIcon(HbIcon("qtg_mono_contacts")); + rightButton->setDisabled( + (symbianResourceId== + R_PHONEUI_CALLHANDLING_CALLSETUP_EMPTY_DTMFDIALER_CBA)); + rightButton->setCommand(EPhoneInCallCmdContacts); + + translatedActions[PhoneAction::ToolbarButton4] = rightButton; + } + break; + + case R_PHONEUI_CALLHANDLING_EMERGENCY_CBA: + { + PhoneAction *leftButton = new PhoneAction; + leftButton->setIcon (HbIcon("qtg_mono_dialer")); + leftButton->setCommand(EPhoneInCallCmdDialer); + translatedActions [PhoneAction::ToolbarButton1] = leftButton; + + PhoneAction *rightButton = new PhoneAction; + if (!m_buttonsCtrl->getButtonFlags(PhoneUIQtButtonsController::Ihf)) + { + rightButton->setIcon (HbIcon("qtg_mono_speaker")); + rightButton->setCommand (EPhoneInCallCmdActivateIhf); + } + else + { + rightButton->setIcon (HbIcon("qtg_mono_mobile")); + rightButton->setCommand (EPhoneInCallCmdDeactivateIhf); + } + translatedActions [PhoneAction::ToolbarButton2] = rightButton; + } + break; + + case R_PHONEUI_CALLHANDLING_INCALL_UNMUTE_CBA: + { + PhoneAction *leftButton = new PhoneAction; + leftButton->setIcon (HbIcon("qtg_mono_dialer")); + leftButton->setCommand(EPhoneInCallCmdDialer); + translatedActions [PhoneAction::ToolbarButton1] = leftButton; + + PhoneAction *centerButton = new PhoneAction; + centerButton->setIcon (HbIcon("qtg_mono_mic_unmute")); + centerButton->setCommand (EPhoneInCallCmdUnmute); + translatedActions [PhoneAction::ToolbarButton2] = centerButton; + + PhoneAction *centerButton2 = new PhoneAction; + if (!m_buttonsCtrl->getButtonFlags(PhoneUIQtButtonsController::Ihf)) + { + centerButton2->setIcon (HbIcon("qtg_mono_speaker")); + centerButton2->setCommand (EPhoneInCallCmdActivateIhf); + } + else + { + centerButton2->setIcon (HbIcon("qtg_mono_mobile")); + centerButton2->setCommand (EPhoneInCallCmdDeactivateIhf); + } + translatedActions [PhoneAction::ToolbarButton3] = centerButton2; + + PhoneAction *rightButton = new PhoneAction; + rightButton->setIcon(HbIcon("qtg_mono_contacts")); + rightButton->setCommand(EPhoneInCallCmdContacts); + translatedActions[PhoneAction::ToolbarButton4] = rightButton; + } + break; + + case R_PHONEUI_CALLHANDLING_INCALL_HANDSET_CBA: + { + PhoneAction *leftButton = new PhoneAction; + leftButton->setIcon (HbIcon("qtg_mono_dialer")); + leftButton->setCommand(EPhoneInCallCmdDialer); + translatedActions [PhoneAction::ToolbarButton1] = leftButton; + + PhoneAction *centerButton1 = new PhoneAction; + if (!m_buttonsCtrl->getButtonFlags(PhoneUIQtButtonsController::Hold)) + { + centerButton1->setIcon (HbIcon("qtg_mono_mic_mute")); + centerButton1->setCommand (EPhoneInCallCmdMute); + } + else + { + centerButton1->setIcon (HbIcon("qtg_mono_mic_unmute")); + centerButton1->setCommand (EPhoneInCallCmdUnmute); + } + translatedActions [PhoneAction::ToolbarButton2] = centerButton1; + + PhoneAction *centerButton2 = new PhoneAction; + centerButton2->setIcon (HbIcon("qtg_mono_mobile")); + centerButton2->setCommand (EPhoneInCallCmdDeactivateIhf); + translatedActions [PhoneAction::ToolbarButton3] = centerButton2; + + PhoneAction *rightButton = new PhoneAction; + rightButton->setIcon(HbIcon("qtg_mono_contacts")); + rightButton->setCommand(EPhoneInCallCmdContacts); + translatedActions[PhoneAction::ToolbarButton4] = rightButton; + } + break; + + case R_PHONEUI_MTCAL_INCOMING_CALL: + { + PhoneAction *text = new PhoneAction; + text->setText (hbTrId("txt_phone_other_incoming_call")); + translatedActions [PhoneAction::Text] = text; + } + break; + + case R_PHONEUI_INCALL_CALL_DISCONNECTED: + { + PhoneAction *text = new PhoneAction; + text->setText (hbTrId("txt_phone_other_disconnected")); + translatedActions [PhoneAction::Text] = text; + } + break; + + case R_PHONEUI_INCALL_CALL_HELD: + { + PhoneAction *text = new PhoneAction; + text->setText (hbTrId("txt_phone_other_on_hold")); + translatedActions [PhoneAction::Text] = text; + break; + } + + case R_PHONEUI_MULTC_WAITING: + { + PhoneAction *text = new PhoneAction; + text->setText (hbTrId("txt_phone_other_waiting")); + translatedActions [PhoneAction::Text] = text; + } + break; + + case R_PHONEUI_INCALL_CALL_NUMBER: + { + PhoneAction *text = new PhoneAction; + VA_LIST list; + VA_START (list, symbianResourceId); + int intValue = VA_ARG (list, int); + text->setText(hbTrId("txt_phone_other_call_ln").arg(intValue)); + translatedActions [PhoneAction::Text] = text; + VA_END (list); + } + break; + + case R_PHONEUI_TIME_DURAT_LONG_WITH_ZERO: + { + PhoneAction *text = new PhoneAction; + // Symbian modifier used here: %:0%H%:1%T%:2%S%:3 + // This is because this text is used by Symbian localization + // for formatting later on. + text->setText ("%:0%H%:1%T%:2%S%:3"); + translatedActions [PhoneAction::Text] = text; + break; + } + + case R_PHONEUI_OUT_GOING_CALL: + { + PhoneAction *text = new PhoneAction; + text->setText (hbTrId("txt_phone_other_calling")); + translatedActions [PhoneAction::Text] = text; + break; + } + + case R_PHONEUI_MTCAL_CLI_WITHHELD: + { + PhoneAction *text = new PhoneAction; + text->setText (hbTrId("txt_phone_other_private_number")); + translatedActions [PhoneAction::Text] = text; + break; + } + case R_PHONEUI_MTCAL_CALL: + { + PhoneAction *text = new PhoneAction; + text->setText (hbTrId("txt_common_button_call")); //Call + translatedActions [PhoneAction::Text] = text; + break; + } + + case R_PHONEUI_EMERGENCY_CALL_HEADER: + { + PhoneAction *text = new PhoneAction; + text->setText (hbTrId("txt_phone_other_emergency_call")); + translatedActions [PhoneAction::Text] = text; + break; + } + + case R_PHONEUI_EMERGENCY_CALL_BUTTONS: + { + PhoneAction *button = new PhoneAction; + button->setText (hbTrId("txt_phone_button_end_call")); + button->setIcon (HbIcon("qtg_mono_end_call")); + button->setCommand (EPhoneCmdEnd); + translatedActions [PhoneAction::LeftButton] = button; + } + break; + + case R_PHONEUI_ATTEMPTING_EMERGENCY_CALL_TEXT: + { + PhoneAction *text = new PhoneAction; + text->setText (hbTrId("txt_phone_other_attempting")); + translatedActions [PhoneAction::Text] = text; + } + break; + + case R_PHONEUI_CONFERENCE_CALL: + { + PhoneAction *text = new PhoneAction; + text->setText (hbTrId("txt_phone_other_conference_call")); + translatedActions [PhoneAction::Text] = text; + } + break; + case R_PHONEUI_SENDING_DTMF_WAIT_NOTE_TEXT: + { + PhoneAction *text = new PhoneAction; + VA_LIST list; + VA_START (list, symbianResourceId); + const TDesC *string = (TDesC*)VA_ARG(list, TDesC*); + text->setText (hbTrId("txt_phone_info_sending").arg(QString::fromUtf16(string->Ptr(), + string->Length()))); + translatedActions [PhoneAction::Text] = text; + VA_END (list); + } + break; + case R_PHONEUI_DTMF_WAIT_CHARACTER_CONFIRMATION_QUERY_TEXT: + { + PhoneAction *text = new PhoneAction; + VA_LIST list; + VA_START (list, symbianResourceId); + const TDesC *string = (TDesC*)VA_ARG(list, TDesC*); + text->setText (hbTrId("txt_phone_info_send_string").arg(QString::fromUtf16(string->Ptr(), + string->Length()))); + translatedActions [PhoneAction::Text] = text; + VA_END (list); + } + break; + case R_PHONE_IMEI_STRING: + { + QScopedPointer text(new PhoneAction); + VA_LIST list; + VA_START(list, symbianResourceId); + const TDesC *string = static_cast(VA_ARG(list, TDesC*)); + QString serialNumber = + QString::fromUtf16(string->Ptr(), string->Length()); + text->setText(hbTrId("txt_phone_info_serial_no").arg(serialNumber)); + translatedActions[PhoneAction::Text] = text.take(); + VA_END(list); + } + break; + case R_PHONEUI_LIFE_TIMER_STRING: + { + QScopedPointer text(new PhoneAction); + VA_LIST list; + VA_START(list, symbianResourceId); + const TDesC *string = static_cast(VA_ARG(list, TDesC*)); + QString lifeTimerText = + QString::fromUtf16(string->Ptr(), string->Length()); + text->setText(hbTrId("txt_phone_info_life_timer").arg(lifeTimerText)); + translatedActions[PhoneAction::Text] = text.take(); + VA_END(list); + } + break; + default: + break; + } + + return translatedActions; +} + +QString PhoneResourceAdapter::convertToString(int symbianResourceId) const +{ + QString ret; + + switch (symbianResourceId) { + case R_PHONE_ERROR_CALL_NOT_ALLOWED: + { + ret = hbTrId("txt_phone_dpopinfo_not_allowed"); + } + break; + + case R_ERROR_NOTE_NOT_ALLOWED: + { + ret = hbTrId("txt_phone_dpopinfo_not_allowed"); + } + break; + + case R_NOTETEXT_INVALID_PHONENUMBER: + { + ret = hbTrId("txt_phone_info_invalid_phone_number"); + } + break; + + case R_NOTETEXT_NO_ANSWER: + { + ret = hbTrId("txt_phone_info_no_answer"); + } + break; + + case R_PHONE_ERROR_NUMBER_BUSY: + { + ret = hbTrId("txt_phone_info_number_busy"); + } + break; + + case R_PHONE_SS_NOTIFICATION_MOCAL_WAITING_TEXT: + { + ret = hbTrId("txt_phone_other_waiting"); + } + break; + + case R_PHONE_SS_NOTIFICATION_INCAL_INFO_HOLD_TEXT: + { + ret = hbTrId("txt_phone_other_on_hold"); + } + break; + + case R_INCAL_INFO_HOLD_TEXT: + { + ret = hbTrId("txt_phone_other_on_hold"); + } + break; + + case R_INCAL_REMOTE_ACTIVE_TEXT: + { + ret = hbTrId("txt_phone_info_connected"); + } + break; + + case R_INCAL_INFO_CONF_HOLD_TEXT: + { + ret = hbTrId("Conference on hold"); + } + break; + case R_PHONE_INCALL_INFO_NO_NETWORK_SUPPORT: + { + ret = hbTrId("txt_phone_info_no_network_support_for_video_call"); + } + break; + case R_PHONE_ERROR_EMERGENCY_CALLS_ONLY: + { + ret = hbTrId("txt_phone_info_emergency_calls_only"); + } + break; + case R_NOTETEXT_NUMBER_NOT_IN_USE: + { + ret = hbTrId("txt_phone_info_number_not_in_use"); + } + break; + case R_NOTETEXT_NETWORK_BUSY: + { + ret = hbTrId("txt_phone_info_network_busy"); + } + break; + case R_NOTETEXT_ERROR_IN_CONNECTION: + { + ret = hbTrId("txt_phone_info_error_in_connection"); + } + break; + case R_PHONEUI_ERROR_EMERGENCY_ATTEMPT_FAILED: + { + ret = hbTrId("txt_phone_info_emergency_call_failed"); + } + break; + case R_PHONE_SS_NOTIFICATION_INCAL_TRANSFERRED_TEXT: + { + ret = hbTrId("txt_phone_info_transferred"); + } + break; + case R_PHONE_ERROR_NO_SERVICE: + { + ret = hbTrId("txt_phone_dpopinfo_no_network_coverage"); + } + break; + default: + break; + } + + return ret; +} + +QString PhoneResourceAdapter::convertToString( + int symbianResourceId, const QString &text) const +{ + QString ret; + + switch (symbianResourceId) { + + case R_PHONE_TEXT_COLP_CONNECTED: + { + ret = hbTrId("txt_phone_info_connected_to_1").arg(text); + } + break; + default: + break; + } + + return ret; +} + +int PhoneResourceAdapter::defaultToolbarResourceId() const +{ + return R_PHONEUI_INCALL_DIALER_CBA; //R_PHONEUI_CALLHANDLING_INCOMINGCALL_CBA; +} + +QString PhoneResourceAdapter::convertCommandToString( + int symbianCommandId ) const +{ + QString ret; + + switch(symbianCommandId) { + case EPhoneInCallCmdEndAllCalls: + ret = hbTrId("txt_phone_opt_end_all_calls"); + break; + case EPhoneInCallCmdTransfer: + ret = hbTrId("txt_phone_opt_transfer"); + break; + case EPhoneInCallCmdSwitchToVideo: + ret = hbTrId("Call back with video call"); + break; + case EPhoneCmdHandoverToWlan: + ret = hbTrId("Handover to WLAN"); + break; + case EPhoneCmdHandoverToGsm: + ret = hbTrId("Handover to GSM"); + break; + + // TODO + default: + break; + } + + return ret; +} + +QList PhoneResourceAdapter::convertToHbActions( + int symbianResourceId ) const +{ + QList ret; + + switch(symbianResourceId) { + case R_PHONEUI_DTMF_WAIT_CHARACTER_CONFIRMATION_QUERY: + { + HbAction *leftButton = new HbAction(hbTrId("txt_common_button_send")); + leftButton->setData(QVariant(EPhoneInCallCmdContinueSendingDtmfString)); + ret.append(leftButton); + + HbAction *rightButton = new HbAction(hbTrId("txt_common_button_cancel")); + rightButton->setData(QVariant(EPhoneInCallCmdCancelSendingDtmfString)); + ret.append(rightButton); + } + break; + case R_PHONEUI_SENDING_DTMF_WAIT_NOTE: + { + HbAction *button = new HbAction(hbTrId("txt_common_button_cancel")); + button->setData(QVariant(EPhoneInCallCmdCancelSendingDtmfString)); + ret.append(button); + } + break; + default: + break; + } + + return ret; +} +