chat patch
This commit is contained in:
		
							parent
							
								
									4e50ff865f
								
							
						
					
					
						commit
						1affc2f8d7
					
				@ -1,5 +1,6 @@
 | 
				
			|||||||
from PySide6.QtWidgets import QWidget, QListWidget, QVBoxLayout, QListWidgetItem, QAbstractItemView
 | 
					from PySide6.QtWidgets import QWidget, QListWidget, QVBoxLayout, QListWidgetItem, QAbstractItemView
 | 
				
			||||||
from PySide6.QtCore import Qt, QSize, Signal, QLocale
 | 
					from PySide6.QtCore import Qt, QSize, Signal, QLocale
 | 
				
			||||||
 | 
					from app.core.localizer import localizer
 | 
				
			||||||
from typing import List
 | 
					from typing import List
 | 
				
			||||||
from app.core.models.chat_models import PrivateChatListItem
 | 
					from app.core.models.chat_models import PrivateChatListItem
 | 
				
			||||||
from app.ui.widgets.chat_list_item_widget import ChatListItemWidget
 | 
					from app.ui.widgets.chat_list_item_widget import ChatListItemWidget
 | 
				
			||||||
@ -194,6 +195,31 @@ class ChatListView(QWidget):
 | 
				
			|||||||
                    display_ts = ts_dt.strftime('%d.%m.%y')
 | 
					                    display_ts = ts_dt.strftime('%d.%m.%y')
 | 
				
			||||||
            else:
 | 
					            else:
 | 
				
			||||||
                display_ts = ''
 | 
					                display_ts = ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            # Override display with app locale rules (via localizer)
 | 
				
			||||||
 | 
					            try:
 | 
				
			||||||
 | 
					                qt_locale = QLocale(localizer.lang)
 | 
				
			||||||
 | 
					                ts_dt_loc = chat.last_message.created_at.astimezone() if (chat.last_message and getattr(chat.last_message, 'created_at', None)) else None
 | 
				
			||||||
 | 
					                now_loc = datetime.now().astimezone()
 | 
				
			||||||
 | 
					                if ts_dt_loc:
 | 
				
			||||||
 | 
					                    delta_days2 = (now_loc.date() - ts_dt_loc.date()).days
 | 
				
			||||||
 | 
					                    if delta_days2 == 0:
 | 
				
			||||||
 | 
					                        time_fmt = QLocale.system().timeFormat(QLocale.ShortFormat)
 | 
				
			||||||
 | 
					                        if ('AP' in time_fmt) or ('ap' in time_fmt) or ('a' in time_fmt):
 | 
				
			||||||
 | 
					                            display_ts = ts_dt_loc.strftime('%I:%M %p').lstrip('0')
 | 
				
			||||||
 | 
					                        else:
 | 
				
			||||||
 | 
					                            display_ts = ts_dt_loc.strftime('%H:%M')
 | 
				
			||||||
 | 
					                    elif delta_days2 == 1:
 | 
				
			||||||
 | 
					                        display_ts = 'Вчера' if localizer.lang.startswith('ru') else 'Yesterday'
 | 
				
			||||||
 | 
					                    elif 1 < delta_days2 < 7:
 | 
				
			||||||
 | 
					                        display_ts = qt_locale.dayName(ts_dt_loc.isoweekday(), QLocale.ShortFormat)
 | 
				
			||||||
 | 
					                    elif delta_days2 < 365:
 | 
				
			||||||
 | 
					                        month_name = qt_locale.monthName(ts_dt_loc.month, QLocale.ShortFormat)
 | 
				
			||||||
 | 
					                        display_ts = f"{month_name} {ts_dt_loc.day:02d}"
 | 
				
			||||||
 | 
					                    else:
 | 
				
			||||||
 | 
					                        display_ts = ts_dt_loc.strftime('%d.%m.%y')
 | 
				
			||||||
 | 
					            except Exception:
 | 
				
			||||||
 | 
					                pass
 | 
				
			||||||
            # Создаем кастомный виджет
 | 
					            # Создаем кастомный виджет
 | 
				
			||||||
            is_outgoing = False
 | 
					            is_outgoing = False
 | 
				
			||||||
            is_read = None
 | 
					            is_read = None
 | 
				
			||||||
@ -209,7 +235,12 @@ class ChatListView(QWidget):
 | 
				
			|||||||
                if chat.last_message and getattr(chat.last_message, 'created_at', None):
 | 
					                if chat.last_message and getattr(chat.last_message, 'created_at', None):
 | 
				
			||||||
                    ts_utc = chat.last_message.created_at
 | 
					                    ts_utc = chat.last_message.created_at
 | 
				
			||||||
                    ts_local = ts_utc.astimezone()
 | 
					                    ts_local = ts_utc.astimezone()
 | 
				
			||||||
                    item_widget.set_timestamp_tooltip(ts_local.strftime('%d.%m.%Y %H:%M:%S'))
 | 
					                    # Localized long format tooltip
 | 
				
			||||||
 | 
					                    try:
 | 
				
			||||||
 | 
					                        qt_locale = QLocale(localizer.lang)
 | 
				
			||||||
 | 
					                        item_widget.set_timestamp_tooltip(qt_locale.toString(ts_local, QLocale.LongFormat))
 | 
				
			||||||
 | 
					                    except Exception:
 | 
				
			||||||
 | 
					                        item_widget.set_timestamp_tooltip(ts_local.strftime('%d.%m.%Y %H:%M:%S'))
 | 
				
			||||||
                else:
 | 
					                else:
 | 
				
			||||||
                    item_widget.set_timestamp_tooltip("")
 | 
					                    item_widget.set_timestamp_tooltip("")
 | 
				
			||||||
            except Exception:
 | 
					            except Exception:
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user