shapedrawerdocument.cpp

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

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

// INCLUDE FILES

// Class includes
#include "ShapeDrawerDocument.h"


//User Includes
#include "ShapeDrawerApplication.h"
#include "ShapeDrawerAppUi.h"

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

TInt CShapeDrawerDocument::DataSize()
{
    TInt size =  iModel->DataSize() - iInitialDocumentSize;
    size = (size >= 0 ? size : 0);
    return size;
}

/**
@function NewLC
@abstract Constructs a CShapeDrawerDocument for the application aApp, 
and return a pointer to the created object
@result Returns a pointer to the instance which is also on the cleanup stack
**/
CShapeDrawerDocument* CShapeDrawerDocument::NewLC(CEikApplication& aApp)
{
    CShapeDrawerDocument* self = new (ELeave) CShapeDrawerDocument(aApp);
    CleanupStack::PushL(self);
    self->ConstructL();
    return self;
}

/**
@function NewL
@abstract Constructs a CShapeDrawerDocument for the application aApp, 
and return a pointer to the created object
@result Returns a pointer to the instance
**/
CShapeDrawerDocument* CShapeDrawerDocument::NewL(CEikApplication& aApp)
{
    CShapeDrawerDocument* self = NewLC(aApp);
    CleanupStack::Pop(self); 
    return self;
}

/**
@function ConstructL
@abstract Performs the second phase construction of a CShapeDrawerDocument object
**/
void CShapeDrawerDocument::ConstructL()
{
    iModel = CShapeListManager::NewL();
}    

CShapeDrawerDocument::~CShapeDrawerDocument()
{
    delete iModel;
    iModel = NULL;
}

/**
@function CShapeDrawerDocument
@abstract Performs the first phase of two phase construction 
@param aApp the application
**/
CShapeDrawerDocument::CShapeDrawerDocument(CEikApplication& aApp)
:    CAknDocument(aApp), iInitialDocumentSize(0)   
{    
    //    No implementation required
}


CFileStore* CShapeDrawerDocument::OpenFileL(TBool aDoOpen,const TDesC& aFilename,RFs& aFs)
{
    return CEikDocument::OpenFileL(aDoOpen, aFilename, aFs);
}



/**
@function CreateAppUiL
@abstract Creates a CShapeDrawerAppUi object and return a pointer to it
@result Returns a pointer to the Application's User Interface object
**/
CEikAppUi* CShapeDrawerDocument::CreateAppUiL()
{
    // Create the application user interface, and return a pointer to it
    CEikAppUi* appUi = new (ELeave) CShapeDrawerAppUi();
    return appUi;
}

/**
@function StoreL
@abstract Stores the document to the store
@param aStore the store to save the data to
@param aStreamDict the dictionary to hold the stream id of the data stream
**/
void CShapeDrawerDocument::StoreL(CStreamStore& aStore, CStreamDictionary& aStreamDic) const
{
    //    Get the model to save itself to the store
    TStreamId modelStreamId = iModel->StoreL(aStore);
    //    Add an entry into the dictionary for the model data
    aStreamDic.AssignL(Application()->AppDllUid(), modelStreamId); 
}


/**
@function RestoreL
@abstract Restores the document from the store
@param aStore the store to containing the data to
@param aStreamDict the dictionary that holds the stream id of the data stream
**/
void CShapeDrawerDocument::RestoreL(const CStreamStore& aStore, const CStreamDictionary& aStreamDic)
{

    // Restore the model from the appropriate store stream.

    CShapeListManager* newModel = CShapeListManager::NewL();
    CleanupStack::PushL(newModel);

    //    Find the stream id for the model's data
    TStreamId modelStreamId = aStreamDic.At(Application()->AppDllUid());
    //    restore the model from that stream 
    newModel->RestoreL(aStore, modelStreamId);

    //    Now get rid of the old model and set the new one as current
    delete iModel;
    iModel = newModel;
    iInitialDocumentSize = DataSize();
    CleanupStack::Pop(newModel);

    //    Just restored so can't have changed
    SetChanged(EFalse); 
}

/**
@function Model
@abstract Gets the model associated with the document
@result Returns a reference to a pointer to the model
**/
CShapeListManager* CShapeDrawerDocument::Model() 
{
    return iModel;
}


//End of File

⌨️ 快捷键说明

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