/* * SysTextListEx.java * * Created on 17 Июнь 2007 г., 21:36 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package jimm.cl; import jimm.modules.*; import jimmui.Clipboard; import jimmui.view.text.Parser; import java.util.*; import jimm.*; import jimm.comm.*; import jimmui.view.menu.*; import jimmui.view.base.*; import jimmui.view.text.*; import jimmui.view.timers.*; import jimm.util.*; /** * * @author vladimir */ public final class SysTextList extends TextListController { private TextListModel model = new TextListModel(); private void copy() { String text = getCurrText(); if (null != text) { Clipboard.setClipBoardText(text); } } private String getCurrText() { return list.getModel().getParText(list.getTextContent().getCurrItem()); } /////////////////////////////////////////////////////////////////////////// protected void doJimmAction(int action) { if ((NativeCanvas.JIMM_SELECT == action) && (MENU_OPENURL == defaultCode)) { list.restore(); String str = getCurrText(); if (null != str) { if (str.startsWith("http://")) { Jimm.getJimm().openUrl(str, false); } else { GetVersion.updateProgram(); } } return; } doJimmBaseAction(action); switch (action) { case MENU_UPDATE: GetVersion.updateProgram(); break; // #sijapp cond.if modules_TRAFFIC is "true" # case MENU_RESET: Traffic.getInstance().reset(); updateAbout(); list.restore(); break; // #sijapp cond.end# // #sijapp cond.if modules_DEBUGLOG is "true" # case MENU_DEBUGLOG: DebugLog.activate(); break; // #sijapp cond.end# // #sijapp cond.if modules_MAGIC_EYE is "true" # case MENU_MAGIC_EYE: MagicEye.activate(); break; // #sijapp cond.end# case URL_MENU_GOTO: list.back(); Jimm.getJimm().openUrl(getCurrText(), false); break; case URL_MENU_COPY: copy(); list.restore(); break; case URL_MENU_ADD: list.restore(); Jimm.getJimm().openUrl("xmpp:" + Util.getUrlWithoutProtocol(getCurrText()), false); break; } } ////////////////////////////////////////////////////////////////////////////// // // // About // // // ////////////////////////////////////////////////////////////////////////////// // String for recent version private static final int MENU_UPDATE = 0; private static final int MENU_OPENURL = -2; private static final int MENU_RESET = 3; private static final int MENU_DEBUGLOG = 20; private static final int MENU_MAGIC_EYE = 21; private static final int URL_MENU_GOTO = 10; private static final int URL_MENU_ADD = 11; private static final int URL_MENU_COPY = 12; public TextList makeAbout() { TextList aboutScreen = new TextList(JLocale.getString("about")); list = aboutScreen; updateAbout(); MenuModel m = new MenuModel(); // #sijapp cond.if modules_ANDROID isnot "true" # m.addItem("update_jimm", SysTextList.MENU_UPDATE); // #sijapp cond.end # // #sijapp cond.if modules_TRAFFIC is "true" # m.addItem("reset", SysTextList.MENU_RESET); // #sijapp cond.end # // #sijapp cond.if modules_DEBUGLOG is "true" # m.addItem("debug log", MENU_DEBUGLOG); // #sijapp cond.end# // #sijapp cond.if modules_MAGIC_EYE is "true" # m.addItem("magic eye", MENU_MAGIC_EYE); // #sijapp cond.end# m.setActionListener(this); setMenu(m, MENU_OPENURL); aboutScreen.setController(this); return aboutScreen; } public void updateAbout() { model = new TextListModel(); Jimm.gc(); Jimm.gc(); long freeMem = Runtime.getRuntime().freeMemory() / 1024; final String commaAndSpace = ", "; String[] params = Util.explode(JLocale.getString("about_info"), '\n'); addPlainText("\n " + params[0] + "\n\n", CanvasEx.THEME_TEXT); addPlainText("" + params[2] + "\n", CanvasEx.THEME_TEXT); for (int i = 3; i < params.length; ++i) { int end = params[i].indexOf(':'); if (-1 == end) { addPlainText("\n", CanvasEx.THEME_TEXT); } else { String key = params[i].substring(0, end); String value = params[i].substring(end + 1).trim(); if (value.startsWith("http://")) { addUrl(key, value); } else { addAboutParam(key, value); } } } addPlainText("\n", CanvasEx.THEME_TEXT); String midpInfo = Jimm.getJimm().phone.microeditionPlatform; if (null != Jimm.getJimm().phone.microeditionProfiles) { midpInfo += commaAndSpace + Jimm.getJimm().phone.microeditionProfiles; } String locale = System.getProperty("microedition.locale"); if (null != locale) { midpInfo += commaAndSpace + locale; } addAboutParam("midp_info", midpInfo); addPlainText("\n", CanvasEx.THEME_TEXT); addAboutParam("free_heap", freeMem + JLocale.getString("kb")); addAboutParam("total_mem", (Runtime.getRuntime().totalMemory() / 1024) + JLocale.getString("kb")); if (null != Jimm.getJimm().lastDate) { addAboutParam("latest_ver", Jimm.getJimm().lastDate); } // #sijapp cond.if modules_TRAFFIC is "true" # addPlainText("\n", CanvasEx.THEME_TEXT); Traffic t = Traffic.getInstance(); // Traffic for a session int sessionIn = t.getSessionInTraffic(); int sessionOut = t.getSessionOutTraffic(); int session = sessionIn + sessionOut; int sessionCost = t.generateCostSum(sessionIn, sessionOut); addTrafficSection(JLocale.getString("session"), session, sessionCost); // Traffic since date int totalIn = t.getAllInTraffic(); int totalOut = t.getAllOutTraffic(); int total = totalIn + totalOut; int totalCost = t.generateCostSum(totalIn, totalOut); addTrafficSection(JLocale.getString("traffic_since") + " " + t.getTrafficString(), total, totalCost); // #sijapp cond.end # commit(); list.setModel(model); } // #sijapp cond.if modules_TRAFFIC is "true" # private void addTrafficSection(String title, int total, int cost) { addPlainText(title, CanvasEx.THEME_TEXT); addPlainText(": ", CanvasEx.THEME_TEXT); addPlainText(StringUtils.bytesToSizeString(total, false), CanvasEx.THEME_PARAM_VALUE); // The cost of the traffic if (0 < cost) { addPlainText(" (", CanvasEx.THEME_TEXT); addPlainText(Traffic.costToString(cost), CanvasEx.THEME_PARAM_VALUE); addPlainText(")", CanvasEx.THEME_TEXT); } addPlainText("\n", CanvasEx.THEME_TEXT); } // #sijapp cond.end # private void addAboutParam(String langStr, String str) { addPlainText(JLocale.getString(langStr) + ": ", CanvasEx.THEME_TEXT); addPlainText(str, CanvasEx.THEME_PARAM_VALUE); addPlainText("\n", CanvasEx.THEME_TEXT); } private void addUrl(String langStr, String url) { addPlainText(JLocale.getString(langStr) + ":\n", CanvasEx.THEME_TEXT); commit(); Parser line = model.createNewParser(true); line.addText(url, CanvasEx.THEME_PARAM_VALUE, CanvasEx.FONT_STYLE_PLAIN); model.addPar(line); } private void addPlainText(String text, byte colorType) { getDefaultParser().addText(text, colorType, CanvasEx.FONT_STYLE_PLAIN); } /////////////////////////////////////////////////////////////////////////// private Parser defaultParser; private void commit() { if (null != defaultParser) { model.addPar(defaultParser); } defaultParser = null; } private Parser getDefaultParser() { if (null == defaultParser) { defaultParser = model.createNewParser(false); } return defaultParser; } /////////////////////////////////////////////////////////////////////////// public static void gotoURL(String text) { Vector urls = Util.parseMessageForURL(text); if (null == urls) { return; } TextList list = new TextList(JLocale.getString("goto_url")); MenuModel m = new MenuModel(); m.addItem("select", URL_MENU_GOTO); // #sijapp cond.if protocols_JABBER is "true" # m.addItem("add_user", URL_MENU_ADD); // #sijapp cond.end # m.addItem("copy_text", URL_MENU_COPY); SysTextList c = new SysTextList(); m.setActionListener(c); c.setMenu(m, URL_MENU_GOTO); list.setController(c); TextListModel urlModels = new TextListModel(); for (int i = 0; i < urls.size(); ++i) { urlModels.addItem((String) urls.elementAt(i), false); } list.setModel(urlModels); Jimm.getJimm().getDisplay().closeMenus(); list.show(); } }