📄 m3uiq2appview.cpp
字号:
/*
* Copyright (c) 2007,苏州丰达
* All rights reserved.
* 版权所有(C)2007-2008 苏州丰达
* 公司地址:中国,江苏省苏州市
* 网址:http://www.
*
* 文件名称:CM3UIQ2AppUi.cpp
* 摘 要:
*
* 产品版本:彩视 1.0
*
* 作 者:xxxx
* 创建日期:xxxxx
* 负责人:xxxxx
*
* 修改者:司治国
* 修改日期:2008.1.17
*
* 编译器或环境等描述:uiqsdk2.1
* 适用于VC2003+symbian 7.x的环境开发。
*
**/
#include <e32std.h>
#include <eiktxlbm.h>
#include <eikclbd.h>
#include <apmstd.h>
#include <QWebExternalInterface.h>
#include <m3upload.mbg>
#include <eikon.rsg>
#include <M3UIQ2.rsg>
#include <uikon.hrh>
#include <eikmenup.h>
#include <qikon.hrh>
#include <eikenv.h>
#include <qikcategorymodel.h>
#include <qikdocument.h>
#include <QWebExternalInterface.h>
#include "CMessageEngine.h"
#include "M3UIQ2App.h"
#include "M3UIQ2.hrh"
#include "M3UIQ2AppView.h"
#include "M3UIQ2Active.h"
_LIT(KMessage, "Item #%d is clicked");
_LIT(KIconFileName, "z:\\system\\data\\eikon.mbm");
_LIT(KMultiBitmapFilename, "\\system\\apps\\m3uiq2\\m3upload.mbm");
/**
* 二步构造
* @ param aRect 显示区域
**/
void CM3UIQ2AppView::ConstructL(const TRect &aRect)
{
CreateWindowL();
iScenId = 1;
iStgId = 0;
iCpBitmap = iEikonEnv->CreateBitmapL(KMultiBitmapFilename, EMbmM3uploadLogo);
iBgBitmap = iEikonEnv->CreateBitmapL(KMultiBitmapFilename, EMbmM3uploadBack);
iShowBg = false;
SetRect(aRect);
MakeVisible(EFalse);
SetComponentsToInheritVisibility();
ActivateL();
iActive = CM3UIQ2Active::NewL(this);
iActive->StartL(10000);
}
/**
* 析构函数
**/
CM3UIQ2AppView::~CM3UIQ2AppView()
{
delete iCpBitmap;
delete iBgBitmap;
delete iListBox;
delete iActive;
iActive = NULL;
}
/**
* 区域改变
**/
void CM3UIQ2AppView::SizeChanged()
{
if (iListBox)
{
iListBox->SetRect(Rect());
}
}
/**
* 组件个数
* @Return 组件个数
**/
TInt CM3UIQ2AppView::CountComponentControls() const
{
if (iListBox)
{
return 1;
}
return 0;
}
CCoeControl * CM3UIQ2AppView::ComponentControl(TInt aIndex) const
{
switch (aIndex)
{
case 0:
return iIsReadly ? iListBox : NULL;
default:
return NULL;
}
}
/**
* 绘制方法
**/
void CM3UIQ2AppView::Draw(const TRect &aRect) const
{
CWindowGc &gc = SystemGc();
gc.Clear(); // clear the area to be drawn to
SystemGc().DrawRect(Rect()); // surrounding rectangle to draw into
TInt xDelta=0; // for x coordinates
TInt yDelta=0; // for y coordinates
TRect screenRect=Rect();
TPoint pos=TPoint(xDelta, yDelta); // displacement vector
if (!iIsReadly)
{
//pos += leftRect.iTl; // bitmap piece top left corner position
gc.DrawBitmap(screenRect, iCpBitmap);
gc.DrawBitmap(screenRect, iBgBitmap);
}
}
TKeyResponse CM3UIQ2AppView::OfferKeyEventL(const TKeyEvent &aKeyEvent, TEventCode aType)
{
return iListBox->OfferKeyEventL(aKeyEvent, aType);
}
/**
* 事件处理方法
**/
void CM3UIQ2AppView::HandleListBoxEventL(CEikListBox *aListBox, TListBoxEvent aEventType)
{
if ((MEikListBoxObserver::EEventEnterKeyPressed == aEventType) ||
(MEikListBoxObserver::EEventItemClicked == aEventType))
{
if (iScenId == 1)
{
TInt currentItemIndex(iListBox->CurrentItemIndex());
switch (currentItemIndex)
{
case 0://发送
{
CDesCArray* textArray = new(ELeave) CDesCArrayFlat(4);
CleanupStack::PushL(textArray);
_LIT(kText, "text");
_LIT(KImage, "image");
_LIT(KAudio, "audio");
_LIT(KVideo, "video");
textArray->AppendL(kText);
textArray->AppendL(KImage);
textArray->AppendL(KAudio);
textArray->AppendL(KVideo);
TDesC* title = iCoeEnv->AllocReadResourceLC(R_STR_DIALOG_TITLE);
TFileName fullPath;
if(CQikSelectMediaFileDlg::RunDlgLD(*textArray, fullPath, title))
{
if(fullPath.Length())
{
//暂时先注掉,自定义发送
CM3UIQ2AppUi *iAppUi = STATIC_CAST(CM3UIQ2AppUi *, iEikonEnv->EikAppUi());
iAppUi->SwitchViewL(ESEND_VIEW);
iAppUi->GetCM3UIQSendView()->SetFile(&fullPath);
}
}
CleanupStack::PopAndDestroy(title);
CleanupStack::PopAndDestroy(textArray);
break;
}
case 1://手机空间
{
CM3UIQ2AppUi *iAppUi = STATIC_CAST(CM3UIQ2AppUi *, iEikonEnv->EikAppUi());
iAppUi->SwitchViewL(ESTORAGE_VIEW);
}
break;
case 2://推荐给朋友
{
CM3UIQ2AppUi *iAppUi = STATIC_CAST(CM3UIQ2AppUi *, iEikonEnv->EikAppUi());
iAppUi->HandleFriend();
}
break;
case 3://操作帮助
{
TBuf<256> temp;
CEikonEnv::Static()->ReadResource(temp, R_M3UPLOAD_HELP_BODY);
TBuf<256> temp2;
CEikonEnv::Static()->ReadResource(temp2, R_STR_LISTBOX_ITEM4);
iEikonEnv->InfoWinL(temp2, temp);
}
break;
case 4://关于
{
iEikonEnv->InfoWinL(R_M3UPLOAD_ABOUT_TITLE, R_M3UPLOAD_ABOUT_BODY);
}
break;
case 5://包月
{
SendMessage();
}
break;
case 6://精彩视频
{
CM3UIQ2AppUi *iAppUi = STATIC_CAST(CM3UIQ2AppUi *, iEikonEnv->EikAppUi());
TDesC* url = iAppUi->GetServerURL();
if (url)
{
LunchWebBrower(*url);
}
else
{
TBuf<64> content;
CEikonEnv::Static()->ReadResource(content, STR_HTTPC_WAIT);
TBuf<32> title;
CEikonEnv::Static()->ReadResource(title, R_STR_FILE_SEND_TITLE);
iEikonEnv->InfoWinL(title, content);
}
}
break;
default:
break;
}
}
}
}
/**
* 创建列表框
**/
void CM3UIQ2AppView::CreateListBoxL()
{
iListBox = new (ELeave) CEikColumnListBox();
iListBox->ConstructL(this, CEikColumnListBox::ENoExtendedSelection | CEikColumnListBox::ENoFirstLetterMatching);
iListBox->SetContainerWindowL(*this);
iListBox->SetListBoxObserver(this);
iListBox->SetRect(Rect());
iListBox->ItemDrawer()->ColumnData()->SetColumnWidthPixelL(0, 25);
iListBox->ItemDrawer()->ColumnData()->SetGraphicsColumnL(0, ETrue);
CDesCArray *iTxtArrayTemp = static_cast<CDesCArray*>(iListBox->Model()->ItemTextArray());
InitArrayFirst(iTxtArrayTemp);
iListBox->CreateScrollBarFrameL();
iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto);
iListBox->SetItemHeightL(2 * 10);
//iListBox->HandleItemAdditionL();
//iListBox->SetCurrentItemIndexAndDraw(0);
iListBox->SetFocus(ETrue);
iListBox->ActivateL();
}
/**
* 创建图标
**/
void CM3UIQ2AppView::CreateIconL()
{
CArrayPtr<CGulIcon> *iconList = new (ELeave) CArrayPtrFlat<CGulIcon>(10);
CleanupStack::PushL(iconList);
/* for(TInt i=1;i<9;i++)
iconList->AppendL(iEikonEnv->CreateIconL(KMultiBitmapFilename, EMbmM3upload1+(i*2),EMbmM3upload1m+(i*2)));
*/
iconList->AppendL(iEikonEnv->CreateIconL(KMultiBitmapFilename, EMbmM3upload1, EMbmM3upload1m));
iconList->AppendL(iEikonEnv->CreateIconL(KMultiBitmapFilename, EMbmM3upload2, EMbmM3upload2m));
iconList->AppendL(iEikonEnv->CreateIconL(KMultiBitmapFilename, EMbmM3upload3, EMbmM3upload3m));
iconList->AppendL(iEikonEnv->CreateIconL(KMultiBitmapFilename, EMbmM3upload4, EMbmM3upload4m));
iconList->AppendL(iEikonEnv->CreateIconL(KMultiBitmapFilename, EMbmM3upload5, EMbmM3upload5m));
iconList->AppendL(iEikonEnv->CreateIconL(KMultiBitmapFilename, EMbmM3upload6, EMbmM3upload6m));
iconList->AppendL(iEikonEnv->CreateIconL(KMultiBitmapFilename, EMbmM3upload7, EMbmM3upload7m));
//iconList->AppendL(iEikonEnv->CreateIconL(KMultiBitmapFilename, EMbmM3upload8, EMbmM3upload8m));
//iconList->AppendL(iEikonEnv->CreateIconL(KMultiBitmapFilename, EMbmM3upload9, EMbmM3upload9m));
CleanupStack::Pop();
iListBox->ItemDrawer()->ColumnData()->SetIconArray(iconList);
}
/**
* 初始化列表
* @param aTxtArray 需要初始化的列表
**/
void CM3UIQ2AppView::InitArrayFirst(CDesCArray *aTxtArray)
{
aTxtArray->Reset();
TBuf16<128> temp;
TBuf<32> item;
CEikonEnv::Static()->ReadResource(temp, R_STR_LISTBOX_ITEM1);
item.Format(_L("%d\t%S "), 0, &temp);
aTxtArray->AppendL(item);
CEikonEnv::Static()->ReadResource(temp, R_STR_LISTBOX_ITEM2);
item.Format(_L("%d\t%S "), 2, &temp);
aTxtArray->AppendL(item);
CEikonEnv::Static()->ReadResource(temp, R_STR_LISTBOX_ITEM3);
item.Format(_L("%d\t%S "), 5, &temp);
aTxtArray->AppendL(item);
CEikonEnv::Static()->ReadResource(temp, R_STR_LISTBOX_ITEM4);
item.Format(_L("%d\t%S "), 0, &temp);
aTxtArray->AppendL(item);
CEikonEnv::Static()->ReadResource(temp, R_STR_LISTBOX_ITEM5);
item.Format(_L("%d\t%S "), 4, &temp);
aTxtArray->AppendL(item);
CEikonEnv::Static()->ReadResource(temp, R_STR_LISTBOX_ITEM6);
item.Format(_L("%d\t%S "), 1, &temp);
aTxtArray->AppendL(item);
CEikonEnv::Static()->ReadResource(temp, R_STR_LISTBOX_ITEM7);
item.Format(_L("%d\t%S "), 3, &temp);
aTxtArray->AppendL(item);
}
void CM3UIQ2AppView::InitArraySecond(CDesCArray *aTxtArray)
{
aTxtArray->Reset();
TBuf16<128> temp;
TBuf<32> item;
CEikonEnv::Static()->ReadResource(temp, R_STR_LISTBOX_ITEM8);
item.Format(_L("%d\t%S "), 4, &temp);
aTxtArray->AppendL(item);
CEikonEnv::Static()->ReadResource(temp, R_STR_LISTBOX_ITEM9);
item.Format(_L("%d\t%S "), 2, &temp);
aTxtArray->AppendL(item);
CEikonEnv::Static()->ReadResource(temp, R_STR_LISTBOX_ITEM10);
item.Format(_L("%d\t%S "), 3, &temp);
aTxtArray->AppendL(item);
}
TUid CM3UIQ2AppView::ViewUid() const
{
return TUid::Uid(EMyApplicationViewId);;
}
TVwsViewId CM3UIQ2AppView::ViewId() const
{
return TVwsViewId(KUidM3UIQ2, ViewUid());
}
void CM3UIQ2AppView::ViewActivatedL( const TVwsViewId &aPrevViewId, TUid aCustomMessageId, const TDesC8 &aCustomMessage )
{
MEikAppUiFactory *factory = iEikonEnv->AppUiFactory();
factory->MenuBar()->ChangeMenuBarL(0, R_M3UIQ2_MENUBAR, EFalse);
// Switch to the detailed view's toolbar
CM3UIQ2AppUi *iAppUi = STATIC_CAST(CM3UIQ2AppUi *, iEikonEnv->EikAppUi());
iAppUi->RemoveToolbarL();
MakeVisible(ETrue);
iIsDoubleLine = ETrue;
}
void CM3UIQ2AppView::ViewDeactivated()
{
MakeVisible(EFalse);
iIsDoubleLine = EFalse;
}
/**
* 列表框
**/
CEikColumnListBox * CM3UIQ2AppView::ListBox()
{
return iListBox;
}
/**
* 启动画面结束
**/
void CM3UIQ2AppView::OperationComplete( TInt aError )
{
if (aError == 0)
{
CreateListBoxL();
CreateIconL();
iIsReadly = ETrue;
DrawNow();
}
}
/**
* 发送短信包月
**/
void CM3UIQ2AppView::SendMessage()
{
TBuf<32> title;
CEikonEnv::Static()->ReadResource(title, R_STR_FILE_SEND_TITLE);
TBuf<32> content;
CEikonEnv::Static()->ReadResource(content, R_STR_MEMBER__CONTENT);
if (iEikonEnv->QueryWinL(title, content))
{
CM3UIQ2AppUi *iAppUi = STATIC_CAST(CM3UIQ2AppUi *, iEikonEnv->EikAppUi());
TDesC* spid = iAppUi->GetSPID();
TDesC* content = iAppUi->GetSMSContent();
if (spid && content)
{
iAppUi->MessageEngline()->SendMemberMsg(iAppUi->GetSPID(), iAppUi->GetSMSContent());
}
else
{
iEikonEnv->InfoWinL(_L("Note"), _L("Please set connect!"));
}
}
}
/*
* 启动web浏览器
*/
void CM3UIQ2AppView::LunchWebBrower(const TDesC& aWebUrl)
{
TBuf<256> param;
param.Append(aWebUrl);
TQWebDNLUrlEntry aUrl;
aUrl.iUrl = param.Left(KWebMaxUrlLen);
TQWebDNLUrlEntryBuf dnlBuf(aUrl);
TVwsViewId webView(KUidQWebApp,KUidQWebPageView);
CM3UIQ2AppUi *iAppUi = STATIC_CAST(CM3UIQ2AppUi *, iEikonEnv->EikAppUi());
iAppUi->ActivateViewL(webView, KQWebCustomMsgId, dnlBuf);
}
//end file
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -