source: branches/2.2/jabberit_messenger/java_source/src/nu/fw/jeti/jabber/elements/Presence.java @ 3102

Revision 3102, 4.3 KB checked in by amuller, 14 years ago (diff)

Ticket #986 - Efetuado merge para o Branch 2.2( atualizacao do modulo)

  • Property svn:executable set to *
Line 
1package nu.fw.jeti.jabber.elements;
2
3import nu.fw.jeti.jabber.*;
4import nu.fw.jeti.util.I18N;
5
6
7/**
8 * @author E.S. de Boer
9 */
10
11public class Presence extends Packet
12{
13        public final static int NONE = 0;
14        public final static int FREE_FOR_CHAT = 1;
15        public final static int AVAILABLE = 2;
16        public final static int AWAY = 3;
17        public final static int DND = 4;
18        public final static int XA = 5;
19        public final static int INVISIBLE = 6;
20        public final static int UNAVAILABLE = 7;
21         
22       
23        private int show;
24        private String status;
25        private int priority;
26        private String type;
27       
28        public Presence(JID to,String type)
29        {
30            super(to);
31                this.type = type;
32        }
33       
34        public Presence(JID to,int show,String status,XExtension extension)
35        {
36                super(to,(Extension)extension);
37                setShow(show);
38                this.status = status;
39        }
40
41        public Presence(JID to,int show, String status)
42        {
43            super(to);
44                this.show = show;
45                this.status = status;
46                setShow(show);
47        }
48
49        public Presence(int show, String status,int priority,XExtension extension)
50        {
51                super((Extension)extension);
52                setShow(show);
53                this.status = status;
54                this.priority = priority;
55        }
56       
57        private void setShow(int show)
58        {
59                switch (show) {
60                case INVISIBLE:   type = "invisible";   break;
61                case UNAVAILABLE: type = "unavailable"; break;
62                default:          type = "available";   break;
63            }
64                this.show = show;
65        }
66//      public Presence(int show, String status,int priority,XExtension extension)
67//      {
68//              super(presence.getTo(),(Extension)extension);
69//              this,type = presence.getType();
70//              this.show = presence.getShow();
71//              this.status = presence.getStatus();
72//              this.priority = priority;
73//      }
74
75    protected Presence(PresenceBuilder pb)
76        {
77                super(pb);
78                show = pb.show;
79                status = pb.status;
80                priority = pb.priority;
81                type = pb.type;
82        }
83
84        public int getShow()
85        {
86                return show;
87        }
88       
89        /**
90         * converts the constant status to a readable version
91         * @param show
92         * @return the long version of the presence
93         */
94        public static String toLongShow(int show)
95        {
96                return I18N.gettext(getI18NKey(show));
97//              switch(show)
98//              {
99//                      case Presence.FREE_FOR_CHAT:return I18N.gettext("main.presence.Free_for_Chat");
100//                      case Presence.AWAY: return I18N.gettext("main.presence.Away");
101//                      case Presence.XA: return I18N.gettext("main.presence.Extended_Away");
102//                      case Presence.DND: return I18N.gettext("main.presence.Do_not_Disturb");
103//                      case Presence.NONE: return I18N.gettext("main.presence.Unknown");
104//                      case Presence.UNAVAILABLE: return I18N.gettext("main.presence.Unavailable");
105//                      case Presence.INVISIBLE: return I18N.gettext("main.presence.Invisible");
106//                      default: return I18N.gettext("main.presence.Available");
107//              }
108        }
109       
110        /**
111         * converts the constant status to a readable version
112         * @param show
113         * @return the long version of the presence
114         */
115        public static String getI18NKey(int show)
116        {
117                switch(show)
118                {
119                        case Presence.FREE_FOR_CHAT:return "main.presence.Free_for_Chat";
120                        case Presence.AWAY: return "main.presence.Away";
121                        case Presence.XA: return "main.presence.Extended_Away";
122                        case Presence.DND: return "main.presence.Do_not_Disturb";
123                        case Presence.NONE: return "main.presence.Unknown";
124                        case Presence.UNAVAILABLE: return "main.presence.Unavailable";
125                        case Presence.INVISIBLE: return "main.presence.Invisible";
126                        default: return "main.presence.Available";
127                }
128        }
129       
130
131        public String getStatus()
132        {
133                return status;
134        }
135
136        public int getPriorety()
137        {
138                return priority;
139        }
140
141        public String getType(){return type;}
142
143        public void appendToXML(StringBuffer xml)
144    {//make short cut?
145        xml.append("<presence");
146                appendBaseAttributes(xml);
147                if(!type.equals("available")) appendAttribute(xml,"type",type);
148                xml.append(">");
149                if(! (show == AVAILABLE || show == UNAVAILABLE))
150                {
151                        switch (show)
152                        {
153                                case Presence.FREE_FOR_CHAT: appendElement(xml,"show","chat"); break;
154                                case Presence.AWAY: appendElement(xml,"show","away"); break;
155                                case Presence.XA: appendElement(xml,"show","xa"); break;
156                                case Presence.DND: appendElement(xml,"show","dnd"); break;
157                        }       
158                }
159                appendElement(xml,"status",status);
160                if(priority!=0) appendElement(xml,"priority",Integer.toString(priority));
161                if("error".equals(type)) appendError(xml);
162                appendExtensions(xml);
163                xml.append("</presence>");
164    }
165}
166
167/*
168 * Overrides for emacs
169 * Local variables:
170 * tab-width: 4
171 * End:
172 */
Note: See TracBrowser for help on using the repository browser.