Support more args when switching screens
This commit is contained in:
@@ -15,8 +15,12 @@ public:
|
||||
void triggered() override { switchScreen<Tscreen>(); }
|
||||
};
|
||||
|
||||
|
||||
template<typename Tscreen, typename ...Targs>
|
||||
class SwitchScreenActionArgs;
|
||||
|
||||
template<typename Tscreen, typename T1>
|
||||
class SwitchScreenActionArgs : public virtual ActionInterface
|
||||
class SwitchScreenActionArgs<Tscreen, T1> : public virtual ActionInterface
|
||||
{
|
||||
public:
|
||||
SwitchScreenActionArgs(T1 &&arg1) :
|
||||
@@ -31,4 +35,24 @@ public:
|
||||
private:
|
||||
T1 m_arg1;
|
||||
};
|
||||
|
||||
template<typename Tscreen, typename T1, typename T2>
|
||||
class SwitchScreenActionArgs<Tscreen, T1, T2> : public virtual ActionInterface
|
||||
{
|
||||
public:
|
||||
SwitchScreenActionArgs(T1 &&arg1, T2 &&arg2) :
|
||||
m_arg1{std::move<T1>(arg1)},
|
||||
m_arg2{std::move<T2>(arg2)}
|
||||
{}
|
||||
SwitchScreenActionArgs(const T1 &arg1, const T2 &arg2) :
|
||||
m_arg1{arg1},
|
||||
m_arg2{arg2}
|
||||
{}
|
||||
|
||||
void triggered() override { switchScreen<Tscreen>(std::move(m_arg1), std::move(m_arg2)); }
|
||||
|
||||
private:
|
||||
T1 m_arg1;
|
||||
T2 m_arg2;
|
||||
};
|
||||
} // namespace espgui
|
||||
|
@@ -47,6 +47,18 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
template <typename T1, typename T2, typename T3, typename ...T4>
|
||||
class makeComponentArgs2x2 : public T1, public T2, public T3, public T4...
|
||||
{
|
||||
public:
|
||||
template<typename Targ1, typename Targ2, typename Targ3, typename Targ4>
|
||||
makeComponentArgs2x2(Targ1&& arg1, Targ2&& arg2, Targ3&& arg3, Targ4&& arg4) :
|
||||
T2{std::forward<Targ1>(arg1), std::forward<Targ2>(arg2)},
|
||||
T3{std::forward<Targ3>(arg3), std::forward<Targ4>(arg4)}
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
class Display : public virtual ButtonsInterface
|
||||
{
|
||||
public:
|
||||
|
Reference in New Issue
Block a user