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

📄 bookstoreappui.cpp

📁 在symbian2.0平台上开发的图书管理系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/*
 * ============================================================================
 *  Name     : BookstoreAppUi from BookstoreAppUi.cpp
 *  Part of  : Bookstore
 *  Created  : 8.12.2003 by Forum Nokia
 *  Version  : 1.0
 *  Copyright: Nokia Corporation
 * ============================================================================
 */

#include <avkon.hrh>
#include <badesca.h>
#include <bautils.h>
#include <eikmenup.h>
#include <eikapp.h>
#include <aknnotewrappers.h> // CAknInformationNote
#include <aknquerydialog.h>
#include "BookstoreAppUi.h"
#include "BookstoreAppView.h"
#include "BookstoreListboxView.h"
#include "BookEditorView.h"
#include "BookstoreDb.hrh"
#include <BookstoreDb.rsg>  // R_MAIN_MENU

// Implementation constants
const TInt KArrayGranularity = 5;


// ---------------------------------------------------------------------------
// CBookstoreAppUi::ConstructL()
//
// Perform second phase construction. This is allowed to leave.
// ---------------------------------------------------------------------------
//
void CBookstoreAppUi::ConstructL()
    {
    BaseConstructL(EAknEnableSkin);
    iCurrentView = ENone;

    ChangeView(EMainView);

    iDatabaseFile = ApplicationDriveAndPath();
    iDatabaseFile.Append(KDatabaseFile);
    }


// ---------------------------------------------------------------------------
// CBookstoreAppUi::CBookstoreAppUi()
//
// Constructor of the AppUi. This may not leave.
// ---------------------------------------------------------------------------
//
CBookstoreAppUi::CBookstoreAppUi() : iAppView(NULL), iListboxView(NULL),
    iBookEditorView(NULL), iBookstoreDb(NULL)
    {
    }


// ---------------------------------------------------------------------------
// CBookstoreAppUi::~CBookstoreAppUi()
//
// Destructor. Release reserved resources
// ---------------------------------------------------------------------------
//
CBookstoreAppUi::~CBookstoreAppUi()
    {
    if (iAppView)
        {
        if(iCurrentView == EMainView)
            iEikonEnv->RemoveFromStack(iAppView);
        delete iAppView;
        iAppView = NULL;
        }

    if (iListboxView)
        {
        if(iCurrentView == EBookListView || iCurrentView == EColumnsView)
            iEikonEnv->RemoveFromStack(iListboxView);
        delete iListboxView;
        iListboxView = NULL;
        }

    if (iBookEditorView)
        {
        if(iCurrentView == EBookEditorView)
            iEikonEnv->RemoveFromStack(iBookEditorView);
        delete iBookEditorView;
        iBookEditorView = NULL;
        }

    if(iBookstoreDb) // Just in case
        {
        iBookstoreDb->Close();
        delete iBookstoreDb;
        iBookstoreDb = NULL;
        }
    }


// ---------------------------------------------------------------------------
// CBookstoreAppUi::ChangeView()
//
// Switch view.
//
// In this example the "views" are just simple window owning controls, but not
// real CAknView objects. In real application CAknViews might be better option.
// ---------------------------------------------------------------------------
//
void CBookstoreAppUi::ChangeView(TViewId aNewView)
    {

    if(aNewView == iCurrentView)
        return;

    // Delete previous view (window owning control)
    switch(iCurrentView)
        {
        case EMainView:
            RemoveFromStack(iAppView);
            delete iAppView;
            iAppView = NULL;
            break;

        case EBookListView:
            RemoveFromStack(iListboxView);
            delete iListboxView;
            iListboxView = NULL;
            break;

        case EColumnsView:
            RemoveFromStack(iListboxView);
            delete iListboxView;
            iListboxView = NULL;
            break;

        case EBookEditorView:
            RemoveFromStack(iBookEditorView);
            delete iBookEditorView;
            iBookEditorView = NULL;
            break;

        case ENone:
        default:
            break;
        }
    // Create new view (window owning control)
    switch(aNewView)
        {
        case EMainView:
            iAppView = CBookstoreAppView::NewL(ClientRect());
            AddToStackL(iAppView);
            break;

        case EBookListView:
        case EColumnsView:
            iListboxView = CBookstoreListboxView::NewL(ClientRect());
            AddToStackL(iListboxView);
            break;

        case EBookEditorView:
            iBookEditorView = CBookEditorView::NewL(ClientRect());
            AddToStackL(iBookEditorView);
            break;

        case ENone:
        default:
            break;
        }
    iCurrentView = aNewView;
    }


// ---------------------------------------------------------------------------
// CBookstoreAppUi::DynInitMenuPaneL(...)
//
// Initialize menu before it is shown. This overrides default implementation
// in base class.
// ---------------------------------------------------------------------------
//
void CBookstoreAppUi::DynInitMenuPaneL(TInt aResourceId,
    CEikMenuPane* aMenuPane)
    {
    if (aResourceId != R_MAIN_MENU)
        {
        return;
        }

    // First hide all menu items
    aMenuPane->SetItemDimmed(EOpenCmd, ETrue);
   

    aMenuPane->SetItemDimmed(EBackCmd, ETrue);




    aMenuPane->SetItemDimmed(EChangeTitleCmd, ETrue);
 
    aMenuPane->SetItemDimmed(ESearchBooksCmd, ETrue);
    aMenuPane->SetItemDimmed(EQuickFindCmd, ETrue);


    aMenuPane->SetItemDimmed(ECloseCmd, ETrue);


    // Show appropriate menu items depending on the current view
    switch(iCurrentView)
        {
        case EMainView:
            {
            // Db is not open. Allow creating, opening or removing the database
            if(BaflUtils::FileExists(CCoeEnv::Static()->FsSession(),
                iDatabaseFile))
                {
                aMenuPane->SetItemDimmed(EOpenCmd, EFalse);
            
                }
       
           

            break;
            }

        case EBookListView:
            {
            // DB is open, allow / show db operations
            if(iBookstoreDb && iBookstoreDb->IsOpen())
                {
               
                aMenuPane->SetItemDimmed(EChangeTitleCmd, EFalse);
               
                aMenuPane->SetItemDimmed(ESearchBooksCmd, EFalse);
                aMenuPane->SetItemDimmed(EQuickFindCmd, EFalse);
            
                aMenuPane->SetItemDimmed(ECloseCmd, EFalse);
                }
            break;
            }

        case EColumnsView:
            {
            if(iBookstoreDb && iBookstoreDb->IsOpen())
                {
                // Get existence status of date column
                TBool hasDateColumn(EFalse);
                User::LeaveIfError(iBookstoreDb->HasDateColumn(hasDateColumn));

                aMenuPane->SetItemDimmed(EBackCmd, EFalse);
                
                aMenuPane->SetItemDimmed(ECloseCmd, EFalse);
                }
            break;
            }

        case EBookEditorView:
            {
            if(iBookstoreDb && iBookstoreDb->IsOpen())
                {
                aMenuPane->SetItemDimmed(EBackCmd, EFalse);

                aMenuPane->SetItemDimmed(ECloseCmd, EFalse);
                }
            break;
            }

        case ENone:
        default:
            break;
        }
    }

// ---------------------------------------------------------------------------
// CBookstoreAppUi::HandleCommandL(...)
//
// Handle menu commands.
// ---------------------------------------------------------------------------
//
void CBookstoreAppUi::HandleCommandL(TInt aCommand)
    {

    switch(aCommand)
        {

    case EOpenCmd:            // Open existing database
        OpenDatabaseL();
        break;

   

    case EBackCmd:            // Move back from editor or columns view to
        ShowAllBooksL();      // list view
        break;

    

    case EChangeTitleCmd:     // Update a book title
        UpdateBookTitleL();
        break;

    

    case ESearchBooksCmd:     // Search books with given search pattern
        SearchBooksL();

⌨️ 快捷键说明

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