📄 sabberrosterview.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 + -