📄 sabbermessageview.cpp
字号:
/*
* ============================================================================
* Name : CSabberMessageView from SabberMessageView.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 <eikbtgpc.h>
#include <eikmenub.h>
#include <avkon.hrh>
#include <Sabber.rsg>
#include "Sabber.hrh"
#include "SabberMessageView.h"
#include "SabberMessageContainer.h"
#include "MessageModel.h"
#include "SabberAppUi.h"
#define M_RETRIVE_APPUI( ui ) CSabberAppUi* ##ui = ( CSabberAppUi* )AppUi()
// ================= MEMBER FUNCTIONS =======================
// ---------------------------------------------------------
// CSabberMessageView::ConstructL(const TRect& aRect)
// EPOC two-phased constructor
// ---------------------------------------------------------
//
void CSabberMessageView::ConstructL()
{
BaseConstructL( R_SABBER_MESSAGE_VIEW );
iModel = new CMessageModel();
iModel->ConstructL();
iBeToCompose = EFalse;
iBeToSwitchView = EFalse;
}
// ---------------------------------------------------------
// CSabberMessageView::~CSabberMessageView()
// ?implementation_description
// ---------------------------------------------------------
//
CSabberMessageView::~CSabberMessageView()
{
if ( iContainer )
{
AppUi()->RemoveFromViewStack( *this, iContainer );
}
else
{
delete iModel;
}
delete iContainer;
}
// ---------------------------------------------------------
// TUid CSabberMessageView::Id()
// ?implementation_description
// ---------------------------------------------------------
//
TUid CSabberMessageView::Id() const
{
return KView2Id;
}
// ---------------------------------------------------------
// CSabberMessageView::HandleCommandL(TInt aCommand)
// ?implementation_description
// ---------------------------------------------------------
//
void CSabberMessageView::HandleCommandL(TInt aCommand)
{
M_RETRIVE_APPUI( ui );
switch ( aCommand )
{
case ECbaReply:
case ECmdMsgReply:
{
if ( RetrieveReceiptor() ) {
iBeToSwitchView = EFalse;
ComposeMessage();
}
break;
}
case ECbaSend:
if ( iContainer->GetTextEditorContent( iBody ) )
ui->SendMsg( iBody, iDest );
EndComposeMessage();
break;
case ECbaBack:
EndComposeMessage();
break;
case ECmdMsgDetail:
if ( iContainer->PopupViewer() ) {
Cba()->SetCommandSetL( R_VIEWER_CBA );
Cba()->DrawDeferred();
}
break;
case ECbaViewerBack:
iContainer->PopoffViewer();
Cba()->SetCommandSetL( R_MESSAGE_CBA );
Cba()->DrawDeferred();
MenuBar()->SetMenuTitleResourceId( R_SABBER_MESSAGE_MENUBAR );
break;
case ECbaViewerReply:
iContainer->PopoffViewer();
Cba()->SetCommandSetL( R_MESSAGE_CBA );
Cba()->DrawDeferred();
MenuBar()->SetMenuTitleResourceId( R_SABBER_MESSAGE_MENUBAR );
if ( RetrieveReceiptor() ) {
iBeToSwitchView = EFalse;
ComposeMessage();
}
break;
case ECmdMsgDelete:
break;
case EAknSoftkeyBack:
{
AppUi()->HandleCommandL(EEikCmdExit);
break;
}
default:
{
AppUi()->HandleCommandL( aCommand );
break;
}
}
}
// ---------------------------------------------------------
// CSabberMessageView::HandleClientRectChange()
// ---------------------------------------------------------
//
void CSabberMessageView::HandleClientRectChange()
{
if ( iContainer )
{
iContainer->SetRect( ClientRect() );
}
}
// ---------------------------------------------------------
// CSabberMessageView::DoActivateL(...)
// ?implementation_description
// ---------------------------------------------------------
//
void CSabberMessageView::DoActivateL(
const TVwsViewId& /*aPrevViewId*/,TUid /*aCustomMessageId*/,
const TDesC8& /*aCustomMessage*/)
{
if (!iContainer)
{
M_RETRIVE_APPUI( ui );
if ( iModel->NumberOfItems() == 0 )
{
TBuf< 32 > stamp;
ui->GetTimeStamp( stamp );
CMessageItem* item;
item = CMessageItem::CreateMessageItem(
"xietianlu@jabber.org",
"you",
"Hello, Welcome to Sabber!",
ETrue );
item->SetIconSet( ui->iIconSet );
item->SetTimeStamp( stamp );
iModel->AddItem( item );
item = CMessageItem::CreateMessageItem(
"luoyizhou@jabber.org",
"you",
"Have fun on Sabber!",
EFalse );
item->SetIconSet( ui->iIconSet );
item->SetTimeStamp( stamp );
iModel->AddItem( item );
}
//iContainer->iMessageViewer->SetF
iContainer = new (ELeave) CSabberMessageContainer;
iContainer->SetMopParent(this);
iContainer->SetListBoxFont( iFont );
iContainer->SetListBoxModel( iModel );
iContainer->SetAppUi( ui );
iContainer->ConstructL( ClientRect() );
}
AppUi()->AddToStackL( *this, iContainer );
iContainer->MakeVisible( ETrue );
if ( iBeToCompose )
ComposeMessage();
}
// ---------------------------------------------------------
// CSabberMessageView::HandleCommandL(TInt aCommand)
// ?implementation_description
// ---------------------------------------------------------
//
void CSabberMessageView::DoDeactivate()
{
if ( iContainer )
{
AppUi()->RemoveFromViewStack( *this, iContainer );
}
iContainer->MakeVisible( EFalse );
//delete iContainer;
//iContainer = NULL;
}
void CSabberMessageView::Update()
{
if ( iContainer ) {
iContainer->Update();
iContainer->DrawNow();
}
}
CMessageModel* CSabberMessageView::GetMessageModel()
{
return iModel;
}
void CSabberMessageView::SetFont( CFont* aFont )
{
iFont = aFont;
}
TBool CSabberMessageView::RetrieveReceiptor()
{
iContainer->GetCurItemDest( iDest );
if ( strstr( iDest, "@" ) )
return ETrue;
return EFalse;
}
void CSabberMessageView::SetReceiptor( char* jid )
{
strcpy( iDest, jid );
}
void CSabberMessageView::PrepareComposing()
{
iBeToCompose = ETrue;
iBeToSwitchView = ETrue;
}
void CSabberMessageView::ComposeMessage()
{
iContainer->PopupEditorbox();
Cba()->SetCommandSetL( R_EDITOR_CBA );
Cba()->DrawDeferred();
iBeToCompose = EFalse;
}
void CSabberMessageView::EndComposeMessage()
{
iContainer->PopoffEditorbox();
Cba()->SetCommandSetL( R_MESSAGE_CBA );
Cba()->DrawDeferred();
MenuBar()->SetMenuTitleResourceId( R_SABBER_MESSAGE_MENUBAR );
if ( iBeToSwitchView ) {
M_RETRIVE_APPUI( ui );
iBeToSwitchView = EFalse;
ui->ActivateView( 0 );
}
}
// End of File
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -