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

📄 m3uiq2appview.cpp

📁 symbian uiq 例子代码,功能包括文件断点续传、编辑通讯录、后台短信回复等
💻 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 + -