Touchgfx(交互系统和创建无触发交互)

(一)目的是让Touchgfx给我们自动生成一些函数
(1)Screen1View.cpp

#include <gui/screen1_screen/Screen1View.hpp>
#include <touchgfx/Unicode.hpp>
Screen1View::Screen1View()
{
		num = 0;
}
void Screen1View::setupScreen()
{
    Screen1ViewBase::setupScreen();
}
void Screen1View::tearDownScreen()
{
    Screen1ViewBase::tearDownScreen();
}
void Screen1View::addButtonClickHandler()
{
		num++;
		Unicode::snprintf(textArea1Buffer,TEXTAREA1_SIZE,"%d",num);
		textArea1.invalidate();
		newTrigger();
		if(num==5)
			application().gotoScreen2ScreenSlideTransitionWest();
}
void Screen1View::newAction(int32_t val)
{
	touchgfx_printf("执行了newAction,参数值为:%d",val);
}

(2)Screen1View.hpp

#ifndef SCREEN1VIEW_HPP
#define SCREEN1VIEW_HPP
#include <gui_generated/screen1_screen/Screen1ViewBase.hpp>
#include <gui/screen1_screen/Screen1Presenter.hpp>
class Screen1View : public Screen1ViewBase
{
public:
    Screen1View();
    virtual ~Screen1View() {}
    virtual void setupScreen();
    virtual void tearDownScreen();
	virtual	void addButtonClickHandler();
	virtual	void newAction(int32_t val);	
protected:
		int num;
};

#endif // SCREEN1VIEW_HPP

(3)Screen1ViewBase.cpp

/*********************************************************************************/
/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
/*********************************************************************************/
#include <gui_generated/screen1_screen/Screen1ViewBase.hpp>
#include <touchgfx/Color.hpp>
#include <texts/TextKeysAndLanguages.hpp>
#include <images/BitmapDatabase.hpp>

Screen1ViewBase::Screen1ViewBase() :
    buttonCallback(this, &Screen1ViewBase::buttonCallbackHandler),
    interaction1Counter(0)
{
    __background.setPosition(0, 0, 1024, 600);
    __background.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0));
    add(__background);

    bgBox.setPosition(0, 0, 1024, 600);
    bgBox.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
    add(bgBox);

    box1.setPosition(96, 40, 50, 50);
    box1.setColor(touchgfx::Color::getColorFromRGB(255, 0, 0));
    add(box1);

    textArea1.setPosition(48, 161, 146, 30);
    textArea1.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0));
    textArea1.setLinespacing(0);
    Unicode::snprintf(textArea1Buffer, TEXTAREA1_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_N7BF).getText());
    textArea1.setWildcard(textArea1Buffer);
    textArea1.setTypedText(touchgfx::TypedText(T___SINGLEUSE_UOL8));
    add(textArea1);

    addButton.setXY(36, 223);
    addButton.setBitmaps(touchgfx::Bitmap(BITMAP_BLUE_BUTTONS_ROUND_EDGE_SMALL_ID), touchgfx::Bitmap(BITMAP_BLUE_BUTTONS_ROUND_EDGE_SMALL_PRESSED_ID));
    addButton.setLabelText(touchgfx::TypedText(T___SINGLEUSE_7J1W));
    addButton.setLabelColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
    addButton.setLabelColorPressed(touchgfx::Color::getColorFromRGB(255, 255, 255));
    addButton.setAction(buttonCallback);
    add(addButton);
}
Screen1ViewBase::~Screen1ViewBase()
{

}
void Screen1ViewBase::setupScreen()
{

}
void Screen1ViewBase::buttonCallbackHandler(const touchgfx::AbstractButton& src)
{
    if (&src == &addButton)
    {
        //Interaction4
        //When addButton clicked call virtual function
        //Call addButtonClickHandler
        addButtonClickHandler();

        //Interaction5
        //When addButton clicked call newAction on Screen1
        //Call newAction
        newAction(126);
    }
}

void Screen1ViewBase::afterTransition()
{
    //Interaction1
    //When screen transition ends delay
    //Delay for 3000 ms (180 Ticks)
    interaction1Counter = INTERACTION1_DURATION;
}
void Screen1ViewBase::handleTickEvent()
{
    if (interaction1Counter > 0)
    {
        interaction1Counter--;
        if (interaction1Counter == 0)
        {
            //Interaction2
            //When Interaction1 completed change color of box1
            //Set RGB color R:0, G:255, B:0 on box1
            box1.setColor(touchgfx::Color::getColorFromRGB(0, 255, 0));
            box1.invalidate();
        }
    }

}
void Screen1ViewBase::newTrigger()
{
    //Interaction6
    //When newTrigger is called change color of box1
    //Set RGB color R:0, G:0, B:255 on box1
    box1.setColor(touchgfx::Color::getColorFromRGB(0, 0, 255));
    box1.invalidate();
}

(4)Screen1ViewBase.hpp

/*********************************************************************************/
/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
/*********************************************************************************/
#ifndef SCREEN1VIEWBASE_HPP
#define SCREEN1VIEWBASE_HPP

#include <gui/common/FrontendApplication.hpp>
#include <mvp/View.hpp>
#include <gui/screen1_screen/Screen1Presenter.hpp>
#include <touchgfx/widgets/Box.hpp>
#include <touchgfx/widgets/TextAreaWithWildcard.hpp>
#include <touchgfx/widgets/ButtonWithLabel.hpp>

class Screen1ViewBase : public touchgfx::View<Screen1Presenter>
{
public:
    Screen1ViewBase();
    virtual ~Screen1ViewBase();
    virtual void setupScreen();
    virtual void afterTransition();
    virtual void handleTickEvent();

    /*
     * Custom Actions
     */
    virtual void newAction(int32_t value)
    {
        // Override and implement this function in Screen1
    }
    virtual void newTrigger();
    /*
     * Virtual Action Handlers
     */
    virtual void addButtonClickHandler()
    {
        // Override and implement this function in Screen1
    }
protected:
    FrontendApplication& application() {
        return *static_cast<FrontendApplication*>(touchgfx::Application::getInstance());
    }
    touchgfx::Box __background;
    touchgfx::Box bgBox;
    touchgfx::Box box1;
    touchgfx::TextAreaWithOneWildcard textArea1;
    touchgfx::ButtonWithLabel addButton;
    static const uint16_t TEXTAREA1_SIZE = 10;
    touchgfx::Unicode::UnicodeChar textArea1Buffer[TEXTAREA1_SIZE];
private:
    touchgfx::Callback<Screen1ViewBase, const touchgfx::AbstractButton&> buttonCallback;
    void buttonCallbackHandler(const touchgfx::AbstractButton& src);
    static const uint16_t INTERACTION1_DURATION = 180;
    uint16_t interaction1Counter;

};

#endif // SCREEN1VIEWBASE_HPP
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值