Skip to content
This repository has been archived by the owner on Sep 21, 2021. It is now read-only.

Commit

Permalink
feat(mqtt): add configuration screen
Browse files Browse the repository at this point in the history
  • Loading branch information
rafaelje authored and ajsb85 committed Nov 1, 2017
1 parent 28bf360 commit 187d1bc
Show file tree
Hide file tree
Showing 5 changed files with 111 additions and 37 deletions.
71 changes: 39 additions & 32 deletions app/src/main/java/org/flyve/mdm/agent/ui/FragmentMQTTConfig.java
@@ -1,17 +1,15 @@
package org.flyve.mdm.agent.ui;

import android.app.ProgressDialog;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.EditText;

import org.flyve.mdm.agent.R;
import org.flyve.mdm.agent.data.DataStorage;
import org.flyve.mdm.agent.utils.Helpers;

/*
Expand Down Expand Up @@ -40,11 +38,9 @@
* @link https://flyve-mdm.com
* ------------------------------------------------------------------------------
*/
public class FragmentHelp extends Fragment {
public class FragmentMQTTConfig extends Fragment {

private static final String TAG = "Help";
private ProgressDialog progressBar;
private static final String HELP_URL = "http://flyve-mdm.com";
private DataStorage cache;

/**
* Instantiate the user interface view
Expand All @@ -58,38 +54,49 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_help, container, false);
View v = inflater.inflate(R.layout.fragment_mqtt_configuration, container, false);

WebView wv = (WebView) v.findViewById(R.id.webview);
cache = new DataStorage(FragmentMQTTConfig.this.getContext());

WebSettings settings = wv.getSettings();
settings.setJavaScriptEnabled(true);
wv.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
final String mBroker = cache.getBroker();
final String mPort = cache.getPort();
final String mUser = cache.getMqttuser();
final String mPassword = cache.getMqttpasswd();
final String mTopic = cache.getTopic();

progressBar = ProgressDialog.show(FragmentHelp.this.getActivity(), getResources().getString(R.string.help), getResources().getString(R.string.loading));
final EditText editBroker = (EditText) v.findViewById(R.id.editBroker);
editBroker.setText( mBroker );

wv.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.i(TAG, "Processing webview url click...");
view.loadUrl(url);
return true;
}
final EditText editPort = (EditText) v.findViewById(R.id.editPort);
editPort.setText( mPort );

public void onPageFinished(WebView view, String url) {
Log.i(TAG, "Finished loading URL: " +url);
if (progressBar.isShowing()) {
progressBar.dismiss();
}
}
final EditText editUser = (EditText) v.findViewById(R.id.editUser);
editUser.setText( mUser );

final EditText editPassword = (EditText) v.findViewById(R.id.editPassword);
editPassword.setText( mPassword );

final EditText editTopic = (EditText) v.findViewById(R.id.editTopic);
editTopic.setText( mTopic );

public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Log.e(TAG, "Error: " + description);
Helpers.snack(FragmentHelp.this.getActivity(), description);
FloatingActionButton btnSave = (FloatingActionButton) v.findViewById(R.id.btnSave);
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

cache.setBroker( editBroker.getText().toString() );
cache.setPort( editPort.getText().toString() );
cache.setMqttuser( editUser.getText().toString() );
cache.setMqttpasswd( editPassword.getText().toString() );
cache.setTopic( editTopic.getText().toString() );

// restart MQTT connection with this new parameters
((MainActivity)FragmentMQTTConfig.this.getActivity()).globalStartMQTT();

Helpers.snack(FragmentMQTTConfig.this.getActivity(), getString(R.string.mqtt_save_message));
}
});

wv.loadUrl(HELP_URL);

return v;
}
}
Binary file added app/src/main/res/drawable-hdpi/ic_config.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app/src/main/res/drawable-hdpi/ic_save.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
67 changes: 63 additions & 4 deletions app/src/main/res/layout/fragment_mqtt_configuration.xml
Expand Up @@ -4,9 +4,68 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<WebView
android:id="@+id/webview"

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
</WebView>
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dp"
>

<TextView
android:id="@+id/txtTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/mqtt_configuration_title"
android:layout_margin="20dp"
/>

<EditText
android:id="@+id/editBroker"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/mqtt_broker"
/>

<EditText
android:id="@+id/editPort"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/mqtt_port"
/>

<EditText
android:id="@+id/editUser"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/mqtt_user"
/>

<EditText
android:id="@+id/editPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/mqtt_password"
/>

<EditText
android:id="@+id/editTopic"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/mqtt_initital_topic"
/>

</LinearLayout>

<android.support.design.widget.FloatingActionButton
android:id="@+id/btnSave"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:clickable="true"
android:src="@drawable/ic_save"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
/>

</RelativeLayout>
10 changes: 9 additions & 1 deletion app/src/main/res/values/strings.xml
Expand Up @@ -44,6 +44,14 @@
<string name="device_supervised_by_title">DEVICE SUPERVISED BY</string>
<string name="user_information_title">USER INFORMATION</string>

<string name="mqtt_configuration_title">Warning: just edit this text if you know what are you doing, edit this information maybe cause your app lose connection with the server</string>
<string name="mqtt_broker">Broker</string>
<string name="mqtt_port">Port</string>
<string name="mqtt_user">User</string>
<string name="mqtt_password">Password</string>
<string name="mqtt_initital_topic">Initial Topic</string>
<string name="mqtt_save_message">Saved</string>

<string name="saved">Saved</string>
<string name="accept">Accept</string>
<string name="cancel">Cancel</string>
Expand Down Expand Up @@ -86,7 +94,7 @@

<string name="drawer_information">Information</string>
<string name="drawer_log">Log</string>
<string name="drawer_feedback">Feedback</string>
<string name="drawer_mqtt_config">MQTT Configuration</string>
<string name="drawer_help">Help</string>
<string name="drawer_about">About</string>

Expand Down

0 comments on commit 187d1bc

Please sign in to comment.