Skip to content
Snippets Groups Projects
Commit 74d7b97a authored by alexander.mruchok's avatar alexander.mruchok
Browse files

[+] Added AdaptiveScreen::initScreen(this);

[+] Added DefaultMultiScreen::SCREEN_NAME
[+] Added MultiScreenWindow::activeScreen
[+] MultiScreenWindow::centralScreen()
parent 8d788e89
No related branches found
No related tags found
2 merge requests!17Develop old,!11Feature 3131
#include "AdaptiveScreen.h"
AdaptiveScreen::InitializerFunc AdaptiveScreen::s_initializerFunc = nullptr;
AdaptiveScreen::AdaptiveScreen(QWidget *a_parent /*= nullptr*/)
: AdaptiveWidget(a_parent)
{
AdaptiveScreen::initScreen(this);
}
......@@ -6,12 +6,24 @@
class AdaptiveScreen : public AdaptiveWidget
{
public:
AdaptiveScreen(QWidget *a_parent = nullptr);
// virtual void activateScreen() = 0;
// virtual QString screenName() = 0;
virtual QString screenName() = 0;
virtual void initVariantUi(QWidget * a_widget) = 0;
protected:
typedef void (*InitializerFunc)(AdaptiveScreen*);
template<typename T>
static void initScreen(T* a_screen){
if (T::s_initializerFunc)
T::s_initializerFunc(a_screen);
};
static InitializerFunc s_initializerFunc;
};
#endif // SCREEN_H
......@@ -24,6 +24,8 @@ along with any CellFrame SDK based project. If not, see <http://www.gnu.org/lic
#include "DefaultMultiScreen.h"
const QString DefaultMultiScreen::SCREEN_NAME("FullScreen");
/**
* @brief Overloaded constructor.
* @param a_parent Parent.
......@@ -35,6 +37,11 @@ DefaultMultiScreen::DefaultMultiScreen(QWidget *a_parent)
create<Ui_DefaultMultiScreen>();
}
QString DefaultMultiScreen::screenName()
{
return DefaultMultiScreen::SCREEN_NAME;
}
/**
* @brief Form initialization.
* @param a_w Window GUI widget.
......
......@@ -34,6 +34,10 @@ class DefaultMultiScreen : public MultiScreenAbstract
public:
DefaultMultiScreen(QWidget *a_parent = nullptr);
virtual QString screenName() override;
static const QString SCREEN_NAME;
protected:
virtual void initVariantUi(QWidget * a_widget) override;
......
......@@ -72,11 +72,12 @@ signals:
protected:
virtual void initChangedScreen(QWidget * a_w); ///< Find changingWidget and assign to m_wgChangedScreen
virtual void initVariantUi(QWidget * a_widget) = 0; ///<pure virtual method. Must de reimplement it inherited classes
virtual QString screenName() = 0;
AnimationChangingWidget *m_wgChangedScreen; ///< Pointer to ChangingWidget controll
private:
QMap<QString, DapUiScreen*> m_screens; ///< Map with all screens that can be activated
QMap<QString, AdaptiveScreen*> m_screens; ///< Map with all screens that can be activated
};
......@@ -103,12 +104,11 @@ T *MultiScreenAbstract::createSubScreen(int a_index /*= -1*/)
if (subScreen<T>())
return newScreen;
QStackedWidget *newSW = new QStackedWidget(m_wgChangedScreen); // Create QStackedWidget for new screen and screen;
newScreen = new T(this, newSW); // Create new screen
newScreen = new T(this); // Create new screen
//insert screen to m_screens and changing sreen widget
m_screens.insert(typeid(T).name(), newScreen);
m_wgChangedScreen->insertWidget(a_index, newScreen->sw());
m_wgChangedScreen->insertWidget(a_index, newScreen);
return newScreen;
}
......
#include "MultiScreenWindow.h"
#include "StartScreen.h"
MultiScreenWindow::MultiScreenWindow(MultiScreenAbstract* a_centralScreen /*= nullptr*/, QWidget *a_parent /*= nullptr*/)
: QMainWindow(a_parent)
{
if (!a_centralScreen)
a_centralScreen = new DefaultMultiScreen(this);
m_centralScreen = a_centralScreen;
setCentralWidget(a_centralScreen);
}
void MultiScreenWindow::activateScreen(const QString &a_screenName)
{
if (a_screenName == StartScreen::SCREEN_NAME)
m_centralScreen->activateScreen<StartScreen>();
else
return;
m_activeScreen = a_screenName;
}
QString MultiScreenWindow::activeScreen()
{
}
MultiScreenAbstract *MultiScreenWindow::centralScreen()
{
return m_centralScreen;
}
......@@ -6,11 +6,20 @@
class MultiScreenWindow : public QMainWindow
{
Q_OBJECT
Q_PROPERTY(QString activeScreen READ activeScreen WRITE activateScreen)
using QMainWindow::setCentralWidget; //disable access to setCentralWidget.
public:
explicit MultiScreenWindow(MultiScreenAbstract* a_centralScreen = nullptr, QWidget *a_parent = nullptr);
signals:
void activateScreen (const QString& a_screenName);
QString activeScreen();
MultiScreenAbstract* centralScreen();
MultiScreenAbstract* m_centralScreen;
private:
QString m_activeScreen;
};
#endif // MULTISCREENWINDOW_H
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment