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

📄 clientappui.cpp

📁 symbian os手机程序开发
💻 CPP
字号:
/*
 * ============================================================================
 *  Name     : CClientAppUi of ClientAppUI.cpp
 *  Part of  : HTTP Client Example
 *  Created  : 06/20/2006 by Forum Nokia
 *  Version  : 2.0
 *  Copyright: Forum Nokia
 * ============================================================================
 */

#include <avkon.hrh>
#include <aknnotewrappers.h>
#include <eikmenup.h>

#include <HTTPClientExample.rsg>
#include "Client.pan"
#include "ClientAppUi.h"
#include "ClientAppView.h"
#include "Client.hrh"

// Schemes for given uris
_LIT(KHttpPrefix, "http://");
_LIT8(KHttpPrefix8, "http://");

// HTTPS schemes
_LIT(KHttpsPrefix, "https://");
_LIT8(KHttpsPrefix8, "https://");

_LIT8(KMimeType, "text/plain");

const TInt KDefaultBufferSize = 256;

// ----------------------------------------------------------------------------
// CClientAppUi::ConstructL()
//
// Second phase construction.
// ----------------------------------------------------------------------------
void CClientAppUi::ConstructL()
	{
    BaseConstructL(EAknEnableSkin);

    iAppView = CClientAppView::NewL(ClientRect());
    AddToStackL(iAppView);

	iClient = CClientEngine::NewL(*iAppView);
	}

// ----------------------------------------------------------------------------
// CClientAppUi::CClientAppUi()
//
// First phase construction.
// ----------------------------------------------------------------------------
CClientAppUi::CClientAppUi()
	{
	}

// ----------------------------------------------------------------------------
// CClientAppUi::~CClientAppUi()
//
// Destructor.
// ----------------------------------------------------------------------------
CClientAppUi::~CClientAppUi()
	{
	delete iClient;
	if (iAppView)
		{
		iEikonEnv->RemoveFromStack(iAppView);
		delete iAppView;
		}
	}
	
// ----------------------------------------------------------------------------
// CClientAppUi::HandleCommandL()
//
// Handles user commands.
// ----------------------------------------------------------------------------
void CClientAppUi::HandleCommandL(TInt aCommand)
	{
	switch(aCommand)
		{
		case EEikCmdExit:
		case EAknSoftkeyExit:
			Exit();
			break;

		case EClientGet:
			{
			// Issue HTTP get to engine; first cancel possible existing transaction
			iClient->CancelTransaction();

			// Query uri
			TBuf<KDefaultBufferSize> uri;
			CAknTextQueryDialog* dlg = new (ELeave) CAknTextQueryDialog(uri,
				CAknQueryDialog::ENoTone);

			if (! dlg->ExecuteLD(R_DIALOG_URI_QUERY))
				break;

			iAppView->ResetL();

			// Insert prefix to uri (it must begin with "http://" or "https://")
			TBuf8<KDefaultBufferSize> uri8;
			uri.LowerCase();
			if(uri.Find(KHttpPrefix) == KErrNotFound
				&& uri.Find(KHttpsPrefix) == KErrNotFound)
				{
				// If the uri does not contain http or https,
				// use the default, "http://"
				uri8.Append(KHttpPrefix8);
				uri8.Append(uri);
				} 
			else 
				{
				uri8.Copy(uri);
				}

			// Start transaction
			iClient->IssueHTTPGetL(uri8);
			}
			break;

		case EClientPost:
			{
			// Issue HTTP post to engine
			iClient->CancelTransaction();

			// Query uri and data to post
			TBuf<KDefaultBufferSize> uri;
			TBuf<KDefaultBufferSize> postData;
			CAknMultiLineDataQueryDialog* dlg =
				CAknMultiLineDataQueryDialog::NewL(uri, postData);

			if (!dlg->ExecuteLD(R_DIALOG_URI_POST_QUERY))
				break;

			iAppView->ResetL();
	
			// Insert prefix to uri (it must begin with "http://" or "https://")
			TBuf8<KDefaultBufferSize> uri8;
			uri.LowerCase();
			if(uri.Find(KHttpPrefix) == KErrNotFound
				&& uri.Find(KHttpsPrefix) == KErrNotFound)
				{
				// If uri does not contain http or https,
				// use the default, "http://"
				uri8.Append(KHttpPrefix8);
				uri8.Append(uri);
				} 
			else 
				{
				uri8.Copy(uri);
				}

			TBuf8<KDefaultBufferSize> postData8;
			postData8.Copy(postData);

			// Start transaction
			iClient->IssueHTTPPostL(uri8, KMimeType, postData8);
			}
			break;

		case EClientCancel:
			// Cancel current transaction
			if(iClient->IsRunning())
				iClient->CancelTransaction();
			break;

		default:
			Panic(EClientUi);
			break;
		}
	}

// ----------------------------------------------------------------------------
// CClientAppUi::DynInitMenuPaneL()
//
// Initializes the menu pane when it's activated.
// ----------------------------------------------------------------------------
void CClientAppUi::DynInitMenuPaneL(TInt aMenuId, CEikMenuPane* aMenuPane)
	{
	// "Cancel" selection is only available when trasaction running in engine
	if (aMenuId == R_EXAMPLECLIENT_MENU)
		aMenuPane->SetItemDimmed(EClientCancel, !iClient->IsRunning());
	}
	
// end of file

⌨️ 快捷键说明

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