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