ui/qt/model.cpp

changeset 958
749a8a36d74b
parent 723
e513086eadbb
--- a/ui/qt/model.cpp	Sun Dec 07 11:07:29 2025 +0100
+++ b/ui/qt/model.cpp	Sun Dec 07 11:27:44 2025 +0100
@@ -29,9 +29,23 @@
 #include "model.h"
 
 
-ListModel::ListModel(UiObject *obj, QListView *view, UiVar *var, ui_getvaluefunc2 getvalue, void *getvaluedata){
+ListModel::ListModel(UiObject *obj, QListView *view, UiVar *var, ui_getvaluefunc2 getvalue, void *getvaluedata) {
     this->obj = obj;
-    this->view = view;
+    this->listview = view;
+    this->combobox = nullptr;
+    this->var = var;
+    this->getvalue = getvalue;
+    this->getvaluedata = getvaluedata;
+    this->onactivate = nullptr;
+    this->onactivatedata = nullptr;
+    this->onselection = nullptr;
+    this->onselectiondata = nullptr;
+}
+
+ListModel::ListModel(UiObject *obj, QComboBox *view, UiVar *var, ui_getvaluefunc2 getvalue, void *getvaluedata) {
+    this->obj = obj;
+    this->combobox = view;
+    this->listview = nullptr;
     this->var = var;
     this->getvalue = getvalue;
     this->getvaluedata = getvaluedata;
@@ -85,7 +99,12 @@
 }
 
 void ListModel::selectionChanged(const QItemSelection& selected, const QItemSelection& deselected) {
-    UiListSelection sel = ui_selection_model_to_selection(view->selectionModel());
+    UiListSelection sel;
+    if(listview) {
+        sel = ui_selection_model_to_selection(listview->selectionModel());
+    } else {
+        // TODO
+    }
     
     UiEvent event;
     event.obj = obj;
@@ -257,10 +276,19 @@
         QModelIndex index = model->index(sel.rows[i]);
         selection.select(index, index);
     }
-    model->view->selectionModel()->select(selection, QItemSelectionModel::ClearAndSelect);
+    if(model->listview) {
+        model->listview->selectionModel()->select(selection, QItemSelectionModel::ClearAndSelect);
+    } else if(model->combobox) {
+        // TODO
+    }
 }
 
 UiListSelection ui_listmodel_getselection(UiList *list) {
     ListModel *model = (ListModel*)list->obj;
-    return ui_selection_model_to_selection(model->view->selectionModel());
+    if(model->listview) {
+        return ui_selection_model_to_selection(model->listview->selectionModel());
+    } else {
+        UiListSelection sel = { 0, NULL };
+        return sel;
+    }
 }

mercurial