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

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

?? oandxappview.cpp

?? 在symbian os 上運(yùn)行
?? CPP
字號(hào):
// Copyright (c) 2004, Symbian Software Ltd. All rights reserved.

#include <coemain.h>
#include <gulutil.h>
#include <e32keys.h>


#include "OandXAppView.h"
#include "OandXAppUi.h"
#include "OandX.pan"
#include "oandxdefs.h"

// Tile member functions

COandXTile::COandXTile()
    {
    }
    
COandXTile::~COandXTile()
    {
    }

void COandXTile::ConstructL(RWindow& aWindow)
    {
    SetContainerWindowL(aWindow);
    // No call to ActivateL() as the window is activated by its container
    }

void COandXTile::Draw(const TRect& /*aRect*/) const
    {
    TInt tileType;
    tileType = iAppView->SquareStatus(this);

    CWindowGc& gc = SystemGc();
    TRect rect = Rect();
    
    if (IsFocused())
        {
        gc.SetBrushColor(KRgbYellow);
        }
    gc.Clear(rect);
    if (tileType!=ETileBlank)
        {
        TSize size;
        size.SetSize(rect.iBr.iX- rect.iTl.iX, rect.iBr.iY - rect.iTl.iY);
        rect.Shrink(size.iWidth/6,size.iHeight/6); // Shrink by about 15%
        gc.SetPenStyle(CGraphicsContext::ESolidPen);
        size.iWidth /= 9; // Pen size set to just over 10% of the shape's size
        size.iHeight /= 9;
        gc.SetPenSize(size);
        if (tileType == ETileNought)
            {
            gc.SetPenColor(KRgbRed);
            gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
            gc.DrawEllipse(rect);
            }
        else // draw a cross
            {
            gc.SetPenColor(KRgbGreen);
            rect.Shrink(size.iWidth/2,size.iHeight/2); // Cosmetic reduction of cross size by half the line width
            gc.DrawLine(rect.iTl, rect.iBr);
            TInt temp;
            temp = rect.iTl.iX;
            rect.iTl.iX = rect.iBr.iX;
            rect.iBr.iX = temp;
            gc.DrawLine(rect.iTl, rect.iBr);
            }
        }
    }

void  COandXTile::SetOwnerAndObserver(COandXAppView* aControl)
    {
    iAppView = aControl;
    SetObserver(aControl);
    }

void COandXTile::TryHitL()
    {
    if (iAppView->TryHitSquareL(this))
        {
        DrawDeferred();
        }
    }

TKeyResponse COandXTile::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)
    {
    TKeyResponse keyResponse = EKeyWasNotConsumed;
    if (aType!=EEventKey)
        {
        return keyResponse;
        }
    switch (aKeyEvent.iCode)
        {
    case EKeyOK:
        TryHitL();
        keyResponse = EKeyWasConsumed;
        break;
    default:
        keyResponse = EKeyWasNotConsumed;
        break;        
        }
    return keyResponse;
    }

TCoeInputCapabilities COandXTile::InputCapabilities() const
    {
    return TCoeInputCapabilities::ENavigation;
    }

void COandXTile::HandlePointerEventL(const TPointerEvent& aPointerEvent)
    {
    if (aPointerEvent.iType == TPointerEvent::EButton1Down)
        {
        TryHitL();
        }
    }

void COandXTile::FocusChanged(TDrawNow aDrawNow)
    {
    if (aDrawNow == EDrawNow)
        {
        DrawNow();
        }
    }


// App View member functions

#define KBorderWidth 10
#define KLineWidth ((KTilesPerRow > KTilesPerCol ? KTilesPerRow : KTilesPerCol) > 4 ? 2 : 4)

COandXAppView::COandXAppView()
    {
    }

COandXAppView::~COandXAppView()
    {
    for (TInt i=0; i<CountComponentControls(); i++)
        {
        delete iTiles[i];
        }
    iTiles.Close();
    }

void COandXAppView::ConstructL(const TRect& aRect, MOandXGameControl* aGameControl)
    {
    // Create a window for this application view
    CreateWindowL();
    iGameControl = aGameControl;

    for (TInt i = 0; i < CountComponentControls(); i++)
        {
        User::LeaveIfError(iTiles.Append(CreateTileL()));
        }
    ComponentControl(0)->SetFocus(ETrue);

    // Set the window's size
    SetRect(aRect); // needs to be after tile creation - see SizeChanged()
    // Activate the window, which makes it ready to be drawn
    ActivateL();
    }

COandXTile* COandXAppView::CreateTileL()
    {
    COandXTile * tile = new(ELeave) COandXTile;
    CleanupStack::PushL(tile);
    tile->ConstructL(Window());
    CleanupStack::Pop(); // tile
    tile->SetOwnerAndObserver(this);
    return tile;
    }
    
void COandXAppView::SizeChanged()
    {
    __ASSERT_DEBUG(iTiles[KNumberOfTiles-1], Panic(EOandXNoTiles)); // all component tiles must already exist

    TSize controlSize = Rect().Size();
    TSize tileSize;
    tileSize.iWidth=2*((controlSize.iWidth-2*KBorderWidth-(KTilesPerRow-1)*KLineWidth)/(2*KTilesPerRow));
    tileSize.iHeight=2*((controlSize.iHeight-2*KBorderWidth-(KTilesPerCol-1)*KLineWidth)/(2*KTilesPerCol));
    iTileSide = tileSize.iWidth < tileSize.iHeight ? tileSize.iWidth :tileSize.iHeight;
    TSize boardSize;
    boardSize.iWidth = KTilesPerRow*iTileSide + (KTilesPerRow-1)*KLineWidth;
    boardSize.iHeight = KTilesPerCol*iTileSide + (KTilesPerCol-1)*KLineWidth;
    iBoardRect.iTl.iX = (controlSize.iWidth - boardSize.iWidth)/2;
    iBoardRect.iTl.iY = (controlSize.iHeight - boardSize.iHeight)/2;
    iBoardRect.iBr.iX = iBoardRect.iTl.iX + boardSize.iWidth;
    iBoardRect.iBr.iY = iBoardRect.iTl.iY + boardSize.iHeight;
    iBorderRect = iBoardRect;
    iBorderRect.Grow(KBorderWidth,KBorderWidth);
	
    for (TInt i=0; i<CountComponentControls(); i++)
        {
        TInt row = i / KTilesPerRow;
        TInt col = i % KTilesPerRow;
        TRect tileRect;
        tileRect.iTl.iX = iBoardRect.iTl.iX + col * (iTileSide + KLineWidth);
        tileRect.iTl.iY = iBoardRect.iTl.iY + row * (iTileSide + KLineWidth);
        tileRect.iBr.iX = tileRect.iTl.iX + iTileSide;
        tileRect.iBr.iY = tileRect.iTl.iY + iTileSide;
        ComponentControl(i)->SetRect(tileRect);
        }
    }
	
void COandXAppView::ResetView()
    {
    MoveFocusTo(0);
    DrawNow();
    }


void COandXAppView::Draw(const TRect& /*aRect*/) const
    {
    CWindowGc& gc = SystemGc();
    TRect rect = Rect();
    
    // Draw outside the border
    gc.SetPenStyle(CGraphicsContext::ENullPen);
    gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
    gc.SetBrushColor(KRgbWhite);
    DrawUtils::DrawBetweenRects(gc, rect, iBorderRect);
    
    // Draw a border around the board
    gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
    gc.SetBrushColor(KRgbGray);
    DrawUtils::DrawBetweenRects(gc, iBorderRect, iBoardRect);
    
    //Draw the first vertical line
    gc.SetBrushColor(KRgbBlack);
    TRect line;
    line.iTl.iX = iBoardRect.iTl.iX + iTileSide;
    line.iTl.iY = iBoardRect.iTl.iY;
    line.iBr.iX = line.iTl.iX + KLineWidth;
    line.iBr.iY = iBoardRect.iBr.iY;
    gc.DrawRect(line);
    TInt i;
    // Draw the remaining (KTilesPerRow-2) vertical lines
    for (i = 0; i < KTilesPerRow - 2; i++)
        {
        line .iTl.iX += iTileSide + KLineWidth;
        line .iBr.iX += iTileSide + KLineWidth;
        gc.DrawRect(line);
        }
    // Draw the first horizontal line
    line.iTl.iX = iBoardRect.iTl.iX;
    line.iTl.iY = iBoardRect.iTl.iY + iTileSide;
    line.iBr.iX = iBoardRect.iBr.iX;
    line.iBr.iY = line.iTl.iY + KLineWidth;
    gc.DrawRect(line);
    // Draw the remaining (KTilesPerCol -2) horizontal lines
    for (i = 0; i < KTilesPerCol - 2; i++)
        {
        line .iTl.iY += iTileSide + KLineWidth;
        line .iBr.iY += iTileSide + KLineWidth;
        gc.DrawRect(line);
        }
    }


TInt COandXAppView::CountComponentControls() const
    {
    return KNumberOfTiles;
    }

CCoeControl* COandXAppView::ComponentControl(TInt aIndex) const
    {
    return const_cast<COandXTile*>(iTiles[aIndex]);
    }

TKeyResponse COandXAppView::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)
    {
    TKeyResponse keyResponse = EKeyWasNotConsumed;
    if (aType!=EEventKey)
        {
        return keyResponse;
        }
    TInt index = IdOfFocusControl();
    switch (aKeyEvent.iCode)
        {
    case EKeyLeftArrow: // check not in first column
        if (index % KTilesPerRow)
            {
            MoveFocusTo(index-1);
            keyResponse = EKeyWasConsumed;
            }
        break;
    case EKeyRightArrow: // check not in last column
        if ((index % KTilesPerRow) < KTilesPerRow - 1)
            {
            MoveFocusTo(index+1);
            keyResponse = EKeyWasConsumed;
            }
        break;
    case EKeyUpArrow: // check not on top row
        if (index >= KTilesPerRow)
            {
            MoveFocusTo(index-KTilesPerRow);
            keyResponse = EKeyWasConsumed;
            }
        break;
    case EKeyDownArrow: // check not in bottom row
        if (index < KNumberOfTiles - KTilesPerRow)
            {
            MoveFocusTo(index+KTilesPerRow);
            keyResponse = EKeyWasConsumed;
            }
        break;
    default:
        keyResponse = ComponentControl(index)->OfferKeyEventL(aKeyEvent,aType);
        break;
        }
    return keyResponse;
    }

TInt COandXAppView::IdOfFocusControl()
    {
    TInt ret = -1;
    for (TInt i=0; i<CountComponentControls(); i++)
        {
        if (ComponentControl(i)->IsFocused())
            {
            ret = i;
            break;
            }
        }
    __ASSERT_ALWAYS(ret>=0, Panic(EOandXNoTileWithFocus));
    return ret;
    }
    
void COandXAppView::SwitchFocus(TInt aFromIndex, CCoeControl* aToControl)
    {
    ComponentControl(aFromIndex)->SetFocus(EFalse, EDrawNow);
    aToControl->SetFocus(ETrue, EDrawNow);
    }
    
void COandXAppView::MoveFocusTo(const TInt index)
    {
    TInt oldIndex = IdOfFocusControl();
    if (index!= oldIndex)
        {
        SwitchFocus(oldIndex, ComponentControl(index));
        }
    }


void COandXAppView::HandleControlEventL(CCoeControl* aControl, TCoeEvent aEventType)
    {
    switch (aEventType)
        {
    case EEventRequestFocus:
        SwitchFocus(IdOfFocusControl(), aControl);
        break;
    default:
        break;
        }
    }

TBool COandXAppView::TryHitSquareL(const COandXTile* aControl)
    {
    return iGameControl->HitSquareL(Index(aControl));
    }

TInt COandXAppView::SquareStatus(const COandXTile* aControl)
    {
    return iGameControl->SquareStatus(Index(aControl));
    }

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91亚洲精品一区二区乱码| www.日韩大片| 中文字幕亚洲电影| 6080yy午夜一二三区久久| 99精品黄色片免费大全| 日本不卡高清视频| 综合激情网...| 久久久精品免费网站| 欧美精品免费视频| 99re热视频精品| 精东粉嫩av免费一区二区三区| 亚洲精品国产a| 国产日韩视频一区二区三区| 日韩一区二区三区视频在线| 在线视频综合导航| thepron国产精品| 国产在线麻豆精品观看| 日韩激情视频网站| 亚洲综合在线第一页| 国产精品美女一区二区三区| 欧美成人精品高清在线播放| 欧美日韩亚洲丝袜制服| 99热精品国产| 成人国产免费视频| 国产成人av电影在线观看| 麻豆视频观看网址久久| 日韩在线卡一卡二| 亚洲制服丝袜av| 一区二区三区高清在线| 亚洲人吸女人奶水| 国产精品乱人伦中文| 久久久天堂av| 国产亚洲va综合人人澡精品| 久久久精品人体av艺术| 久久久精品欧美丰满| 精品国产污污免费网站入口| 欧美一区二区私人影院日本| 7878成人国产在线观看| 欧美精选在线播放| 7777精品伊人久久久大香线蕉的| 欧美日韩国产成人在线免费| 欧美人妇做爰xxxⅹ性高电影| 欧美少妇bbb| 欧美久久久久久久久| 6080午夜不卡| 精品国产成人系列| 久久久天堂av| **欧美大码日韩| 亚洲精品菠萝久久久久久久| 亚洲精品成人天堂一二三| 亚洲永久免费av| 日本三级韩国三级欧美三级| 蜜臀av性久久久久蜜臀aⅴ| 狂野欧美性猛交blacked| 九九视频精品免费| 成人免费毛片片v| 91蜜桃网址入口| 欧美男同性恋视频网站| 欧美一区二区精品久久911| 精品国产a毛片| 国产精品天干天干在观线| 亚洲乱码国产乱码精品精98午夜| 亚洲精品精品亚洲| 日本亚洲电影天堂| 国产精品123| 97久久人人超碰| 51精品视频一区二区三区| 久久久久国产精品免费免费搜索| 国产精品蜜臀在线观看| 亚洲sss视频在线视频| 精品一区二区三区的国产在线播放| 国产精品1区2区3区| 色国产综合视频| 欧美二区三区的天堂| 久久久综合视频| 亚洲人快播电影网| 久久97超碰色| 91精品福利视频| 欧美成人福利视频| 亚洲精品国产无套在线观| 精一区二区三区| 91视频精品在这里| 日韩欧美国产一区二区在线播放| 国产精品福利一区二区| 偷拍一区二区三区| 成人av免费在线| 51精品视频一区二区三区| 国产欧美日韩久久| 日韩中文字幕不卡| av一二三不卡影片| 日韩欧美在线123| ...中文天堂在线一区| 精久久久久久久久久久| 欧美在线色视频| 久久久91精品国产一区二区三区| 午夜久久电影网| 97国产精品videossex| 精品粉嫩aⅴ一区二区三区四区| 日韩理论在线观看| 激情六月婷婷久久| 欧美日韩第一区日日骚| 亚洲天堂免费看| 国产一区二区三区久久久| 欧美日韩中字一区| 中文字幕在线视频一区| 国内精品国产三级国产a久久| 欧美日韩国产综合草草| **网站欧美大片在线观看| 国产露脸91国语对白| 337p亚洲精品色噜噜狠狠| 一区二区三区欧美视频| 成人黄色网址在线观看| 精品国偷自产国产一区| 日本亚洲欧美天堂免费| 欧美日韩激情一区二区| 亚洲裸体xxx| av电影一区二区| 午夜不卡av免费| 色综合视频一区二区三区高清| 久久久久久久久久美女| 日本人妖一区二区| 欧美精品一卡两卡| 亚洲二区视频在线| 色综合久久88色综合天天免费| 国产精品日韩成人| 粉嫩aⅴ一区二区三区四区| 久久久精品国产免大香伊| 国内欧美视频一区二区| 日韩欧美视频在线| 免费黄网站欧美| 91精品在线免费| 免费在线看成人av| 欧美一区二区三区四区视频| 日韩1区2区日韩1区2区| 欧美日韩五月天| 日韩国产欧美在线视频| 欧美人动与zoxxxx乱| 日韩黄色在线观看| 日韩丝袜美女视频| 狠狠色丁香久久婷婷综| 久久人人97超碰com| 懂色av一区二区在线播放| 国产日韩欧美电影| 不卡一二三区首页| 亚洲欧美一区二区三区国产精品| 色综合天天综合给合国产| 一区二区三区欧美在线观看| 欧洲亚洲国产日韩| 午夜精品福利一区二区三区av | 精品写真视频在线观看| 欧美v日韩v国产v| 粉嫩久久99精品久久久久久夜| 国产精品色哟哟网站| 99re这里都是精品| 五月激情六月综合| 精品久久久久久久人人人人传媒| 国产精品白丝av| 亚洲色欲色欲www在线观看| 欧美三级电影网| 美女在线视频一区| 亚洲精品在线观看网站| 成人激情开心网| 亚洲综合另类小说| 欧美成人三级在线| 高清成人免费视频| 一区二区三区四区国产精品| 777久久久精品| 国产精品一区二区三区99| 亚洲丝袜美腿综合| 欧美日韩一级黄| 国产一区二区在线观看免费| 国产精品久久二区二区| 国产精品成人一区二区三区夜夜夜 | 一区二区三区电影在线播| 日韩欧美资源站| 99re这里只有精品视频首页| 五月天激情综合网| 欧美国产丝袜视频| 欧美日韩情趣电影| 成人精品一区二区三区中文字幕| 亚洲国产aⅴ天堂久久| 久久久久久久久久美女| 欧美视频一区二区| 国产jizzjizz一区二区| 亚洲成人一二三| 国产精品水嫩水嫩| 91精品国产综合久久久久| 成人午夜在线免费| 日本亚洲欧美天堂免费| 中文字幕一区二区不卡| 精品久久久久久亚洲综合网| 色久综合一二码| 国产精品99久久久久久似苏梦涵| 亚洲影院在线观看| 欧美激情一区在线| 91精品国产欧美一区二区| 97se亚洲国产综合自在线不卡| 精品中文字幕一区二区小辣椒| 亚洲综合另类小说| 亚洲手机成人高清视频|