diff --git a/briar-gtk/briar_gtk/containers/private_chat.py b/briar-gtk/briar_gtk/containers/private_chat.py index b91afa853381c5226c3c76c87296b3a3551e79db..dc5109f2dd731aeaec9879c86ddce0eb14679811 100644 --- a/briar-gtk/briar_gtk/containers/private_chat.py +++ b/briar-gtk/briar_gtk/containers/private_chat.py @@ -40,6 +40,12 @@ class PrivateChatContainer(Container): { "text": message, "local": True, + "sent": False, + "seen": False, + + # TODO: Remove once web events updating is implemented + "no_stored_indicator": True, + "timestamp": int(round(time.time() * 1000)) }) widget.set_text("") diff --git a/briar-gtk/briar_gtk/widgets/private_message.py b/briar-gtk/briar_gtk/widgets/private_message.py index b26e5539403def19eef6f62faa2f0d8d35a72703..ce0189c2aeb5a01bcf9984510fff5a2c91f7f658 100644 --- a/briar-gtk/briar_gtk/widgets/private_message.py +++ b/briar-gtk/briar_gtk/widgets/private_message.py @@ -33,9 +33,15 @@ class PrivateMessageWidget(Gtk.ListBoxRow): username_info = PrivateMessageWidget._create_username_info( username, username_style_class) + delivery_state_info = PrivateMessageWidget._create_delivery_state_info( + message) date_info = PrivateMessageWidget._create_date_info( message["timestamp"] / 1000) - info = PrivateMessageWidget._create_info(username_info, date_info) + info = PrivateMessageWidget._create_info( + username_info, + delivery_state_info, + date_info + ) body_content = PrivateMessageWidget._create_body_content( message["text"]) @@ -64,6 +70,22 @@ class PrivateMessageWidget(Gtk.ListBoxRow): username_event_box.add(username_label) return username_event_box + @staticmethod + def _create_delivery_state_info(message): + file_name = "message_stored" + if not message.get("local", True): + return Gtk.EventBox() + # TODO: Remove once web events updating is implemented + if message.get("no_stored_indicator", False): + return Gtk.EventBox() + if message.get("sent", False): + file_name = "message_sent" + if message.get("seen", False): + file_name = "message_delivered" + delivery_state = Gtk.Image.new_from_icon_name(file_name, + Gtk.IconSize.MENU) + return delivery_state + @staticmethod def _create_date_info(timestamp): time = PrivateMessageWidget._make_timestamp_readable(timestamp) @@ -83,9 +105,13 @@ class PrivateMessageWidget(Gtk.ListBoxRow): return time.strftime("%x %H:%M") @staticmethod - def _create_info(username_info, date_info): + def _create_info(username_info, delivery_state_info, date_info): info = Gtk.Box.new(Gtk.Orientation.HORIZONTAL, 0) info.pack_start(username_info, True, True, 0) + if isinstance(delivery_state_info, Gtk.Image): + info.pack_end(delivery_state_info, False, False, 3) + else: + info.pack_end(delivery_state_info, False, False, 11) info.pack_end(date_info, False, False, 0) return info @@ -123,6 +149,10 @@ class PrivateMessageWidget(Gtk.ListBoxRow): return True if message["local"] != previous_message["local"]: return True + if message["sent"] != previous_message["sent"]: + return True + if message["seen"] != previous_message["seen"]: + return True time = datetime.fromtimestamp(message.get("timestamp", 0) / 1000) previous_time = datetime.fromtimestamp(