summaryrefslogtreecommitdiff
path: root/qt_adapter.hpp
diff options
context:
space:
mode:
authorDennis Brentjes <d.brentjes@gmail.com>2014-05-05 15:36:59 +0200
committerDennis Brentjes <d.brentjes@gmail.com>2014-05-05 15:36:59 +0200
commitdfefe42d0fe40dd97260d3ec0b3e1cb7690cf669 (patch)
tree38db4835d86d4f056395ed731affb9afc2e558aa /qt_adapter.hpp
parent13cfd05f9b2bb3c8d7d1bf47fcef037a745bacf8 (diff)
downloadgeneric-gui-dfefe42d0fe40dd97260d3ec0b3e1cb7690cf669.tar.gz
generic-gui-dfefe42d0fe40dd97260d3ec0b3e1cb7690cf669.tar.bz2
generic-gui-dfefe42d0fe40dd97260d3ec0b3e1cb7690cf669.zip
Cleaned up the api to eliminate some intermediate steps
Diffstat (limited to 'qt_adapter.hpp')
-rw-r--r--qt_adapter.hpp27
1 files changed, 7 insertions, 20 deletions
diff --git a/qt_adapter.hpp b/qt_adapter.hpp
index 8af44d7..6ce5ca1 100644
--- a/qt_adapter.hpp
+++ b/qt_adapter.hpp
@@ -34,23 +34,6 @@ struct QtModelType<std::map<std::string, V>>
template <typename T>
struct widget_type {
-// typedef void type;
-};
-
-template <typename T>
-struct widget_type<std::shared_ptr<T>> {
- typedef typename T::widget type;
-};
-
-template <typename T>
-struct widget_type<std::shared_ptr<T>&&>
-{
- typedef typename T::widget type;
-};
-
-template <typename T>
-struct widget_type<std::shared_ptr<T>&>
-{
typedef typename T::widget type;
};
@@ -142,7 +125,11 @@ struct QtAdapter<T, QAbstractTableModel> : public QAbstractTableModel
};
template <typename T>
-std::shared_ptr<QtAdapter<T, typename QtModelType<typename T::data_type>::type>> make_qt_adapter(T value) {
- typedef QtAdapter<T, typename QtModelType<typename T::data_type>::type> type;
- return std::make_shared<type>(value);
+std::shared_ptr<typename widget_type<QtAdapter<T, typename QtModelType<typename T::data_type>::type>>::type>
+make_qt_widget(T& x)
+{
+ typedef QtAdapter<T, typename QtModelType<typename T::data_type>::type> adapter_type;
+ auto adapter_ptr = std::make_shared<adapter_type>(x);
+ auto widget_ptr = std::make_shared<typename widget_type<adapter_type>::type>(adapter_ptr);
+ return widget_ptr;
}