⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 resmanagement.cpp

📁 基于Symbian平台下随心所欲控制屏幕的灯亮熄.在观看视频和发短信时这一点非常重要.
💻 CPP
字号:
/**
*
* Definition of CResManagement
*
* Copyright (c) 2004 Nokia Corporation
* version 2.0
*/

// INCLUDE FILES

#include "ResManagement.h"
#include <f32file.h>
#include <e32std.h>
#include <eikenv.h>
#include <eikappui.h>
#include <eikapp.h>
#include <aknnotewrappers.h>
#include <stringloader.h>
#include <PowerResMan.rsg>

// Creates instance of CResManagement
CResManagement* CResManagement::NewL()
    {
    CResManagement* self = new (ELeave) CResManagement();
    CleanupStack::PushL(self);
    self->ConstructL();
    CleanupStack::Pop(self);
    return self;
    }

// Constructor
CResManagement::CResManagement()
    {
    }

// Destructor
CResManagement::~CResManagement()
    {
    }

// 2nd Phase Constructor
void CResManagement::ConstructL()
    {
    }

// This function shows an implementaion that has not taken advantage
// of scoping. Note the function is not meant to be meaningful - it should
// just be compared to ScopingImplementedL to show how scoping can be implemented
void CResManagement::ScopingNotImplementedL()
    {
    // Create 3 TObjects
    TObject object1;
    TObject object2;
    TObject object3;
    // Set some values for object1 & 2
    SetValues(object1, object2);
    // Set some values for Object3 by combining those from 1 & 2
    object3 = CombineValues(object1, object2);
    // Call function to show current stack position
    // so this can be compared with ScopingImplemented version
    CurrentStackPositionL(object3);
    }

// This function shows an implementaion that has taken advantage
// of scoping. Note the function is not meant to be meaningful - it should
// just be compared to ScopingNotImplementedL to show how scoping can be implemented
void CResManagement::ScopingImplementedL()
    {
    // Create a TObject
    TObject object3;
    // Set the values for object 3 - scoping implemented
    GetTotal(object3);
    CurrentStackPositionL(object3);
    }

// Sets values for objects 1 &2 and combines them to get a value for
// the object passed in.
// The purpose of this function is just to demonstrate the idea of scoping
void CResManagement::GetTotal(TObject& aObject)
    {
    TObject object1;
    TObject object2;
    // Set values for objects1 & 2
    SetValues(object1, object2);
    // Set the values of the object passed in
    // by combining those of 1 and 2
    aObject = CombineValues(object1, object2);
    }

// This function displays the current stack position in a note
// It can be used to check that scoping is more efficient
// The more items on the stack - the lower the address
void CResManagement::CurrentStackPositionL(TObject aObject3)
    {
    HBufC* noteText;
    noteText = StringLoader::LoadLC(R_ADDRESS_TEXT);
    noteText = noteText->ReAllocL(noteText->Length() + 20);
    CleanupStack::Pop();
    CleanupStack::PushL(noteText);
    TPtr text = noteText->Des();
    // Append the address of aObject3 - shows current stack position
    text.AppendNum((TInt)&aObject3);

    CAknInformationNote* note = new(ELeave)CAknInformationNote();
    note->ExecuteLD(*noteText);
    CleanupStack::PopAndDestroy(noteText);
    }

// Sets maximum capacity values for the objects passed in
void CResManagement::SetValues(TObject& aObject1, TObject& aObject2)
    {
    aObject1.SetMaxCapacityTask1(1);
    aObject1.SetMaxCapacityTask2(10);

    aObject2.SetMaxCapacityTask1(3);
    aObject2.SetMaxCapacityTask2(6);
    }

// Combines the values of the two objects passed and assigns them to
// another object
TObject CResManagement::CombineValues(TObject& aObject1, TObject& aOject2)
    {
    TObject object3;
    object3.SetMaxCapacityTask1(Max(aObject1.MaxCapacityTask1(),aOject2.MaxCapacityTask1()));
    object3.SetMaxCapacityTask2(Max(aObject1.MaxCapacityTask2(),aOject2.MaxCapacityTask2()));
    return object3;
    }


// This function gets the current app name then
// constructs a new filename by replacing the filetype
// extension with .mbm
// This function works properly on 1st and 2nd edition but on 3rd edition
// it creates a path to \sys\bin\ (which cannot be used for mbm files).
void CResManagement::ConstructFileNameL() const
    {
    // Get the application name with full path
    CEikonEnv* eikonEnv = CEikonEnv::Static();
    HBufC* appName = HBufC::NewLC(eikonEnv->EikAppUi()->Application()->AppFullName().Length());
    appName->Des() = eikonEnv->EikAppUi()->Application()->AppFullName();
    // Replace extension with mbm
    TParsePtrC parse(*appName);
    appName->Des().SetLength((parse.DriveAndPath()).Length() + (parse.Name().Length()));
    _LIT(KExtension, ".mbm");
    appName = appName->ReAllocL(appName->Length() + KExtension().Length());
    CleanupStack::Pop();
    CleanupStack::PushL(appName);

    appName->Des().Append(KExtension);
    // display a note
    _LIT(KMessage, " filename changed using TParsePtrC");
    appName = appName->ReAllocL(appName->Length() + KMessage().Length());
    CleanupStack::Pop();
    CleanupStack::PushL(appName);

    appName->Des().Append(KMessage);
    CAknInformationNote* note = new(ELeave)CAknInformationNote();
    note->ExecuteLD(*appName);
    CleanupStack::PopAndDestroy(appName);

    }

// End of file

⌨️ 快捷键说明

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