diff --git a/gui/modules/core/items_list.py b/gui/modules/core/items_list.py index 3db1925..904887a 100644 --- a/gui/modules/core/items_list.py +++ b/gui/modules/core/items_list.py @@ -2,6 +2,7 @@ import requests from gui.gui import Ui_MainWindow from modules.database import Database from PyQt5 import QtWidgets, QtGui +from gui.modules.filters.menu import refill_filters def refill_list(ui: Ui_MainWindow): @@ -9,6 +10,7 @@ def refill_list(ui: Ui_MainWindow): if Database.get().items: ui.logo_if_empty.hide() ui.items_list.show() + refill_filters(ui) for item in Database.get().items: item = Database.get().items[item] list_item = QtWidgets.QListWidgetItem() diff --git a/gui/modules/filters/__init__.py b/gui/modules/filters/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/gui/modules/filters/menu.py b/gui/modules/filters/menu.py new file mode 100644 index 0000000..8a3efd9 --- /dev/null +++ b/gui/modules/filters/menu.py @@ -0,0 +1,81 @@ +from PyQt5 import QtGui, QtCore +from gui.gui import Ui_MainWindow +from modules.database import Database +from data import common + + +def refill_types(ui: Ui_MainWindow): + ui.filter_type_box.clear() + ui.filter_type_box.addItem('All') + ui.filter_type_box.setCurrentIndex(0) + + string_db = str(Database.get().to_json()) + + match ui.filter_class_box.currentText(): + case 'All': + for type_ in common.vehicle_type: + if type_ in string_db: + ui.filter_type_box.addItem(type_) + + for type_ in common.property_type: + if type_ in string_db: + ui.filter_type_box.addItem(type_) + + case 'Vehicle': + for type_ in common.vehicle_type: + if type_ in string_db: + ui.filter_type_box.addItem(type_) + + case 'Property': + for type_ in common.property_type: + if type_ in string_db: + ui.filter_type_box.addItem(type_) + + +def refill_filters(ui: Ui_MainWindow): + ui.filter_class_box.clear() + ui.filter_class_box.addItem('All') + ui.filter_class_box.setCurrentIndex(0) + ui.filter_type_box.clear() + ui.filter_type_box.addItem('All') + ui.filter_type_box.setCurrentIndex(0) + ui.filter_shop_box.clear() + ui.filter_shop_box.addItem('All') + ui.filter_shop_box.setCurrentIndex(0) + + string_db = str(Database.get().to_json()) + + for class_ in common.items_class: + if class_ in string_db: + ui.filter_class_box.addItem(class_) + + for type_ in common.vehicle_type: + if type_ in string_db: + ui.filter_type_box.addItem(type_) + + for type_ in common.property_type: + if type_ in string_db: + ui.filter_type_box.addItem(type_) + + for shop in common.shop_sites: + if shop in string_db: + ui.filter_shop_box.addItem(shop) + + +def on_open_close_click(ui: Ui_MainWindow): + width = ui.filter_lay.geometry().width() + Ui_MainWindow.animation = QtCore.QPropertyAnimation(ui.filter_lay, b"minimumWidth") + Ui_MainWindow.animation.setDuration(300) + + if width == 0: + Ui_MainWindow.animation.setStartValue(0) + Ui_MainWindow.animation.setEndValue(250) + + Ui_MainWindow.animation.setEasingCurve(QtCore.QEasingCurve.InOutQuart) + Ui_MainWindow.animation.start() + else: + Ui_MainWindow.animation.setStartValue(width) + Ui_MainWindow.animation.setEndValue(0) + + Ui_MainWindow.animation.setEasingCurve(QtCore.QEasingCurve.InOutQuart) + Ui_MainWindow.animation.start() diff --git a/gui/modules/handlers/register.py b/gui/modules/handlers/register.py index 026a47a..cc804c1 100644 --- a/gui/modules/handlers/register.py +++ b/gui/modules/handlers/register.py @@ -2,6 +2,7 @@ from gui.gui import Ui_MainWindow from gui.modules.handlers import fill_info from gui.modules.handlers import on_item_remove from gui.modules.adding_item import on_add_click +from gui.modules.filters import menu def register_handlers(ui: Ui_MainWindow): @@ -12,4 +13,8 @@ def register_handlers(ui: Ui_MainWindow): ui.add_item_button.clicked.connect(lambda: on_add_click.on_add_button_click(ui)) + ui.open_filter_button.clicked.connect(lambda: menu.on_open_close_click(ui)) + + ui.filter_class_box.currentIndexChanged.connect(lambda: menu.refill_types(ui)) + on_add_click.register_add_handlers(ui)