36 lines
1.3 KiB
Python
36 lines
1.3 KiB
Python
from PySide6.QtWidgets import QWidget, QListWidget, QVBoxLayout, QLabel, QListWidgetItem
|
|
from app.core.models.chat_models import PrivateChatListItem
|
|
|
|
class ChatListView(QWidget):
|
|
def __init__(self, username, chat_items: list[PrivateChatListItem]):
|
|
super().__init__()
|
|
self.setWindowTitle(f"Чаты — {username}")
|
|
self.setMinimumSize(400, 500)
|
|
|
|
self.chat_items = chat_items
|
|
self.init_ui()
|
|
|
|
def init_ui(self):
|
|
layout = QVBoxLayout()
|
|
|
|
self.label = QLabel("Список чатов:")
|
|
layout.addWidget(self.label)
|
|
|
|
self.chat_list = QListWidget()
|
|
self.render_chat_items()
|
|
layout.addWidget(self.chat_list)
|
|
|
|
self.setLayout(layout)
|
|
|
|
def render_chat_items(self):
|
|
self.chat_list.clear()
|
|
for chat in self.chat_items:
|
|
companion_name = chat.companion_data.get("username", "Без имени") if chat.companion_data else "Неизвестный"
|
|
last_msg = chat.last_message.context if chat.last_message else "Нет сообщений"
|
|
item_text = f"{companion_name} — {last_msg}"
|
|
self.chat_list.addItem(QListWidgetItem(item_text))
|
|
|
|
def update_chat_items(self, new_items: list[PrivateChatListItem]):
|
|
self.chat_items = new_items
|
|
self.render_chat_items()
|