browser/ui/src/SplashView.cpp
changeset 0 c316ab048e9d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browser/ui/src/SplashView.cpp	Fri Jun 25 12:50:05 2010 +0200
@@ -0,0 +1,114 @@
+/*
+ * Name        : SplashView.cpp
+ * Description : 
+ * Project     : This file is part of OpenMAR, an Open Mobile Augmented Reality browser
+ * Website     : http://OpenMAR.org
+ *
+ * Copyright (c) 2010 David Caabeiro
+ *
+ * All rights reserved. This program and the accompanying materials are made available 
+ * under the terms of the Eclipse Public License v1.0 which accompanies this 
+ * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ */
+
+#include "SplashView.h"
+
+#include <AknUtils.h>
+#include <AknViewAppui.h>
+
+#include <OpenMAR_0x2002E1AB.rsg>
+
+#include "Application.hrh"
+#include "SettingManager.h"
+#include "SplashContainer.h"
+
+#include "Logger.h"
+
+CSplashView* CSplashView::NewL(CSettingManager& aSetting)
+{
+    CSplashView* self = new(ELeave) CSplashView(aSetting);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+
+    return self;
+}
+
+CSplashView::~CSplashView()
+{
+    delete iContainer;
+    delete iConnection;
+}
+
+CSplashView::CSplashView(CSettingManager& aSetting)
+    : iSetting(aSetting)
+{}
+
+void CSplashView::ConstructL()
+{
+    BaseConstructL(R_SPLASH_VIEW);
+
+    LOGTXT("Initializing splash screen");
+
+    // Set up connection which should be used by other components
+    // (providers, etc) to enable faster connections
+    iConnection = CConnectionManager::NewL(*this, iSetting);
+}
+
+void CSplashView::ConnectionStartedL(TInt aError)
+{
+    LOGARG("Connection manager returned %d", aError);
+
+    if (aError)
+    {
+        // TODO: Handle error condition. Some kind of 'offline mode' should be allowed,
+        // thus enabling the use of the application in a restricted way 
+
+//        if (!AppUi()->IsAppShutterRunning())
+//            AppUi()->RunAppShutter();
+    }
+
+    // Perform other setup..
+
+    // Initial set up complete. Switch to main view 
+    AppUi()->ActivateLocalViewL(TUid::Uid(EARView));
+}
+
+TUid CSplashView::Id() const
+{
+    return TUid::Uid(ESplashView);
+}
+
+void CSplashView::DoActivateL(const TVwsViewId& aPrevViewId, TUid aCustomMessageId, const TDesC8& aCustomMessage)
+{
+    if (!iContainer)
+    {
+        // Make status pane invisible
+        CEikStatusPane* statusPane = StatusPane();
+        if (statusPane)
+            statusPane->MakeVisible(EFalse);
+
+        iContainer = new(ELeave) CSplashContainer(*this);
+        iContainer->SetMopParent(this);
+        iContainer->ConstructL(AppUi()->ApplicationRect(), 0);
+
+        AppUi()->AddToStackL(*this, iContainer);
+    }
+}
+
+void CSplashView::DoDeactivate()
+{
+    if (iContainer)
+    {
+        AppUi()->RemoveFromViewStack(*this, iContainer);
+
+        delete iContainer;
+        iContainer = 0;
+    }
+}
+
+void CSplashView::HandleCommandL(TInt aCommand)
+{
+    AppUi()->HandleCommandL(aCommand);
+}