diff --git a/app/src/main/java/uk/org/openseizuredetector/FragmentCommon.java b/app/src/main/java/uk/org/openseizuredetector/FragmentCommon.java
new file mode 100644
index 0000000..703527f
--- /dev/null
+++ b/app/src/main/java/uk/org/openseizuredetector/FragmentCommon.java
@@ -0,0 +1,227 @@
+package uk.org.openseizuredetector;
+
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+public class FragmentCommon extends FragmentSdDataViewer {
+ String TAG = "FragmentCommon";
+ public FragmentCommon() {
+ // Required empty public constructor
+ }
+
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+
+ super.onCreate(savedInstanceState);
+
+
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.fragment_common, container, false);
+ }
+
+ @Override
+ public void onViewCreated(View view, Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+ // Deal with the 'AcceptAlarm Button'
+ Button button = (Button) mRootView.findViewById(R.id.acceptAlarmButton);
+ button.setOnClickListener(new View.OnClickListener() {
+ public void onClick(View v) {
+ Log.v(TAG, "acceptAlarmButton.onClick()");
+ if (mConnection.mBound) {
+ if ((mConnection.mSdServer.mSmsTimer != null)
+ && (mConnection.mSdServer.mSmsTimer.mTimeLeft > 0)) {
+ Log.i(TAG, "acceptAlarmButton.onClick() - Stopping SMS Timer");
+ mUtil.showToast(getString(R.string.SMSAlarmCancelledMsg));
+ mConnection.mSdServer.stopSmsTimer();
+ } else {
+ Log.v(TAG, "acceptAlarmButton.onClick() - Accepting Alarm");
+ mConnection.mSdServer.acceptAlarm();
+ }
+ }
+ }
+ });
+
+ // Deal with the 'Cancel Audible Button'
+ button = (Button) mRootView.findViewById(R.id.cancelAudibleButton);
+ button.setOnClickListener(new View.OnClickListener() {
+ public void onClick(View v) {
+ Log.v(TAG, "cancelAudibleButton.onClick()");
+ if (mConnection.mBound) {
+ mConnection.mSdServer.cancelAudible();
+ }
+ }
+ });
+
+ // Deal with the 'Raise Alarm'
+ button = (Button) mRootView.findViewById(R.id.manualAlarmButton);
+ button.setOnClickListener(new View.OnClickListener() {
+ public void onClick(View v) {
+ Log.v(TAG, "manualAlarmButton.onClick()");
+ if (mConnection.mBound) {
+ mConnection.mSdServer.raiseManualAlarm();
+ }
+ }
+ });
+ }
+
+ @Override
+ protected void updateUi() {
+ Log.d(TAG,"updateUi()");
+ TextView tv;
+ tv = (TextView)mRootView.findViewById(R.id.fragment_common_tv1);
+ if (mConnection.mBound) {
+ tv.setText("Bound to Server");
+ } else {
+ tv.setText("****NOT BOUND TO SERVER***");
+ return;
+ }
+
+ if (mUtil.isServerRunning()) {
+ //LinearLayout ll = (LinearLayout) findViewById(R.id.statusLayout);
+ //ll.setBackgroundColor(okColour);
+ //ll = (LinearLayout) findViewById(R.id.watchStatusLl);
+ //ll.setBackgroundColor(okColour);
+
+ tv = (TextView) mRootView.findViewById(R.id.serverStatusTv);
+ if (mConnection.mBound) {
+ if (mConnection.mSdServer.mSdDataSourceName.equals("Phone")) {
+ if (mConnection.mSdServer.mLogNDA)
+ tv.setText(getString(R.string.ServerRunningOK) + getString(R.string.DataSource) + " = " + "Phone" + "\n" + "(Demo Mode)" + "\nNDA Logging");
+ else
+ tv.setText(getString(R.string.ServerRunningOK) + getString(R.string.DataSource) + " = " + "Phone" + "\n" + "(Demo Mode)");
+ tv.setBackgroundColor(warnColour);
+ tv.setTextColor(warnTextColour);
+ } else {
+ if (mConnection.mSdServer.mLogNDA)
+ tv.setText(getString(R.string.ServerRunningOK) + getString(R.string.DataSource) + " = " + mConnection.mSdServer.mSdDataSourceName + "\nNDA Logging");
+ else
+ tv.setText(getString(R.string.ServerRunningOK) + getString(R.string.DataSource) + " = " + mConnection.mSdServer.mSdDataSourceName);
+ tv.setBackgroundColor(okColour);
+ tv.setTextColor(okTextColour);
+ }
+ tv = (TextView) mRootView.findViewById(R.id.algsTv);
+ tv.setText("Algorithms");
+ tv.setBackgroundColor(okColour);
+ tv.setTextColor(okTextColour);
+ tv = (TextView) mRootView.findViewById(R.id.osdAlgTv);
+ tv.setText("OSD ");
+ if (mConnection.mSdServer.mSdData.mOsdAlarmActive) {
+ tv.setBackgroundColor(okColour);
+ tv.setTextColor(okTextColour);
+ tv.setPaintFlags(tv.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG);
+ } else {
+ tv.setBackgroundColor(warnColour);
+ tv.setTextColor(warnTextColour);
+ tv.setPaintFlags(tv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
+ }
+ tv = (TextView) mRootView.findViewById(R.id.cnnAlgTv);
+ tv.setText("CNN ");
+ if (mConnection.mSdServer.mSdData.mCnnAlarmActive) {
+ tv.setBackgroundColor(okColour);
+ tv.setTextColor(okTextColour);
+ tv.setPaintFlags(tv.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG);
+ } else {
+ tv.setBackgroundColor(okColour);
+ tv.setTextColor(okTextColour);
+ tv.setPaintFlags(tv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
+ }
+ tv = (TextView) mRootView.findViewById(R.id.hrAlgTv);
+ tv.setText("HR ");
+ if (mConnection.mSdServer.mSdData.mHRAlarmActive) {
+ tv.setBackgroundColor(okColour);
+ tv.setTextColor(okTextColour);
+ tv.setPaintFlags(tv.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG);
+ } else {
+ tv.setBackgroundColor(okColour);
+ tv.setTextColor(okTextColour);
+ tv.setPaintFlags(tv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
+ }
+ tv = (TextView) mRootView.findViewById(R.id.o2AlgTv);
+ tv.setText("O2 ");
+ if (mConnection.mSdServer.mSdData.mO2SatAlarmActive) {
+ tv.setBackgroundColor(okColour);
+ tv.setTextColor(okTextColour);
+ tv.setPaintFlags(tv.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG);
+ } else {
+ tv.setBackgroundColor(okColour);
+ tv.setTextColor(okTextColour);
+ tv.setPaintFlags(tv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
+ }
+ }
+ } else {
+ tv = (TextView) mRootView.findViewById(R.id.serverStatusTv);
+ tv.setText(R.string.ServerStopped);
+ tv.setBackgroundColor(warnColour);
+ tv.setTextColor(warnTextColour);
+ tv = (TextView) mRootView.findViewById(R.id.serverIpTv);
+ tv.setText("--");
+ tv.setBackgroundColor(warnColour);
+ tv.setTextColor(warnTextColour);
+ }
+
+ // deal with latch alarms button
+ Button acceptAlarmButton = (Button) mRootView.findViewById(R.id.acceptAlarmButton);
+
+ if (mConnection.mBound) {
+ if ((mConnection.mSdServer.mSmsTimer != null)
+ && (mConnection.mSdServer.mSmsTimer.mTimeLeft > 0)) {
+ acceptAlarmButton.setText(getString(R.string.SMSWillBeSentIn) + " " +
+ mConnection.mSdServer.mSmsTimer.mTimeLeft / 1000 +
+ " s - " + getString(R.string.Cancel));
+ acceptAlarmButton.setBackgroundColor(alarmColour);
+ acceptAlarmButton.setEnabled(true);
+ } else {
+ acceptAlarmButton.setText(R.string.AcceptAlarm);
+ acceptAlarmButton.setBackgroundColor(Color.GRAY);
+ if (mConnection.mBound)
+ if ((mConnection.mSdServer.isLatchAlarms())
+ || mConnection.mSdServer.mSdData.mFallActive) {
+ acceptAlarmButton.setEnabled(true);
+ } else {
+ acceptAlarmButton.setEnabled(false);
+ }
+ }
+ } else {
+ acceptAlarmButton.setText(getString(R.string.AcceptAlarm));
+ acceptAlarmButton.setBackgroundColor(Color.DKGRAY);
+ acceptAlarmButton.setEnabled(false);
+ }
+
+ // Deal with Cancel Audible button
+ Button cancelAudibleButton =
+ (Button) mRootView.findViewById(R.id.cancelAudibleButton);
+ if (mConnection.mBound)
+ if (mConnection.mSdServer.isAudibleCancelled()) {
+ cancelAudibleButton.setText(getString(R.string.AudibleAlarmsCancelledFor)
+ + " " + mConnection.mSdServer.
+ cancelAudibleTimeRemaining()
+ + " sec");
+ cancelAudibleButton.setEnabled(true);
+ } else {
+ if (mConnection.mSdServer.mAudibleAlarm) {
+ cancelAudibleButton.setText(R.string.CancelAudibleAlarms);
+ cancelAudibleButton.setEnabled(true);
+ } else {
+ cancelAudibleButton.setText(R.string.AudibleAlarmsOff);
+ cancelAudibleButton.setEnabled(false);
+ }
+ }
+
+
+
+ }
+}
diff --git a/app/src/main/java/uk/org/openseizuredetector/FragmentDataSharing.java b/app/src/main/java/uk/org/openseizuredetector/FragmentDataSharing.java
new file mode 100644
index 0000000..aa0f320
--- /dev/null
+++ b/app/src/main/java/uk/org/openseizuredetector/FragmentDataSharing.java
@@ -0,0 +1,43 @@
+package uk.org.openseizuredetector;
+
+import android.os.Bundle;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+public class FragmentDataSharing extends FragmentSdDataViewer {
+ String TAG = "FragmentDataSharing";
+ public FragmentDataSharing() {
+ // Required empty public constructor
+ }
+
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.fragment_data_sharing, container, false);
+ }
+
+ @Override
+ protected void updateUi() {
+ Log.d(TAG,"updateUi()");
+ TextView tv;
+ tv = (TextView)mRootView.findViewById(R.id.fragment_data_sharing_tv1);
+ if (mConnection.mBound) {
+ tv.setText("Bound to Server");
+ } else {
+ tv.setText("****NOT BOUND TO SERVER***");
+ return;
+ }
+
+
+ }
+}
diff --git a/app/src/main/java/uk/org/openseizuredetector/FragmentHrAlg.java b/app/src/main/java/uk/org/openseizuredetector/FragmentHrAlg.java
index 836457a..3c876e6 100644
--- a/app/src/main/java/uk/org/openseizuredetector/FragmentHrAlg.java
+++ b/app/src/main/java/uk/org/openseizuredetector/FragmentHrAlg.java
@@ -37,14 +37,14 @@ public class FragmentHrAlg extends FragmentSdDataViewer {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
- return inflater.inflate(R.layout.fragment_osdalg, container, false);
+ return inflater.inflate(R.layout.fragment_hr_alg, container, false);
}
@Override
protected void updateUi() {
Log.d(TAG,"updateUi()");
TextView tv;
- tv = (TextView)mRootView.findViewById(R.id.fragment_osdalg_tv1);
+ tv = (TextView)mRootView.findViewById(R.id.fragment_hr_alg_tv1);
if (mConnection.mBound) {
tv.setText("Bound to Server");
} else {
diff --git a/app/src/main/java/uk/org/openseizuredetector/FragmentMlAlg.java b/app/src/main/java/uk/org/openseizuredetector/FragmentMlAlg.java
new file mode 100644
index 0000000..228a6f5
--- /dev/null
+++ b/app/src/main/java/uk/org/openseizuredetector/FragmentMlAlg.java
@@ -0,0 +1,43 @@
+package uk.org.openseizuredetector;
+
+import android.os.Bundle;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+public class FragmentMlAlg extends FragmentSdDataViewer {
+ String TAG = "FragmentMlAlg";
+ public FragmentMlAlg() {
+ // Required empty public constructor
+ }
+
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.fragment_ml_alg, container, false);
+ }
+
+ @Override
+ protected void updateUi() {
+ Log.d(TAG,"updateUi()");
+ TextView tv;
+ tv = (TextView)mRootView.findViewById(R.id.fragment_ml_alg_tv1);
+ if (mConnection.mBound) {
+ tv.setText("Bound to Server");
+ } else {
+ tv.setText("****NOT BOUND TO SERVER***");
+ return;
+ }
+
+
+ }
+}
diff --git a/app/src/main/java/uk/org/openseizuredetector/FragmentSdDataViewer.java b/app/src/main/java/uk/org/openseizuredetector/FragmentSdDataViewer.java
index 020cd29..6f87320 100644
--- a/app/src/main/java/uk/org/openseizuredetector/FragmentSdDataViewer.java
+++ b/app/src/main/java/uk/org/openseizuredetector/FragmentSdDataViewer.java
@@ -1,6 +1,7 @@
package uk.org.openseizuredetector;
import android.content.Context;
+import android.graphics.Color;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
@@ -25,6 +26,14 @@ public class FragmentSdDataViewer extends Fragment {
Timer mUiTimer;
protected View mRootView;
+ protected int okColour = Color.BLUE;
+ protected int warnColour = Color.MAGENTA;
+ protected int alarmColour = Color.RED;
+ protected int okTextColour = Color.WHITE;
+ protected int warnTextColour = Color.WHITE;
+ protected int alarmTextColour = Color.BLACK;
+
+
public FragmentSdDataViewer() {
// Required empty public constructor
diff --git a/app/src/main/java/uk/org/openseizuredetector/FragmentSystem.java b/app/src/main/java/uk/org/openseizuredetector/FragmentSystem.java
new file mode 100644
index 0000000..40a1093
--- /dev/null
+++ b/app/src/main/java/uk/org/openseizuredetector/FragmentSystem.java
@@ -0,0 +1,68 @@
+package uk.org.openseizuredetector;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.ImageButton;
+import android.widget.TextView;
+
+public class FragmentSystem extends FragmentSdDataViewer {
+ String TAG = "FragmentOsdAlg";
+ public FragmentSystem() {
+ // Required empty public constructor
+ }
+
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.fragment_system, container, false);
+ }
+
+ public void onViewCreated(View view, Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+ // Handle Edit Settings Button
+ ImageButton button = (ImageButton) mRootView.findViewById(R.id.settingsButton);
+ button.setOnClickListener(new View.OnClickListener() {
+ public void onClick(View v) {
+ Log.i(TAG, "settingsButton.onClick()");
+ try {
+ Intent prefsIntent = new Intent(
+ mContext,
+ PrefActivity.class);
+ mContext.startActivity(prefsIntent);
+ } catch (Exception ex) {
+ Log.i(TAG, "exception starting settings activity " + ex.toString());
+ }
+
+ }
+ });
+ }
+
+
+
+ @Override
+ protected void updateUi() {
+ Log.d(TAG,"updateUi()");
+ TextView tv;
+ tv = (TextView)mRootView.findViewById(R.id.fragment_system_tv1);
+ if (mConnection.mBound) {
+ tv.setText("Bound to Server");
+ } else {
+ tv.setText("****NOT BOUND TO SERVER***");
+ return;
+ }
+
+
+ }
+}
diff --git a/app/src/main/java/uk/org/openseizuredetector/FragmentWebServer.java b/app/src/main/java/uk/org/openseizuredetector/FragmentWebServer.java
new file mode 100644
index 0000000..09358bd
--- /dev/null
+++ b/app/src/main/java/uk/org/openseizuredetector/FragmentWebServer.java
@@ -0,0 +1,43 @@
+package uk.org.openseizuredetector;
+
+import android.os.Bundle;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+public class FragmentWebServer extends FragmentSdDataViewer {
+ String TAG = "FragmentWebServer";
+ public FragmentWebServer() {
+ // Required empty public constructor
+ }
+
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.fragment_web_server, container, false);
+ }
+
+ @Override
+ protected void updateUi() {
+ Log.d(TAG,"updateUi()");
+ TextView tv;
+ tv = (TextView)mRootView.findViewById(R.id.fragment_web_server_tv1);
+ if (mConnection.mBound) {
+ tv.setText("Bound to Server");
+ } else {
+ tv.setText("****NOT BOUND TO SERVER***");
+ return;
+ }
+
+
+ }
+}
diff --git a/app/src/main/java/uk/org/openseizuredetector/MainActivity2.java b/app/src/main/java/uk/org/openseizuredetector/MainActivity2.java
index 1f47389..8a4ce8a 100644
--- a/app/src/main/java/uk/org/openseizuredetector/MainActivity2.java
+++ b/app/src/main/java/uk/org/openseizuredetector/MainActivity2.java
@@ -8,6 +8,8 @@ import androidx.viewpager2.widget.ViewPager2;
import android.os.Bundle;
import android.util.Log;
+import android.view.View;
+import android.widget.Button;
public class MainActivity2 extends AppCompatActivity {
private String TAG = "MainActivity2";
@@ -22,11 +24,14 @@ public class MainActivity2 extends AppCompatActivity {
mFragmentPager = findViewById(R.id.fragment_pager);
mFragmentStateAdapter = new ScreenSlideFragmentPagerAdapter(this);
mFragmentPager.setAdapter(mFragmentStateAdapter);
- //getSupportFragmentManager().beginTransaction()
- // .setReorderingAllowed(true)
- // .add(R.id.fragment_container_view, FragmentOsdAlg.class, null)
- // .commit();
+ getSupportFragmentManager().beginTransaction()
+ .setReorderingAllowed(true)
+ .add(R.id.fragment_common_container_view, FragmentCommon.class, null)
+ .commit();
}
+
+
+
}
@Override
@@ -58,6 +63,15 @@ public class MainActivity2 extends AppCompatActivity {
return new FragmentOsdAlg();
case 1:
return new FragmentHrAlg();
+ case 2:
+ return new FragmentMlAlg();
+ case 3:
+ return new FragmentWebServer();
+ case 4:
+ return new FragmentDataSharing();
+ case 5:
+ return new FragmentSystem();
+
default:
Log.e(TAG,"createFragment() - invalid Position "+position);
return null;
@@ -66,7 +80,7 @@ public class MainActivity2 extends AppCompatActivity {
@Override
public int getItemCount() {
- return 2;
+ return 6;
}
}
}
\ No newline at end of file
diff --git a/app/src/main/java/uk/org/openseizuredetector/SdServer.java b/app/src/main/java/uk/org/openseizuredetector/SdServer.java
index d884c0b..09902f2 100644
--- a/app/src/main/java/uk/org/openseizuredetector/SdServer.java
+++ b/app/src/main/java/uk/org/openseizuredetector/SdServer.java
@@ -517,7 +517,7 @@ public class SdServer extends Service implements SdDataReceiver {
soundUri = null;
}
- Intent i = new Intent(getApplicationContext(), MainActivity.class);
+ Intent i = new Intent(getApplicationContext(), MainActivity2.class);
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
PendingIntent contentIntent =
PendingIntent.getActivity(this,
@@ -569,7 +569,7 @@ public class SdServer extends Service implements SdDataReceiver {
mUtil.writeToSysLogFile("SdServer.showMainActivity - Activity is already shown on top, not doing anything");
} else {
Log.i(TAG, "showMainActivity(): Showing Main Activity");
- Intent i = new Intent(getApplicationContext(), MainActivity.class);
+ Intent i = new Intent(getApplicationContext(), MainActivity2.class);
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(i);
}
@@ -1733,7 +1733,7 @@ public class SdServer extends Service implements SdDataReceiver {
iconId = R.drawable.datasharing_fault_24x24;
titleStr = getString(R.string.datasharing_notification_title);
- Intent i = new Intent(getApplicationContext(), MainActivity.class);
+ Intent i = new Intent(getApplicationContext(), MainActivity2.class);
i.putExtra("action", "showDataSharingDialog");
i.setAction("showDataSharingDialog");
i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
diff --git a/app/src/main/res/layout/activity_main2.xml b/app/src/main/res/layout/activity_main2.xml
index 845910d..a00ae34 100644
--- a/app/src/main/res/layout/activity_main2.xml
+++ b/app/src/main/res/layout/activity_main2.xml
@@ -1,21 +1,26 @@
-
-
+ android:text="@string/app_name" />
+
+
+
+
+
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_common.xml b/app/src/main/res/layout/fragment_common.xml
new file mode 100644
index 0000000..d253d34
--- /dev/null
+++ b/app/src/main/res/layout/fragment_common.xml
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_data_sharing.xml b/app/src/main/res/layout/fragment_data_sharing.xml
new file mode 100644
index 0000000..e80d4ac
--- /dev/null
+++ b/app/src/main/res/layout/fragment_data_sharing.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_ml_alg.xml b/app/src/main/res/layout/fragment_ml_alg.xml
new file mode 100644
index 0000000..161dbc2
--- /dev/null
+++ b/app/src/main/res/layout/fragment_ml_alg.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_system.xml b/app/src/main/res/layout/fragment_system.xml
new file mode 100644
index 0000000..6186206
--- /dev/null
+++ b/app/src/main/res/layout/fragment_system.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_web_server.xml b/app/src/main/res/layout/fragment_web_server.xml
new file mode 100644
index 0000000..79d7e9f
--- /dev/null
+++ b/app/src/main/res/layout/fragment_web_server.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file