From a1c545c347863926f53c8ecfb31cdeefab6a65ea Mon Sep 17 00:00:00 2001 From: vshcherb Date: Sat, 24 May 2014 02:20:15 +0200 Subject: [PATCH] Add motd and fix layout --- .../layout-v14/osmo_groups_list_header.xml | 21 +++++++++++++++---- OsmAnd/res/layout/osmo_group_item.xml | 3 ++- OsmAnd/res/layout/osmo_group_list_item.xml | 3 ++- OsmAnd/res/layout/osmo_groups_list_header.xml | 21 +++++++++++++++---- OsmAnd/res/values-fr/strings.xml | 2 +- .../osmand/plus/osmo/OsMoGroupsActivity.java | 9 ++++++++ .../src/net/osmand/plus/osmo/OsMoPlugin.java | 2 +- .../src/net/osmand/plus/osmo/OsMoService.java | 17 ++++++++++++++- .../src/net/osmand/plus/osmo/OsMoThread.java | 6 +++++- 9 files changed, 70 insertions(+), 14 deletions(-) diff --git a/OsmAnd/res/layout-v14/osmo_groups_list_header.xml b/OsmAnd/res/layout-v14/osmo_groups_list_header.xml index 54bc6dc821..57f1f73eab 100644 --- a/OsmAnd/res/layout-v14/osmo_groups_list_header.xml +++ b/OsmAnd/res/layout-v14/osmo_groups_list_header.xml @@ -2,10 +2,23 @@ + android:layout_marginBottom="5dp" + android:layout_marginLeft="5dp" + android:layout_marginRight="5dp" + android:orientation="vertical" > - + + + \ No newline at end of file diff --git a/OsmAnd/res/layout/osmo_group_item.xml b/OsmAnd/res/layout/osmo_group_item.xml index ef65d33592..0f8cf33dc2 100644 --- a/OsmAnd/res/layout/osmo_group_item.xml +++ b/OsmAnd/res/layout/osmo_group_item.xml @@ -19,7 +19,8 @@ - diff --git a/OsmAnd/res/layout/osmo_groups_list_header.xml b/OsmAnd/res/layout/osmo_groups_list_header.xml index 949978bea2..7247b4a0da 100644 --- a/OsmAnd/res/layout/osmo_groups_list_header.xml +++ b/OsmAnd/res/layout/osmo_groups_list_header.xml @@ -2,10 +2,23 @@ + android:layout_marginBottom="5dp" + android:layout_marginLeft="5dp" + android:layout_marginRight="5dp" + android:orientation="vertical" > - + + + \ No newline at end of file diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index 46256d9c68..49aa66a5e8 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -521,7 +521,7 @@ Avancez Continuer Téléchargement des régions - Merci d\'avoir choisi OsmAnd. La plupart des fonctionnalités de l\'application nécessitent des données régionales, utilisables hors-ligne, que vous pouvez au préalable télécharger ('Paramètres' → 'Données hors-ligne') ou préparer vous-même. Ces données permettront de visualiser les cartes et de rechercher une adresse, un point d\'intérêt (PI) ou un transport en commun. + Merci d\'avoir choisi OsmAnd. La plupart des fonctionnalités de l\'application nécessitent des données régionales, utilisables hors-ligne, que vous pouvez au préalable télécharger (\'Paramètres\' → \'Données hors-ligne\') ou préparer vous-même. Ces données permettront de visualiser les cartes et de rechercher une adresse, un point d\'intérêt (PI) ou un transport en commun. Recherche d\'un signal… Rechercher près du dernier emplacement Rechercher à proximité diff --git a/OsmAnd/src/net/osmand/plus/osmo/OsMoGroupsActivity.java b/OsmAnd/src/net/osmand/plus/osmo/OsMoGroupsActivity.java index eb318d55c0..11dacbe1b3 100644 --- a/OsmAnd/src/net/osmand/plus/osmo/OsMoGroupsActivity.java +++ b/OsmAnd/src/net/osmand/plus/osmo/OsMoGroupsActivity.java @@ -27,6 +27,7 @@ import net.osmand.plus.activities.OsmandBaseExpandableListAdapter; import net.osmand.plus.activities.OsmandExpandableListActivity; import net.osmand.plus.osmo.OsMoGroups.OsMoGroup; import net.osmand.plus.osmo.OsMoGroups.OsMoUser; +import net.osmand.plus.osmo.OsMoService.SessionInfo; import net.osmand.plus.osmo.OsMoTracker.OsmoTrackerListener; import android.app.AlertDialog; import android.app.AlertDialog.Builder; @@ -52,6 +53,7 @@ import android.view.ViewGroup; import android.view.WindowManager; import android.widget.CheckBox; import android.widget.CompoundButton; +import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.EditText; import android.widget.ExpandableListView; import android.widget.ImageView; @@ -123,6 +125,13 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements } } }); + TextView mtd = (TextView) findViewById(R.id.motd); + SessionInfo si = osMoPlugin.getService().getCurrentSessionInfo(); + boolean visible = si != null && si.motd != null && si.motd.length() > 0; + mtd.setVisibility(visible? View.VISIBLE:View.GONE); + if(visible) { + mtd.setText(si.motd); + } } private Path createDirectionPath() { diff --git a/OsmAnd/src/net/osmand/plus/osmo/OsMoPlugin.java b/OsmAnd/src/net/osmand/plus/osmo/OsMoPlugin.java index df39f12893..1438b648d2 100644 --- a/OsmAnd/src/net/osmand/plus/osmo/OsMoPlugin.java +++ b/OsmAnd/src/net/osmand/plus/osmo/OsMoPlugin.java @@ -207,7 +207,7 @@ public class OsMoPlugin extends OsmandPlugin implements MonitoringInfoControlSer @Override public void registerOptionsMenuItems(final MapActivity mapActivity, ContextMenuAdapter helper) { - helper.item(R.string.osmo_groups).icons(R.drawable.ic_action_eye_dark, R.drawable.ic_action_eye_light).position(4) + helper.item(R.string.osmo_groups).icons(R.drawable.ic_action_eye_dark, R.drawable.ic_action_eye_light).position(6) .listen(new OnContextMenuClick() { @Override public void onContextMenuClick(int itemId, int pos, boolean isChecked, DialogInterface dialog) { diff --git a/OsmAnd/src/net/osmand/plus/osmo/OsMoService.java b/OsmAnd/src/net/osmand/plus/osmo/OsMoService.java index 6060acdc86..8be911a41a 100644 --- a/OsmAnd/src/net/osmand/plus/osmo/OsMoService.java +++ b/OsmAnd/src/net/osmand/plus/osmo/OsMoService.java @@ -28,7 +28,7 @@ import org.json.JSONObject; import android.os.Build; import android.provider.Settings.Secure; -public class OsMoService implements OsMoSender { +public class OsMoService implements OsMoSender, OsMoReactor { private OsMoThread thread; private List listSenders = new java.util.concurrent.CopyOnWriteArrayList(); private List listReactors = new java.util.concurrent.CopyOnWriteArrayList(); @@ -42,6 +42,7 @@ public class OsMoService implements OsMoSender { public OsMoService(OsmandApplication app) { this.app = app; listSenders.add(this); + listReactors.add(this); } public boolean isConnected() { @@ -149,6 +150,8 @@ public class OsMoService implements OsMoSender { public String username; public long serverTimeDelta; public long motdTimestamp; + + public String motd = ""; } public SessionInfo getCurrentSessionInfo() { @@ -225,5 +228,17 @@ public class OsMoService implements OsMoSender { } return null; } + + @Override + public boolean acceptCommand(String command, String data, JSONObject obj, OsMoThread tread) { + if(command.equals("MOTD")) { + SessionInfo si = getCurrentSessionInfo(); + if(si != null) { + si.motd = data; + } + return true; + } + return false; + } } diff --git a/OsmAnd/src/net/osmand/plus/osmo/OsMoThread.java b/OsmAnd/src/net/osmand/plus/osmo/OsMoThread.java index d95833ed5a..a56d4347d4 100644 --- a/OsmAnd/src/net/osmand/plus/osmo/OsMoThread.java +++ b/OsmAnd/src/net/osmand/plus/osmo/OsMoThread.java @@ -306,7 +306,11 @@ public class OsMoThread { sessionInfo.username = obj.getString("name"); } if (obj.has("motd")) { - sessionInfo.motdTimestamp = obj.getLong("motd"); + long l = obj.getLong("motd"); + if(l != sessionInfo.motdTimestamp ){ + sessionInfo.motdTimestamp = l; + service.pushCommand("MOTD"); + } } if(obj.has("tracker_id")) { sessionInfo.trackerId= obj.getString("tracker_id");