Skip to content

Commit 4d33e23

Browse files
Merge branch '1.5-Alpha'
2 parents 6f2454b + ca48d2d commit 4d33e23

21 files changed

Lines changed: 365 additions & 196 deletions

app/src/main/AndroidManifest.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,20 @@
1111
<uses-permission android:name="android.permission.CAMERA" />
1212
<uses-permission android:name="android.permission.RECORD_AUDIO" />
1313

14+
<uses-feature
15+
android:name="android.hardware.location.gps"
16+
android:required="false" />
17+
<uses-feature
18+
android:name="android.hardware.location.network"
19+
android:required="false" />
1420
<uses-feature
1521
android:name="android.hardware.camera"
1622
android:required="false" />
1723
<uses-feature
1824
android:name="android.hardware.camera.autofocus"
1925
android:required="false" />
2026

27+
2128
<application
2229
android:allowBackup="true"
2330
android:icon="@mipmap/ic_launcher"

app/src/main/java/org/open311/android/MainActivity.java

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,9 @@
1616
import android.view.MenuItem;
1717

1818
import org.codeforamerica.open311.facade.Servers;
19-
import org.codeforamerica.open311.facade.data.City;
2019
import org.codeforamerica.open311.facade.data.Server;
21-
import org.codeforamerica.open311.facade.data.Service;
2220
import org.codeforamerica.open311.facade.data.ServiceRequest;
23-
import org.open311.android.adapters.CitiesAdapter;
21+
import org.open311.android.adapters.ServersAdapter;
2422
import org.open311.android.adapters.ViewPagerAdapter;
2523

2624
import org.open311.android.fragments.PolicyFragment;
@@ -41,27 +39,25 @@ public class MainActivity extends AppCompatActivity
4139
RequestsFragment.OnListFragmentInteractionListener,
4240
FragmentManager.OnBackStackChangedListener {
4341
private String installationId;
44-
45-
private List<Service> services;
46-
47-
private City currentCity;
42+
private Servers servers = new Servers();
43+
private Server currentServer;
4844
private static final String LOG_TAG = "MainActivity";
4945

5046
protected SharedPreferences settings;
5147

52-
public City getCurrentCity() {
48+
public Server getCurrentServer() {
5349
settings = getSettings(this);
54-
String cur_city = settings.getString("current_city", null);
55-
if (cur_city != null) {
56-
setCurrentCity(City.fromString(cur_city));
50+
String cur_server = settings.getString("current_server", null);
51+
if (cur_server != null) {
52+
setCurrentServer(servers.getServer(cur_server));
5753
} else {
58-
setCurrentCity(City.fromString(getString(R.string.open311_endpoint)));
54+
setCurrentServer(servers.getServer(getString(R.string.open311_endpoint)));
5955
}
60-
return currentCity;
56+
return currentServer;
6157
}
6258

63-
public MainActivity setCurrentCity(City currentCity) {
64-
this.currentCity = currentCity;
59+
public MainActivity setCurrentServer(Server server) {
60+
this.currentServer = server;
6561
return this;
6662
}
6763

@@ -94,8 +90,8 @@ public boolean onCreateOptionsMenu(Menu menu) {
9490
final List<Server> servers = new Servers().getCollection();
9591
getMenuInflater().inflate(R.menu.main, menu);
9692
MenuItem mapItem = menu.findItem(R.id.setting_map);
97-
MenuItem cityItem = menu.findItem(R.id.setting_general);
98-
cityItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
93+
MenuItem serverItem = menu.findItem(R.id.setting_general);
94+
serverItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
9995
@Override
10096
public boolean onMenuItemClick(MenuItem item) {
10197
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
@@ -111,22 +107,22 @@ public boolean onMenuItemClick(MenuItem item) {
111107
values[index] = srv.getName();
112108
index++;
113109
}
114-
builder.setAdapter(new CitiesAdapter(MainActivity.this, servers),
110+
builder.setAdapter(new ServersAdapter(MainActivity.this, servers),
115111
new DialogInterface.OnClickListener() {
116112
@Override
117113
public void onClick(DialogInterface dialog, int index) {
118114
String result = null;
119-
if (!currentCity.getCityName().equals(values[index])) {
120-
Log.d(LOG_TAG, "onCreateOptionsMenu - Selected City: " + values[index]);
121-
result = saveSetting(MainActivity.this, "current_city", values[index]);
115+
if (!currentServer.getName().equals(values[index])) {
116+
Log.d(LOG_TAG, "onCreateOptionsMenu - Selected Server: " + values[index]);
117+
result = saveSetting(MainActivity.this, "current_server", values[index]);
122118

123119
//remove sharedSettings for Map so map resets
124120
removeSetting(MainActivity.this, "map_address_string");
125121
removeSetting(MainActivity.this, "map_latitude");
126122
removeSetting(MainActivity.this, "map.longitude");
127123
removeSetting(MainActivity.this, "map_zoom");
128124

129-
getCurrentCity();
125+
getCurrentServer();
130126
recreate();
131127
}
132128
if (result != null) {

app/src/main/java/org/open311/android/MapActivity.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@
3838
import com.mapbox.mapboxsdk.maps.MapboxMap;
3939
import com.mapbox.mapboxsdk.maps.OnMapReadyCallback;
4040

41-
import org.codeforamerica.open311.facade.data.City;
41+
import org.codeforamerica.open311.facade.Servers;
42+
import org.codeforamerica.open311.facade.data.Server;
4243
import org.open311.android.adapters.GeocoderAdapter;
4344
import org.open311.android.helpers.Utils;
4445
import org.open311.android.widgets.GeocoderView;
@@ -104,15 +105,16 @@ protected void onCreate(Bundle savedInstanceState) {
104105
mapView.getMapAsync(new OnMapReadyCallback() {
105106
@Override
106107
public void onMapReady(MapboxMap mapboxMap) {
107-
City city = City.fromString(settings.getString("current_city", getString(R.string.open311_endpoint)));
108-
if (city.getMap() != null) {
108+
Servers servers = new Servers();
109+
Server server = servers.getServer(settings.getString("current_server", getString(R.string.open311_endpoint)));
110+
if (server.getMap() != null) {
109111
LatLng point = new LatLng(
110-
settings.getFloat("map_latitude", city.getMap().getLat()),
111-
settings.getFloat("map_longitude", city.getMap().getLon())
112+
settings.getFloat("map_latitude", server.getMap().getLat()),
113+
settings.getFloat("map_longitude", server.getMap().getLon())
112114
);
113115
mapboxMap.setCameraPosition(new CameraPosition.Builder()
114116
.target(point)
115-
.zoom((double) settings.getFloat("map_zoom", city.getMap().getZoom()))
117+
.zoom((double) settings.getFloat("map_zoom", server.getMap().getZoom()))
116118
.build());
117119
} else {
118120
LatLng point = new LatLng(
@@ -145,7 +147,6 @@ public void onMapClick(@NonNull LatLng point) {
145147
gpsActionButton.setOnClickListener(new View.OnClickListener() {
146148
@Override
147149
public void onClick(View v) {
148-
//todo implement GPS
149150
if (map != null) {
150151
toggleGps(!map.isMyLocationEnabled());
151152
}

app/src/main/java/org/open311/android/adapters/RequestsAdapter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ private void setFilteredRequests(List<ServiceRequest> requests) {
5050
Collections.sort(this.filteredRequests, new Comparator<ServiceRequest>() {
5151
@Override
5252
public int compare(ServiceRequest serviceRequest, ServiceRequest t1) {
53-
return serviceRequest.getUpdatedDatetime().compareTo(t1.getUpdatedDatetime());
53+
return t1.getUpdatedDatetime().compareTo(serviceRequest.getUpdatedDatetime());
5454
}
5555
});
5656
this.notifyDataSetChanged();

app/src/main/java/org/open311/android/adapters/CitiesAdapter.java renamed to app/src/main/java/org/open311/android/adapters/ServersAdapter.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,34 +14,34 @@
1414
import java.util.List;
1515

1616
/**
17-
* Picklist to select a current City
17+
* Picklist to select a current Server
1818
* Created by miblon on 11/14/16.
1919
*/
2020

21-
public class CitiesAdapter extends ArrayAdapter<Server> {
21+
public class ServersAdapter extends ArrayAdapter<Server> {
2222
private Activity activity;
23-
private List<Server> cities;
23+
private List<Server> servers;
2424

2525
private LayoutInflater inflater;
2626

27-
public CitiesAdapter(Context context, int resource) {
27+
public ServersAdapter(Context context, int resource) {
2828
super(context, resource);
2929
}
3030

31-
public CitiesAdapter(Activity activity, List<Server> cities) {
32-
super(activity, R.layout.item_city, cities);
31+
public ServersAdapter(Activity activity, List<Server> servers) {
32+
super(activity, R.layout.item_server, servers);
3333
this.activity = activity;
34-
this.cities = cities;
34+
this.servers = servers;
3535
}
3636

3737
@Override
3838
public int getCount() {
39-
return cities.size();
39+
return servers.size();
4040
}
4141

4242
@Override
4343
public Server getItem(int location) {
44-
return cities.get(location);
44+
return servers.get(location);
4545
}
4646

4747
@Override
@@ -56,25 +56,25 @@ public View getView(int position, View convertView, ViewGroup parent) {
5656
inflater = (LayoutInflater) activity
5757
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
5858
if (convertView == null)
59-
convertView = inflater.inflate(R.layout.item_city, null);
59+
convertView = inflater.inflate(R.layout.item_server, null);
6060

61-
TextView name = (TextView) convertView.findViewById(R.id.item_city_name);
62-
Server m = cities.get(position);
61+
TextView name = (TextView) convertView.findViewById(R.id.item_server_name);
62+
Server m = servers.get(position);
6363
name.setText(m.getName());
6464
return convertView;
6565
}
6666

6767
@Override
6868
public void add(Server service) {
6969
super.add(service);
70-
cities.add(service);
70+
servers.add(service);
7171
notifyDataSetChanged();
7272
}
7373

7474
@Override
7575
public void remove(Server service) {
7676
super.remove(service);
77-
cities.remove(service);
77+
servers.remove(service);
7878
notifyDataSetChanged();
7979
}
8080
}

app/src/main/java/org/open311/android/adapters/ServicesAdapter.java

Lines changed: 30 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22

33
import android.app.Activity;
44
import android.content.Context;
5+
import android.support.annotation.NonNull;
56
import android.text.Html;
6-
import android.text.method.LinkMovementMethod;
7-
import android.text.util.Linkify;
87
import android.view.LayoutInflater;
98
import android.view.View;
109
import android.view.ViewGroup;
@@ -17,17 +16,18 @@
1716
import java.util.List;
1817

1918
/**
19+
* Retrieve services list for display in dialog
2020
* Created by miblon on 11/14/16.
2121
*/
2222

2323
public class ServicesAdapter extends ArrayAdapter<Service> {
2424
private Activity activity;
25+
private LayoutInflater mInflater;
2526
private List<Service> services;
2627

27-
private LayoutInflater inflater;
28-
29-
public ServicesAdapter(Context context, int resource) {
30-
super(context, resource);
28+
static class ViewHolder {
29+
private TextView name;
30+
private TextView description;
3131
}
3232

3333
public ServicesAdapter(Activity activity, List<Service> services) {
@@ -45,13 +45,6 @@ public int getCount() {
4545
}
4646
}
4747

48-
public void setServices(List<Service> services) {
49-
this.services = services;
50-
51-
if (services != null) {
52-
this.notifyDataSetChanged();
53-
}
54-
}
5548
@Override
5649
public Service getItem(int location) {
5750
return services.get(location);
@@ -62,33 +55,37 @@ public long getItemId(int position) {
6255
return 0;
6356
}
6457

58+
@NonNull
6559
@Override
66-
public View getView(int position, View convertView, ViewGroup parent) {
60+
public View getView(int position, View convertView, @NonNull ViewGroup parent) {
61+
ViewHolder holder;
62+
if (convertView == null) {
6763

64+
holder = new ViewHolder();
65+
mInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
66+
convertView = mInflater.inflate(R.layout.item_service, null);
6867

69-
if (inflater == null)
70-
inflater = (LayoutInflater) activity
71-
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
72-
if (convertView == null)
73-
convertView = inflater.inflate(R.layout.item_service, null);
74-
75-
TextView name = (TextView) convertView.findViewById(R.id.item_service_name);
76-
TextView description = (TextView) convertView.findViewById(R.id.item_service_description);
77-
68+
holder.name = (TextView) convertView.findViewById(R.id.item_service_name);
69+
holder.description = (TextView) convertView.findViewById(R.id.item_service_description);
70+
convertView.setTag(holder);
71+
} else {
72+
holder = (ViewHolder) convertView.getTag();
73+
}
7874
// getting data for the row
79-
Service m = services.get(position);
75+
Service m = getItem(position);
8076
// name
81-
name.setText(m.getServiceName());
82-
// description
83-
if (m.getDescription() != null) {
84-
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
85-
description.setText(Html.fromHtml(m.getDescription(), Html.FROM_HTML_MODE_COMPACT));
86-
} else {
87-
description.setText(Html.fromHtml(m.getDescription()));
77+
if (m != null) {
78+
holder.name.setText(m.getServiceName());
79+
// description
80+
if (m.getDescription() != null) {
81+
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
82+
holder.description.setText(Html.fromHtml(m.getDescription(), Html.FROM_HTML_MODE_LEGACY));
83+
} else {
84+
holder.description.setText(Html.fromHtml(m.getDescription()));
85+
}
8886
}
89-
} else {
90-
description.setVisibility(View.INVISIBLE);
9187
}
88+
9289
return convertView;
9390
}
9491

0 commit comments

Comments
 (0)