# HG changeset patch # User Vladimir Vukicevic # Date 1198735332 28800 # Node ID b40d4040eab561e42ff39443896da85157b3722b # Parent 5029faa6f8dcf877c25c7290ddb7aba58c153769 Added settings; icon. diff -r 5029faa6f8dcf877c25c7290ddb7aba58c153769 -r b40d4040eab561e42ff39443896da85157b3722b build.xml --- a/build.xml Wed Dec 26 18:31:16 2007 -0800 +++ b/build.xml Wed Dec 26 22:02:12 2007 -0800 @@ -17,7 +17,13 @@ - + diff -r 5029faa6f8dcf877c25c7290ddb7aba58c153769 -r b40d4040eab561e42ff39443896da85157b3722b images/eve_icon_tradegoods.png Binary file images/eve_icon_tradegoods.png has changed diff -r 5029faa6f8dcf877c25c7290ddb7aba58c153769 -r b40d4040eab561e42ff39443896da85157b3722b images/eveberry.png Binary file images/eveberry.png has changed diff -r 5029faa6f8dcf877c25c7290ddb7aba58c153769 -r b40d4040eab561e42ff39443896da85157b3722b src/org/mrrupert/eveberry/EveBerry.java --- a/src/org/mrrupert/eveberry/EveBerry.java Wed Dec 26 18:31:16 2007 -0800 +++ b/src/org/mrrupert/eveberry/EveBerry.java Wed Dec 26 22:02:12 2007 -0800 @@ -42,6 +42,12 @@ { public static EveBerry sApp; + // hash of "org.mrrupert.eveberry.Settings" + private static long kSettingsHashKey = 0x4effedb1caa322eeL; + + private PersistentObject mPersistSettings; + public EveBerrySettings mSettings; + // the bits needed for notification // com.mrrupert.eveberry.autostartup public static final long sNotificationID = 0x1bd75a04705f6c35L; @@ -75,6 +81,16 @@ /** Creates a new instance of EveBerry */ public EveBerry() { + // load settings first + mPersistSettings = PersistentStore.getPersistentObject(kSettingsHashKey); + mSettings = (EveBerrySettings) mPersistSettings.getContents(); + + if (mSettings == null) + mSettings = new EveBerrySettings(); + + settingsChanged(); + + // push our main screen mScreen = new EveBerryScreen(); pushScreen(mScreen); } @@ -130,6 +146,33 @@ public static void debug(String s) { System.out.println(s); } + + public void settingsChanged() { + if (mSettings.EveProxy == null) { + EveAPI.sAPIPrefix = ""; + } else { + EveAPI.sAPIPrefix = mSettings.EveProxy; + } + + if (mSettings.ShowStationOnMarketOrders) { + EveMarketOrderListField.sDefaultFieldDisplayFlags = EveMarketOrderField.SHOW_LOCATION; + } else { + EveMarketOrderListField.sDefaultFieldDisplayFlags = 0; + } + + if (mSettings.UseDeviceSideHTTP) { + EveAPI.sURLSuffix = ";deviceside=true"; + } else { + EveAPI.sURLSuffix = ""; + } + + if (mPersistSettings != null) { + mPersistSettings.setContents(mSettings); + synchronized (PersistentStore.getSynchObject()) { + mPersistSettings.commit(); + } + } + } } final class EveBerryScreen extends MainScreen implements EveCharacterListener @@ -161,37 +204,20 @@ protected void makeMenu(Menu menu, int instance) { super.makeMenu(menu, instance); - if (mCharacterList.getSelectedIndex() != -1) { - menu.add(new MenuItem("Update Character", 0, 5) { - public void run() { - EveCharacterInfo eci = mCharacterList.charInfoAt(mCharacterList.getSelectedIndex()); - EveBerryBackground.GetBackgroundRunnable().requestCharacterUpdate(eci); - } - }); - - menu.add(new MenuItem("View Market Orders", 1, 5) { - public void run() { - EveCharacterInfo eci = mCharacterList.charInfoAt(mCharacterList.getSelectedIndex()); - EveBerryMarketOrdersScreen screen = new EveBerryMarketOrdersScreen(eci); - EveBerry.sApp.pushScreen(screen); - } - }); - - menu.add(new MenuItem("Remove Character", 2, 5) { - public void run() { - EveCharacterInfo eci = mCharacterList.charInfoAt(mCharacterList.getSelectedIndex()); - EveCharacterManager.Manager().deleteCharacter(eci.ID); - } - }); - } - - menu.add(new MenuItem("Add Character", 0, 10) { + menu.add(new MenuItem("Add Character", 20, 5) { public void run() { EveEditCharacterScreen ecs = new EveEditCharacterScreen(); EveBerry.sApp.pushScreen(ecs); } }); + menu.add(new MenuItem("Settings", 21, 5) { + public void run() { + EveBerrySettingsScreen screen = new EveBerrySettingsScreen(); + EveBerry.sApp.pushScreen(screen); + } + }); + menu.addSeparator(); } diff -r 5029faa6f8dcf877c25c7290ddb7aba58c153769 -r b40d4040eab561e42ff39443896da85157b3722b src/org/mrrupert/eveberry/EveBerrySettingsScreen.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/org/mrrupert/eveberry/EveBerrySettingsScreen.java Wed Dec 26 22:02:12 2007 -0800 @@ -0,0 +1,97 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is EveBerry. + * + * The Initial Developer of the Original Code is + * Vladimir Vukicevic + * Portions created by the Initial Developer are Copyright (C) 2007 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * ***** END LICENSE BLOCK ***** */ + +package org.mrrupert.eveberry; + +import net.rim.device.api.ui.*; +import net.rim.device.api.ui.component.*; +import net.rim.device.api.ui.container.*; +import net.rim.device.api.i18n.*; +import net.rim.device.api.system.*; +import net.rim.device.api.util.*; +import net.rim.device.api.notification.*; +import net.rim.device.api.collection.util.*; + +import java.util.*; +import java.io.*; + +class EveBerrySettings implements Persistable { + public String EveProxy; + public boolean ShowStationOnMarketOrders; + public boolean UseDeviceSideHTTP; +} + +class EveBerrySettingsScreen extends MainScreen { + CheckboxField mProxyEnabledField; + BasicEditField mProxyField; + + CheckboxField mShowStationOnMarketOrdersField; + + CheckboxField mUseDeviceSideField; + + public EveBerrySettingsScreen() { + super(DEFAULT_MENU | DEFAULT_CLOSE); + + setTitle(new LabelField("EveBerry Settings", LabelField.ELLIPSIS | LabelField.USE_ALL_WIDTH)); + + mProxyEnabledField = new CheckboxField("Use API Proxy", EveBerry.sApp.mSettings.EveProxy != null); + mProxyField = new BasicEditField("Proxy URL:", "", BasicEditField.DEFAULT_MAXCHARS, + BasicEditField.NO_COMPLEX_INPUT | + BasicEditField.NO_LEARNING | + BasicEditField.NO_NEWLINE); + + if (EveBerry.sApp.mSettings.EveProxy != null) { + mProxyField.setText(EveBerry.sApp.mSettings.EveProxy); + } + + mShowStationOnMarketOrdersField = new CheckboxField("Show station name on market orders", EveBerry.sApp.mSettings.ShowStationOnMarketOrders); + mUseDeviceSideField = new CheckboxField("Use device-side HTTP", EveBerry.sApp.mSettings.UseDeviceSideHTTP); + + add(new LabelField("A proxy can be used to cache results from the EVE API server for use by multiple applications. If you wish to use a proxy, enter the URL of eproxy.php here.")); + add(mProxyEnabledField); + add(mProxyField); + + add(new SeparatorField()); + + add(mShowStationOnMarketOrdersField); + + add(new SeparatorField()); + + add(new LabelField("Using device-side HTTP can, in some cases, increase peformance and reduce communication problems.")); + add(mUseDeviceSideField); + } + + public void save() throws IOException { + if (mProxyEnabledField.getChecked()) { + EveBerry.sApp.mSettings.EveProxy = mProxyField.getText(); + } else { + EveBerry.sApp.mSettings.EveProxy = null; + } + + EveBerry.sApp.mSettings.ShowStationOnMarketOrders = mShowStationOnMarketOrdersField.getChecked(); + EveBerry.sApp.mSettings.UseDeviceSideHTTP = mUseDeviceSideField.getChecked(); + + EveBerry.sApp.settingsChanged(); + } +} diff -r 5029faa6f8dcf877c25c7290ddb7aba58c153769 -r b40d4040eab561e42ff39443896da85157b3722b src/org/mrrupert/eveberry/EveCharacterListField.java --- a/src/org/mrrupert/eveberry/EveCharacterListField.java Wed Dec 26 18:31:16 2007 -0800 +++ b/src/org/mrrupert/eveberry/EveCharacterListField.java Wed Dec 26 22:02:12 2007 -0800 @@ -324,6 +324,35 @@ } } + protected void makeContextMenu(ContextMenu menu) { + super.makeContextMenu(menu); + + if (getSelectedIndex() == -1) + return; + + menu.addItem(new MenuItem("Update Character", 0, 5) { + public void run() { + EveCharacterInfo eci = charInfoAt(getSelectedIndex()); + EveBerryBackground.GetBackgroundRunnable().requestCharacterUpdate(eci); + } + }); + + menu.addItem(new MenuItem("View Market Orders", 1, 6) { + public void run() { + EveCharacterInfo eci = charInfoAt(getSelectedIndex()); + EveBerryMarketOrdersScreen screen = new EveBerryMarketOrdersScreen(eci); + EveBerry.sApp.pushScreen(screen); + } + }); + + menu.addItem(new MenuItem("Remove Character", 2, 6) { + public void run() { + EveCharacterInfo eci = charInfoAt(getSelectedIndex()); + EveCharacterManager.Manager().deleteCharacter(eci.ID); + } + }); + } + private static final ListFieldCallback RENDERER = new ListFieldCallback() { public void drawListRow(ListField listField, Graphics graphics, diff -r 5029faa6f8dcf877c25c7290ddb7aba58c153769 -r b40d4040eab561e42ff39443896da85157b3722b src/org/mrrupert/eveberry/EveMarketOrderListField.java --- a/src/org/mrrupert/eveberry/EveMarketOrderListField.java Wed Dec 26 18:31:16 2007 -0800 +++ b/src/org/mrrupert/eveberry/EveMarketOrderListField.java Wed Dec 26 22:02:12 2007 -0800 @@ -187,18 +187,15 @@ class EveMarketOrderListField extends ListField { + static int sDefaultFieldDisplayFlags = 0; + Vector mRows; - int mFieldDisplayFlags; public EveMarketOrderListField() { - mFieldDisplayFlags = 0; - mRows = new Vector(); - setRowHeight(getFont().getHeight()*EveMarketOrderField.NumLinesForFlags(mFieldDisplayFlags) + 2); + setRowHeight(getFont().getHeight()*EveMarketOrderField.NumLinesForFlags(sDefaultFieldDisplayFlags) + 2); setSize(0); setCallback(RENDERER); - - mFieldDisplayFlags = 0; } public void setFieldDisplayFlags(int newFlags) { @@ -214,7 +211,7 @@ } public void addOrder(EveMarketOrder emo) { - EveMarketOrderField field = new EveMarketOrderField(emo, 0); + EveMarketOrderField field = new EveMarketOrderField(emo, sDefaultFieldDisplayFlags); mRows.addElement(field); setSize(mRows.size());