cbs/cbsui/UiSrc/CCbsUiAddFromIndexDialog.cpp
branchRCL_3
changeset 19 7d48bed6ce0c
parent 18 594d59766373
child 20 987c9837762f
--- a/cbs/cbsui/UiSrc/CCbsUiAddFromIndexDialog.cpp	Thu Aug 19 10:28:14 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,321 +0,0 @@
-/*
-* 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:  Dialog which shows topics, which are not yet in 
-*               the topic list view. Enables topics adding manually.
-*
-*
-*/
-
-
-// INCLUDES
-#include <barsread.h>
-#include <gulicon.h>
-#include <eikclbd.h>
-#include <eikspane.h>
-#include <aknnavide.h>
-#include <akntitle.h>
-#include <avkon.hrh>
-#include <aknnotewrappers.h>
-#include <cbsuiApp.rsg>
-#include <aknlists.h>
-#include <AknIconArray.h>
-#include "CCbsUiAddFromIndexDialog.h"
-#include "Cbsuiapp.hrh"
-#include "CbsUiPanic.h"
-#include "MCbs.h"
-
-// CONSTANTS        
-const TInt KAssumedAverageOfItems = 5;
-const TInt KNumberOfIconsInAddFromIndexDialog = 4;
-_LIT(KCbsIconListSeparator, "1\t");
-_LIT(KCbsColumnListSeparator, " ");
-
-// if the aTopicInfo.iNumber is shorter than KWidth,
-// this character will be used to fill empty spaces.
-const TUint KZeroFill = '0'; 
-
-
-
-
-// ================= MEMBER FUNCTIONS =======================
-// C++ default constructor can NOT contain any code, that
-// might leave.
-//
-CCbsUiAddFromIndexDialog::CCbsUiAddFromIndexDialog( MCbs& aServer ) : 
-iServer(aServer)
-    {
-    }
-
-// Destructor  
-CCbsUiAddFromIndexDialog::~CCbsUiAddFromIndexDialog()
-    {
-    delete iHandles;  
-    delete iNaviDecorator;
-    }
-
-//-----------------------------------------------------------------------------
-//
-//    CCbsUiAddFromIndexDialog::PreLayoutDynInitL()
-//
-//    Sets the choices to controls in AddFromIndexdialog
-//
-//-----------------------------------------------------------------------------
-void CCbsUiAddFromIndexDialog::PreLayoutDynInitL()
-    {
-    CEikDialog::PreLayoutDynInitL();
-    
-    CAknNavigationControlContainer* naviPane = 
-        STATIC_CAST( CAknNavigationControlContainer*, 
-        iEikonEnv->AppUiFactory()->StatusPane()->ControlL(
-        TUid::Uid( EEikStatusPaneUidNavi) ) );
-    
-    __ASSERT_DEBUG( naviPane, CbsUiPanic( ENaviPaneError ) );
-    
-    TResourceReader reader;
-    iCoeEnv->CreateResourceReaderLC( reader, R_QTN_CB_AD_SEL_TOP );
-    
-    delete iNaviDecorator;
-    iNaviDecorator = NULL;
-    
-    iNaviDecorator = naviPane->
-        ConstructNavigationDecoratorFromResourceL( reader );
-    
-    __ASSERT_DEBUG( iNaviDecorator, CbsUiPanic( ENaviDecoratorError ) );
-    
-    naviPane->PushL( *iNaviDecorator );
-    CleanupStack::PopAndDestroy();      
-    
-    iListBox = STATIC_CAST(
-        CAknSingleGraphicStyleListBox*, Control(ECbsUiAddFromIndexDlgLine) );
-    
-    __ASSERT_DEBUG( iListBox, CbsUiPanic( EListBoxInDialogError ) );
-    
-    SetIconsL();
-    SetTopicsL();
-    
-    // Scrollbar
-    iListBox->CreateScrollBarFrameL(ETrue);
-    iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto);
-    
-    // order has to be this; otherwise on error add from index title pane
-    // remains.
-    CreateAddFromIndexTitlePaneL();
-    
-    MEikAppUiFactory* appUiFactory = iEikonEnv->AppUiFactory();
-    TRect rect = appUiFactory->ClientRect();
-    iListBox->SetRect( rect );    
-    }
-
-//-----------------------------------------------------------------------------
-//
-//    CCbsUiAddFromIndexDialog::OkToExitL()
-//
-//    Handles keyevents. In case "Softkey OK" it
-//    add selected topics using member function addtopic
-//
-//-----------------------------------------------------------------------------
-TBool CCbsUiAddFromIndexDialog::OkToExitL( TInt aKeycode )
-    {            
-    TBool result( EFalse );
-    switch ( aKeycode )
-        {
-        case EAknSoftkeyOk:
-            {
-            const CListBoxView::CSelectionIndexArray* selArray = 
-            iListBox->SelectionIndexes();
-        
-            if ( selArray )
-                {
-                // Initialize the marked contact id array using selArray
-                TInt count( selArray->Count() );
-                TInt ret( KErrNone );
-                for ( TInt i = 0; i < count && ret == KErrNone; ++i )
-                    {
-                    const TInt selIndex( (*selArray)[i] );
-                    ret = AddTopicL( iHandles->At(selIndex) );
-                    }
-                }
-            // Ok to exit, dialog is also removed from the stack
-            result = ETrue;
-            iEikonEnv->RemoveFromStack( this );
-            break;
-            }
-        // If Mark or Unmark is pressed, the dialog must not exit.
-        // Dialog must also stay in stack.
-        case EAknSoftkeyMark:            
-        case EAknSoftkeyUnmark:
-            {
-            result = EFalse;
-            break;
-            }
-        default:
-            break;
-        }           
-            
-    return result;
-    }
-
-
-//-----------------------------------------------------------------------------
-//
-//    CCbsUiAddFromIndexDialog::GetIndexNumber()
-//
-//    Parses Indexnumber from topic info. Is used by
-//    SetTopics-member function.
-//
-//-----------------------------------------------------------------------------
-void CCbsUiAddFromIndexDialog::GetIndexNumber( const TCbsTopicInfo& aTopicInfo , 
-                                              TBuf<KTopicNumberWidth>& aIndexNumber ) const
-    {	    
-    TBuf<KTopicNumberWidth> ind;
-    ind.AppendNum( TInt(aTopicInfo.iNumber) );
-    aIndexNumber.Justify(ind , KTopicNumberWidth, ERight, KZeroFill);
-    }
-
-//-----------------------------------------------------------------------------
-//
-//    CCbsUiAddFromIndexDialog::AddTopicL()
-//
-// 
-//
-//-----------------------------------------------------------------------------
-TInt CCbsUiAddFromIndexDialog::AddTopicL( const TCbsTopicInfo aTopicInfo )
-    {
-    TCbsTopic topic;
-    
-    topic.iHotmarked = EFalse;
-    topic.iName = aTopicInfo.iName;
-    topic.iNumber = aTopicInfo.iNumber;
-    topic.iProtected = EFalse;
-    topic.iSavedMessages = 0;
-    topic.iUnreadMessages = 0;
-    topic.iSubscribed = 0;
-    
-    TInt ret( iServer.AddTopic(topic) );
-    
-    switch ( ret )
-        {
-        case KErrNone:
-            // ok, do nothing
-            break;
-        case KErrAlreadyExists: // same handling
-        case KErrArgument:      // same handling
-            // after this error still tryes to append other items if exists
-            ret = KErrNone;
-            break;
-        default:
-            User::LeaveIfError(ret);
-            break;
-        }
-    
-    return ret;
-    } 
-
-//-----------------------------------------------------------------------------
-//
-//    CCbsUiAddFromIndexDialog::SetIconsL()
-//
-//    Sets the multiselction box-images.
-//
-//-----------------------------------------------------------------------------
-void CCbsUiAddFromIndexDialog::SetIconsL() const
-    {
-    CAknIconArray* icons = new (ELeave) 
-        CAknIconArray(KNumberOfIconsInAddFromIndexDialog);
-    
-    CleanupStack::PushL(icons);
-    icons->ConstructFromResourceL(R_CHECKBOX_ICONS);
-    CleanupStack::Pop(); // icons
-    
-    iListBox->ItemDrawer()->ColumnData()->SetIconArray(icons);
-    }
-
-//-----------------------------------------------------------------------------
-//
-//    CCbsUiAddFromIndexDialog::SetTopicsL()
-//
-//
-//-----------------------------------------------------------------------------
-void CCbsUiAddFromIndexDialog::SetTopicsL()
-    {
-    TCbsTopicInfo topicinfo;    
-    
-    iServer.StartCollectionBrowsing();
-    
-    iHandles = new (ELeave) TCbsTopicInfoHandleList(KAssumedAverageOfItems);
-    
-    __ASSERT_DEBUG( iHandles, CbsUiPanic( ETopicHandleError ) );
-    
-    iHandles->Reset();
-    TInt err(KErrNone);
-    
-    while( iServer.HasNextCollectionTopic() && err == KErrNone )
-        {
-        err = iServer.NextCollectionTopic(topicinfo);
-        if ( err == KErrNone )
-            {
-            MDesCArray* itemList = iListBox->Model()->ItemTextArray();
-            CDesCArray* itemArray = STATIC_CAST(CDesCArray*, itemList);
-            
-            TBuf<KTopicNumberWidth> index;
-            GetIndexNumber( topicinfo, index );
-            
-            HBufC* buffer = HBufC::NewMaxLC(
-                KCbsIconListSeparator().Length() + index.Length() + 
-                KCbsColumnListSeparator().Length() + topicinfo.iName.Length() );
-            
-            TPtr ptr = buffer->Des();
-            
-            ptr = KCbsIconListSeparator;
-            ptr.Append(index);
-            ptr.Append(KCbsColumnListSeparator);
-            ptr.Append(topicinfo.iName);
-            
-            itemArray->AppendL(*buffer);	
-            iHandles->AppendL(topicinfo);
-            CleanupStack::PopAndDestroy();  // buffer
-            }
-        }
-    
-    iListBox->HandleItemAdditionL();
-    if ( iListBox->Model()->NumberOfItems() == 0 )
-        {
-        // No warning, but we can close the dialog
-        User::Leave(KErrNone);
-        }
-    }
-
-//-----------------------------------------------------------------------------
-//
-//    CCbsUiAddFromIndexDialog::CreateAddFromIndexTitlePaneL()
-//
-//
-//-----------------------------------------------------------------------------
-void CCbsUiAddFromIndexDialog::CreateAddFromIndexTitlePaneL() const
-    {
-    CEikStatusPane* sp = STATIC_CAST( CAknAppUi*, CEikonEnv::Static()->
-        EikAppUi() )->StatusPane();
-    
-    CAknTitlePane* title = STATIC_CAST(CAknTitlePane*, sp->
-        ControlL( TUid::Uid(EEikStatusPaneUidTitle) ));
-    
-    __ASSERT_DEBUG( sp && title, CbsUiPanic( EStatusOrTitlePaneError ) );
-    
-    TResourceReader titlereader;
-    iCoeEnv->CreateResourceReaderLC( titlereader, R_QTN_CB_TITLE_ADD_TOPICS );
-    title->SetFromResourceL( titlereader );
-    CleanupStack::PopAndDestroy();  // resource title
-    }
-
-//  End of File