aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2016-11-05 12:14:09 +1300
committerAnton Tananaev <anton.tananaev@gmail.com>2016-11-05 12:14:09 +1300
commit08a01ba7816ee09d3923e984fe30a9ee14594851 (patch)
tree7a3929eeb8995af503d46ffe0e7cff7ca7f73c53
parent7422f1b2cb89019e8c43290246c49e3f27fad0fe (diff)
downloadetbsa-traccar-manager-android-08a01ba7816ee09d3923e984fe30a9ee14594851.tar.gz
etbsa-traccar-manager-android-08a01ba7816ee09d3923e984fe30a9ee14594851.tar.bz2
etbsa-traccar-manager-android-08a01ba7816ee09d3923e984fe30a9ee14594851.zip
Implement start screen logic
-rw-r--r--app/src/main/java/org/traccar/manager/MainActivity.java19
-rw-r--r--app/src/main/java/org/traccar/manager/MainFragment.java19
-rw-r--r--app/src/main/java/org/traccar/manager/StartFragment.java108
-rw-r--r--app/src/main/res/values/strings.xml1
4 files changed, 116 insertions, 31 deletions
diff --git a/app/src/main/java/org/traccar/manager/MainActivity.java b/app/src/main/java/org/traccar/manager/MainActivity.java
index 7c2e876..39d04ec 100644
--- a/app/src/main/java/org/traccar/manager/MainActivity.java
+++ b/app/src/main/java/org/traccar/manager/MainActivity.java
@@ -1,18 +1,17 @@
/*
* Copyright 2016 Anton Tananaev (anton@traccar.org)
*
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.traccar.manager;
diff --git a/app/src/main/java/org/traccar/manager/MainFragment.java b/app/src/main/java/org/traccar/manager/MainFragment.java
index 58bf852..cfa4827 100644
--- a/app/src/main/java/org/traccar/manager/MainFragment.java
+++ b/app/src/main/java/org/traccar/manager/MainFragment.java
@@ -1,18 +1,17 @@
/*
* Copyright 2016 Anton Tananaev (anton@traccar.org)
*
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.traccar.manager;
diff --git a/app/src/main/java/org/traccar/manager/StartFragment.java b/app/src/main/java/org/traccar/manager/StartFragment.java
index 3c4f834..6d41fb2 100644
--- a/app/src/main/java/org/traccar/manager/StartFragment.java
+++ b/app/src/main/java/org/traccar/manager/StartFragment.java
@@ -1,33 +1,119 @@
/*
* Copyright 2016 Anton Tananaev (anton@traccar.org)
*
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.traccar.manager;
+import android.app.AlertDialog;
import android.app.Fragment;
+import android.content.DialogInterface;
+import android.os.AsyncTask;
import android.os.Bundle;
+import android.preference.PreferenceManager;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.EditText;
-public class StartFragment extends Fragment {
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+public class StartFragment extends Fragment implements View.OnClickListener {
+
+ private static final String TAG = StartFragment.class.getSimpleName();
+
+ private EditText serverField;
+ private Button startButton;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_start, container, false);
+ serverField = (EditText) view.findViewById(R.id.field_server);
+ startButton = (Button) view.findViewById(R.id.button_start);
+ startButton.setOnClickListener(this);
return view;
}
+ @Override
+ public void onClick(View view) {
+ startButton.setEnabled(false);
+
+ new AsyncTask<String, Void, Boolean>() {
+
+ @Override
+ protected Boolean doInBackground(String... urls) {
+ try {
+
+ URL url = new URL(urls[0] + "/api/server");
+ HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
+ BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
+
+ String line;
+ StringBuilder responseBuilder = new StringBuilder();
+ while ((line = reader.readLine()) != null) {
+ responseBuilder.append(line);
+ }
+
+ new JSONObject(responseBuilder.toString());
+
+ return true;
+
+ } catch (IOException | JSONException e) {
+ Log.w(TAG, e);
+ }
+ return false;
+ }
+
+ @Override
+ protected void onPostExecute(Boolean result) {
+ if (result) {
+ onSuccess();
+ } else {
+ onError();
+ }
+ }
+
+ }.execute(serverField.getText().toString());
+ }
+
+ private void onSuccess() {
+ PreferenceManager.getDefaultSharedPreferences(getActivity())
+ .edit().putString(MainActivity.PREFERENCE_URL, serverField.getText().toString()).apply();
+ getActivity().getFragmentManager()
+ .beginTransaction().replace(android.R.id.content, new MainFragment()).commit();
+ }
+
+ private void onError() {
+ startButton.setEnabled(true);
+
+ AlertDialog alertDialog = new AlertDialog.Builder(getActivity()).create();
+ alertDialog.setMessage(getString(R.string.error_connection));
+ alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, getString(android.R.string.ok),
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+ }
+ });
+ alertDialog.show();
+ }
+
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 4e51b6b..e421fd4 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -3,4 +3,5 @@
<string name="label_server">Server</string>
<string name="label_info">This screen will be shown only once. After you click the button, server address will be saved in preferences. To change it, clear app data from application manager.</string>
<string name="button_start">Start</string>
+ <string name="error_connection">Server connection failed</string>
</resources>