src/NPRAppUi.cpp
changeset 0 0049171ecffb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/NPRAppUi.cpp	Fri Jul 24 08:46:02 2009 +0100
@@ -0,0 +1,194 @@
+/*
+ ============================================================================
+ Name	: NPRAppUi.cpp
+ Author	: John Kern
+ 
+ Copyright (c) 2009 Symbian Foundation Ltd
+ This component and the accompanying materials are made available
+ under the terms of the License "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:
+ - Symbian Foundation Ltd - initial contribution.
+ - Symsource
+ 
+ Contributors:
+ - John Kern
+ - Symsource
+ 
+ Description : CNPRAppUi implementation
+ ============================================================================
+ */
+
+// INCLUDE FILES
+#include <aknmessagequerydialog.h>
+#include <s32file.h>
+#include <Xml/Parser.h> 
+#include <NPR_0xEEB0E481.rsg>
+
+#include "NPR_0xEEB0E481.hlp.hrh"
+#include "NPR.hrh"
+#include "NPR.pan"
+#include "NPRApplication.h"
+#include "NPRAppUi.h"
+#include "NPRAppEngine.h"
+#include "NPRListBoxView.h"
+#include "NPRStoryListBoxView.h"
+#include "NPRStationListBoxView.h"
+#include "NPRSearchStationListBoxView.h"
+#include "NPRBrowserAknView.h"
+
+
+_LIT( KFileName, "C:\\private\\EEB0E481\\NPR.txt" );
+_LIT( KText, "Hello World!");
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+// CNPRAppUi::ConstructL()
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CNPRAppUi::ConstructL()
+	{
+	// Initialise app UI with standard value.
+	BaseConstructL(CAknAppUi::EAknEnableSkin);
+	
+	// Create a file to write the text to
+	TInt err = CCoeEnv::Static()->FsSession().MkDirAll(KFileName);
+	if ((KErrNone != err) && (KErrAlreadyExists != err))
+		{
+		Exit();
+		}
+
+	RFile file;
+	err = file.Replace(CCoeEnv::Static()->FsSession(), KFileName, EFileWrite);
+	CleanupClosePushL(file);
+	if (KErrNone != err)
+		{
+		CleanupStack::PopAndDestroy(1); // file
+		Exit();
+		}
+
+	RFileWriteStream outputFileStream(file);
+	CleanupClosePushL(outputFileStream);
+	outputFileStream << KText;
+	this->Document();
+	CleanupStack::PopAndDestroy(2); // outputFileStream, file
+
+	TRAP(err, this->iNPRAppEngine = CNPRAppEngine::NewL(*this));
+	if(err != KErrNone)
+		{
+		Exit();
+		}
+	
+	CNPRListBoxView* mainListBoxView = CNPRListBoxView::NewL();
+	AddViewL(mainListBoxView);
+
+	CNPRStoryListBoxView* storyListBoxView = CNPRStoryListBoxView::NewL();
+	AddViewL(storyListBoxView);
+
+	CNPRStationListBoxView* StationListBoxView = CNPRStationListBoxView::NewL();
+	AddViewL(StationListBoxView);
+
+	CNPRSearchStationListBoxView* searchStationListBoxView = CNPRSearchStationListBoxView::NewL();
+	AddViewL(searchStationListBoxView);
+	
+	CBrowserAknView* browserView = CBrowserAknView::NewL(*iNPRAppEngine);
+	AddViewL(browserView);
+
+	ActivateLocalViewL(TUid::Uid(ENPRListBoxViewId));
+	}
+// -----------------------------------------------------------------------------
+// CNPRAppUi::CNPRAppUi()
+// C++ default constructor can NOT contain any code, that might leave.
+// -----------------------------------------------------------------------------
+//
+CNPRAppUi::CNPRAppUi()
+	{
+	// No implementation required
+	}
+
+// -----------------------------------------------------------------------------
+// CNPRAppUi::~CNPRAppUi()
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CNPRAppUi::~CNPRAppUi()
+	{
+	delete iNPRAppEngine;
+	}
+
+// -----------------------------------------------------------------------------
+// CNPRAppUi::HandleCommandL()
+// Takes care of command handling.
+// -----------------------------------------------------------------------------
+//
+void CNPRAppUi::HandleCommandL(TInt aCommand)
+	{
+	switch (aCommand)
+		{
+		case EEikCmdExit:
+		case EAknSoftkeyExit:
+			{
+			Exit();
+			}
+			break;
+		case EAbout:
+			{
+			CAknMessageQueryDialog* dlg = new (ELeave) CAknMessageQueryDialog();
+			dlg->PrepareLC(R_ABOUT_QUERY_DIALOG);
+			HBufC* title = iEikonEnv->AllocReadResourceLC(R_ABOUT_DIALOG_TITLE);
+			dlg->QueryHeading()->SetTextL(*title);
+			CleanupStack::PopAndDestroy(); //title
+			HBufC* msg = iEikonEnv->AllocReadResourceLC(R_ABOUT_DIALOG_TEXT);
+			dlg->SetMessageTextL(*msg);
+			CleanupStack::PopAndDestroy(); //msg
+			dlg->RunLD();
+			}
+			break;
+		default:
+			Panic(ENPRUi);
+			break;
+		}
+	}
+
+CNPRAppEngine& CNPRAppUi::Engine()
+	{
+	return *iNPRAppEngine;
+	}
+
+// -----------------------------------------------------------------------------
+//  Called by the framework when the application status pane
+//  size is changed.  Passes the new client rectangle to the
+//  AppView
+// -----------------------------------------------------------------------------
+//
+void CNPRAppUi::HandleStatusPaneSizeChange()
+	{
+	//iAppView->SetRect(ClientRect());
+	}
+
+CArrayFix<TCoeHelpContext>* CNPRAppUi::HelpContextL() const
+	{
+#warning "Please see comment about help and UID3..."
+	// Note: Help will not work if the application uid3 is not in the
+	// protected range.  The default uid3 range for projects created
+	// from this template (0xE0000000 - 0xEFFFFFFF) are not in the protected range so that they
+	// can be self signed and installed on the device during testing.
+	// Once you get your official uid3 from Symbian Ltd. and find/replace
+	// all occurrences of uid3 in your project, the context help will
+	// work. Alternatively, a patch now exists for the versions of 
+	// HTML help compiler in SDKs and can be found here along with an FAQ:
+	// http://www3.symbian.com/faq.nsf/AllByDate/E9DF3257FD565A658025733900805EA2?OpenDocument
+	CArrayFixFlat<TCoeHelpContext>* array = new (ELeave) CArrayFixFlat<
+			TCoeHelpContext> (1);
+	CleanupStack::PushL(array);
+	array->AppendL(TCoeHelpContext(KUidNPRApp, KGeneral_Information));
+	CleanupStack::Pop(array);
+	return array;
+	}
+
+// End of File