164 lines
5.5 KiB
Swift
164 lines
5.5 KiB
Swift
//
|
|
// 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
|
|
}
|
|
}
|
|
}
|