Gui progress

Version 274 (Adrian Georgescu, 07/31/2009 09:18 pm)

1 1 Adrian Georgescu
[[TOC(gui_progress, depth=3)]]
2 1 Adrian Georgescu
3 74 Adrian Georgescu
= Audio sessions =
4 1 Adrian Georgescu
5 257 Adrian Georgescu
 1. Set SIP User Agent name on start to '''blink-<version>'''
6 274 Adrian Georgescu
 1. New incoming sessions, the cancel window shrinks in size after a few clicks or cancels from remote (still not solved)
7 274 Adrian Georgescu
 1. Do not open session drawer when the main interface is collapsed. Expand main interface when select show drawer
8 195 Adrian Georgescu
 1. '''Mute''' microphone when pressing mute button
9 230 Adrian Georgescu
 1. Add  a '''record button''' left to Hold button. When pressed toggle recording the audio session
10 222 Adrian Georgescu
 1. Display RTP '''packet loss''' with red above the session buttons when > 0.5 %, sample every 10 seconds
11 1 Adrian Georgescu
 1. Display '''Ringing...''' when get ringing indication from remote party
12 231 Adrian Georgescu
 1. Call '''set_audio_devices()''' when changing the audio device or tail_length in global Preferences
13 195 Adrian Georgescu
 1. Calls made with bonjour account that do not resolve in DNS do not end, try dial abcd
14 274 Adrian Georgescu
 1. Closing many active sessions cause many tones to be played back. Throttle tones playback
15 258 Adrian Georgescu
 1. Add a '''triangle button''' to expand vertically the audio session frame with extra room for audio session information:
16 256 Adrian Georgescu
    * Local RTP: 130.129.86.171:64369
17 256 Adrian Georgescu
    * Remote RTP: 81.23.228.129:58228
18 256 Adrian Georgescu
    * Remote UA: Asterisk PBX 
19 256 Adrian Georgescu
    * Packet loss=0.0% (must be updated every 5 seconds) 
20 256 Adrian Georgescu
    * Jitter RX/TX=0/21 ms (must be updated every 5 seconds)
21 1 Adrian Georgescu
22 1 Adrian Georgescu
= Chat sessions =
23 1 Adrian Georgescu
24 1 Adrian Georgescu
 1. Replace Connect/Close buttons with a single button
25 258 Adrian Georgescu
 1. When disconnected print system message: '''MSRP chat session terminated (reason)''' <- not working
26 258 Adrian Georgescu
 1. Display the number of '''un-read messages''' in non-active tabs within a red circle over the tab name
27 255 Adrian Georgescu
 1. To close a chat tab add a '''small x button''' to it
28 1 Adrian Georgescu
 1. When click on the Audio button, use add_stream to append an audio stream to existing chat session
29 1 Adrian Georgescu
 1. If an audio stream exists part of the session, add the audio control buttons '''Record|Hold|Terminate'''
30 1 Adrian Georgescu
 1. Use the '''same look and feel''' for the toolbar buttons as the main interface (greyish buttons) 
31 1 Adrian Georgescu
 1. Implement the is-composing payload parser in middleware, see http://sipsimpleclient.com/ticket/40
32 1 Adrian Georgescu
 1. Display '''is-composing''' payload
33 258 Adrian Georgescu
 1. When dragging a recipient tab outside of the window '''spawn a new chat window''' and move the session into it
34 258 Adrian Georgescu
 1. '''Auto-accept''' chat only sessions when caller is in the contacts list  (tricky because of aliases). Use the SIP URI user@domain from the From header of the INVITE to match the contact
35 1 Adrian Georgescu
 
36 131 Adrian Georgescu
= Main interface =
37 1 Adrian Georgescu
38 216 Adrian Georgescu
 1. '''Bonjour account''' does not show/hide when activate/deactivate in preferences
39 254 Adrian Georgescu
 1. Expand/collapse brings the buddy list back in the wrong position, 20 pixels too high over own photo
40 1 Adrian Georgescu
41 1 Adrian Georgescu
= Log drawer =
42 1 Adrian Georgescu
43 274 Adrian Georgescu
 1. Show only errors  and lower the font size
44 1 Adrian Georgescu
45 195 Adrian Georgescu
= Contacts =
46 232 Adrian Georgescu
47 261 Adrian Georgescu
 1. '''Delete the contact''' when pressing delete
48 195 Adrian Georgescu
 1. '''Delete the Group ''' when pressing delete
49 271 Adrian Georgescu
 1. Rename menu item Contact with Contacts
50 271 Adrian Georgescu
 1. Rename menu item Session with Sessions
51 271 Adrian Georgescu
 1. Add edit Contact in the Contact menu
52 271 Adrian Georgescu
 1. Hide '''Add contact''' if contact exists / does not work yet
53 271 Adrian Georgescu
 1. If search when gui is collapsed and then expand then the Add contact button overlaps other text in the window
54 202 Adrian Georgescu
55 200 Adrian Georgescu
= Preferences =
56 200 Adrian Georgescu
57 200 Adrian Georgescu
 1. Properly '''align''' horizontally the Advanced settings
58 200 Adrian Georgescu
 1. Audio device must also list 'Default system input ' and 'Default system output'
59 271 Adrian Georgescu
 1. Do not allow dragging of window size with lower left corner
60 199 Adrian Georgescu
 1. '''bonjour account''' has only Display name as main property
61 199 Adrian Georgescu
 1. Hide the minus button for Bonjour, it cannot be deleted
62 242 Adrian Georgescu
 1. When password field is changed, re-Register the account 
63 199 Adrian Georgescu
 1. When Register flag is toggled for account, (de)Register the account accordingly
64 199 Adrian Georgescu
 1. Codec lists must be an ordered list with at least one active codec
65 199 Adrian Georgescu
 1. '''Stun server''' addresses cannot be set, they seem to inherit the results found in DNS  
66 199 Adrian Georgescu
 1. '''general.rtp.local_ip''': Can't set option local_ip illegal local IP address value: auto
67 199 Adrian Georgescu
 1. '''general.rtp.port_range''': (AttributeError: 'PortRangeOption' object has no attribute 'save')
68 199 Adrian Georgescu
 1. '''general.sip.transports''' cannot be saved
69 199 Adrian Georgescu
 1. '''general.audio.codec_list''' cannot be saved and displays duplicate codecs
70 199 Adrian Georgescu
 1. '''account.audio.codec_list''' cannot be saved and displays duplicate codecs
71 199 Adrian Georgescu
 1. '''account.msrp.relay''' cannot be set: global name 'MSRPRelayAddres' is not defined
72 199 Adrian Georgescu
 1. Display text to the '''left of the checkbox''' instead of the right
73 199 Adrian Georgescu
 1. When '''enable an account''', select it in the main interface account list
74 199 Adrian Georgescu
 1. For '''account.ringtone''' advanced setting, the default setting must be inherited from '''general.ringtone.inbound'''
75 199 Adrian Georgescu
 1. '''general.message_received_sound''' does not fit in window
76 199 Adrian Georgescu
 1. While clicking on account I got this (cannot reproduce): (TypeError: 'NSAutoreleasePool' object is not iterable)
77 199 Adrian Georgescu
 1. Check if the wav file is in the right format before saving the settings related to ringtones
78 199 Adrian Georgescu
 1. Check if the TLS options set by the user are valid before saving them (by loading them outside the engine using gnutls library)
79 48 Adrian Georgescu
80 1 Adrian Georgescu
Display SIP registration state in '''account.advanced.registration''' section.
81 194 Adrian Georgescu
82 194 Adrian Georgescu
= Conferencing =
83 194 Adrian Georgescu
84 1 Adrian Georgescu
Only one conference is possible to make the interface easy to use.
85 240 Adrian Georgescu
86 1 Adrian Georgescu
Start conference as a mixer
87 185 Adrian Georgescu
88 240 Adrian Georgescu
 1. Set the conference bridge to mix audio between all parties
89 240 Adrian Georgescu
 1. Send a re-INVITE to take each call off hold and set the is-focus attribute of the Contact header
90 240 Adrian Georgescu
 1. Disable the hold buttons of the conferenced sessions
91 151 Adrian Georgescu
 1. Draw the active session selection rectangle around the sessions part of the conference
92 240 Adrian Georgescu
93 42 Adrian Georgescu
Stop  conference as a mixer
94 42 Adrian Georgescu
95 240 Adrian Georgescu
 1. Set the conference bridge to stop mixing audio
96 41 Adrian Georgescu
 1. Send a re-INVITE to disable is-focus attribute of the Contact header
97 1 Adrian Georgescu
 1. Enable the hold buttons
98 1 Adrian Georgescu
 1. Draw the selection rectangle around the selected session
99 240 Adrian Georgescu
100 1 Adrian Georgescu
New sessions as a mixer
101 1 Adrian Georgescu
102 1 Adrian Georgescu
 1. New sessions are added bellow the conference
103 1 Adrian Georgescu
 1. A session can be dragged in and out of the conference
104 240 Adrian Georgescu
 1. When switching from a conference to another single session, do not use hold
105 240 Adrian Georgescu
106 240 Adrian Georgescu
Conference participant
107 240 Adrian Georgescu
108 240 Adrian Georgescu
 1. SUBSCRIBE to the conference event package when receiving a re-INVITE with isfocus true
109 41 Adrian Georgescu
 1. Expand vertically the session frame to display the names of the participants received in subsequent NOTIFY that contain the list of the participants in the conference
110 41 Adrian Georgescu
111 96 Adrian Georgescu
= Audio history =
112 118 Adrian Georgescu
113 118 Adrian Georgescu
 1. Use the same session drawer to display previous sessions
114 29 Adrian Georgescu
 1. Keep same layout as active sessions with the following changes:
115 29 Adrian Georgescu
   1. Missed calls (incoming un-answered sessions must display the SIP address in red) 
116 41 Adrian Georgescu
   1. Duration line must display also the Start time: HH:MM:SS (YYYY-MM-DD HH:MM )
117 1 Adrian Georgescu
   1. Instead of audio session information display: Incoming|Outgoing
118 1 Adrian Georgescu
   1. Replace the current session buttons with a callback button
119 116 Adrian Georgescu
 1. Add a Session menu item to toggle the drawer content between active session and history sessions
120 122 Adrian Georgescu
 1. Show most recent sessions on top
121 41 Adrian Georgescu
122 29 Adrian Georgescu
= Engine =
123 29 Adrian Georgescu
124 29 Adrian Georgescu
 1. If '''engine is dead''', the message  '''no sip account is active''' is displayed but is unclear what the real reason is. An engine stop must be logged to general debug window. Not clear how to restart the engine, maybe we should restart the application until a good solution is found
125 155 Adrian Georgescu
 1. If the engine has stopped (because of some crash) the preferences do not show anymore:
126 261 Adrian Georgescu
 1. By setting the wrong TLS certificate files, the middleware does not start anymore:
127 155 Adrian Georgescu
128 155 Adrian Georgescu
= Menu structure =
129 198 Adrian Georgescu
130 198 Adrian Georgescu
 1. File
131 198 Adrian Georgescu
 1. Edit
132 155 Adrian Georgescu
 1. View
133 213 Adrian Georgescu
  1. Audio sessions drawer 
134 213 Adrian Georgescu
  1. Previous audio sessions
135 213 Adrian Georgescu
  1. Previous chat sessions
136 213 Adrian Georgescu
 1. Audio
137 213 Adrian Georgescu
  1. Output device selection
138 155 Adrian Georgescu
  1. Input device selection
139 155 Adrian Georgescu
  1. Alert device selection
140 155 Adrian Georgescu
  1. Mute (mute mic input)
141 155 Adrian Georgescu
  1. Silent (mute output)
142 1 Adrian Georgescu
 1. Presence
143 155 Adrian Georgescu
  1. Activity
144 155 Adrian Georgescu
   1. Available
145 198 Adrian Georgescu
   1. Phone call
146 155 Adrian Georgescu
   1. Meeting
147 155 Adrian Georgescu
   1. Lunch
148 155 Adrian Georgescu
   1. Dinner
149 155 Adrian Georgescu
   1. Do not disturb (when enabled reject automatically all audio calls)
150 155 Adrian Georgescu
   1. Travel
151 155 Adrian Georgescu
   1. Offline
152 155 Adrian Georgescu
   1. Holiday
153 155 Adrian Georgescu
 1. Contacts
154 155 Adrian Georgescu
  1. Add contact
155 155 Adrian Georgescu
  1. Delete contact
156 155 Adrian Georgescu
  1. Edit contact
157 173 Adrian Georgescu
  1. Add group
158 166 Adrian Georgescu
  1. Delete group
159 166 Adrian Georgescu
  1. Edit group
160 166 Adrian Georgescu
 1. Sessions
161 166 Adrian Georgescu
  1. New audio session ...
162 155 Adrian Georgescu
  1. New chat session ...
163 1 Adrian Georgescu
  1. New multi party chat session ...
164 1 Adrian Georgescu
  1. Close all audio sessions
165 1 Adrian Georgescu
  1. Conference audio sessions
166 142 Adrian Georgescu
167 142 Adrian Georgescu
= Presence bar =
168 1 Adrian Georgescu
169 1 Adrian Georgescu
Make it as high as the contacts (two rows high).
170 142 Adrian Georgescu
171 1 Adrian Georgescu
 1. Acquire photo from webcam and cache it
172 142 Adrian Georgescu
 1. Show '''Display name''' next to the photo on top row
173 142 Adrian Georgescu
 1. Show '''Presence activity note''' on second row, editable text
174 142 Adrian Georgescu
 1. Show '''Presence activity''' next to name on top row. Activities:
175 142 Adrian Georgescu
   1. Available
176 142 Adrian Georgescu
   1. Phone call
177 142 Adrian Georgescu
   1. Meeting
178 142 Adrian Georgescu
   1. Lunch
179 142 Adrian Georgescu
   1. Dinner
180 148 Adrian Georgescu
   1. Do not disturb
181 148 Adrian Georgescu
   1. Travel
182 7 Adrian Georgescu
   1. Offline
183 1 Adrian Georgescu
   1. Holiday
184 7 Adrian Georgescu
185 41 Adrian Georgescu
Add a Presence menu item before Session.
186 41 Adrian Georgescu
187 1 Adrian Georgescu
= Debug window =
188 1 Adrian Georgescu
189 272 Adrian Georgescu
 1. Add colors to SIP trace content
190 268 Adrian Georgescu
191 272 Adrian Georgescu
192 100 Adrian Georgescu
= GUI settings =
193 14 Adrian Georgescu
194 272 Adrian Georgescu
 1. Position of '''contact groups''' - colapsed/expanded and their order
195 272 Adrian Georgescu
 1. Position of Debug window and debug window settings
196 214 Adrian Georgescu
197 102 Adrian Georgescu
= Middleware =
198 102 Adrian Georgescu
199 273 Adrian Georgescu
 1. Crash when more than 32 tones in the tone generator queue
200 102 Adrian Georgescu
 1. On startup, check if the audio device from the preferences '''is available''' in the detected devices list. If not, set the device to the system default device and display a warning to the user to set the devices in the preferences
201 41 Adrian Georgescu
 1. Enable logging of notifications to file
202 41 Adrian Georgescu
 1. Check the validity of the '''TLS''' settings/files before starting the engine
203 1 Adrian Georgescu
 1. It seems that the '''stun servers''' are learned from the DNS and cannot be overwritten in settings, they show up automatically
204 1 Adrian Georgescu
 1. If I set the relay to abcd.com standard '''port 2855''' must be used, now is set to zero: relay = abcd.com:0;transport=tls
205 1 Adrian Georgescu
 1. We need a solution to accept a session without a 180- ringing. For instance we can have automatic answer based on various preferences.
206 1 Adrian Georgescu
 1. Move '''general.audio.codec_list''' to '''general.rtp.audio_codecs'''
207 1 Adrian Georgescu
 1. Move '''account.audio.codec_list''' to '''account.rtp.audio_codecs'''
208 66 Adrian Georgescu
 1. Move '''account.audio.srtp_encryption''' to '''account.rtp.srtp_encryption'''
209 66 Adrian Georgescu
 1. Delete '''general.audio.playback_dtmf''' setting
210 66 Adrian Georgescu
 1. Add '''general.audio.mute''' setting
211 66 Adrian Georgescu
 1. Delete '''account.audio''' section
212 66 Adrian Georgescu
 1. Add '''account.sip''' section
213 66 Adrian Georgescu
 1. Move '''account.outbound_proxy''' to '''account.sip.outbound_proxy'''
214 68 Adrian Georgescu
 1. Move '''account.presence.publish_interval''' to '''account.sip.publish_interval'''
215 109 Adrian Georgescu
 1. Move '''account.presence.subscribe_interval''' to '''account.sip.subscribe_interval'''
216 109 Adrian Georgescu
 1. Move '''account.registration.interval''' to '''account.sip.register_interval'''
217 1 Adrian Georgescu
 1. Delete '''account.ice.use_stun''', it is always true
218 172 Adrian Georgescu
 1. Rename '''account.ice''' to '''account.nat_traversal'''
219 159 Adrian Georgescu
 1. Rename '''account.ice.enabled''' to '''account.nat_traversal.enable_ice'''
220 159 Adrian Georgescu
 1. Delete global.chat.accept_types
221 159 Adrian Georgescu
 1. Delete global.chat.accept_wrapped_types
222 189 Adrian Georgescu
 1.  Add a new setting '''account.chat.server''' default = chatserver.domain
223 234 Adrian Georgescu
224 234 Adrian Georgescu
= IP connectivity checks =
225 234 Adrian Georgescu
226 234 Adrian Georgescu
If the Internet connectivity goes up and down the client must adjust to this
227 273 Adrian Georgescu
by taking appropiate actions. It is not enough to detect only what kind of
228 234 Adrian Georgescu
NAT we are behind but also what kind of IP connectivity we have.
229 234 Adrian Georgescu
230 234 Adrian Georgescu
== No IP network ==
231 234 Adrian Georgescu
232 234 Adrian Georgescu
Posible checks:
233 234 Adrian Georgescu
234 234 Adrian Georgescu
 * No real IP
235 234 Adrian Georgescu
 * DNS is down
236 234 Adrian Georgescu
 * No default route
237 234 Adrian Georgescu
238 234 Adrian Georgescu
== LAN without Internet ==
239 234 Adrian Georgescu
240 234 Adrian Georgescu
(e.g. wifi hotspot before login)
241 234 Adrian Georgescu
242 234 Adrian Georgescu
Posible checks:
243 234 Adrian Georgescu
244 234 Adrian Georgescu
 * Ethernet is up
245 234 Adrian Georgescu
 * DNS is up
246 234 Adrian Georgescu
247 234 Adrian Georgescu
== Internet access ==
248 234 Adrian Georgescu
249 234 Adrian Georgescu
Posible checks:
250 234 Adrian Georgescu
251 234 Adrian Georgescu
 * Ethernet is up
252 234 Adrian Georgescu
 * DNS is up
253 234 Adrian Georgescu
 * STUN is up
254 1 Adrian Georgescu
 * NAT type