util/s60pixelmetrics/pm_mapperview.cpp
changeset 0 1918ee327afb
child 3 41300fa6a67c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/util/s60pixelmetrics/pm_mapperview.cpp	Mon Jan 11 14:00:40 2010 +0000
@@ -0,0 +1,375 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the utility applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+// INCLUDE FILES
+
+#include <eiklabel.h>
+#include <avkon.rsg>
+#include <aknviewappui.h>
+#include <aknconsts.h>
+
+#include "pm_mapper.hrh"
+#include <pm_mapper.rsg>
+#include "pm_mapperView.h"
+#include "pm_mapperApp.h"
+
+#include <aknlists.h>
+#include <avkon.hrh>
+#include <AknUtils.h>
+
+// -----------------------------------------------------------------------------
+// C++ constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CPixelMetricsMapperViewContainer::CPixelMetricsMapperViewContainer(): iCount( 1 )
+    {
+    }
+
+
+// -----------------------------------------------------------------------------
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CPixelMetricsMapperViewContainer::ConstructL( const TRect& aRect )
+    {
+    CreateWindowL();
+    SetCanDrawOutsideRect();
+
+    iTexts = new( ELeave ) CDesCArrayFlat( 10 );
+    iTexts->AppendL( _L( "\tStarted." ) );
+
+    iListbox = new( ELeave ) CAknSingleStyleListBox;
+    iListbox->SetContainerWindowL( *this );
+    iListbox->ConstructL( this, EAknListBoxViewerFlags  );
+
+    iListbox->Model()->SetItemTextArray( iTexts );
+    iListbox->SetRect( TRect( aRect.Size() ) );
+
+    iListbox->CreateScrollBarFrameL( ETrue );
+    iListbox->ScrollBarFrame()->SetScrollBarVisibilityL(
+        CEikScrollBarFrame::EOn,
+        CEikScrollBarFrame::EOn );
+
+    SetRect( aRect );
+    iListbox->ActivateL();
+    ActivateL();
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CPixelMetricsMapperViewContainer::ShowL( const TDesC& aString, TBool& aLast, const TBool& aFileOutput )
+    {
+    MDesCArray* itemList = iListbox->Model()->ItemTextArray();
+    CDesCArray* itemArray = ( CDesCArray* ) itemList;
+
+    itemArray->AppendL( aString );
+
+    iListbox->HandleItemAdditionL();
+    iListbox->SetCurrentItemIndex( iCount );
+    iCount++;
+    if ( aLast )
+        {
+        if (aFileOutput)
+            {
+            RFile file;
+            RFs& fs = CEikonEnv::Static()->FsSession();
+            TFileName fileName =_L("Layout_");
+
+            TRect screenRect;
+            AknLayoutUtils::LayoutMetricsRect(
+                AknLayoutUtils::EApplicationWindow,
+                screenRect );
+
+            // Add screen dimensions
+            TInt height = screenRect.Height();
+            TInt width = screenRect.Width();
+            fileName.AppendNum(height);
+            fileName.Append('_');
+            fileName.AppendNum(width);
+
+            if (AknLayoutUtils::LayoutMirrored())
+                fileName.Append(_L("_mirrored"));
+            fileName.Append(_L(".txt"));
+
+            TInt err=file.Open(fs,fileName,EFileStreamText|EFileWrite|EFileShareAny);
+            if (err==KErrNotFound) // file does not exist - create it
+                err=file.Create(fs,fileName,EFileStreamText|EFileWrite|EFileShareAny);
+            else
+                file.SetSize(0); //sweep the file
+            TFileText textFile;
+            textFile.Set(file);
+            err = textFile.Seek(ESeekStart);
+            if (err) User::InfoPrint(_L("File corrupted"));
+
+            // Finally loop through all the entries:
+            TInt idx = 0;
+            for(;idx!=itemList->MdcaCount();idx++)
+                {
+                err = textFile.Write(itemList->MdcaPoint(idx));
+                if (err) User::InfoPrint(_L("File corrupted"));
+                }
+            file.Close();
+            }
+        DrawNow();
+        }
+    }
+
+void CPixelMetricsMapperViewContainer::ClearL()
+    {
+    MDesCArray* itemList = iListbox->Model()->ItemTextArray();
+    CDesCArray* itemArray = ( CDesCArray* ) itemList;
+
+    itemArray->Reset();
+
+    iListbox->HandleItemAdditionL();
+    iCount = 0;
+    DrawNow();
+    }
+
+
+// -----------------------------------------------------------------------------
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CPixelMetricsMapperViewContainer::~CPixelMetricsMapperViewContainer()
+    {
+    delete iListbox;
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CPixelMetricsMapperViewContainer::SizeChanged()
+    {
+    CCoeControl::SizeChanged();
+    if ( iListbox )
+        {
+        iListbox->SetRect( Rect() );
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TInt CPixelMetricsMapperViewContainer::CountComponentControls() const
+    {
+    return 1;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTestAppViewContainer::ComponentControl
+//
+//
+// -----------------------------------------------------------------------------
+//
+CCoeControl* CPixelMetricsMapperViewContainer::ComponentControl(
+        TInt /*aIndex*/ ) const
+    {
+    return iListbox;
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CPixelMetricsMapperViewContainer::Draw( const TRect& /*aRect*/ ) const
+    {
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CPixelMetricsMapperViewContainer::HandleControlEventL(
+    CCoeControl* /*aControl*/,
+    TCoeEvent /*aEventType*/ )
+    {
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TKeyResponse CPixelMetricsMapperViewContainer::OfferKeyEventL(
+    const TKeyEvent& aKeyEvent,
+    TEventCode aType )
+    {
+    if (aKeyEvent.iCode == EKeyUpArrow ||
+        aKeyEvent.iCode == EKeyDownArrow )
+        {
+        return iListbox->OfferKeyEventL( aKeyEvent, aType );
+        }
+    return EKeyWasNotConsumed;
+    }
+
+void CPixelMetricsMapperViewContainer::HandleResourceChange(TInt aType)
+    {
+    CCoeControl::HandleResourceChange( aType );
+    if ( aType == KEikDynamicLayoutVariantSwitch )
+         {
+         TRect mainPaneRect;
+         AknLayoutUtils::LayoutMetricsRect(
+             AknLayoutUtils::EMainPane,
+             mainPaneRect );
+         SetRect( mainPaneRect );
+
+         CPixelMetricsMapperAppUi* myApp = static_cast<CPixelMetricsMapperAppUi*> (ControlEnv()->AppUi());
+         if (myApp->ReadyForAutoOp())
+        	 myApp->DoAutoOperationL();
+         }
+    if (iListbox) iListbox->HandleResourceChange(aType);
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CPixelMetricsMapperView::ShowL( const TDesC& aString, TBool& aLast, const TBool& aFileOutput )
+    {
+    iView->ShowL( aString, aLast, aFileOutput );
+    }
+
+void CPixelMetricsMapperView::ClearL()
+    {
+    iView->ClearL();
+    }
+
+
+// -----------------------------------------------------------------------------
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CPixelMetricsMapperView::ConstructL()
+    {
+    BaseConstructL( R_PMMAPPER_VIEW );
+    }
+
+
+// -----------------------------------------------------------------------------
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CPixelMetricsMapperView::~CPixelMetricsMapperView()
+    {
+    if ( iView )
+        {
+        AppUi()->RemoveFromViewStack( *this, iView );
+        }
+    delete iView;
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TUid CPixelMetricsMapperView::Id() const
+    {
+    return TUid::Uid( EPMMapperViewId );
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CPixelMetricsMapperView::HandleCommandL( TInt aCommand )
+    {
+    AppUi()->HandleCommandL( aCommand );
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CPixelMetricsMapperView::HandleStatusPaneSizeChange()
+    {
+    if ( iView )
+        {
+        TRect cr = ClientRect();
+        iView->SetRect( cr );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CPixelMetricsMapperView::DoActivateL(
+    const TVwsViewId& /*aPrevViewId*/,
+    TUid              /*aCustomMessageId*/,
+    const TDesC8&     /*aCustomMessage*/ )
+    {
+    iView = new( ELeave ) CPixelMetricsMapperViewContainer;
+
+    TRect cr = ClientRect();
+    iView->ConstructL( cr );
+    AppUi()->AddToViewStackL( *this, iView );
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CPixelMetricsMapperView::DoDeactivate()
+    {
+    if (iView)
+        {
+        AppUi()->RemoveFromViewStack( *this, iView );
+        }
+    delete iView;
+    iView = NULL;
+    }
+
+// End of File