Add button to search bar in shop main widget
This commit is contained in:
parent
69675ee639
commit
98386f0bbb
4 changed files with 43 additions and 18 deletions
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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"))
|
||||||
|
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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)
|
||||||
|
@ -308,5 +309,32 @@ class ImageLabel(QLabel):
|
||||||
|
|
||||||
def show_image(self):
|
def show_image(self):
|
||||||
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)
|
||||||
|
|
Loading…
Reference in a new issue