# coding: utf-8 from loguru import logger from PyQt6.QtCore import Qt from PyQt6.QtWidgets import QHBoxLayout, QVBoxLayout, QWidget from qfluentwidgets import ( InfoBar, InfoBarPosition, VerticalSeparator, ) from app.core import signalBus from app.view.widgets.ownfile_scroll_widget import OwnFileScrollWidget from app.view.widgets.ownFiled_widgets import SearchWidget, TagWidget from app.view.widgets.share_search_widgets import ShareSearchScrollWidget from app.view.widgets.ware_search_widgets import WareSearchScrollWidget class OwnFiledInterface(QWidget): """主文件管理界面""" def __init__(self, parent=None): super().__init__(parent=parent) self.setObjectName("OwnFiledInterface") self.currentPath = "/" logger.debug("初始化主文件管理界面") # 初始化组件 self.searchWidget = SearchWidget(self) self.tagWidget = TagWidget(self) self.ownFileScrollWidget = OwnFileScrollWidget(self) self.wareSearchScrollWidget = WareSearchScrollWidget(self) self.wareSearchScrollWidget.hide() self.shareSearchScrollWidget = ShareSearchScrollWidget(self) self.shareSearchScrollWidget.hide() self.setupUi() self.connectSignals() def setupUi(self): """初始化UI""" logger.debug("设置主文件管理界面UI") # 设置主布局 self.initLayout() def initLayout(self): """初始化布局""" self.vBoxLayout = QVBoxLayout(self) self.vBoxLayout.setContentsMargins(10, 0, 10, 0) # 创建顶部布局 self.topLayout = QHBoxLayout() self.topLayout.setContentsMargins(0, 0, 0, 0) self.topLayout.setAlignment( Qt.AlignmentFlag.AlignTop | Qt.AlignmentFlag.AlignVCenter ) self.topLayout.addWidget( self.tagWidget, 0, Qt.AlignmentFlag.AlignTop | Qt.AlignmentFlag.AlignLeft ) self.topLayout.addSpacing(20) self.verticalSeparator = VerticalSeparator(self) self.verticalSeparator.setFixedHeight(25) self.topLayout.addWidget(self.verticalSeparator) self.topLayout.addSpacing(20) self.topLayout.addWidget(self.searchWidget, 0, Qt.AlignmentFlag.AlignTop) # 添加所有组件到主布局 self.vBoxLayout.addLayout(self.topLayout) self.vBoxLayout.addWidget(self.ownFileScrollWidget) self.vBoxLayout.addWidget(self.wareSearchScrollWidget) self.vBoxLayout.addWidget(self.shareSearchScrollWidget) def tagSearch(self, types, keyword): self.wareSearchScrollWidget.show() self.ownFileScrollWidget.hide() self.wareSearchScrollWidget.wareSearch(types, keyword) def search(self): keyword = self.searchWidget.searchLineEdit.text() searchType = self.searchWidget.searchButton.text() if keyword == "" or keyword == ".": InfoBar.warning( "注意", "搜索内容为空", Qt.Orientation.Horizontal, True, 1000, InfoBarPosition.TOP_RIGHT, self.window(), ) return if searchType == "仓内搜索": self.wareSearchScrollWidget.show() self.ownFileScrollWidget.hide() self.shareSearchScrollWidget.hide() self.wareSearchScrollWidget.wareSearch("keyword", keyword) self.tagWidget.tagScrollArea.clearChecked() elif searchType == "站内搜索": self.wareSearchScrollWidget.hide() self.ownFileScrollWidget.hide() self.shareSearchScrollWidget.show() self.shareSearchScrollWidget.shareSearch(keyword, 1) self.tagWidget.tagScrollArea.clearChecked() def returnLinkageSwitchingPage(self): self.wareSearchScrollWidget.hide() self.shareSearchScrollWidget.hide() self.ownFileScrollWidget.show() self.tagWidget.tagScrollArea.clearChecked() self.searchWidget.searchLineEdit.clear() def connectSignals(self): """连接信号与槽""" logger.debug("连接主文件管理界面信号") # 连接搜索信号 signalBus.dirOpenSignal.connect( lambda x: self.ownFileScrollWidget.onChangeDir(x) ) signalBus.refreshFolderListSignal.connect( self.ownFileScrollWidget.refreshCurrentDirectory ) self.wareSearchScrollWidget.returnSignal.connect( self.returnLinkageSwitchingPage ) self.shareSearchScrollWidget.returnSignal.connect( self.returnLinkageSwitchingPage ) self.searchWidget.searchButton.clicked.connect(self.search) self.tagWidget.tagScrollArea.tagClicked.connect(self.tagSearch)