diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2016-11-05 12:14:09 +1300 |
---|---|---|
committer | Anton Tananaev <anton.tananaev@gmail.com> | 2016-11-05 12:14:09 +1300 |
commit | 08a01ba7816ee09d3923e984fe30a9ee14594851 (patch) | |
tree | 7a3929eeb8995af503d46ffe0e7cff7ca7f73c53 | |
parent | 7422f1b2cb89019e8c43290246c49e3f27fad0fe (diff) | |
download | etbsa-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.java | 19 | ||||
-rw-r--r-- | app/src/main/java/org/traccar/manager/MainFragment.java | 19 | ||||
-rw-r--r-- | app/src/main/java/org/traccar/manager/StartFragment.java | 108 | ||||
-rw-r--r-- | app/src/main/res/values/strings.xml | 1 |
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> |