From 3ce91f89abb5f9448341732db8d0bfec53cfdf3b Mon Sep 17 00:00:00 2001 From: Graham Jones Date: Fri, 1 Sep 2023 21:43:42 +0100 Subject: [PATCH] Added the main fragments for the new main activity - still need to populate them and add the main menu, but swiping between them works --- .../openseizuredetector/FragmentCommon.java | 227 ++++++++++++++++++ .../FragmentDataSharing.java | 43 ++++ .../openseizuredetector/FragmentHrAlg.java | 4 +- .../openseizuredetector/FragmentMlAlg.java | 43 ++++ .../FragmentSdDataViewer.java | 9 + .../openseizuredetector/FragmentSystem.java | 68 ++++++ .../FragmentWebServer.java | 43 ++++ .../openseizuredetector/MainActivity2.java | 24 +- .../uk/org/openseizuredetector/SdServer.java | 6 +- app/src/main/res/layout/activity_main2.xml | 31 ++- app/src/main/res/layout/fragment_common.xml | 139 +++++++++++ .../main/res/layout/fragment_data_sharing.xml | 28 +++ app/src/main/res/layout/fragment_ml_alg.xml | 28 +++ app/src/main/res/layout/fragment_system.xml | 46 ++++ .../main/res/layout/fragment_web_server.xml | 28 +++ 15 files changed, 744 insertions(+), 23 deletions(-) create mode 100644 app/src/main/java/uk/org/openseizuredetector/FragmentCommon.java create mode 100644 app/src/main/java/uk/org/openseizuredetector/FragmentDataSharing.java create mode 100644 app/src/main/java/uk/org/openseizuredetector/FragmentMlAlg.java create mode 100644 app/src/main/java/uk/org/openseizuredetector/FragmentSystem.java create mode 100644 app/src/main/java/uk/org/openseizuredetector/FragmentWebServer.java create mode 100644 app/src/main/res/layout/fragment_common.xml create mode 100644 app/src/main/res/layout/fragment_data_sharing.xml create mode 100644 app/src/main/res/layout/fragment_ml_alg.xml create mode 100644 app/src/main/res/layout/fragment_system.xml create mode 100644 app/src/main/res/layout/fragment_web_server.xml 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +