Files
leonpan-pc/app/view/ownFiled_interface.py
2025-10-29 22:20:21 +08:00

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)