gaim/www

update tags
default tip
2019-09-10, convert-repo
7d915c997ccd
update tags
<?
$page->title = 'Status Mockup';
require('template.inc.php');
?>
<h1>Status Mockup</h1>
<p>What is needed for a status UI? Most importantly:</p>
<ul><li>Be able to globally create a new "away message" for all accounts</li>
<li>Be able to see the current global status</li>
<li>Be able to used saved statuses</li></ul>
<p>Less important goals include:</p>
<ul><li>Change the status of just one account</li>
<li>View the statuses of each account individual when the above is done</li>
<li>Create complex statuses where MSN accounts are Out To Lunch, and AIM accounts have an available messages except for SeanEgn1 who is Away with a specific message</li></ul>
<p>I've focused on the first, more important, list which should handle 95% of users' needs.</p>
<img src="online.png">
<p>At the bottom of the buddy list, is a dropdown menu. In this menu is the current global status (in this case "Online"). The user intuitively knows to click the menu to change his status. He chooses "Away" from the dropdown menu.</p>
<img src="away.png">
<p>The menu changes to the Away status, and an editable GtkIMHtml appears. The user enters his away message there. We add a timeout and check the "changed" signal to determine when the away message is finished, and we set it then. This is not unlike how we send typing notifications</p>
<img src="menu.png">
<p>While away, the user can edit the away message just by changing the text in the GtkIMHtml. To come back, he uses the menu again to set him as "Online". Next time he uses the menu, he'll find that the away message he just set has been automaically saved. The menu will ordinarily contain many more status included by default, but I didn't want to mock too much up. I'm a busy guy.</p>
<img src="savedmessage.png">
<p>Messages will be saved automatically, and then deleted after a given amount of disuse. Users can still create their own messages that will stay persistant in "Create new status..." This is where most of the more advanced things from the second list will occur. Although I do have a few ideas about that dialog, I'll wait for feedback on this idea before making mockups of that.</p>
<h2>More thoughts</h2>
<p>These are some not-so-well organized thoughts on further status stuffs.</p>
<p>"Offline" is considered a state alongside "Away" and "Idle" and "Talking Long Distance To Tibet." As such the "Online" checkbox in the Account editor no longer has any meaning and will be removed.</p>
<p>"But how, Sean," you ask, "will we set which accounts are online and which aren't?" The "Auto-login" checkbox becomes something along the lines of "Enabled." A <i>state</i> affects all "Enabled" accounts. Thus, if the current state is "Available," all "Enabled" accounts will be "Available." If the current state is "Talking Long Distance to Tibet," all the enabled accounts will be talking long distance to Tibet. All the other accounts will be offline regardless of the current state. If someone clicks the Enabled checkbox, that account will automatically take the current state, logging in if it needs to.</p>
<img src=accounts.png>
<p> When a user starts Gaim, it will first be presented with one of three windows. If the user has no accounts at all, it will be shown the accounts window and the New Account dialog. The "Auto-login" check-box of this will be removed and all accounts will be created Enabled by default. If the user has accounst created, but none enabled, it will see just the Accounts dialog. Finally, whenever the user has enabled accounts, it will see the buddy list. Note that the Login window has been removed.</p>
<p> The first time Gaim is run, it will start in the Offline state. To sign-on, one would choose another state in the status menu (even "invisible," paraanoid Yahoo! users rejoice!) Subsequent Gaim sessions will start in either a) Offline b) Online or c) The state Gaim was in when last quit. I'd imagine we would have a preference somewhere as to which behavior to take.</p>
<p>When the user chooses "Available" from "Offline" the status shown in the status menu reflects a "Connecting" state until Gaim is fully connected when it will then show the "Available" state. Note that the "Connecting" dialog is no longer with it, may it rest in peace.</p>
<img src=connecting.png>
<p>In the case that something beyond our control (read: dropped connection) causes an account not to be in the correct state, the status menu will show an "Error" state and attempt to restore the aberrant account after which the displayed state will return to normal. This entails removing the autorecon plugin and incorporating it as a feature in Gaim proper. Also note that the Disconnected dialog is no more.</p>
<p>Now, for the issue of setting statuses for individual accounts and protocols:</p>
<p>Beneath the saved and auto-generated states in the status menu, are submenus for each of the available protocols (or possibly only protocols with "Enabled" accounts). These submenus contain items for each account using that protocol (indicating the actual status of that account) and an item "Set status for MSN accounts" for MSN. Selecting one of these items allows you to set the status for an individual account or for all accounts with a certain status (this latter will then be used if a new account is Enabled). The status menu will show a "Custom" icon an the user will be given the option of saving this state, or optionally it will auto-save using some sensible automatically generated name (which would be tricky).</p>
<img src=individual.png>
<p>I do worry that the menu would be unweildly and difficult to use, though, and I am also considering (as I originally did) putting this functionality into a separate dialog. I'd picture the menu never being a decent size. It's probaly rare for someone to use more than one account per protocol, so the extra layer of depth would be hasslesome, and the sheer number of protocols would unnecessarily spam up the all-important status menu. The functionalities of these menus or this dialog are setting default statuses for each protocol and setting statuses for individual accounts. The dialog would do this as a table of available protocols each with dropdown lists and a listview of accounts beneath it.</p>
<p>I might mockup what such a dialog might look like later, but if you've seen Mark's mockups, it would probably look similar. If people share my concerns about the menu, we should move in that direction.</p>
<a name="widget"><h1>Status Widget</h1></a>
<p>So, I've been hacking on this new status widget, and decided it was time to share. Here the widget is included in an application called "chooser-test" that also includes an "Error" entry, so you can see what errors would look like, and a "Connecting" checkbox and button so you could test that. These are obviously not part of the status widget</p>
<img src=1.png>
<p>The user first sets his initial status. He chooses "Available."</p>
<img src=2.png>
<p>The status selector "title" i.e. the first line of text will always represent the user-chosen status. The second line and the icon represent the actual status. Here we see that the user has chosen "Available," and that Gaim needs first to connect. The "Pulse" button animates the icon, serving the same purpose the progress bars do in old status---conveying that Gaim didn't die.</p>
<p>This particular animation probably needs replacement as it looks way too much like copulation</p>
<img src=3.png>
<p>At last, Gaim connects. This "Available" status comes with a description of its own that is shown there. "I'm here." This is just an example; I see no good reason that "Available" would need a description. It could have an available message, but that would get an available message box:</p>
<img src=4.png>
<p>The user chooses "Away" and the away message box pops up, focus goes to the imhtml, and the icon and description change to "Typing." This also animates as the user types; very cool.</p>
<img src=5.png>
<p>After the timeout, the icon and description change to represent the current status. I think it's very obvious what's happened, unlike the current HEAD situation.</p>
<img src=6.png>
<p>Oh no! SeanEgn got disconnected. Gaim will attempt to repair the situation on its own, but the status selector will indicate this itself. We'll probably want a tooltip or something, so that we don't have crazily shorty messages.</p>
<p>The widget is pretty much complete. I'm looking for a non-bad way to get the current status cell to appear inside the selector like other GtkComboBoxes. Apparently, when you add a child to a GtkComboBox, which is what I've done here, it draws it like that. I may have to fake the "Windows-style" as they call it, combo box.</p>
<p>Comments are welcome to <a href="mailto:gaim-devel@lists.sf.net">gaim-devel@lists.sf.net</a>, of course.</p>