139 lines
4.7 KiB
Python
139 lines
4.7 KiB
Python
|
|
# 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)
|