From eb3f494bd3ee0275ed782b940b0de50afd2d7b85 Mon Sep 17 00:00:00 2001 From: BarsTiger Date: Sat, 6 Aug 2022 18:50:12 +0300 Subject: [PATCH] filters system --- gui/modules/adding_item/write_item.py | 2 ++ gui/modules/core/items_list.py | 15 +++++++++++++-- gui/modules/filters/menu.py | 3 +++ gui/modules/handlers/fill_info.py | 2 +- gui/modules/handlers/on_item_remove.py | 2 ++ gui/modules/handlers/register.py | 4 +++- gui/modules/initialize/setup_ui.py | 2 ++ 7 files changed, 26 insertions(+), 4 deletions(-) diff --git a/gui/modules/adding_item/write_item.py b/gui/modules/adding_item/write_item.py index c864eb8..f02f20c 100644 --- a/gui/modules/adding_item/write_item.py +++ b/gui/modules/adding_item/write_item.py @@ -1,6 +1,7 @@ from modules.database import Database from modules.database.model import Item from gui.modules.core import items_list +from gui.modules.filters.menu import refill_filters from gui.gui import Ui_MainWindow @@ -21,3 +22,4 @@ def add_item_if_can(ui: Ui_MainWindow): )) items_list.refill_list(ui) + refill_filters(ui) diff --git a/gui/modules/core/items_list.py b/gui/modules/core/items_list.py index 904887a..18b703d 100644 --- a/gui/modules/core/items_list.py +++ b/gui/modules/core/items_list.py @@ -2,7 +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 +from gui.modules.handlers import fill_info def refill_list(ui: Ui_MainWindow): @@ -10,9 +10,18 @@ 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] + + if not ui.filter_min_price_box.value() <= item.price <= ui.filter_max_price_box.value(): + continue + + if not (ui.filter_type_box.currentText() == 'All' or item.item_type == ui.filter_type_box.currentText()): + continue + + if not (ui.filter_class_box.currentText() == 'All' or item.item_class == ui.filter_class_box.currentText()): + continue + list_item = QtWidgets.QListWidgetItem() list_item.setText(f'{item.item_name} - ${"{:,}".format(item.price)}') pixmap = QtGui.QPixmap() @@ -24,6 +33,8 @@ def refill_list(ui: Ui_MainWindow): ui.items_list.addItem(list_item) + fill_info.on_item_click(ui, 'close') + else: ui.logo_if_empty.show() ui.items_list.hide() diff --git a/gui/modules/filters/menu.py b/gui/modules/filters/menu.py index 8a3efd9..37bbc1e 100644 --- a/gui/modules/filters/menu.py +++ b/gui/modules/filters/menu.py @@ -31,6 +31,9 @@ def refill_types(ui: Ui_MainWindow): if type_ in string_db: ui.filter_type_box.addItem(type_) + case 'Other': + ui.filter_type_box.addItem('Other') + def refill_filters(ui: Ui_MainWindow): ui.filter_class_box.clear() diff --git a/gui/modules/handlers/fill_info.py b/gui/modules/handlers/fill_info.py index 53c8588..5287580 100644 --- a/gui/modules/handlers/fill_info.py +++ b/gui/modules/handlers/fill_info.py @@ -27,7 +27,7 @@ def on_item_click(ui: Ui_MainWindow, mode: str): Ui_MainWindow.animation = QtCore.QPropertyAnimation(ui.item_properties_lay, b"minimumWidth") Ui_MainWindow.animation.setDuration(300) - if width == 0: + if width == 0 and mode != 'close': Ui_MainWindow.animation.setStartValue(0) Ui_MainWindow.animation.setEndValue(480) diff --git a/gui/modules/handlers/on_item_remove.py b/gui/modules/handlers/on_item_remove.py index ab610ed..9f8173f 100644 --- a/gui/modules/handlers/on_item_remove.py +++ b/gui/modules/handlers/on_item_remove.py @@ -1,6 +1,7 @@ from gui.gui import Ui_MainWindow from modules.database import Database from gui.modules.core import items_list +from gui.modules.filters.menu import refill_filters def on_rm_click(ui: Ui_MainWindow): @@ -10,4 +11,5 @@ def on_rm_click(ui: Ui_MainWindow): ui.items_list.currentItem().text().removesuffix(' - ' + ui.items_list.currentItem().text().split(' - ')[-1]) ) items_list.refill_list(ui) + refill_filters(ui) fill_info.on_item_click(ui, 'close') diff --git a/gui/modules/handlers/register.py b/gui/modules/handlers/register.py index cc804c1..48e854f 100644 --- a/gui/modules/handlers/register.py +++ b/gui/modules/handlers/register.py @@ -3,10 +3,11 @@ 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 +from gui.modules.core import items_list def register_handlers(ui: Ui_MainWindow): - ui.items_list.currentItemChanged.connect(lambda: fill_info.on_item_click(ui, 'open')) + ui.items_list.itemClicked.connect(lambda: fill_info.on_item_click(ui, 'open')) ui.items_list.itemDoubleClicked.connect(lambda: fill_info.on_item_click(ui, 'close')) ui.delete_item_button.clicked.connect(lambda: on_item_remove.on_rm_click(ui)) @@ -16,5 +17,6 @@ def register_handlers(ui: Ui_MainWindow): ui.open_filter_button.clicked.connect(lambda: menu.on_open_close_click(ui)) ui.filter_class_box.currentIndexChanged.connect(lambda: menu.refill_types(ui)) + ui.filters_apply_button.clicked.connect(lambda: items_list.refill_list(ui)) on_add_click.register_add_handlers(ui) diff --git a/gui/modules/initialize/setup_ui.py b/gui/modules/initialize/setup_ui.py index 7b13ebf..19bdbb8 100644 --- a/gui/modules/initialize/setup_ui.py +++ b/gui/modules/initialize/setup_ui.py @@ -5,6 +5,7 @@ from PyQt5.QtWidgets import QMainWindow from modules.config import Config from gui.modules.core import items_list from gui.modules.handlers.register import register_handlers +from gui.modules.filters.menu import refill_filters def on_load(ui: Ui_MainWindow, MainWindow: QMainWindow): @@ -17,6 +18,7 @@ def on_load(ui: Ui_MainWindow, MainWindow: QMainWindow): if 'acrylic' in Config.get().theme: GlobalBlur(MainWindow.winId(), acrylic=True) + refill_filters(ui) items_list.refill_list(ui) register_handlers(ui)