$page->title = 'Status Mockup'; require('template.inc.php'); <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> <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> <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> <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> <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> <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> <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> <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> <p>The
user
first
sets
his
initial
status.
He
chooses
"Available."
</p> <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> <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> <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> <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> <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>