Skip to content
Snippets Groups Projects
Commit a0c05d51 authored by Wuttke, Joachim's avatar Wuttke, Joachim
Browse files

start PolyBase - reference in ISelectionForm no longer templated

parent cb67e84b
No related branches found
No related tags found
1 merge request!2696PolyItem -> PolyPtr, with BaseItem as separate template parameter
......@@ -19,7 +19,16 @@
//! Holds a polymorphous item. Possible types of the item are specified by a Catalog.
template <typename Catalog> class PolyPtr {
class PolyBase {
public:
virtual QString piLabel() const = 0;
virtual QString piTooltip() const = 0;
virtual QStringList menuEntries() const = 0;
virtual void setCurrentIndex(int index) = 0;
virtual int currentIndex() const = 0;
};
template <typename Catalog> class PolyPtr : public PolyBase {
public:
using BaseItem = typename Catalog::BaseItem;
......@@ -43,12 +52,12 @@ public:
m_item.reset(XML::readItemFrom<Catalog>(r, args...));
}
QString piLabel() const { return m_label; }
QString piTooltip() const { return m_tooltip; }
QStringList menuEntries() const { return m_menu_entries; }
QString piLabel() const override { return m_label; }
QString piTooltip() const override { return m_tooltip; }
QStringList menuEntries() const override { return m_menu_entries; }
void setCurrentIndex(int index) { m_item.reset(Catalog::create(m_types[index])); }
int currentIndex() const { return m_types.indexOf(Catalog::type(m_item.get())); }
void setCurrentIndex(int index) override { m_item.reset(Catalog::create(m_types[index])); }
int currentIndex() const override { return m_types.indexOf(Catalog::type(m_item.get())); }
private:
std::unique_ptr<BaseItem> m_item; //!< Current selection
......
......@@ -56,7 +56,7 @@ protected:
m_grid_layout->addWidget(m_combo, 1, 0);
createContent();
}
template <typename T> void initUI(PolyPtr<T>& d)
void initUI(PolyBase& d)
{
m_grid_layout = new QGridLayout(this);
m_grid_layout->setContentsMargins(0, 0, 0, 0);
......
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