idlehomescreen/examples/mcsexample/src/MCSExampleAppView.cpp
branchRCL_3
changeset 102 ba63c83f4716
parent 93 b01126ce0bec
child 103 966d119a7e67
--- a/idlehomescreen/examples/mcsexample/src/MCSExampleAppView.cpp	Wed Sep 15 12:00:00 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,462 +0,0 @@
-/*
-* Copyright (c) 2010 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:
-*
-*/
-
-// INCLUDE FILES
-#include <coemain.h>
-#include <mcsmenuitem.h>
-#include <mcsmenuiconutility.h>
-#include <mcsdef.h>
-#include <akniconarray.h>
-#include <eikclbd.h>
-#include <eikedwin.h>
-
-#include <aknsconstants.h>
-#include <aknsconstants.hrh>
-
-#include <MCSExample_0xEB753B18.rsg>
-#include "MCSExampleAppView.h"
-#include "mcspluginwatcher.h"
-#include "MCSExample.hrh"
-
-_LIT( KMenuData, "matrixmenudata" );
-
-CMyForm::CMyForm( TMyData& aData ) : iData( aData )
-    {
-    }
-
-CMyForm::~CMyForm()
-    {
-    }
-        
-void CMyForm::PreLayoutDynInitL()
-    {
-    CAknForm::PreLayoutDynInitL();
-    LoadFormDataL();
-    }
-
-void CMyForm::LoadFormDataL()
-    {
-    CEikEdwin* textEd1 =
-        (CEikEdwin*)Control( EMyFirstLine );
-    textEd1->SetTextL( &iData.majorID );
-    
-    CEikEdwin* textEd2 =
-        (CEikEdwin*)Control( EMySecondLine );
-    textEd2->SetTextL( &iData.minorID );
-    
-    CEikEdwin* textEd3 =
-        (CEikEdwin*)Control( EMyThirdLine );
-    textEd3->SetTextL( &iData.iconFile );
-    
-    CEikEdwin* textEd4 =
-        (CEikEdwin*)Control( EMyFourthLine );
-    textEd4->SetTextL( &iData.iconID );
-    
-    CEikEdwin* textEd5 =
-        (CEikEdwin*)Control( EMyFifthLine );
-    textEd5->SetTextL( &iData.maskID );
-    
-    CEikEdwin* textEd6 =
-        (CEikEdwin*)Control( EMySixthLine );
-    textEd6->SetTextL( &iData.statusIcon );
-    }
-
-TBool CMyForm::SaveFormDataL()
-    {
-    CEikEdwin* textEd1 =
-        (CEikEdwin*)Control( EMyFirstLine );
-    textEd1->GetText( iData.majorID );
-    
-    CEikEdwin* textEd2 =
-        (CEikEdwin*)Control( EMySecondLine );
-    textEd2->GetText( iData.minorID );
-    
-    CEikEdwin* textEd3 =
-        (CEikEdwin*)Control( EMyThirdLine );
-    textEd3->GetText( iData.iconFile );
-    
-    CEikEdwin* textEd4 =
-        (CEikEdwin*)Control( EMyFourthLine );
-    textEd4->GetText( iData.iconID );
-    
-    CEikEdwin* textEd5 =
-        (CEikEdwin*)Control( EMyFifthLine );
-    textEd5->GetText( iData.maskID );
-    
-    CEikEdwin* textEd6 =
-        (CEikEdwin*)Control( EMySixthLine );
-    textEd6->GetText( iData.statusIcon );
-    return ETrue;
-    }
-
-void CMyForm::DoNotSaveFormDataL()
-    {
-    LoadFormDataL();
-    }
-
-TBool CMyForm::OkToExitL( TInt aButtonId )
-    {
-    if ( aButtonId  == EAknSoftkeyOk)
-        {
-        SaveFormDataL();
-        iData.updated = ETrue;
-        }
-    else if( aButtonId == EAknSoftkeyCancel )
-        {
-        iData.updated = EFalse;
-        }
-    return ETrue;
-    }
-
-CGulIcon* ConvertToGulIconLC( CAknIcon* aIcon )
-    {
-    CGulIcon* icon = CGulIcon::NewL( aIcon->Bitmap(), aIcon->Mask() );
-    CleanupStack::PushL( icon );
-    // Detach bitmap and mask
-    aIcon->SetBitmap( NULL );
-    aIcon->SetMask( NULL );
-    return icon;
-    }
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CMCSExampleAppView::NewL()
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CMCSExampleAppView* CMCSExampleAppView::NewL(const TRect& aRect)
-    {
-    CMCSExampleAppView* self = CMCSExampleAppView::NewLC(aRect);
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CMCSExampleAppView::NewLC()
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CMCSExampleAppView* CMCSExampleAppView::NewLC(const TRect& aRect)
-    {
-    CMCSExampleAppView* self = new (ELeave) CMCSExampleAppView;
-    CleanupStack::PushL(self);
-    self->ConstructL(aRect);
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CMCSExampleAppView::ConstructL()
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CMCSExampleAppView::ConstructL(const TRect& aRect)
-    {
-    // Create a window for this application view
-    CreateWindowL();
-
-    // Set the windows size
-    SetRect(aRect);
-
-    // Activate the window, which makes it ready to be drawn
-    ActivateL();
-    
-    iMCSMenu.OpenL( KMenuData );
-    iWatcher = CMCSExampleWatcher::NewL();
-    }
-
-// -----------------------------------------------------------------------------
-// CMCSExampleAppView::CMCSExampleAppView()
-// C++ default constructor can NOT contain any code, that might leave.
-// -----------------------------------------------------------------------------
-//
-CMCSExampleAppView::CMCSExampleAppView()
-    {
-    // No implementation required
-    }
-
-// -----------------------------------------------------------------------------
-// CMCSExampleAppView::~CMCSExampleAppView()
-// Destructor.
-// -----------------------------------------------------------------------------
-//
-CMCSExampleAppView::~CMCSExampleAppView()
-    {
-    iMCSMenu.Close();
-    delete iListBox;
-    iItemArray.Close();
-    delete iWatcher;
-    }
-
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-//
-void CMCSExampleAppView::ListAllItemsL()
-    {
-    
-
-    CArrayPtr<CGulIcon>* icons =new( ELeave ) CAknIconArray(1);
-    CleanupStack::PushL(icons);
-   
-    iListBox->Model()->SetItemTextArray(GetArrayL(icons));
-    iListBox->Model()->SetOwnershipType(ELbmOwnsItemArray);
-    //
-    // Inform the listbox of item additions. 
-    // This should be done if you want your items displayed correctly
-    iListBox ->HandleItemAdditionL();
- 
-    CleanupStack::Pop(icons);
-    CArrayPtr<CGulIcon>* oldArray = iListBox->ItemDrawer()->ColumnData()->IconArray();
-    delete oldArray;
-    iListBox->ItemDrawer()->ColumnData()->SetIconArray(icons);
-    }
-
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-//
-void CMCSExampleAppView::MakeListBoxL()
-    {
-    TInt MySetIndex(0);
- 
-    if(iListBox)
-    {
-        MySetIndex = iListBox->CurrentItemIndex();
-    }
- 
-    delete iListBox;
-    iListBox = NULL;
- 
-    iListBox = new( ELeave ) CAknSingleLargeStyleListBox();
-    iListBox->ConstructL(this,EAknListBoxSelectionList);
-    iListBox->SetListBoxObserver( this );
-    
-    iListBox->CreateScrollBarFrameL( ETrue );
-    iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(
-        CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto);
- 
-    iListBox->SetRect(Rect());
- 
-    iListBox->View()->SetListEmptyTextL(_L("No data"));
- 
-    iListBox->ActivateL();
- 
-    TInt ItemsCount = iListBox->Model()->ItemTextArray()->MdcaCount();
- 
-    if(ItemsCount > MySetIndex && MySetIndex >= 0)
-        iListBox->SetCurrentItemIndex(MySetIndex);
-    else if(ItemsCount > 0)
-        iListBox->SetCurrentItemIndex(0);
- 
-    UpdateScrollBar(iListBox);
-    iListBox->DrawNow();
-    }
-
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-//
-CDesCArray* CMCSExampleAppView::GetArrayL(CArrayPtr<CGulIcon>* aIcons)
-{   
-    TBuf<256> listString;
-    CDesCArrayFlat* myArray = new(ELeave)CDesCArrayFlat(1);
-    CleanupStack::PushL(myArray);
- 
-    const TInt rootId = iMCSMenu. RootFolderL();
-    iItemArray.Reset();
-    //CleanupClosePushL( itemArray );
-    // Get all the items from MCS
-    iMCSMenu.GetItemsL( iItemArray, rootId, NULL, ETrue );
-
-    for( TInt i = 0; i < iItemArray.Count(); i++ )
-        {
-        // Open the actual item
-        CMenuItem* menuItem = CMenuItem::OpenL( iMCSMenu, iItemArray[i] );
-        CleanupStack::PushL( menuItem );
-        
-        // Get the name of the item
-        TBool attrExists( EFalse );
-        TPtrC attr = menuItem->GetAttributeL(_L("short_name" ), attrExists );
-
-        //Create listbox string
-        listString.Delete(0, 256);
-        listString.AppendNum( i );
-        listString.Append( _L("\t"));
-        listString.Append( attr );
-        myArray->AppendL( listString );
-        
-        //Fetch the item icon from MCS
-        CAknIcon* icon = MenuIconUtility::GetItemIconL( *menuItem );
-        CleanupStack::PushL( icon );
-        if ( icon )
-            {
-            CGulIcon* gIcon = ConvertToGulIconLC( icon );
-            aIcons->AppendL( gIcon );
-            CleanupStack::Pop( gIcon );
-            }
-        CleanupStack::PopAndDestroy( icon );
-        CleanupStack::PopAndDestroy( menuItem );
-        } 
-    CleanupStack::Pop(myArray);
-    return myArray;
-}
-
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-//
-void CMCSExampleAppView::UpdateScrollBar(CEikListBox* aListBox)
-    {
-    if (aListBox)
-        {   
-        TInt pos(aListBox->View()->CurrentItemIndex());
-        if (aListBox->ScrollBarFrame())
-            {
-            aListBox->ScrollBarFrame()->MoveVertThumbTo(pos);
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CMCSExampleAppView::Draw()
-// Draws the display.
-// -----------------------------------------------------------------------------
-//
-void CMCSExampleAppView::Draw(const TRect& /*aRect*/) const
-    {
-    // Get the standard graphics context
-    CWindowGc& gc = SystemGc();
-
-    // Gets the control's extent
-    TRect drawRect(Rect());
-
-    // Clears the screen
-    gc.Clear(drawRect);
-
-    }
-
-// -----------------------------------------------------------------------------
-// CMCSExampleAppView::SizeChanged()
-// Called by framework when the view size is changed.
-// -----------------------------------------------------------------------------
-//
-void CMCSExampleAppView::SizeChanged()
-    {
-    TRAP_IGNORE( MakeListBoxL() );
-    DrawNow();
-    }
-
-// -----------------------------------------------------------------------------
-// CMCSExampleAppView::HandlePointerEventL()
-// Called by framework to handle pointer touch events.
-// Note: although this method is compatible with earlier SDKs, 
-// it will not be called in SDKs without Touch support.
-// -----------------------------------------------------------------------------
-//
-void CMCSExampleAppView::HandlePointerEventL(
-        const TPointerEvent& aPointerEvent)
-    {
-
-    // Call base class HandlePointerEventL()
-    CCoeControl::HandlePointerEventL(aPointerEvent);
-    }
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-void CMCSExampleAppView::HandleListBoxEventL( CEikListBox* /*aListBox*/, TListBoxEvent aEventType )
-    {
-    if( iListBox && aEventType == EEventItemSingleClicked )
-        {
-        TInt index = iListBox->CurrentItemIndex();
-        if( index < iItemArray.Count())
-            {
-            ShowFormL( index );
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-void CMCSExampleAppView::ShowFormL( TInt aItemIndex)
-    {
-    CMenuItem* menuItem = CMenuItem::OpenL( iMCSMenu, iItemArray[aItemIndex] );
-    CleanupStack::PushL( menuItem );
-    TBool attrExists( EFalse );
-    TPtrC attr = menuItem->GetAttributeL(_L("short_name" ), attrExists );
-    // Initialize  form data.
-    TBool exists( EFalse );;
-    TMyData myData;
-    myData.majorID = menuItem->GetAttributeL( KMenuAttrIconSkinMajorId, exists );
-    myData.minorID = menuItem->GetAttributeL( KMenuAttrIconSkinMinorId, exists );
-    myData.iconFile = menuItem->GetAttributeL( KMenuAttrIconFile, exists );
-    myData.iconID = menuItem->GetAttributeL( KMenuAttrIconId, exists );
-    myData.maskID = menuItem->GetAttributeL( KMenuAttrMaskId, exists );
-    // e.g. skin(0x101F86E3 0x1ee2)
-    myData.statusIcon = menuItem->GetAttributeL( _L("presenceicon"), exists );
-    myData.updated = EFalse;
-
-    // Launch the dialog to view/edit data
-    CAknForm* dlg = new ( ELeave ) CMyForm( myData );
-    CleanupStack::PushL( dlg );
-    dlg->ConstructL( 0 ); // default menu items only
-    CleanupStack::Pop( dlg );
-    dlg->ExecuteLD( R_ICON_QUERY_DIALOG );
-    // myData now contains the edited values.
-
-    if( myData.updated )
-        {
-        // Changes the main icon, if all values are empty then application icon is used.
-        // Piority 0
-        menuItem->SetAttributeL(KMenuAttrIconSkinMajorId, myData.majorID );
-        menuItem->SetAttributeL(KMenuAttrIconSkinMinorId, myData.minorID );
-        // Pririty 1
-        menuItem->SetAttributeL(KMenuAttrIconFile, myData.iconFile );
-        menuItem->SetAttributeL(KMenuAttrIconId, myData.iconID );
-        menuItem->SetAttributeL(KMenuAttrMaskId, myData.maskID );
-        //Changes the presence icon
-        menuItem->SetAttributeL( _L("presenceicon"), myData.statusIcon );
-                
-        CMenuOperation* operation = menuItem->SaveL( iWatcher->iStatus );
-        // Deletes the operation after its completion
-        iWatcher->Watch( operation, this );
-        }
-    CleanupStack::PopAndDestroy( menuItem );
-    }
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-CCoeControl* CMCSExampleAppView::ComponentControl( TInt /*aIndex*/) const
-{
-    return iListBox;
-}
- 
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-TInt CMCSExampleAppView::CountComponentControls() const
-{   
-    if(iListBox)
-        return 1;
-    else
-        return 0;
-}
-// End of File