systemagentdialog.cpp

来自「series60 应用程序开发的源代码 series60 应用程序开发的源代码」· C++ 代码 · 共 160 行

CPP
160
字号
/**
* 
* @brief Definition of CSystemAgentDialog
*
* Copyright (c) EMCC Software Ltd 2003
* @version 1.0
*/

// INCLUDE FILES

// Class include
#include "SystemAgentDialog.h"
#include "systemagent.hrh"

// System includes
#include <aknappui.h>    // iAvkonAppUi
#include <avkon.hrh>    // EAknSoftkeyBack, EEikCmdExit
#include <eikedwin.h>    // CEikEdwin
#include <stringloader.h>
#include <SystemAgent.rsg>
#include <sacls.h>

// User includes
#include "SystemAgentDocument.h"

// ================= MEMBER FUNCTIONS =======================

/**
 * Sets the text in the control on the specified line of the dialog
 */
void CSystemAgentDialog::SetTextL(TSystemAgentDlgLineId aLine, const TDesC& aText)
{
    CEikEdwin* control = static_cast<CEikEdwin*>(Control(aLine));
    control->SetTextL(&aText);
    control->DrawDeferred();
}

/**
 * Sets the text in the appropriate dialog line for the specified state variable
 */
void CSystemAgentDialog::ProcessStateVarChangeL(TUid aStateVarUid, TInt aNewState)
{
    // The text for the line has a parameter which is specified by the state text
    TInt stateTextId = R_INVALID_TEXT;

    // The ID of the line in the dialog corresponding to aStateVarUid
    TSystemAgentDlgLineId dlgLineId = ESystemAgentDlgSystemAgentStateLabel;

    // A negative state indicates error for all State Variables
    if (aNewState < 0)
        stateTextId = R_ERROR_TEXT;

    // Workout which label and state strings correspond with the new state
    if (aStateVarUid == KUidSystemAgentStateVariable)
    {
        dlgLineId = ESystemAgentDlgSystemAgentStateLabel;
        switch (aNewState)
        {
            case CSystemAgentDocument::ESystemAgentRed:
                stateTextId = R_SYSTEMAGENT_RED_TEXT;
                break;
            case CSystemAgentDocument::ESystemAgentGreen:
                stateTextId = R_SYSTEMAGENT_GREEN_TEXT;
                break;
            case CSystemAgentDocument::ESystemAgentBlue:
                stateTextId = R_SYSTEMAGENT_BLUE_TEXT;
                break;
        }
    }
    else if (aStateVarUid == KUidInboxStatus)
    {
        dlgLineId = ESystemAgentDlgInboxStateLabel;

        switch (aNewState)
        {
            case ESAInboxEmpty:
                stateTextId = R_INBOX_NONEWMESSAGES_TEXT;
                break;
            case ESADocumentsInInbox:
                stateTextId = R_INBOX_NEWMESSAGES_TEXT;
                break;
        }
    }
    else if (aStateVarUid == KUidChargerStatus)
    {
        dlgLineId = ESystemAgentDlgChargerStateLabel;

        switch (aNewState)
        {
            case ESAChargerConnected:
                stateTextId = R_CHARGER_CHARGING_TEXT;
                break;
            case ESAChargerDisconnected:
                stateTextId = R_CHARGER_DISCONNECTED_TEXT;
                break;
            case ESAChargerNotCharging:
                stateTextId = R_CHARGER_NOTCHARGING_TEXT;
                break;
        }
    }
    else if (aStateVarUid == KUidNetworkStrength)
    {
        dlgLineId = ESystemAgentDlgNetworkStrengthStateLabel;

        switch (aNewState)
        {
            case ESANetworkStrengthNone:
                stateTextId = R_NETWORKSTRENGTH_NONE_TEXT;
                break;
            case ESANetworkStrengthLow:
                stateTextId = R_NETWORKSTRENGTH_LOW_TEXT;
                break;
            case ESANetworkStrengthMedium:
                stateTextId = R_NETWORKSTRENGTH_MEDIUM_TEXT;
                break;
            case ESANetworkStrengthHigh:
                stateTextId = R_NETWORKSTRENGTH_HIGH_TEXT;
                break;
            case ESANetworkStrengthUnknown:
                stateTextId = R_NETWORKSTRENGTH_UNKNOWN_TEXT;
                break;
        }
    }

    // Load the state text
    HBufC* stateText = StringLoader::LoadLC(stateTextId);                    // Buffer on cleanup stack

    // Set the text in the appropriate line
    SetTextL(dlgLineId, *stateText);

    CleanupStack::PopAndDestroy(stateText);
}


/**
* Called by the framework when a button is pressed.
* Translates aButtonId into a command for the AppUi to handle
* @param aButtonId The button which was pressed
*/
TBool CSystemAgentDialog::OkToExitL(TInt aButtonId)
{
    // Translate the button presses into commands for the appui & current
    // view to handle
    if (aButtonId == EAknSoftkeyExit)
    {
        // Causes this dialog to be deleted (and never returns..)
        iAvkonAppUi->ProcessCommandL(EEikCmdExit);
    }
    else if (aButtonId == EAknSoftkeyOptions)
    {
        iAvkonAppUi->ProcessCommandL(EAknSoftkeyOptions);
    }

    return EFalse;        // Never "OK to exit" here - UI destroys dialog in its destructor
}


// End of File

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?