Skip to content

Commit

Permalink
Initial implementation: Search Bar
Browse files Browse the repository at this point in the history
  • Loading branch information
dhtdht020 committed Oct 14, 2020
1 parent f6a1ddf commit f55bde0
Show file tree
Hide file tree
Showing 3 changed files with 174 additions and 6 deletions.
63 changes: 58 additions & 5 deletions gui/ui_united.py
Expand Up @@ -151,6 +151,29 @@ def setupUi(self, MainWindow):

self.verticalLayout_2.addWidget(self.LibraryTopFrame)

self.SearchFrame = QFrame(self.LibraryContentFrame)
self.SearchFrame.setObjectName(u"SearchFrame")
sizePolicy3 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)
sizePolicy3.setHorizontalStretch(0)
sizePolicy3.setVerticalStretch(0)
sizePolicy3.setHeightForWidth(self.SearchFrame.sizePolicy().hasHeightForWidth())
self.SearchFrame.setSizePolicy(sizePolicy3)
self.SearchFrame.setMaximumSize(QSize(16777215, 20))
self.SearchFrame.setFrameShape(QFrame.StyledPanel)
self.SearchFrame.setFrameShadow(QFrame.Raised)
self.horizontalLayout_5 = QHBoxLayout(self.SearchFrame)
self.horizontalLayout_5.setObjectName(u"horizontalLayout_5")
self.horizontalLayout_5.setContentsMargins(0, 0, 0, 0)
self.SearchBar = QLineEdit(self.SearchFrame)
self.SearchBar.setObjectName(u"SearchBar")
sizePolicy1.setHeightForWidth(self.SearchBar.sizePolicy().hasHeightForWidth())
self.SearchBar.setSizePolicy(sizePolicy1)

self.horizontalLayout_5.addWidget(self.SearchBar)


self.verticalLayout_2.addWidget(self.SearchFrame)

self.listAppsWidget = QListWidget(self.LibraryContentFrame)
self.listAppsWidget.setObjectName(u"listAppsWidget")
sizePolicy1.setHeightForWidth(self.listAppsWidget.sizePolicy().hasHeightForWidth())
Expand Down Expand Up @@ -199,11 +222,11 @@ def setupUi(self, MainWindow):

self.SelectionInfoBox = QGroupBox(self.centralwidget)
self.SelectionInfoBox.setObjectName(u"SelectionInfoBox")
sizePolicy3 = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Preferred)
sizePolicy3.setHorizontalStretch(0)
sizePolicy3.setVerticalStretch(0)
sizePolicy3.setHeightForWidth(self.SelectionInfoBox.sizePolicy().hasHeightForWidth())
self.SelectionInfoBox.setSizePolicy(sizePolicy3)
sizePolicy4 = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Preferred)
sizePolicy4.setHorizontalStretch(0)
sizePolicy4.setVerticalStretch(0)
sizePolicy4.setHeightForWidth(self.SelectionInfoBox.sizePolicy().hasHeightForWidth())
self.SelectionInfoBox.setSizePolicy(sizePolicy4)
self.SelectionInfoBox.setMaximumSize(QSize(271, 16777215))
self.verticalLayout_3 = QVBoxLayout(self.SelectionInfoBox)
self.verticalLayout_3.setObjectName(u"verticalLayout_3")
Expand Down Expand Up @@ -405,6 +428,32 @@ def setupUi(self, MainWindow):
self.statusBar.setObjectName(u"statusBar")
self.statusBar.setSizeGripEnabled(False)
MainWindow.setStatusBar(self.statusBar)
self.DebugDock = QDockWidget(MainWindow)
self.DebugDock.setObjectName(u"DebugDock")
self.DebugDock.setFloating(True)
self.DebugDock.setFeatures(QDockWidget.DockWidgetClosable)
self.DebugDock.setAllowedAreas(Qt.NoDockWidgetArea)
self.dockWidgetContents = QWidget()
self.dockWidgetContents.setObjectName(u"dockWidgetContents")
self.verticalLayout_5 = QVBoxLayout(self.dockWidgetContents)
self.verticalLayout_5.setObjectName(u"verticalLayout_5")
self.DebugSearchTerm = QLabel(self.dockWidgetContents)
self.DebugSearchTerm.setObjectName(u"DebugSearchTerm")
font2 = QFont()
font2.setBold(True)
font2.setUnderline(True)
font2.setWeight(75)
self.DebugSearchTerm.setFont(font2)

self.verticalLayout_5.addWidget(self.DebugSearchTerm)

self.DebugSearchResultsAmount = QLabel(self.dockWidgetContents)
self.DebugSearchResultsAmount.setObjectName(u"DebugSearchResultsAmount")

self.verticalLayout_5.addWidget(self.DebugSearchResultsAmount)

self.DebugDock.setWidget(self.dockWidgetContents)
MainWindow.addDockWidget(Qt.LeftDockWidgetArea, self.DebugDock)

self.menubar.addAction(self.menuAbout.menuAction())
self.menubar.addAction(self.menuClients.menuAction())
Expand Down Expand Up @@ -455,6 +504,7 @@ def retranslateUi(self, MainWindow):
self.RefreshListBtn.setText(QCoreApplication.translate("MainWindow", u"Refresh Apps", None))
self.RepositoryDescLabel.setText(QCoreApplication.translate("MainWindow", u"Repository Description", None))
self.AppsAmountLabel.setText(QCoreApplication.translate("MainWindow", u"0 Apps", None))
self.SearchBar.setPlaceholderText(QCoreApplication.translate("MainWindow", u"Search Application..", None))
self.announcementLabel.setText(QCoreApplication.translate("MainWindow", u"<html><head/><body><p><span style=\" font-weight:600;\">Announcement Header: </span>Announcement Content.</p></body></html>", None))
self.announcementURLLabel.setText(QCoreApplication.translate("MainWindow", u"<html><head/><body><p><a href=\"https://google.com\"><span style=\" text-decoration: underline; color:#ffff00;\">Announcement URL</span></a></p></body></html>", None))
self.SelectionInfoBox.setTitle(QCoreApplication.translate("MainWindow", u"Application Metadata", None))
Expand Down Expand Up @@ -493,5 +543,8 @@ def retranslateUi(self, MainWindow):
self.menuClients.setTitle(QCoreApplication.translate("MainWindow", u"Clients", None))
self.menuOpen_Shop_Channel_DL.setTitle(QCoreApplication.translate("MainWindow", u"Open Shop Channel DL", None))
self.menuHomebrew_Browser.setTitle(QCoreApplication.translate("MainWindow", u"Homebrew Browser", None))
self.DebugDock.setWindowTitle(QCoreApplication.translate("MainWindow", u"Search Debugger", None))
self.DebugSearchTerm.setText(QCoreApplication.translate("MainWindow", u"Term", None))
self.DebugSearchResultsAmount.setText(QCoreApplication.translate("MainWindow", u"Results", None))
# retranslateUi

91 changes: 91 additions & 0 deletions gui/united.ui
Expand Up @@ -264,6 +264,55 @@
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="SearchFrame">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>20</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLineEdit" name="SearchBar">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="placeholderText">
<string>Search Application..</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QListWidget" name="listAppsWidget">
<property name="sizePolicy">
Expand Down Expand Up @@ -907,6 +956,48 @@ p, li { white-space: pre-wrap; }
<bool>false</bool>
</property>
</widget>
<widget class="QDockWidget" name="DebugDock">
<property name="floating">
<bool>true</bool>
</property>
<property name="features">
<set>QDockWidget::DockWidgetClosable</set>
</property>
<property name="allowedAreas">
<set>Qt::NoDockWidgetArea</set>
</property>
<property name="windowTitle">
<string>Search Debugger</string>
</property>
<attribute name="dockWidgetArea">
<number>1</number>
</attribute>
<widget class="QWidget" name="dockWidgetContents">
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<widget class="QLabel" name="DebugSearchTerm">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
<underline>true</underline>
</font>
</property>
<property name="text">
<string>Term</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="DebugSearchResultsAmount">
<property name="text">
<string>Results</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<action name="actionAbout_OSC_DL">
<property name="enabled">
<bool>false</bool>
Expand Down
26 changes: 25 additions & 1 deletion xosc_dl.py
Expand Up @@ -20,7 +20,7 @@
from PySide2.QtCore import Qt, QObject
from PySide2.QtGui import QIcon, QColor
from PySide2.QtWidgets import QApplication, QMainWindow, QInputDialog, QLineEdit, QMessageBox, QSplashScreen, QLabel, \
QListWidgetItem, QFileDialog
QListWidgetItem, QFileDialog, QListWidget

import download
import gui.ui_united
Expand Down Expand Up @@ -163,6 +163,10 @@ def assign_initial_actions(self):
self.ui.WiiLoadButton.clicked.connect(self.wiiload_button)


# Search Bar
self.ui.SearchBar.textChanged.connect(self.search_bar)


# Others
self.ui.ReposComboBox.currentIndexChanged.connect(self.changed_host)
self.ui.listAppsWidget.currentItemChanged.connect(self.selection_changed)
Expand Down Expand Up @@ -642,6 +646,26 @@ def load_announcement_banner(self):
except Exception:
pass

def search_bar(self):
text = self.ui.SearchBar.text()
n = 0
results = []
# Filter items with search term
for i in self.ui.listAppsWidget.findItems(text, Qt.MatchContains):
# print(i.text())
results.append(i.text())
n += 1

# Get All Items
for i in self.ui.listAppsWidget.findItems("", Qt.MatchContains):
# Hide and unhide!
if i.text() in results:
i.setHidden(False)
else:
i.setHidden(True)
self.ui.DebugSearchResultsAmount.setText(f"{n} Results")
self.ui.DebugSearchTerm.setText(f"Term: {text}")


if __name__ == "__main__":
global splash
Expand Down

0 comments on commit f55bde0

Please sign in to comment.