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

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

(1)Screen1View.cpp

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

cpp 复制代码
#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

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

cpp 复制代码
/*********************************************************************************/
/********** 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
相关推荐
芯希望1 小时前
芯伯乐700mA线性稳压器XBLW L78M05H/L78M12H:稳定可靠,简化电源设计
单片机·嵌入式硬件
私人珍藏库2 小时前
Adobe Photoshop CS6 Lite:PS极端简化版,压缩后大小仅50M,Photoshop精简版
ui·adobe·photoshop
lingzhilab2 小时前
零知IDE——STM32F407VET6驱动SHT40温湿度传感器与ST7789实现智能环境监测系统
stm32·单片机·嵌入式硬件
贝塔实验室3 小时前
Altium Designer 6.3 PCB LAYOUT教程(四)
驱动开发·嵌入式硬件·硬件架构·硬件工程·信息与通信·基带工程·pcb工艺
星辰pid4 小时前
stm32的gpio模式到底该怎么选择?(及iic,spi,定时器原理介绍)
stm32·单片机·嵌入式硬件
brave and determined5 小时前
可编程逻辑器件学习(day3):FPGA设计方法、开发流程与基于FPGA的SOC设计详解
嵌入式硬件·fpga开发·soc·仿真·电路·时序·可编程逻辑器件
axuan126515 小时前
10.【NXP 号令者RT1052】开发——实战-RT 看门狗(RTWDOG)
单片机·嵌入式硬件·mcu
Porco.w8 小时前
STM32 DMA
stm32·单片机·嵌入式硬件
BreezeJuvenile9 小时前
外设模块学习(17)——5V继电器模块(STM32)
stm32·单片机·嵌入式硬件·学习·5v继电器模块
GilgameshJSS9 小时前
STM32H743-ARM例程40-U_DISK_IAP
c语言·arm开发·stm32·单片机·嵌入式硬件