(一)目的是让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