diff options
Diffstat (limited to 'src/com/isode/stroke/elements/Presence.java')
-rw-r--r-- | src/com/isode/stroke/elements/Presence.java | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/com/isode/stroke/elements/Presence.java b/src/com/isode/stroke/elements/Presence.java new file mode 100644 index 0000000..f32fb9f --- /dev/null +++ b/src/com/isode/stroke/elements/Presence.java @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2010, Isode Limited, London, England. + * All rights reserved. + */ +/* + * Copyright (c) 2010, Remko Tron¨on. + * All rights reserved. + */ +package com.isode.stroke.elements; + +public class Presence extends Stanza { + + private Type type_; + + public enum Type { + + Available, Error, Probe, Subscribe, Subscribed, Unavailable, Unsubscribe, Unsubscribed + }; + + public Presence() { + type_ = Type.Available; + } + + public Presence(String status) { + type_ = Type.Available; + setStatus(status); + } + + public Type getType() { + return type_; + } + + public void setType(Type type) { + type_ = type; + } + + public StatusShow.Type getShow() { + StatusShow show = getPayload (new StatusShow()); + if (show != null) { + return show.getType(); + } + return type_ == Type.Available ? StatusShow.Type.Online : StatusShow.Type.None; + } + + public void setShow(StatusShow.Type show) { + updatePayload(new StatusShow(show)); + } + + public String getStatus() { + Status status = getPayload(new Status()); + if (status != null) { + return status.getText(); + } + return ""; + } + + public void setStatus(String status) { + updatePayload(new Status(status)); + } + + public int getPriority() { + Priority priority = getPayload(new Priority()); + return (priority != null ? priority.getPriority() : 0); + } + + public void setPriority(int priority) { + updatePayload(new Priority(priority)); + } +} |