notepad/notepad1/ViewerInc/NpdViewerAppUi.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 27 Apr 2010 16:36:22 +0300
branchRCL_3
changeset 15 9711e452b5e9
parent 0 f979ecb2b13e
permissions -rw-r--r--
Revision: 201015 Kit: 201017

/*
* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:  Declarations for Notepad Viewer Application UI class.
*
*/


#ifndef NOTEPADVIEWERAPPUI_H
#define NOTEPADVIEWERAPPUI_H

// INCLUDES
#include <aknappui.h>

// FORWARD DECLARATIONS
class CNotepadViewerDialog;
class CNotepadApi;

// CLASS DECLARATION
/**
* Notepad Viewer application UI class.
* 
*/
class CNotepadViewerAppUi : public CAknAppUi
    {
    public: // Constructors and destructor

        /**
        * Second phase onstructor.
        */      
        void ConstructL();

        /**
        * Destructor.
        */      
        virtual ~CNotepadViewerAppUi();

    private: // Functions from base classes

        /**
        * From CEikAppUi.
        * Takes care of command handling.
        *
        * @param aCommand command to be handled
        */
        void HandleCommandL(TInt aCommand);

        /**
        * From CEikAppUi.
        * Command line processing.
        *
        * When DocumentHandler wants to launch NpdViewer as a standalone
        * application, it use RApaLsSession::StartDocument(filename, ...).
        *
        * CEikonEnv::ConstructAppFromCommandLineL(...), at first, pass 
        * the filename information to ProcessCommandParametersL 
        * correctly. But default CEikAppUi::ProcessCommandParametersL 
        * overwrite it's reference parameter (TFileName& aDocumentName) to 
        * application's defualt document name such as "NpdViewer.ini".
        * (In EikAppUi.cpp, 
        * Application()->GetDefaultDocumentFileName(aDocumentName);
        * do this). 
        * So,  when CEikonEnv::ConstructAppFromCommandLineL(...) calls
        * CApaDocument::OpenFileL(...), the filename information from 
        * Document Handler had been lost.
        * 
        * On the other hand, when DocumentHandler wants to launch NpdViewer 
        * as a embeded application, it use CApaDocument::OpenFileL() directly 
        * and never call ProcessCommandParametersL.
        *
        * So, in order to pass a correct filename information to OpenFileL 
        * in both case, we decide to override this function.
        *
        * @param aCommand command. (ignored)
        * @param aDocumentName Filename.
        * @param aTail optional command line parampeter. (ignored)
        * @return ETrue if aDocumentName file exists.
        */
        TBool ProcessCommandParametersL(
            TApaCommand aCommand,
            TFileName& aDocumentName,
            const TDesC8& aTail);

        /**
        * From CEikAppUi.
        * Start fileviewer with specified filename.
        * Both standalone and embeded case, this function is really called 
        *
        * @param aFilename Filename to view.
        */
        void OpenFileL(const TDesC& aFilename);

	public:
	
        /**
        * Start fileviewer with specified file handle.
        * Both standalone and embeded case, this function is really called 
        *
        * @param aFile File handle.
        */
        void OpenFileL(RFile& aFile);

    private: // Data

        CNotepadApi* iApi; // own
        TBool iCurrentFileOpened; // To avoid reopening of same file.

    };

#endif // NOTEPADVIEWERAPPUI_H

// End of File