aboutsummaryrefslogtreecommitdiffstats
path: root/HttpServer/app/src/main/java/icn/httpserver/com/httpserver/HttpServerActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'HttpServer/app/src/main/java/icn/httpserver/com/httpserver/HttpServerActivity.java')
-rw-r--r--HttpServer/app/src/main/java/icn/httpserver/com/httpserver/HttpServerActivity.java187
1 files changed, 187 insertions, 0 deletions
diff --git a/HttpServer/app/src/main/java/icn/httpserver/com/httpserver/HttpServerActivity.java b/HttpServer/app/src/main/java/icn/httpserver/com/httpserver/HttpServerActivity.java
new file mode 100644
index 00000000..78ef8ff2
--- /dev/null
+++ b/HttpServer/app/src/main/java/icn/httpserver/com/httpserver/HttpServerActivity.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright (c) 2018 Cisco and/or its affiliates.
+ * 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:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 icn.httpserver.com.httpserver;
+
+import android.Manifest;
+import android.app.Dialog;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
+import android.content.res.Configuration;
+import android.net.Uri;
+import android.support.v4.app.ActivityCompat;
+import android.support.v4.content.ContextCompat;
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.widget.Button;
+import android.widget.CompoundButton;
+import android.widget.EditText;
+import android.widget.Switch;
+
+import icn.httpserver.com.service.HttpServerService;
+import icn.httpserver.com.supportlibrary.HttpServer;
+import icn.httpserver.com.utility.Constants;
+import icn.httpserver.com.utility.ResourcesEnumerator;
+
+public class HttpServerActivity extends AppCompatActivity {
+ private EditText rootFolderEditText;
+ private EditText tcpListenPortEditText;
+ private EditText webServerPrefixEditText;
+ private EditText proxyAddressEditText;
+ private EditText iCNproxyAddressEditText;
+ private Switch httpServerSwitch;
+ private Button yesButtonDialog;
+ private Button noButtonDialog;
+
+
+ private SharedPreferences sharedPreferences;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_http_server);
+ checkEnabledPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE);
+ checkEnabledPermission(Manifest.permission.READ_EXTERNAL_STORAGE);
+ if (!checkMetis(Constants.METIS_ID)) {
+ final Dialog dialog = new Dialog(this);
+ dialog.setContentView(R.layout.popup_message);
+ yesButtonDialog = (Button) dialog.findViewById(R.id.yesButtonDialog);
+ noButtonDialog = (Button) dialog.findViewById(R.id.noButtonDialog);
+ yesButtonDialog.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ try {
+ startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + Constants.METIS_ID)));
+ } catch (android.content.ActivityNotFoundException anfe) {
+ startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + Constants.METIS_ID)));
+ }
+ dialog.hide();
+ }
+ });
+ noButtonDialog.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ dialog.hide();
+ }
+ });
+ dialog.show();
+
+ }
+ init();
+ }
+
+
+ private void checkEnabledPermission(String permission) {
+ if (ContextCompat.checkSelfPermission(this,
+ permission)
+ != PackageManager.PERMISSION_GRANTED) {
+ if (ActivityCompat.shouldShowRequestPermissionRationale(this,
+ permission)) {
+ } else {
+ ActivityCompat.requestPermissions(this,
+ new String[]{permission},
+ 1);
+ }
+ }
+ }
+
+ private boolean checkMetis(String uri) {
+ PackageManager pm = getPackageManager();
+ try {
+ pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
+ return true;
+ } catch (PackageManager.NameNotFoundException e) {
+ return false;
+ }
+ }
+
+ private void init() {
+ sharedPreferences = getSharedPreferences(Constants.HTTP_SERVER_PREFERENCES, MODE_PRIVATE);
+ rootFolderEditText = (EditText) findViewById(R.id.rootFolderEditText);
+ rootFolderEditText.setText(sharedPreferences.getString(ResourcesEnumerator.ROOT_FOLDER.key(), Constants.DEFAULT_ROOT_FOLDER));
+ tcpListenPortEditText = (EditText) findViewById(R.id.tcpListenPortEditText);
+ tcpListenPortEditText.setText(sharedPreferences.getString(ResourcesEnumerator.TCP_LISTEN_PORT.key(), Constants.DEFAULT_TCP_LISTEN_PORT));
+ webServerPrefixEditText = (EditText) findViewById(R.id.webServerPrefixEditText);
+ webServerPrefixEditText.setText(sharedPreferences.getString(ResourcesEnumerator.WEBSERVER_PREFIX.key(), Constants.DEFAULT_WEBSERVER_PREFIX));
+ proxyAddressEditText = (EditText) findViewById(R.id.proxyAddressEditText);
+ proxyAddressEditText.setText(sharedPreferences.getString(ResourcesEnumerator.PROXY_ADDRESS.key(), Constants.DEFAULT_PROXY_ADDRESS));
+ iCNproxyAddressEditText = (EditText) findViewById(R.id.iCNproxyAddressEditText);
+ iCNproxyAddressEditText.setText(sharedPreferences.getString(ResourcesEnumerator.ICN_PROXY_ADDRESS.key(), Constants.DEFAULT_ICN_PROXY_ADDRESS));
+ httpServerSwitch = (Switch) findViewById(R.id.httpServerSwitch);
+ if (HttpServer.getInstance().isRunning()) {
+ httpServerSwitch.setChecked(true);
+ rootFolderEditText.setEnabled(false);
+ tcpListenPortEditText.setEnabled(false);
+ webServerPrefixEditText.setEnabled(false);
+ proxyAddressEditText.setEnabled(false);
+ iCNproxyAddressEditText.setEnabled(false);
+ }
+
+ httpServerSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+
+ @Override
+ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+ Log.v("Switch State=", "" + isChecked);
+ if (isChecked) {
+ httpServerSwitch.setText(Constants.ENABLED);
+ SharedPreferences.Editor sharedPreferencesEditor = getSharedPreferences(Constants.HTTP_SERVER_PREFERENCES, MODE_PRIVATE).edit();
+ sharedPreferencesEditor.putString(ResourcesEnumerator.ROOT_FOLDER.key(), rootFolderEditText.getText().toString());
+ sharedPreferencesEditor.putString(ResourcesEnumerator.TCP_LISTEN_PORT.key(), tcpListenPortEditText.getText().toString());
+ sharedPreferencesEditor.putString(ResourcesEnumerator.WEBSERVER_PREFIX.key(), webServerPrefixEditText.getText().toString());
+ sharedPreferencesEditor.putString(ResourcesEnumerator.PROXY_ADDRESS.key(), proxyAddressEditText.getText().toString());
+ sharedPreferencesEditor.putString(ResourcesEnumerator.ICN_PROXY_ADDRESS.key(), iCNproxyAddressEditText.getText().toString());
+ sharedPreferencesEditor.commit();
+ rootFolderEditText.setEnabled(false);
+ tcpListenPortEditText.setEnabled(false);
+ webServerPrefixEditText.setEnabled(false);
+ proxyAddressEditText.setEnabled(false);
+ iCNproxyAddressEditText.setEnabled(false);
+ startHttpServer();
+
+ } else {
+ httpServerSwitch.setText(Constants.DISABLED);
+ rootFolderEditText.setEnabled(true);
+ tcpListenPortEditText.setEnabled(true);
+ webServerPrefixEditText.setEnabled(true);
+ proxyAddressEditText.setEnabled(true);
+ iCNproxyAddressEditText.setEnabled(true);
+ stopHttpServer();
+ }
+ }
+
+ });
+
+
+ }
+
+ private void startHttpServer() {
+ Intent intent = new Intent(this, HttpServerService.class);
+ startService(intent);
+ }
+
+ private void stopHttpServer() {
+ Intent intent = new Intent(this, HttpServerService.class);
+ stopService(intent);
+ }
+
+ @Override
+ public void onConfigurationChanged(Configuration newConfig) {
+ super.onConfigurationChanged(newConfig);
+ }
+
+}