public boolean execCommand(Protocol protocol, String msg) { final String cmd; final String param; int endCmd = msg.indexOf(' '); if (-1 != endCmd) { cmd = msg.substring(1, endCmd); param = msg.substring(endCmd + 1); } else { cmd = msg.substring(1); param = ""; } String resource = param; String newMessage = ""; int endNick = param.indexOf('\n'); if (-1 != endNick) { resource = param.substring(0, endNick); newMessage = param.substring(endNick + 1); } String xml = null; final String on = "o" + "n"; final String off = "o" + "f" + "f"; if (on.equals(param) || off.equals(param)) { xml = Config.getConfigValue(cmd + ' ' + param, "/jabber-commands.txt"); } if (null == xml) { xml = Config.getConfigValue(cmd, "/jabber-commands.txt"); } if (null == xml) { return false; } XmppConnection xmppXml = ((Xmpp) protocol).getConnection(); String jid = Jid.jimmJidToRealJid(getUserId()); String fullJid = jid; if (isConference()) { String nick = ((XmppServiceContact) this).getMyName(); fullJid = Jid.jimmJidToRealJid(getUserId() + '/' + nick); } xml = Util.replace(xml, "${jimm.caps}", xmppXml.getCaps()); xml = Util.replace(xml, "${c.jid}", Util.xmlEscape(jid)); xml = Util.replace(xml, "${c.fulljid}", Util.xmlEscape(fullJid)); xml = Util.replace(xml, "${param.full}", Util.xmlEscape(param)); xml = Util.replace(xml, "${param.res}", Util.xmlEscape(resource)); xml = Util.replace(xml, "${param.msg}", Util.xmlEscape(newMessage)); xml = Util.replace(xml, "${param.res.realjid}", Util.xmlEscape(getSubContactRealJid(resource))); xml = Util.replace(xml, "${param.full.realjid}", Util.xmlEscape(getSubContactRealJid(param))); xmppXml.requestRawXml(xml); return true; }
public ContactEdit(Display display, Contact c) { this.display = display; parentView = display.getCurrent(); StaticData sd = StaticData.getInstance(); roster = sd.roster; Vector groups = sd.roster.groups.getRosterGroupNames(); cf = Config.getInstance(); f = new Form(SR.MS_ADD_CONTACT); // locale tJid = new TextField(SR.MS_USER_JID, null, 150, TextField.EMAILADDR); tNick = new TextField("Name", null, 32, TextField.ANY); // locale tGroup = new TextField(SR.MS_GROUP, null, 32, TextField.ANY); // locale tGrpList = new ChoiceGroup(SR.MS_GROUP, ConstMIDP.CHOICE_POPUP); tTranspList = new ChoiceGroup(SR.MS_TRANSPORT, ConstMIDP.CHOICE_POPUP); tAskSubscrCheckBox = new ChoiceGroup(SR.MS_SUBSCRIPTION, ChoiceGroup.MULTIPLE); // locale tAskSubscrCheckBox.append(SR.MS_ASK_SUBSCRIPTION, null); // locale tGrpList.addCommand(cmdSet); tGrpList.setItemCommandListener(this); tTranspList.addCommand(cmdSet); tTranspList.setItemCommandListener(this); // Transport droplist tTranspList.append(sd.account.getServer(), null); for (Enumeration e = sd.roster.getHContacts().elements(); e.hasMoreElements(); ) { Contact ct = (Contact) e.nextElement(); Jid transpJid = ct.jid; if (transpJid.isTransport()) tTranspList.append(transpJid.getBareJid(), null); } tTranspList.append(SR.MS_OTHER, null); // locale try { String jid; if (c instanceof MucContact) { jid = Jid.toBareJid(((MucContact) c).realJid); } else { jid = c.getBareJid(); } // edit contact tJid.setString(jid); tNick.setString(c.nick); if (c instanceof MucContact) { c = null; throw new Exception(); } if (c.getGroupType() != Groups.TYPE_NOT_IN_LIST && c.getGroupType() != Groups.TYPE_SEARCH_RESULT) { // edit contact f.setTitle(jid); cmdOk = new Command("Update", Command.OK, 1); // locale newContact = false; } else c = null; // adding not-in-list } catch (Exception e) { c = null; } // if MucContact does not contains realJid int sel = -1; ngroups = 0; String grpName = ""; if (c != null) grpName = c.getGroup().name; if (groups != null) { ngroups = groups.size(); for (int i = 0; i < ngroups; i++) { String gn = (String) groups.elementAt(i); tGrpList.append(gn, null); if (gn.equals(grpName)) sel = i; } } // if (sel==-1) sel=groups.size()-1; if (sel < 0) sel = 0; // tGroup.setString(group(sel)); if (c == null) { f.append(tJid); f.append(tTranspList); } updateChoise(tJid.getString(), tTranspList); f.append(tNick); tGrpList.append(SR.MS_NEWGROUP, null); tGrpList.setSelectedIndex(sel, true); grpFIndex = f.append(tGrpList); if (newContact) { f.append(tAskSubscrCheckBox); tAskSubscrCheckBox.setSelectedIndex(0, true); } f.addCommand(cmdOk); f.addCommand(cmdCancel); f.setCommandListener(this); f.setItemStateListener(this); display.setCurrent(f); }