⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sabberrosterview.cpp

📁 Simple Jabber Client for Symbian Platform
💻 CPP
字号:
/*
* ============================================================================
*  Name     : CSabberRosterView from SabberRosterView.h
*  Part of  : Sabber
*  Created  : 2004-12-9 by Xie Tian Lu
*  Implementation notes:
*     Initial content was generated by Series 60 AppWizard.
*  Version  : 0.1
*  Copyright: (c) Xie Tian Lu Http://sabber.jabberstudio.org/
* ============================================================================
*/

// INCLUDE FILES
#include  <aknviewappui.h>
#include  <avkon.hrh>
#include  <Sabber.rsg>
#include  "Sabber.hrh"
#include  "SabberRosterView.h"
#include  "SabberRosterContainer.h" 
#include  "SettingListbox.h"
#include  "RosterModel.h"
#include  "SabberAppUi.h"
#include  "SabberMessageView.h"

#define M_RETRIVE_APPUI( ui )		CSabberAppUi* ##ui = ( CSabberAppUi* )AppUi()

// ================= MEMBER FUNCTIONS =======================

// ---------------------------------------------------------
// CSabberRosterView::ConstructL(const TRect& aRect)
// EPOC two-phased constructor
// ---------------------------------------------------------
//
void CSabberRosterView::ConstructL()
    {
    BaseConstructL( R_SABBER_ROSTER_VIEW );
	iRosterModel = new CRosterModel();
	iRosterModel->ConstructL();

    }

// ---------------------------------------------------------
// CSabberRosterView::~CSabberRosterView()
// ?implementation_description
// ---------------------------------------------------------
//
CSabberRosterView::~CSabberRosterView()
    {
    if ( iContainer )
        {
        AppUi()->RemoveFromViewStack( *this, iContainer );
        }
	else 
		{
		delete iRosterModel;
		}

	delete iSettingListBox;
    delete iContainer;
    }

// ---------------------------------------------------------
// TUid CSabberRosterView::Id()
// ?implementation_description
// ---------------------------------------------------------
//
TUid CSabberRosterView::Id() const
    {
    return KViewId;
    }

// ---------------------------------------------------------
// CSabberRosterView::HandleCommandL(TInt aCommand)
// ?implementation_description
// ---------------------------------------------------------
//
void CSabberRosterView::HandleCommandL(TInt aCommand)
    {   
    switch ( aCommand )
        {
		case ECbaCompose:
			{
			char jid[ 128 ]; // = "xietianlu@jabber.org";
			if ( RetrieveReceiptor( jid ) ) {
				M_RETRIVE_APPUI( ui );
				CSabberMessageView* mView = ui->iMessageView;
				mView->SetReceiptor( jid );
				mView->PrepareComposing();
				ui->ActivateView( 1 );
			}
			}
		break;

		case ESabberSetting:
			if ( iActiveContainer ) {
				SwapContainerL(EFalse);
				SetConfiguration();
			}
		break; 

        case EAknSoftkeyBack:
            {
				if ( iActiveContainer ) {
					AppUi()->HandleCommandL(EEikCmdExit);
				} else {
					SwapContainerL( ETrue );
					MenuBar()->SetMenuTitleResourceId( R_SABBER_ROSTER_MENUBAR );
				}
            break;
            }
        default:
            {
            AppUi()->HandleCommandL( aCommand );
            break;
            }
        }
    }

// ---------------------------------------------------------
// CSabberRosterView::HandleClientRectChange()
// ---------------------------------------------------------
//
void CSabberRosterView::HandleClientRectChange()
    {
    if ( iContainer )
        {
        iContainer->SetRect( ClientRect() );
        }
    }

// ---------------------------------------------------------
// CSabberRosterView::DoActivateL(...)
// ?implementation_description
// ---------------------------------------------------------
//
void CSabberRosterView::DoActivateL(
   const TVwsViewId& /*aPrevViewId*/,TUid /*aCustomMessageId*/,
   const TDesC8& /*aCustomMessage*/)
    {
    if (!iContainer)
        {
		M_RETRIVE_APPUI( ui );
		if ( iRosterModel->NumberOfItems() == 0 )
		{
			/*
			CRosterItem* item;
			item = CRosterItem::CreateRosterItem( 
									"luoyizhou@jabber.org", 
									"luoyizhou", 
									"Unfiled", EJabberUser );
			item->SetIconSet( ui->iIconSet );
			iRosterModel->AddItem( item );

			item = CRosterItem::CreateRosterItem( 
									"fengying@jabber.org", 
									"fengying", 
									"Unfiled", EJabberUser );
			item->SetIconSet( ui->iIconSet );
			iRosterModel->AddItem( item );
			*/
		}

        iContainer = new (ELeave) CSabberRosterContainer;
		iContainer->SetListBoxFont( iFont );
		iContainer->SetListBoxModel( iRosterModel );
		iContainer->SetAppUi( ui );
        iContainer->SetMopParent(this);
        iContainer->ConstructL( ClientRect() );

		iSettingListBox = new (ELeave) CSettingListbox;
		iSettingListBox->SetData(iSettingData);
		iSettingListBox->SetMopParent(this);
		iSettingListBox->ConstructFromResourceL( R_SABBER_SETTING_LIST );
        } 

   AppUi()->AddToStackL( *this, iContainer );
   iContainer->MakeVisible( ETrue );
   iActiveContainer = ETrue;
   }

// ---------------------------------------------------------
// CSabberRosterView::HandleCommandL(TInt aCommand)
// ?implementation_description
// ---------------------------------------------------------
//
void CSabberRosterView::DoDeactivate()
    {
    if ( iContainer )
        {
        AppUi()->RemoveFromViewStack( *this, iContainer );
        }
    
    iContainer->MakeVisible( EFalse );
	iActiveContainer = EFalse;
    }


void CSabberRosterView::DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane)
{
	if ( aResourceId == R_SABBER_ROSTER_VIEW_MENU )
	{
		aMenuPane->SetItemDimmed( ESabberLogon,  EFalse );
		aMenuPane->SetItemDimmed( ESabberLogoff, EFalse );
		aMenuPane->SetItemDimmed( ESabberState,  EFalse );
		
		M_RETRIVE_APPUI( ui );
		if ( ui->GetCurState() == CON_STATE_OFF ) {
			aMenuPane->SetItemDimmed( ESabberLogoff, ETrue );
		} else {
			aMenuPane->SetItemDimmed( ESabberLogon, ETrue );
		}
		if ( ui->GetCurState() != CON_STATE_LOGGED_IN )
			aMenuPane->SetItemDimmed( ESabberState,  ETrue );
	}
}

void CSabberRosterView::Update()
{
	if ( iContainer ) {
		iContainer->Update();
		iContainer->DrawNow();
	}
}


CRosterModel* CSabberRosterView::GetRosterModel()
{
	return iRosterModel;
}

void CSabberRosterView::SetSettingData( CSettingData* data ) 
{
	iSettingData = data;
}

void CSabberRosterView::SwapContainerL( TBool aActiveContainer )
{
	if ( iActiveContainer == aActiveContainer)
		return;

	if ( aActiveContainer )
	{
		AppUi()->RemoveFromStack( iSettingListBox );
		iSettingListBox->MakeVisible( EFalse );
		iSettingListBox->StoreSettingsL();
		iSettingListBox->RetrieveIapId();

		iContainer->MakeVisible( ETrue );
		AppUi()->AddToStackL( *this, iContainer );
		Cba()->SetCommandSetL( R_ROSTER_CBA );
		Cba()->DrawDeferred(); 
	}
	else
	{
		iContainer->MakeVisible( EFalse );
		AppUi()->RemoveFromStack( iContainer );
		Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_SELECTION_LIST ); 
		Cba()->DrawDeferred(); 
	}

	iActiveContainer = aActiveContainer;
}

void CSabberRosterView::SetConfiguration()
{
	AppUi()->AddToStackL( *this, iSettingListBox );
	iSettingListBox->MakeVisible(ETrue);
	iSettingListBox->SetRect(ClientRect());
	iSettingListBox->ActivateL();
	iSettingListBox->DrawNow();

	MenuBar()->SetMenuTitleResourceId(R_MENUBAR_SETTINGLIST );
}

void CSabberRosterView::SetFont( CFont* aFont )
{
	iFont = aFont;
}

TBool CSabberRosterView::RetrieveReceiptor( char* jid )
{
	iContainer->GetCurItemJid( jid );
	if ( strstr( jid, "@" ) )
		return ETrue;

	return EFalse;
}

// End of File

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -