From 6c3bd72b0c191226dc76a51a7dc2aa78e984ad6f Mon Sep 17 00:00:00 2001 From: foefl Date: Thu, 21 May 2026 08:52:26 +0200 Subject: [PATCH] change company search to dropdown base --- prototypes/t_qt_2.py | 70 ++++++++++++++++---------------------------- 1 file changed, 25 insertions(+), 45 deletions(-) diff --git a/prototypes/t_qt_2.py b/prototypes/t_qt_2.py index 870fb90..f39e272 100644 --- a/prototypes/t_qt_2.py +++ b/prototypes/t_qt_2.py @@ -617,8 +617,10 @@ def reset_form( elif isinstance(widget, QComboBox): if form_field.fill_value: widget.setCurrentText(form_field.fill_value) - else: + elif form_field.type is FormFieldType.DROPDOWN: widget.setCurrentIndex(0) + else: + widget.setCurrentIndex(-1) elif isinstance(widget, DynamicListWidget): # dynamic list widget manages its widgets by itself widget.reset_form() @@ -1328,21 +1330,15 @@ class Grunderfassung_Suche(CustomWidget): self.COMPANY_SEARCH_INPUT_KEY = "kontaktliste_un_suche" lookup = search_widgets_by_key(self.widget_registry, self.COMPANY_SEARCH_INPUT_KEY) assert len(lookup) == 1 - self.company_search_input = cast(QLineEdit, lookup[0]["widget"]) - self.company_search_completer = self.company_search_input.completer() - self.company_search_completer.activated[QModelIndex].connect( # type: ignore - self._selected_company_on_completer - ) - self.company_search_input.textChanged.connect(self._search_company_change_manually) + self.company_search_input = cast(QComboBox, lookup[0]["widget"]) + self.company_search_input.currentIndexChanged.connect(self._selected_company) self.PERSON_SEARCH_INPUT_KEY = "kontaktliste_person_suche" lookup = search_widgets_by_key(self.widget_registry, self.PERSON_SEARCH_INPUT_KEY) assert len(lookup) == 1 self.person_search_input = cast(QComboBox, lookup[0]["widget"]) - self.person_search_input.currentIndexChanged.connect( - self._selected_person_on_completer - ) - # self.company_search_completer = self.company_search_input.completer() + self.person_search_input.currentIndexChanged.connect(self._selected_person) + self.CHANNEL_AWARENESS_KEY = "kontaktliste_kanal_aufmerksamkeit" lookup = search_widgets_by_key(self.widget_registry, self.CHANNEL_AWARENESS_KEY) assert len(lookup) == 1 @@ -1437,23 +1433,17 @@ class Grunderfassung_Suche(CustomWidget): widget.clear() def update_company_data(self) -> None: - # self.reset_form() self.company_search_input.clear() - self._clear_company_fields() - search_items = QStandardItemModel() + self.company_search_input.addItem(DROPDOWN_DEFAULT, None) search_choices = be_init_rec.comp_search_choices() for item, db_index in search_choices: - qitem = QStandardItem(item) - qitem.setData(db_index, Qt.ItemDataRole.UserRole) - search_items.appendRow(qitem) - - self.company_search_completer.setModel(search_items) + self.company_search_input.addItem(item, db_index) + self.company_search_input.setCurrentIndex(-1) def update_person_data( self, ma_id: int | None, ) -> None: - # self.reset_form() self.person_search_input.clear() self.person_search_input.addItem(DROPDOWN_DEFAULT, None) search_choices = be_init_rec.contact_person_search_choices(ma_id, True) @@ -1461,24 +1451,27 @@ class Grunderfassung_Suche(CustomWidget): self.person_search_input.addItem(item, db_index) self.person_search_input.setCurrentIndex(0) - def _selected_company_on_completer( + def _selected_company( self, - index: QModelIndex, + index: int, ) -> None: - ma_id = index.data(Qt.ItemDataRole.UserRole) + ma_id = self.company_search_input.itemData(index) + if ma_id is None or index == (-1): + self._clear_company_fields() + return data = be_init_rec.comp_search_get_info( ma_id=ma_id, ) - self.company_search_input.setProperty(self.PROPERTY_MA_ID, ma_id) + # self.company_search_input.setProperty(self.PROPERTY_MA_ID, ma_id) self.fill_out_company(data) self.update_person_data(ma_id) - def _selected_person_on_completer( + def _selected_person( self, index: int, ) -> None: an_id = self.person_search_input.itemData(index) - if an_id is None: + if an_id is None or index == (-1): self._clear_person_fields() return @@ -1487,12 +1480,6 @@ class Grunderfassung_Suche(CustomWidget): ) self.fill_out_person(data) - def _search_company_change_manually( - self, - _: str, - ) -> None: - self.company_search_input.setProperty(self.PROPERTY_MA_ID, -1) - @override def reset_form(self) -> None: reset_form(self.widget_registry) @@ -1513,16 +1500,12 @@ class Grunderfassung_Suche(CustomWidget): print("raw_data:\n") pprint(raw_data) # leaf dictionary contains data fields - data = list(get_leaf_dicts(raw_data))[0] + data = tuple(get_leaf_dicts(raw_data))[0] print("leaf dicts:\n") pprint(data) - ma_id = self.company_search_input.property(self.PROPERTY_MA_ID) - # # index = self.person_search_input.currentIndex() - # an_id = self.person_search_input.currentData() - self.export_data[self.COMPANY_SEARCH_INPUT_KEY] = ma_id + self.export_data[self.COMPANY_SEARCH_INPUT_KEY] = data[self.COMPANY_SEARCH_INPUT_KEY] self.export_data[self.PERSON_SEARCH_INPUT_KEY] = data[self.PERSON_SEARCH_INPUT_KEY] - self.export_data[self.CHANNEL_AWARENESS_KEY] = data[self.CHANNEL_AWARENESS_KEY] print("\nExport data:") @@ -1542,8 +1525,7 @@ class Grunderfassung_Suche(CustomWidget): comp_info = be_init_rec.comp_search_get_info( ma_id=ma_id, ) - # self.company_search_input.setText(comp_info["ma_unternehmensname"]) - set_widget_value(self.person_search_input, comp_info["ma_unternehmensname"]) + set_widget_value(self.company_search_input, ma_id) self.fill_out_company(comp_info) self.update_person_data(ma_id) an_id = data[self.PERSON_SEARCH_INPUT_KEY] @@ -1551,10 +1533,6 @@ class Grunderfassung_Suche(CustomWidget): an_id=an_id, ) set_widget_value(self.person_search_input, an_id) - # index = self.person_search_input.findData(an_id) - # if index < 0: - # raise IndexError("Data for person search was not found") - # self.person_search_input.setCurrentIndex(index) self.fill_out_person(pers_info) widget = cast(QComboBox, self.channel_awareness["widget"]) value = data[self.CHANNEL_AWARENESS_KEY] @@ -2477,9 +2455,10 @@ CUSTOM_WIDGETS: Final[dict[str, type[CustomWidget]]] = { FORM_FIELDS_SEARCH_HEAD = [ FormField( "Suche", - FormFieldType.TEXT_SEARCH, + FormFieldType.EXTENDED_DROPDOWN, required=True, key="kontaktliste_un_suche", + placeholder="Suche...", ), FormField( "Name Unternehmen/Netzwerkpartner", @@ -2527,6 +2506,7 @@ FORM_FIELDS_SEARCH_HEAD = [ required=True, key="kontaktliste_person_suche", info="ma_ort", + placeholder="Suche...", ), FormField( "Titel",