1
0
Fork 0
mirror of synced 2024-09-30 09:17:37 +13:00

Add button to search bar in shop main widget

This commit is contained in:
Dummerle 2021-06-20 22:22:36 +02:00
parent 69675ee639
commit 98386f0bbb
4 changed files with 43 additions and 18 deletions

View file

@ -10,7 +10,7 @@ from PyQt5.QtWidgets import QWidget, QCompleter, QGroupBox, QHBoxLayout, QScroll
from rare.components.tabs.shop.game_widgets import GameWidget from rare.components.tabs.shop.game_widgets import GameWidget
from rare.ui.components.tabs.store.store import Ui_ShopWidget from rare.ui.components.tabs.store.store import Ui_ShopWidget
from rare.utils.extra_widgets import WaitingSpinner, FlowLayout from rare.utils.extra_widgets import WaitingSpinner, FlowLayout, ButtonLineEdit
from rare.utils.utils import get_lang from rare.utils.utils import get_lang
logger = logging.getLogger("Shop") logger = logging.getLogger("Shop")
@ -40,13 +40,21 @@ class ShopWidget(QScrollArea, Ui_ShopWidget):
self.free_games_widget.layout().addWidget(self.coming_free_games) self.free_games_widget.layout().addWidget(self.coming_free_games)
self.free_games_stack.addWidget(WaitingSpinner()) self.free_games_stack.addWidget(WaitingSpinner())
self.free_games_stack.addWidget(self.free_games_widget) self.free_games_stack.addWidget(self.free_games_widget)
self.search.textChanged.connect(self.search_games)
self.completer = QCompleter() self.completer = QCompleter()
self.completer.setCaseSensitivity(Qt.CaseInsensitive) self.completer.setCaseSensitivity(Qt.CaseInsensitive)
self.search.setCompleter(self.completer)
self.search.returnPressed.connect(self.show_search_result)
self.data = [] self.data = []
self.search_bar = ButtonLineEdit("fa.search", placeholder_text=self.tr("Search Games"))
self.scrollAreaWidgetContents.layout().insertWidget(0, self.search_bar)
self.search_bar.textChanged.connect(self.search_games)
self.search_bar.setCompleter(self.completer)
self.search_bar.returnPressed.connect(self.show_search_result)
self.search_bar.buttonClicked.connect(self.show_search_result)
self.games_groupbox.setLayout(FlowLayout()) self.games_groupbox.setLayout(FlowLayout())
self.games_groupbox.setVisible(False) self.games_groupbox.setVisible(False)

View file

@ -8,7 +8,7 @@
# run again. Do not edit this file unless you know what you are doing. # run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtWidgets
class Ui_ShopWidget(object): class Ui_ShopWidget(object):
@ -25,9 +25,6 @@ class Ui_ShopWidget(object):
self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents") self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents) self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents)
self.verticalLayout_3.setObjectName("verticalLayout_3") self.verticalLayout_3.setObjectName("verticalLayout_3")
self.search = QtWidgets.QLineEdit(self.scrollAreaWidgetContents)
self.search.setObjectName("search")
self.verticalLayout_3.addWidget(self.search)
self.free_game_group_box = QtWidgets.QGroupBox(self.scrollAreaWidgetContents) self.free_game_group_box = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
self.free_game_group_box.setObjectName("free_game_group_box") self.free_game_group_box.setObjectName("free_game_group_box")
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.free_game_group_box) self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.free_game_group_box)
@ -51,7 +48,6 @@ class Ui_ShopWidget(object):
def retranslateUi(self, ShopWidget): def retranslateUi(self, ShopWidget):
_translate = QtCore.QCoreApplication.translate _translate = QtCore.QCoreApplication.translate
ShopWidget.setWindowTitle(_translate("ShopWidget", "Form")) ShopWidget.setWindowTitle(_translate("ShopWidget", "Form"))
self.search.setPlaceholderText(_translate("ShopWidget", "Search Games"))
self.free_game_group_box.setTitle(_translate("ShopWidget", "Free Games")) self.free_game_group_box.setTitle(_translate("ShopWidget", "Free Games"))
self.games_groupbox.setTitle(_translate("ShopWidget", "Other nice games")) self.games_groupbox.setTitle(_translate("ShopWidget", "Other nice games"))

View file

@ -29,13 +29,6 @@
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_3"> <layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QLineEdit" name="search">
<property name="placeholderText">
<string>Search Games</string>
</property>
</widget>
</item>
<item> <item>
<widget class="QGroupBox" name="free_game_group_box"> <widget class="QGroupBox" name="free_game_group_box">
<property name="title"> <property name="title">

View file

@ -7,7 +7,7 @@ from PyQt5.QtCore import Qt, QRect, QSize, QPoint, pyqtSignal, QUrl, QSettings
from PyQt5.QtGui import QMovie, QPixmap from PyQt5.QtGui import QMovie, QPixmap
from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply
from PyQt5.QtWidgets import QLayout, QStyle, QSizePolicy, QLabel, QFileDialog, QHBoxLayout, QWidget, QPushButton, \ from PyQt5.QtWidgets import QLayout, QStyle, QSizePolicy, QLabel, QFileDialog, QHBoxLayout, QWidget, QPushButton, \
QStyleOptionTab, QStylePainter, QTabBar QStyleOptionTab, QStylePainter, QTabBar, QLineEdit, QToolButton
from qtawesome import icon from qtawesome import icon
from rare import style_path from rare import style_path
@ -15,6 +15,7 @@ from rare.ui.utils.pathedit import Ui_PathEdit
logger = getLogger("ExtraWidgets") logger = getLogger("ExtraWidgets")
class FlowLayout(QLayout): class FlowLayout(QLayout):
def __init__(self, parent=None, margin=-1, hspacing=-1, vspacing=-1): def __init__(self, parent=None, margin=-1, hspacing=-1, vspacing=-1):
super(FlowLayout, self).__init__(parent) super(FlowLayout, self).__init__(parent)
@ -310,3 +311,30 @@ class ImageLabel(QLabel):
self.image = QPixmap(os.path.join(self.path, self.name)).scaled(*self.img_size, self.image = QPixmap(os.path.join(self.path, self.name)).scaled(*self.img_size,
transformMode=Qt.SmoothTransformation) transformMode=Qt.SmoothTransformation)
self.setPixmap(self.image) self.setPixmap(self.image)
class ButtonLineEdit(QLineEdit):
buttonClicked = pyqtSignal()
def __init__(self, icon_name, placeholder_text: str, parent=None):
super(ButtonLineEdit, self).__init__(parent)
self.button = QToolButton(self)
self.button.setIcon(icon(icon_name, color="white"))
self.button.setStyleSheet('border: 0px; padding: 0px;')
self.button.setCursor(Qt.ArrowCursor)
self.button.clicked.connect(self.buttonClicked.emit)
frameWidth = self.style().pixelMetric(QStyle.PM_DefaultFrameWidth)
buttonSize = self.button.sizeHint()
self.setStyleSheet('QLineEdit {padding-right: %dpx; }' % (buttonSize.width() + frameWidth + 1))
self.setMinimumSize(max(self.minimumSizeHint().width(), buttonSize.width() + frameWidth * 2 + 2),
max(self.minimumSizeHint().height(), buttonSize.height() + frameWidth * 2 + 2))
def resizeEvent(self, event):
buttonSize = self.button.sizeHint()
frameWidth = self.style().pixelMetric(QStyle.PM_DefaultFrameWidth)
self.button.move(self.rect().right() - frameWidth - buttonSize.width(),
(self.rect().bottom() - buttonSize.height() + 1) / 2)
super(ButtonLineEdit, self).resizeEvent(event)