ui: implemented gui abstraction and dummy view

- added abstract class tree for gui elements.
- implemented concrete gui classes that wrap the qt specific content.
- implemented first DummyView which plays nice with the ViewManager.

review id = 12
This commit is contained in:
malte_langkabel
2014-05-07 13:00:17 +02:00
parent 387618d922
commit 37d0dd33a4
51 changed files with 812 additions and 58 deletions
-2
View File
@@ -1,2 +0,0 @@
#include "component/view/CodeView.h"
-11
View File
@@ -1,11 +0,0 @@
#ifndef CODE_VIEW_H
#define CODE_VIEW_H
#include "component/view/View.h"
class CodeView: public View
{
};
#endif // CODE_VIEW_H
+15
View File
@@ -0,0 +1,15 @@
#include "component/view/DummyView.h"
#include "gui/GuiArea.h"
#include "gui/GuiElementFactory.h"
DummyView::DummyView(std::shared_ptr<ViewManager> viewManager, std::shared_ptr<GuiElementFactory> guiElementFactory)
: View(viewManager, guiElementFactory->createArea(), Vec2i(100, 100))
, m_guiElementFactory(guiElementFactory)
{
getRootElement()->setBackgroundColor(0, 255, 0, 255);
}
DummyView::~DummyView()
{
}
+19
View File
@@ -0,0 +1,19 @@
#ifndef DUMMY_VIEW_H
#define DUMMY_VIEW_H
#include "component/view/View.h"
class GuiElementFactory;
class DummyView: public View
{
public:
DummyView(std::shared_ptr<ViewManager> viewManager, std::shared_ptr<GuiElementFactory> guiElementFactory);
virtual ~DummyView();
private:
std::shared_ptr<GuiElementFactory> m_guiElementFactory;
};
#endif // DUMMY_VIEW_H
+30
View File
@@ -1,5 +1,35 @@
#include "component/view/View.h"
#include "component/view/ViewManager.h"
View::View(std::shared_ptr<ViewManager> viewManager, std::shared_ptr<GuiElement> rootElement, const Vec2i& minSize)
: m_viewManager(viewManager)
, m_rootElement(rootElement)
, m_minSize(minSize)
{
m_viewManager->addView(this);
}
View::~View()
{
m_viewManager->removeView(this);
}
std::shared_ptr<GuiElement> View::getRootElement()
{
return m_rootElement;
}
int View::getMinWidth() const
{
return m_minSize.x;
}
int View::getMinHeight() const
{
return m_minSize.y;
}
Vec2i View::getMinSize() const
{
return m_minSize;
}
+19 -1
View File
@@ -1,11 +1,29 @@
#ifndef VIEW_H
#define VIEW_H
#include <memory>
#include "utility/math/Vector2.h"
class GuiElement;
class ViewManager;
class View
{
public:
View(std::shared_ptr<ViewManager> viewManager, std::shared_ptr<GuiElement> rootElement, const Vec2i& minSize);
virtual ~View();
std::shared_ptr<GuiElement> getRootElement();
int getMinWidth() const;
int getMinHeight() const;
Vec2i getMinSize() const;
private:
std::shared_ptr<ViewManager> m_viewManager;
std::shared_ptr<GuiElement> m_rootElement;
Vec2i m_minSize;
};
#endif // VIEW_H
+21 -1
View File
@@ -1,9 +1,29 @@
#include "component/view/ViewManager.h"
ViewManager::ViewManager()
#include "gui/GuiCanvas.h"
#include "View.h"
ViewManager::ViewManager(std::shared_ptr<GuiCanvas> canvas)
: m_canvas(canvas)
{
}
ViewManager::~ViewManager()
{
}
void ViewManager::addView(View* view)
{
m_views.push_back(view);
m_canvas->addChild(view->getRootElement());
}
void ViewManager::removeView(View* view)
{
std::vector<View*>::iterator it = std::find(m_views.begin(), m_views.end(), view);
if (it != m_views.end())
{
m_canvas->removeChild((*it)->getRootElement());
m_views.erase(it);
}
}
+8 -3
View File
@@ -4,16 +4,21 @@
#include <memory>
#include <vector>
#include "component/view/View.h"
class GuiCanvas;
class View;
class ViewManager
{
public:
ViewManager();
ViewManager(std::shared_ptr<GuiCanvas> canvas);
~ViewManager();
void addView(View* view);
void removeView(View* view);
private:
std::vector<std::shared_ptr<View> > m_views;
std::shared_ptr<GuiCanvas> m_canvas;
std::vector<View*> m_views;
};