Visual_Novel_iOS/crush/Crush/Src/Modules/Friend/FriendsRootHomeController.s...

164 lines
5.5 KiB
Swift
Raw Normal View History

2025-10-09 10:29:35 +00:00
//
// FriendsRootHomeController.swift
// Crush
//
// Created by Leon on 2025/7/22.
//
import JXPagingView
import JXSegmentedView
import UIKit
class FriendsRootHomeController: CLTabRootController<FriendsRootHomeView> {
private var naviMoreButton: EPIconGhostButton!
private let segmentedViewHeight = 44
private lazy var segmentedView = JXSegmentedView(frame: CGRect(x: 0, y: 0, width: UIScreen.width, height: CGFloat(segmentedViewHeight)))
private lazy var listContainerView = JXSegmentedListContainerView(dataSource: self)
private let dataSource = JXSegmentedTitleDataSource()
private let titles = ["Message", "Friends"]
lazy var messageListVc = SessionListController()
lazy var friendsListVc = FrinendsListController()
override func viewDidLoad() {
super.viewDidLoad()
// view.showEmpty(text: "Friends Coming soon")
setupViews()
setupDats()
setupEvents()
}
private func setupViews() {
navigationView.bgView.alpha = 0
naviMoreButton = {
let v = EPIconGhostButton(radius: .none, iconSize: .medium, iconCode: .chatroomMore)
v.addTarget(self, action: #selector(tapMore(sender:)), for: .touchUpInside)
navigationView.rightStackH.addArrangedSubview(v)
v.snp.makeConstraints { make in
make.size.equalTo(CGSize(width: 52, height: 44))
}
return v
}()
setupJXViews()
}
private func setupJXViews(){
dataSource.naviTitleStyle()
dataSource.titles = titles
segmentedView.naviTitleStyle()
segmentedView.dataSource = dataSource
segmentedView.delegate = self
navigationView.addSubview(segmentedView)
segmentedView.snp.makeConstraints { make in
make.height.equalTo(44)
make.leading.equalToSuperview()
make.bottom.equalToSuperview()
make.trailing.equalTo(naviMoreButton.snp.leading).offset(-8)
}
listContainerView.contentScrollView().isScrollEnabled = false
view.addSubview(listContainerView)
listContainerView.snp.makeConstraints { make in
make.leading.trailing.bottom.equalToSuperview()
make.top.equalTo(navigationView.snp.bottom)
}
segmentedView.listContainer = listContainerView
}
private func setupDats() {
}
private func setupEvents() {
}
// MARK: - Action
@objc private func tapMore(sender: UIButton) {
let pop = CLPopoverListView()
let rect = view.convert(sender.frame, from: sender.superview)
var items = [CLPopoverListTextItem]()
// do {
// let listItem = CLPopoverListTextItem()
// listItem.title = "Notice"
// listItem.image = MWIconFont.image(fromIcon: .messages, size: CGSize(width: 20, height: 20), color: .text)
// listItem.updateLayout()
// listItem.selectedHandler = { _ in
// AppRouter.goNoticeCenter()
// }
// items.append(listItem)
// }
do {
let listItem = CLPopoverListTextItem()
listItem.title = "Search"
listItem.image = MWIconFont.image(fromIcon: .search, size: CGSize(width: 20, height: 20), color: .text)
listItem.updateLayout()
listItem.selectedHandler = {[weak self] _ in
let search = FriendMainSearchController()
self?.presentNaviRootVc(vc: search)
}
items.append(listItem)
}
do {
let listItem = CLPopoverListTextItem()
listItem.title = "Read All"
listItem.image = MWIconFont.image(fromIcon: .clear, size: CGSize(width: 20, height: 20), color: .text)
listItem.updateLayout()
listItem.selectedHandler = { _ in
IMManager.shared.clearAllUnread()
}
items.append(listItem)
}
do {
let listItem = CLPopoverListTextItem()
listItem.title = "Delete All"
listItem.image = MWIconFont.image(fromIcon: .iconDelete, size: CGSize(width: 20, height: 20), color: .text)
listItem.updateLayout()
listItem.selectedHandler = {[weak self] _ in
let alert = Alert(title: "删除内容", text: "删除全部消息后,将清空所有的消息记录")
let action1 = AlertAction(title: "删除", actionStyle: .confirm) {[weak self] in
self?.messageListVc.deleteAllConversations()
}
let action2 = AlertAction(title: "Cancel", actionStyle: .cancel)
alert.addAction(action1)
alert.addAction(action2)
alert.show()
}
items.append(listItem)
}
pop.setupCommonPopover(rect, inView: view, items: items, block: nil)
}
}
extension FriendsRootHomeController: JXSegmentedViewDelegate {
func segmentedView(_ segmentedView: JXSegmentedView, didSelectedItemAt index: Int) {
}
}
extension FriendsRootHomeController: JXSegmentedListContainerViewDataSource {
func numberOfLists(in listContainerView: JXSegmentedListContainerView) -> Int {
return titles.count
}
func listContainerView(_ listContainerView: JXSegmentedListContainerView, initListAt index: Int) -> JXSegmentedListContainerViewListDelegate {
if index == 0 {
return messageListVc
} else {
return friendsListVc
}
}
}