亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tuiedit.cpp

?? 《SymbianOSC手機應(yīng)用開發(fā)》源碼
?? CPP
字號:
// tuiedit.cpp
//
// Copyright (c) 2000 Symbian Ltd.  All rights reserved.

#include "tuiedit.h"

const TInt KMaxCommandLine=40; // used to be in e32cons.h, now disappeared

CLineEdit::CLineEdit()
//
// Constructor
//
	{

//	iHistory=NULL;
//	iConsole=NULL;
//	iMaxHistory=0;
//	iWidth=0;
//	iHeight=0;
//	iPos=0;
//	iOrigin=0;
//	iLine=0;
//	iRecall=0;
//	iBuf=NULL;
//	iPrompt=_L("");
	__DECLARE_NAME(_S("CLineEdit"));
	}


CLineEdit::~CLineEdit()
//
// Destroy the line editor
//
	{

	TInt count=iHistory->Count();
	while (count--)
		User::Free((*iHistory)[count]);
	delete iHistory;
	}

EXPORT_C CLineEdit* CLineEdit::NewL(CConsoleBase* aConsole,TInt aMaxHistory)
//
// Create a new line editor
//
	{

	CLineEdit* pE=new(ELeave) CLineEdit;
	pE->iHistory=new(ELeave) CArrayFixFlat<HBufC*>(aMaxHistory+2);
	pE->iConsole=aConsole;
	pE->iMaxHistory=aMaxHistory;
	pE->iWidth=pE->iConsole->ScreenSize().iWidth;
	pE->iHeight=pE->iConsole->ScreenSize().iHeight;
	return(pE);
	}

TInt CLineEdit::Lines()
//
// The number of lines being edited.
//
    {

    TInt nL=1;
    if (Buf().Length()>=iWidth-2-iOrigin)
		nL+=(Buf().Length()+iOrigin)/(iWidth-2);
    return(nL);
    }

TPoint CLineEdit::Where()
//
// Return the real cursor position.
//
    {

    if (iPos>=(iWidth-2-iOrigin))
		return(TPoint((iPos+iOrigin)%(iWidth-2),((iPos+iOrigin)/(iWidth-2))+iLine));
	return(TPoint(iPos+iOrigin,iLine));
    }

void CLineEdit::ClearLine()
//
// Clears the line being edited.
//
    {

    if (Buf().Length())
		{
		TInt nL=Lines();
		while (nL--)
	    	{
	    	iConsole->SetPos(nL ? 0 : iOrigin,iLine+nL);
	    	iConsole->ClearToEndOfLine();
	    	}
		Buf().Zero();
		iPos=0;
		}
    }

void CLineEdit::ClearLast(TInt aCnt)
//
// Clears the last aCnt characters.
//
    {

    TInt aPos=iPos;
    iPos=((TInt)Buf().Length())-aCnt;
    while (iPos<((TInt)Buf().Length()))
		{
		TPoint p=Where();
		iConsole->SetCursorPosAbs(p);
		iConsole->ClearToEndOfLine();
		iPos+=(iWidth-p.iX);
		}
    iPos=aPos;
    }

void CLineEdit::Recall()
//
// Recall a line for editing.
//
    {

	if (iRecall!=(-1))
		{
		ClearLine();
		HBufC* pL=(*iHistory)[iRecall];
		Buf()=(*pL);
		iConsole->Write(Buf());
		iPos=Buf().Length();
		TInt nL=Lines();
		if ((iLine+nL)>(iHeight-2))
	    	iLine=iHeight-2-nL;
		Buf()=(*pL);
		}
    }

TInt CLineEdit::WordLeft()
//
// Position the cursor to the next word left.
//
    {

    TInt x=iPos-1;
    while (x && TChar(Buf()[x]).IsSpace())
		x--;
    while (x && TChar(Buf()[x]).IsGraph())
		x--;
    if (TChar(Buf()[x]).IsSpace())
		x++;
    return(x);
    }

TInt CLineEdit::WordRight()
//
// Position the cursor to the next word right.
//
    {

    TInt x=iPos;
    while (x<(TInt)Buf().Length() && TChar(Buf()[x]).IsGraph())
		x++;
    while (x<(TInt)Buf().Length() && TChar(Buf()[x]).IsSpace())
		x++;
    return(x);
    }

void CLineEdit::Cursor()
//
// Position the cursor.
//
    {

    iConsole->SetCursorPosAbs(Where());
    }

void CLineEdit::Refresh()
//
// Refresh the line.
//
    {

	iConsole->SetCursorHeight(ECursorNone);
    iConsole->SetPos(iOrigin,iLine);
    iConsole->Write(Buf());
	Cursor();
	iConsole->SetCursorHeight(iMode==EEditOverWrite ? ECursorNormal : ECursorInsert);
    }

EXPORT_C void CLineEdit::Edit(const TDesC& aPrompt,TDes* aBuf)
//
// Start the editor or a single key fetch.
//
    {

	iBuf=aBuf;
    iPos=0;
	Buf().Zero();
	iMode=EEditOverWrite;
	iConsole->SetCursorHeight(iMode==EEditOverWrite ? ECursorNormal : ECursorInsert);
    iConsole->Write(aPrompt);
	iOrigin=iConsole->WhereX();
	iLine=iConsole->WhereY();
	iRecall=(-1);
    TInt hCount=iHistory->Count();
    if (hCount>iMaxHistory)
		hCount=iMaxHistory;
	FOREVER
		{
		TChar gChar=iConsole->Getch();
		switch (gChar)
	    	{
		case EKeyEscape:
	    	ClearLine();
			iRecall=(-1);
	    	break;
		case EKeyHome:
	    	iPos=0;
	    	Cursor();
	    	break;
		case EKeyLeftArrow:
	    	if (iPos)
                {
                if(iConsole->KeyModifiers()==EModifierCtrl)
                    iPos=WordLeft();
                else
    				iPos--;
                Cursor();
                }
	    	break;
		case EKeyRightArrow:
	    	if (iPos<((TInt)Buf().Length()))
                {
                if(iConsole->KeyModifiers()==EModifierCtrl)
                    iPos=WordRight();
                else
    				iPos++;
                Cursor();
                }
	    	break;
		case EKeyEnd:
	    	iPos=((TInt)Buf().Length());
	    	Cursor();
	    	break;
		case EKeyPageUp:
	    	if (hCount==0)
				break;
	    	iRecall=hCount-1;
	    	Recall();
	    	break;
		case EKeyUpArrow:
	    	if (iRecall==(-1))
				{
				if (hCount==0)
		    		break;
				iRecall=0;
				}
	    	else if (iRecall>=(hCount-1))
				{
				ClearLine();
				iRecall=(-1);
				break;
				}
	    	else
				iRecall++;
	    	Recall();
	    	break;
		case EKeyDownArrow:
	    	if (iRecall==(-1))
				{
				if (hCount==0)
		    		break;
				iRecall=hCount-1;
				}
	    	else if (iRecall==0)
				{
				ClearLine();
				iRecall=(-1);
				break;
				}
	    	else
				iRecall--;
	    	Recall();
	    	break;
		case EKeyPageDown:
	    	if (hCount==0)
				break;
	    	iRecall=0;
	    	Recall();
	    	break;
		case EKeyEnter:
	    	iConsole->SetCursorHeight(ECursorNone);
	    	iConsole->SetPos(0,iLine+Lines()-1); // CR on the last line
	    	iConsole->Write(_L("\n")); // Just a line feed
//			iConsole->SetCursorHeight(iDefaultMode==EEditOverWrite ? ECursorNormal : ECursorInsert);
	    	iRecall=(-1);
	    	if (Buf().Length()>2)
				{
				if (iHistory->Count()==iMaxHistory+1)
					{
					User::Free((*iHistory)[iMaxHistory]);
		    		iHistory->Delete(iMaxHistory);
					}
				HBufC* pB=Buf().Alloc();
				if (pB!=NULL)
					{TRAPD(r,iHistory->InsertL(0,pB));}
				}
	    	return;
		case EKeyBackspace:
	    	if (iPos)
				{
				TInt iN=1;
				if (iConsole->KeyModifiers()==EModifierCtrl)
		    		iN=iPos-WordLeft();
				ClearLast(iN);
				iPos-=iN;
				Buf().Delete(iPos,iN);
				Refresh();
				}
	    	break;
		case EKeyDelete:
	    	if (iPos<((TInt)Buf().Length()))
				{
				TInt iN=1;
				if (iConsole->KeyModifiers()==EModifierCtrl)
		    		iN=WordRight()-iPos;
				ClearLast(iN);
				Buf().Delete(iPos,iN);
				Refresh();
				}
	    	break;
		case EKeyInsert:
	    	iMode=(iMode==EEditOverWrite ? EEditInsert : EEditOverWrite);
			iConsole->SetCursorHeight(iMode==EEditOverWrite ? ECursorNormal : ECursorInsert);
	    	break;
		default:
   	    	if (!gChar.IsPrint())
				break;
	    	if (iMode==EEditOverWrite && iPos<((TInt)Buf().Length()))
				Buf()[iPos++]=(TText)gChar;
	    	else if (Buf().Length()<KMaxCommandLine)
				{
				TInt oL=Lines();
				TBuf<0x02> b;
				b.Append(gChar);
				Buf().Insert(iPos++,b);
				TInt nL=Lines();
				if (nL!=oL)
		    		{
		    		iConsole->SetCursorHeight(ECursorNone);
		    		iConsole->SetPos(0,iLine+oL-1);
		    		iConsole->Write(_L("\n"));
		    		iConsole->SetPos(0,iLine);
		    		if (iLine+nL>iHeight-2)
						iLine=iHeight-2-nL;
		    		}
				}
			else
				{
				iConsole->Write(_L("\7"));
				iConsole->SetPos((iOrigin+iPos)%(iWidth-2),iLine+Lines()-1);
				break;
				}
			Refresh();
			}
		}
	}

// required for DLL

EXPORT_C TInt E32Dll(TDllReason)
	{
	return 0;
	}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
制服丝袜av成人在线看| 日本在线观看不卡视频| 国产99精品国产| 国产拍欧美日韩视频二区| 福利一区在线观看| 亚洲欧洲一区二区在线播放| 97久久超碰精品国产| 亚洲综合一区二区| 欧美一区二区三区免费大片 | 成人毛片视频在线观看| 中文字幕一区二区三| 在线视频中文字幕一区二区| 亚洲激情av在线| 555www色欧美视频| 国产另类ts人妖一区二区| 国产精品国产三级国产三级人妇| 91视频国产资源| 日韩高清一区在线| 国产欧美精品国产国产专区| 91视频一区二区| 美女一区二区久久| 自拍偷在线精品自拍偷无码专区| 日本高清免费不卡视频| 日韩激情在线观看| 国产欧美一区二区三区鸳鸯浴| 99免费精品视频| 奇米在线7777在线精品| 国产精品女人毛片| 91精品国产91久久久久久一区二区 | 久久人人97超碰com| 99综合影院在线| 麻豆精品国产传媒mv男同| 自拍偷拍国产亚洲| 日韩免费高清av| 91国偷自产一区二区三区观看| 欧美96一区二区免费视频| 国产精品进线69影院| 91精品国产一区二区三区蜜臀| 成人永久aaa| 六月婷婷色综合| 一区二区三区欧美在线观看| 欧美zozo另类异族| 91久久人澡人人添人人爽欧美| 久久er精品视频| 午夜久久久久久久久| 亚洲欧洲日韩在线| 久久综合av免费| 欧美精品v日韩精品v韩国精品v| 成人黄色电影在线| 国精品**一区二区三区在线蜜桃| 亚洲一区在线观看免费| 国产精品伦一区| 欧美精品一区二区久久久| 精品污污网站免费看| 色综合一个色综合亚洲| 成人av在线播放网址| 久久精品国产亚洲a| 午夜av一区二区| 亚洲欧美国产高清| 中文字幕在线不卡国产视频| 欧美精品一区二区三区蜜臀| 91麻豆精品国产91久久久资源速度 | 亚洲人快播电影网| 欧美韩日一区二区三区四区| 日韩亚洲欧美成人一区| 欧美男女性生活在线直播观看| bt欧美亚洲午夜电影天堂| 国产成人午夜电影网| 久久黄色级2电影| 日本aⅴ亚洲精品中文乱码| 午夜婷婷国产麻豆精品| 亚洲综合激情网| 一区二区三区精品| 一区二区三区在线观看网站| 亚洲欧美二区三区| 日韩毛片一二三区| 亚洲精品自拍动漫在线| 一区二区三区国产精品| 91久久一区二区| 成人一区二区三区在线观看| 日韩不卡一区二区| 性做久久久久久| 一区2区3区在线看| 一区二区三区在线免费| 一区二区久久久| 一卡二卡欧美日韩| 亚洲一二三四在线| 亚洲国产日韩在线一区模特| 亚洲一区二区三区四区在线 | 成人丝袜视频网| www.日本不卡| 91成人免费在线视频| 欧美人xxxx| 精品不卡在线视频| 国产免费成人在线视频| 亚洲人妖av一区二区| 一区二区欧美在线观看| 亚洲你懂的在线视频| 久久精品国产精品亚洲精品| 蜜桃av一区二区| 国产成人精品免费网站| www.日韩av| 欧美高清视频一二三区 | 日韩精品国产精品| 狂野欧美性猛交blacked| 国产传媒久久文化传媒| 99re这里只有精品首页| 欧美日韩国产综合久久| 欧美精品一区二区三区在线播放 | 99精品热视频| 911精品国产一区二区在线| 久久影音资源网| 亚洲精品国产一区二区三区四区在线| 亚洲一区二区三区自拍| 激情综合网最新| 色婷婷一区二区三区四区| 欧美一区二区三区性视频| 国产三级精品在线| 亚洲一区二区三区自拍| 国产成人免费在线观看不卡| 在线精品观看国产| 国产亚洲精品福利| 天使萌一区二区三区免费观看| 黄网站免费久久| 欧美在线不卡视频| 国产片一区二区| 免费av网站大全久久| 91日韩在线专区| 精品999在线播放| 亚洲第四色夜色| 懂色av噜噜一区二区三区av | 日韩久久免费av| 亚洲精品欧美二区三区中文字幕| 免费成人在线观看| 欧美三级在线播放| 国产精品国产三级国产有无不卡| 日韩avvvv在线播放| 色久综合一二码| 久久久久久久网| 日本不卡123| 欧美视频日韩视频在线观看| 久久亚洲一区二区三区四区| 亚洲精品免费视频| 国产成人精品免费一区二区| 91精品国产91综合久久蜜臀| 亚洲精品视频在线观看网站| 国产精品系列在线播放| 欧美一区二区三区四区在线观看 | 亚洲欧洲色图综合| 国产精品996| 欧美成人精品1314www| 婷婷六月综合网| 欧美少妇性性性| 亚洲人成网站精品片在线观看 | 蜜桃视频第一区免费观看| 欧洲亚洲国产日韩| 一区二区三区不卡在线观看| a美女胸又www黄视频久久| 国产日产欧美一区| 国产一二三精品| www精品美女久久久tv| 蜜桃视频在线观看一区二区| 7777精品伊人久久久大香线蕉完整版| 一区二区三区波多野结衣在线观看| 成人app下载| 成人免费一区二区三区视频 | 久草热8精品视频在线观看| 91精品在线免费| 免费高清在线一区| 精品国产99国产精品| 国产一区在线精品| 久久免费视频色| 成人毛片在线观看| 亚洲欧美日韩久久| 日本高清成人免费播放| 亚洲国产精品一区二区久久 | 国产自产高清不卡| 久久精品欧美一区二区三区不卡 | 精品制服美女丁香| 久久久久久久久蜜桃| 丰满放荡岳乱妇91ww| 亚洲欧洲精品一区二区三区不卡| 成人av网站在线观看免费| 亚洲欧美日韩在线播放| 欧美三级中文字幕在线观看| 日韩精品乱码av一区二区| 精品少妇一区二区三区在线播放| 久久精品国产77777蜜臀| 久久久99久久| 99综合影院在线| 午夜精品成人在线| 精品1区2区在线观看| 国产91丝袜在线18| 亚洲一区二区在线视频| 在线播放/欧美激情| 国模大尺度一区二区三区| 中文字幕视频一区二区三区久| 色噜噜狠狠成人中文综合 | 精品久久人人做人人爰| 福利电影一区二区三区|