📄 resmanagement.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 + -