desktop_app/app/ui/views/chat_list_view.py
2025-09-09 18:08:46 +03:00

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()