private messages - types
This commit is contained in:
parent
eba7e0c0dc
commit
5e1f060fac
5 changed files with 81 additions and 17 deletions
|
@ -170,14 +170,20 @@ class Messenger(tox_save.ToxSave):
|
||||||
if not text or group_number < 0 or peer_id < 0:
|
if not text or group_number < 0 or peer_id < 0:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if text.startswith('/me '):
|
||||||
|
message_type = TOX_MESSAGE_TYPE['ACTION']
|
||||||
|
text = text[4:]
|
||||||
|
else:
|
||||||
|
message_type = TOX_MESSAGE_TYPE['NORMAL']
|
||||||
|
|
||||||
group_peer_contact = self._contacts_manager.get_or_create_group_peer_contact(group_number, peer_id)
|
group_peer_contact = self._contacts_manager.get_or_create_group_peer_contact(group_number, peer_id)
|
||||||
group = self._get_group_by_number(group_number)
|
group = self._get_group_by_number(group_number)
|
||||||
messages = self._split_message(text.encode('utf-8'))
|
messages = self._split_message(text.encode('utf-8'))
|
||||||
t = util.get_unix_time()
|
t = util.get_unix_time()
|
||||||
for message in messages:
|
for message in messages:
|
||||||
self._tox.group_send_private_message(group_number, peer_id, message)
|
self._tox.group_send_private_message(group_number, peer_id, message_type, message)
|
||||||
message_author = MessageAuthor(group.get_self_name(), MESSAGE_AUTHOR['GC_PEER'])
|
message_author = MessageAuthor(group.get_self_name(), MESSAGE_AUTHOR['GC_PEER'])
|
||||||
message = OutgoingTextMessage(text, message_author, t, MESSAGE_TYPE['TEXT'])
|
message = OutgoingTextMessage(text, message_author, t, message_type)
|
||||||
group_peer_contact.append_message(message)
|
group_peer_contact.append_message(message)
|
||||||
if not self._contacts_manager.is_contact_active(group_peer_contact):
|
if not self._contacts_manager.is_contact_active(group_peer_contact):
|
||||||
return
|
return
|
||||||
|
@ -185,7 +191,7 @@ class Messenger(tox_save.ToxSave):
|
||||||
self._screen.messageEdit.clear()
|
self._screen.messageEdit.clear()
|
||||||
self._screen.messages.scrollToBottom()
|
self._screen.messages.scrollToBottom()
|
||||||
|
|
||||||
def new_group_private_message(self, group_number, message, peer_id):
|
def new_group_private_message(self, group_number, message_type, message, peer_id):
|
||||||
"""
|
"""
|
||||||
Current user gets new message
|
Current user gets new message
|
||||||
:param message: text of message
|
:param message: text of message
|
||||||
|
@ -194,7 +200,7 @@ class Messenger(tox_save.ToxSave):
|
||||||
group = self._get_group_by_number(group_number)
|
group = self._get_group_by_number(group_number)
|
||||||
peer = group.get_peer_by_id(peer_id)
|
peer = group.get_peer_by_id(peer_id)
|
||||||
text_message = TextMessage(message, MessageAuthor(peer.name, MESSAGE_AUTHOR['GC_PEER']),
|
text_message = TextMessage(message, MessageAuthor(peer.name, MESSAGE_AUTHOR['GC_PEER']),
|
||||||
t, MESSAGE_TYPE['TEXT'])
|
t, message_type)
|
||||||
group_peer_contact = self._contacts_manager.get_or_create_group_peer_contact(group_number, peer_id)
|
group_peer_contact = self._contacts_manager.get_or_create_group_peer_contact(group_number, peer_id)
|
||||||
self._add_message(text_message, group_peer_contact)
|
self._add_message(text_message, group_peer_contact)
|
||||||
|
|
||||||
|
|
|
@ -379,9 +379,9 @@ def group_private_message(window, tray, tox, messenger, settings, profile):
|
||||||
"""
|
"""
|
||||||
New private message in group chat
|
New private message in group chat
|
||||||
"""
|
"""
|
||||||
def wrapped(tox_link, group_number, peer_id, message, length, user_data):
|
def wrapped(tox_link, group_number, peer_id, message_type, message, length, user_data):
|
||||||
message = str(message[:length], 'utf-8')
|
message = str(message[:length], 'utf-8')
|
||||||
invoke_in_main_thread(messenger.new_group_private_message, group_number, message, peer_id)
|
invoke_in_main_thread(messenger.new_group_private_message, group_number, message_type, message, peer_id)
|
||||||
if not window.isActiveWindow():
|
if not window.isActiveWindow():
|
||||||
bl = settings['notify_all_gc'] or profile.name in message
|
bl = settings['notify_all_gc'] or profile.name in message
|
||||||
name = tox.group_peer_get_name(group_number, peer_id)
|
name = tox.group_peer_get_name(group_number, peer_id)
|
||||||
|
|
|
@ -24,13 +24,31 @@ class PeerScreen(CenteredWidget):
|
||||||
self.peerNameLabel.setText(self._peer.name)
|
self.peerNameLabel.setText(self._peer.name)
|
||||||
self.ignorePeerCheckBox.setChecked(self._peer.is_muted)
|
self.ignorePeerCheckBox.setChecked(self._peer.is_muted)
|
||||||
self.sendPrivateMessagePushButton.clicked.connect(self._send_private_message)
|
self.sendPrivateMessagePushButton.clicked.connect(self._send_private_message)
|
||||||
|
self.copyPublicKeyPushButton.clicked.connect(self._copy_public_key)
|
||||||
|
self.roleNameLabel.setText(self._get_role_name())
|
||||||
self._retranslate_ui()
|
self._retranslate_ui()
|
||||||
|
|
||||||
def _retranslate_ui(self):
|
def _retranslate_ui(self):
|
||||||
self.setWindowTitle(util_ui.tr('Peer details'))
|
self.setWindowTitle(util_ui.tr('Peer details'))
|
||||||
self.ignorePeerCheckBox.setText(util_ui.tr('Ignore peer'))
|
self.ignorePeerCheckBox.setText(util_ui.tr('Ignore peer'))
|
||||||
|
self.roleLabel.setText(util_ui.tr('Role:'))
|
||||||
|
self.copyPublicKeyPushButton.setText(util_ui.tr('Copy public key'))
|
||||||
self.sendPrivateMessagePushButton.setText(util_ui.tr('Send private message'))
|
self.sendPrivateMessagePushButton.setText(util_ui.tr('Send private message'))
|
||||||
|
|
||||||
|
def _get_role_name(self):
|
||||||
|
roles = {
|
||||||
|
0: util_ui.tr('Administrator'),
|
||||||
|
1: util_ui.tr('Moderator'),
|
||||||
|
2: util_ui.tr('User'),
|
||||||
|
3: util_ui.tr('Observer')
|
||||||
|
}
|
||||||
|
|
||||||
|
return roles[self._peer.role]
|
||||||
|
|
||||||
def _send_private_message(self):
|
def _send_private_message(self):
|
||||||
self._contacts_manager.add_group_peer(self._group, self._peer)
|
self._contacts_manager.add_group_peer(self._group, self._peer)
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
|
def _copy_public_key(self):
|
||||||
|
clipboard = QtWidgets.QApplication.clipboard()
|
||||||
|
clipboard.setText(self._peer.public_key)
|
||||||
|
|
|
@ -7,19 +7,19 @@
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>600</width>
|
<width>600</width>
|
||||||
<height>400</height>
|
<height>500</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>600</width>
|
<width>600</width>
|
||||||
<height>400</height>
|
<height>500</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>600</width>
|
<width>600</width>
|
||||||
<height>400</height>
|
<height>500</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
|
@ -31,7 +31,7 @@
|
||||||
<x>110</x>
|
<x>110</x>
|
||||||
<y>10</y>
|
<y>10</y>
|
||||||
<width>431</width>
|
<width>431</width>
|
||||||
<height>41</height>
|
<height>40</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
@ -42,7 +42,7 @@
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>50</x>
|
<x>50</x>
|
||||||
<y>120</y>
|
<y>140</y>
|
||||||
<width>500</width>
|
<width>500</width>
|
||||||
<height>50</height>
|
<height>50</height>
|
||||||
</rect>
|
</rect>
|
||||||
|
@ -55,7 +55,7 @@
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>50</x>
|
<x>50</x>
|
||||||
<y>70</y>
|
<y>100</y>
|
||||||
<width>500</width>
|
<width>500</width>
|
||||||
<height>23</height>
|
<height>23</height>
|
||||||
</rect>
|
</rect>
|
||||||
|
@ -68,8 +68,8 @@
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>50</x>
|
<x>50</x>
|
||||||
<y>200</y>
|
<y>300</y>
|
||||||
<width>521</width>
|
<width>500</width>
|
||||||
<height>161</height>
|
<height>161</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
|
@ -77,6 +77,45 @@
|
||||||
<string>GroupBox</string>
|
<string>GroupBox</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
|
<widget class="QLabel" name="roleLabel">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>50</x>
|
||||||
|
<y>60</y>
|
||||||
|
<width>67</width>
|
||||||
|
<height>20</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>TextLabel</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="roleNameLabel">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>140</x>
|
||||||
|
<y>60</y>
|
||||||
|
<width>401</width>
|
||||||
|
<height>20</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>TextLabel</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton" name="copyPublicKeyPushButton">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>50</x>
|
||||||
|
<y>210</y>
|
||||||
|
<width>500</width>
|
||||||
|
<height>50</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>PushButton</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
|
|
|
@ -2060,7 +2060,7 @@ class Tox:
|
||||||
len(data), byref(error))
|
len(data), byref(error))
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def group_send_private_message(self, group_number, peer_id, message):
|
def group_send_private_message(self, group_number, peer_id, message_type, message):
|
||||||
"""
|
"""
|
||||||
Send a text chat message to the specified peer in the specified group.
|
Send a text chat message to the specified peer in the specified group.
|
||||||
|
|
||||||
|
@ -2079,7 +2079,8 @@ class Tox:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
error = c_int()
|
error = c_int()
|
||||||
result = Tox.libtoxcore.tox_group_send_private_message(self._tox_pointer, group_number, peer_id, message,
|
result = Tox.libtoxcore.tox_group_send_private_message(self._tox_pointer, group_number, peer_id,
|
||||||
|
message_type, message,
|
||||||
len(message), byref(error))
|
len(message), byref(error))
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
@ -2135,7 +2136,7 @@ class Tox:
|
||||||
This event is triggered when the client receives a private message.
|
This event is triggered when the client receives a private message.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
c_callback = CFUNCTYPE(None, c_void_p, c_uint32, c_uint32, c_char_p, c_size_t, c_void_p)
|
c_callback = CFUNCTYPE(None, c_void_p, c_uint32, c_uint32, c_uint8, c_char_p, c_size_t, c_void_p)
|
||||||
self.group_private_message_cb = c_callback(callback)
|
self.group_private_message_cb = c_callback(callback)
|
||||||
Tox.libtoxcore.tox_callback_group_private_message(self._tox_pointer, self.group_private_message_cb, user_data)
|
Tox.libtoxcore.tox_callback_group_private_message(self._tox_pointer, self.group_private_message_cb, user_data)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue