diff --git a/wear/build.gradle b/wear/build.gradle index be1915d441..56ae862b06 100644 --- a/wear/build.gradle +++ b/wear/build.gradle @@ -49,7 +49,7 @@ def generateGitBuild = { -> } android { - compileSdkVersion 30 + compileSdkVersion 31 defaultConfig { applicationId "info.nightscout.androidaps" @@ -117,8 +117,6 @@ dependencies { implementation project(':shared') implementation fileTree(include: ['*.jar'], dir: 'libs') - //implementation files("libs/hellocharts-library-1.5.5.jar") - //compile "com.ustwo.android:clockwise-wearable:1.0.2" implementation "androidx.appcompat:appcompat:$appcompat_version" implementation 'androidx.legacy:legacy-support-v13:1.0.0' @@ -131,10 +129,12 @@ dependencies { implementation(name: 'ustwo-clockwise-debug', ext: 'aar') implementation(name: 'wearpreferenceactivity-0.5.0', ext: 'aar') implementation 'androidx.legacy:legacy-support-v4:1.0.0' - implementation 'androidx.percentlayout:percentlayout:1.0.0' - implementation 'androidx.wear:wear:1.1.0' + implementation 'androidx.wear:wear:1.2.0' implementation('com.github.lecho:hellocharts-library:1.5.8@aar') + implementation "androidx.core:core-ktx:$coreVersion" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + testImplementation "junit:junit:$junit_version" testImplementation 'org.json:json:20211205' testImplementation("org.mockito:mockito-core:${mockitoVersion}") { @@ -157,9 +157,6 @@ dependencies { } testImplementation "org.skyscreamer:jsonassert:1.5.0" testImplementation "org.hamcrest:hamcrest-all:1.3" - implementation "androidx.core:core-ktx:$coreVersion" - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - // for old fashioned support-app version implementation "com.google.dagger:dagger:$dagger_version" diff --git a/wear/src/main/java/info/nightscout/androidaps/interaction/actions/AcceptActivity.java b/wear/src/main/java/info/nightscout/androidaps/interaction/actions/AcceptActivity.java index 91cffa4b3e..a382642667 100644 --- a/wear/src/main/java/info/nightscout/androidaps/interaction/actions/AcceptActivity.java +++ b/wear/src/main/java/info/nightscout/androidaps/interaction/actions/AcceptActivity.java @@ -1,16 +1,11 @@ package info.nightscout.androidaps.interaction.actions; - import android.content.Context; import android.content.Intent; -import android.content.res.Resources; import android.os.Bundle; import android.os.SystemClock; import android.os.Vibrator; -import androidx.core.app.NotificationManagerCompat; -import android.support.wearable.view.DotsPageIndicator; import android.support.wearable.view.GridPagerAdapter; -import android.support.wearable.view.GridViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -24,10 +19,8 @@ import info.nightscout.androidaps.data.ListenerService; * Created by adrian on 09/02/17. */ - public class AcceptActivity extends ViewSelectorActivity { - String title = ""; String message = ""; String actionstring = ""; @@ -45,30 +38,25 @@ public class AcceptActivity extends ViewSelectorActivity { message = extras.getString("message", ""); actionstring = extras.getString("actionstring", ""); - if ("".equals(message) || "".equals(actionstring) ){ - finish(); return; + if ("".equals(message) || "".equals(actionstring)) { + finish(); + return; } setContentView(R.layout.grid_layout); - - final GridViewPager pager = findViewById(R.id.pager); - pager.setAdapter(new MyGridViewPagerAdapter()); - DotsPageIndicator dotsPageIndicator = findViewById(R.id.page_indicator); - dotsPageIndicator.setPager(pager); + setAdapter(new MyGridViewPagerAdapter()); Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); long[] vibratePattern = new long[]{0, 100, 50, 100, 50}; v.vibrate(vibratePattern, -1); } - @Override protected void onPause() { super.onPause(); finish(); } - private class MyGridViewPagerAdapter extends GridPagerAdapter { @Override public int getColumnCount(int arg0) { @@ -83,7 +71,7 @@ public class AcceptActivity extends ViewSelectorActivity { @Override public Object instantiateItem(ViewGroup container, int row, int col) { - if(col == 0){ + if (col == 0) { final View view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.action_confirm_text, container, false); final TextView headingView = view.findViewById(R.id.title); headingView.setText(title); @@ -110,29 +98,29 @@ public class AcceptActivity extends ViewSelectorActivity { public void destroyItem(ViewGroup container, int row, int col, Object view) { // Handle this to get the data before the view is destroyed? // Object should still be kept by this, just setup for reinit? - container.removeView((View)view); + container.removeView((View) view); } @Override public boolean isViewFromObject(View view, Object object) { - return view==object; + return view == object; } } @Override - public synchronized void onDestroy(){ + public synchronized void onDestroy() { super.onDestroy(); - if(dismissThread != null){ + if (dismissThread != null) { dismissThread.invalidate(); } } - private class DismissThread extends Thread{ + private class DismissThread extends Thread { private boolean valid = true; - public synchronized void invalidate(){ + public synchronized void invalidate() { valid = false; } @@ -140,7 +128,7 @@ public class AcceptActivity extends ViewSelectorActivity { public void run() { SystemClock.sleep(60 * 1000); synchronized (this) { - if(valid) { + if (valid) { AcceptActivity.this.finish(); } } @@ -150,11 +138,11 @@ public class AcceptActivity extends ViewSelectorActivity { @Override protected synchronized void onNewIntent(Intent intent) { super.onNewIntent(intent); - if(dismissThread != null) dismissThread.invalidate(); + if (dismissThread != null) dismissThread.invalidate(); Bundle extras = intent.getExtras(); Intent msgIntent = new Intent(this, AcceptActivity.class); msgIntent.putExtras(extras); startActivity(msgIntent); finish(); } -} \ No newline at end of file +} diff --git a/wear/src/main/java/info/nightscout/androidaps/interaction/actions/BolusActivity.java b/wear/src/main/java/info/nightscout/androidaps/interaction/actions/BolusActivity.java index 3a95b0b053..97fe81fa6a 100644 --- a/wear/src/main/java/info/nightscout/androidaps/interaction/actions/BolusActivity.java +++ b/wear/src/main/java/info/nightscout/androidaps/interaction/actions/BolusActivity.java @@ -1,15 +1,11 @@ package info.nightscout.androidaps.interaction.actions; - import android.os.Bundle; -import android.support.wearable.view.DotsPageIndicator; import android.support.wearable.view.GridPagerAdapter; -import android.support.wearable.view.GridViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; -import android.widget.TextView; import java.text.DecimalFormat; @@ -22,7 +18,6 @@ import info.nightscout.shared.SafeParse; * Created by adrian on 09/02/17. */ - public class BolusActivity extends ViewSelectorActivity { PlusMinusEditText editCarbs; @@ -31,32 +26,7 @@ public class BolusActivity extends ViewSelectorActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.grid_layout); - - final TextView title = findViewById(R.id.title); - title.setText(getString(R.string.menu_bolus)); - - final GridViewPager pager = findViewById(R.id.pager); - pager.setAdapter(new MyGridViewPagerAdapter()); - DotsPageIndicator dotsPageIndicator = findViewById(R.id.page_indicator); - dotsPageIndicator.setPager(pager); - pager.setOnPageChangeListener(new GridViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int row, int column, float rowOffset, float columnOffset, int rowOffsetPixels, int columnOffsetPixels) { - dotsPageIndicator.onPageScrolled(row, column, rowOffset, columnOffset, rowOffsetPixels, - columnOffsetPixels); - } - @Override - public void onPageSelected(int row, int column) { - dotsPageIndicator.onPageSelected(row, column); - View view = pager.getChildAt(column); - view.requestFocus(); - } - @Override - public void onPageScrollStateChanged(int state) { - dotsPageIndicator.onPageScrollStateChanged(state); - } - }); + setAdapter(new MyGridViewPagerAdapter()); } @Override @@ -108,10 +78,8 @@ public class BolusActivity extends ViewSelectorActivity { confirmbutton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - //check if it can happen that the fagment is never created that hold data? // (you have to swipe past them anyways - but still) - String actionstring = "bolus " + SafeParse.stringToDouble(editInsulin.editText.getText().toString()) + " " + SafeParse.stringToInt(editCarbs.editText.getText().toString()); ListenerService.initiateAction(BolusActivity.this, actionstring); @@ -135,6 +103,5 @@ public class BolusActivity extends ViewSelectorActivity { return view == object; } - } -} \ No newline at end of file +} diff --git a/wear/src/main/java/info/nightscout/androidaps/interaction/actions/CPPActivity.java b/wear/src/main/java/info/nightscout/androidaps/interaction/actions/CPPActivity.java index 2eb596c177..479e3945ed 100644 --- a/wear/src/main/java/info/nightscout/androidaps/interaction/actions/CPPActivity.java +++ b/wear/src/main/java/info/nightscout/androidaps/interaction/actions/CPPActivity.java @@ -1,15 +1,11 @@ package info.nightscout.androidaps.interaction.actions; - import android.os.Bundle; -import android.support.wearable.view.DotsPageIndicator; import android.support.wearable.view.GridPagerAdapter; -import android.support.wearable.view.GridViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; -import android.widget.TextView; import java.text.DecimalFormat; @@ -22,7 +18,6 @@ import info.nightscout.shared.SafeParse; * Created by adrian on 09/02/17. */ - public class CPPActivity extends ViewSelectorActivity { PlusMinusEditText editPercentage; @@ -46,42 +41,15 @@ public class CPPActivity extends ViewSelectorActivity { if (timeshift < 0) timeshift += 24; - setContentView(R.layout.grid_layout); - - final TextView title = findViewById(R.id.title); - title.setText(getString(R.string.status_cpp)); - - final GridViewPager pager = findViewById(R.id.pager); - pager.setAdapter(new MyGridViewPagerAdapter()); - DotsPageIndicator dotsPageIndicator = findViewById(R.id.page_indicator); - dotsPageIndicator.setPager(pager); - pager.setOnPageChangeListener(new GridViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int row, int column, float rowOffset, float columnOffset, int rowOffsetPixels, int columnOffsetPixels) { - dotsPageIndicator.onPageScrolled(row, column, rowOffset, columnOffset, rowOffsetPixels, - columnOffsetPixels); - } - @Override - public void onPageSelected(int row, int column) { - dotsPageIndicator.onPageSelected(row, column); - View view = pager.getChildAt(column); - view.requestFocus(); - } - @Override - public void onPageScrollStateChanged(int state) { - dotsPageIndicator.onPageScrollStateChanged(state); - } - }); + setAdapter(new MyGridViewPagerAdapter()); } - @Override protected void onPause() { super.onPause(); finish(); } - private class MyGridViewPagerAdapter extends GridPagerAdapter { @Override public int getColumnCount(int arg0) { @@ -151,6 +119,5 @@ public class CPPActivity extends ViewSelectorActivity { return view == object; } - } } diff --git a/wear/src/main/java/info/nightscout/androidaps/interaction/actions/ECarbActivity.java b/wear/src/main/java/info/nightscout/androidaps/interaction/actions/ECarbActivity.java index 57f61f4d94..379c9b33fe 100644 --- a/wear/src/main/java/info/nightscout/androidaps/interaction/actions/ECarbActivity.java +++ b/wear/src/main/java/info/nightscout/androidaps/interaction/actions/ECarbActivity.java @@ -1,15 +1,11 @@ package info.nightscout.androidaps.interaction.actions; - import android.os.Bundle; -import android.support.wearable.view.DotsPageIndicator; import android.support.wearable.view.GridPagerAdapter; -import android.support.wearable.view.GridViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; -import android.widget.TextView; import java.text.DecimalFormat; @@ -22,53 +18,24 @@ import info.nightscout.shared.SafeParse; * Created by adrian on 04/08/18. */ - public class ECarbActivity extends ViewSelectorActivity { PlusMinusEditText editCarbs; PlusMinusEditText editStartTime; PlusMinusEditText editDuration; - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.grid_layout); - - final TextView title = findViewById(R.id.title); - title.setText(getString(R.string.menu_ecarb)); - - final GridViewPager pager = findViewById(R.id.pager); - pager.setAdapter(new MyGridViewPagerAdapter()); - DotsPageIndicator dotsPageIndicator = findViewById(R.id.page_indicator); - dotsPageIndicator.setPager(pager); - pager.setOnPageChangeListener(new GridViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int row, int column, float rowOffset, float columnOffset, int rowOffsetPixels, int columnOffsetPixels) { - dotsPageIndicator.onPageScrolled(row, column, rowOffset, columnOffset, rowOffsetPixels, - columnOffsetPixels); - } - @Override - public void onPageSelected(int row, int column) { - dotsPageIndicator.onPageSelected(row, column); - View view = pager.getChildAt(column); - view.requestFocus(); - } - @Override - public void onPageScrollStateChanged(int state) { - dotsPageIndicator.onPageScrollStateChanged(state); - } - }); + setAdapter(new MyGridViewPagerAdapter()); } - @Override protected void onPause() { super.onPause(); finish(); } - private class MyGridViewPagerAdapter extends GridPagerAdapter { @Override public int getColumnCount(int arg0) { @@ -83,10 +50,10 @@ public class ECarbActivity extends ViewSelectorActivity { @Override public Object instantiateItem(ViewGroup container, int row, int col) { - if(col == 0){ + if (col == 0) { final View view = getInflatedPlusMinusView(container); double def = 0; - if (editCarbs != null){ + if (editCarbs != null) { def = SafeParse.stringToDouble(editCarbs.editText.getText().toString()); } editCarbs = new PlusMinusEditText(view, R.id.amountfield, R.id.plusbutton, R.id.minusbutton, def, 0d, 150d, 1d, new DecimalFormat("0"), true); @@ -94,20 +61,20 @@ public class ECarbActivity extends ViewSelectorActivity { container.addView(view); view.requestFocus(); return view; - } else if(col == 1){ + } else if (col == 1) { final View view = getInflatedPlusMinusView(container); double def = 0; - if (editStartTime != null){ + if (editStartTime != null) { def = SafeParse.stringToDouble(editStartTime.editText.getText().toString()); } editStartTime = new PlusMinusEditText(view, R.id.amountfield, R.id.plusbutton, R.id.minusbutton, def, 0d, 300d, 15d, new DecimalFormat("0"), false); setLabelToPlusMinusView(view, getString(R.string.action_start_min)); container.addView(view); return view; - } else if(col == 2){ + } else if (col == 2) { final View view = getInflatedPlusMinusView(container); double def = 0; - if (editDuration != null){ + if (editDuration != null) { def = SafeParse.stringToDouble(editDuration.editText.getText().toString()); } editDuration = new PlusMinusEditText(view, R.id.amountfield, R.id.plusbutton, R.id.minusbutton, def, 0d, 8d, 1d, new DecimalFormat("0"), false); @@ -125,7 +92,7 @@ public class ECarbActivity extends ViewSelectorActivity { //check if it can happen that the fagment is never created that hold data? // (you have to swipe past them anyways - but still) - String actionstring = "ecarbs " +SafeParse.stringToInt(editCarbs.editText.getText().toString()) + String actionstring = "ecarbs " + SafeParse.stringToInt(editCarbs.editText.getText().toString()) + " " + SafeParse.stringToInt(editStartTime.editText.getText().toString()) + " " + SafeParse.stringToInt(editDuration.editText.getText().toString()); ListenerService.initiateAction(ECarbActivity.this, actionstring); @@ -141,14 +108,13 @@ public class ECarbActivity extends ViewSelectorActivity { public void destroyItem(ViewGroup container, int row, int col, Object view) { // Handle this to get the data before the view is destroyed? // Object should still be kept by this, just setup for reinit? - container.removeView((View)view); + container.removeView((View) view); } @Override public boolean isViewFromObject(View view, Object object) { - return view==object; + return view == object; } - } -} \ No newline at end of file +} diff --git a/wear/src/main/java/info/nightscout/androidaps/interaction/actions/FillActivity.java b/wear/src/main/java/info/nightscout/androidaps/interaction/actions/FillActivity.java index e953f750d3..a53fdb2ba5 100644 --- a/wear/src/main/java/info/nightscout/androidaps/interaction/actions/FillActivity.java +++ b/wear/src/main/java/info/nightscout/androidaps/interaction/actions/FillActivity.java @@ -1,15 +1,11 @@ package info.nightscout.androidaps.interaction.actions; - import android.os.Bundle; -import android.support.wearable.view.DotsPageIndicator; import android.support.wearable.view.GridPagerAdapter; -import android.support.wearable.view.GridViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; -import android.widget.TextView; import java.text.DecimalFormat; @@ -22,7 +18,6 @@ import info.nightscout.shared.SafeParse; * Created by adrian on 09/02/17. */ - public class FillActivity extends ViewSelectorActivity { PlusMinusEditText editInsulin; @@ -30,25 +25,15 @@ public class FillActivity extends ViewSelectorActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.grid_layout); - - final TextView title = findViewById(R.id.title); - title.setText(getString(R.string.menu_prime_fill)); - - final GridViewPager pager = findViewById(R.id.pager); - pager.setAdapter(new MyGridViewPagerAdapter()); - DotsPageIndicator dotsPageIndicator = findViewById(R.id.page_indicator); - dotsPageIndicator.setPager(pager); + setAdapter(new MyGridViewPagerAdapter()); } - @Override protected void onPause() { super.onPause(); finish(); } - private class MyGridViewPagerAdapter extends GridPagerAdapter { @Override public int getColumnCount(int arg0) { @@ -107,6 +92,5 @@ public class FillActivity extends ViewSelectorActivity { return view == object; } - } -} \ No newline at end of file +} diff --git a/wear/src/main/java/info/nightscout/androidaps/interaction/actions/TempTargetActivity.java b/wear/src/main/java/info/nightscout/androidaps/interaction/actions/TempTargetActivity.java index bfa7d6e86c..6d42a63964 100644 --- a/wear/src/main/java/info/nightscout/androidaps/interaction/actions/TempTargetActivity.java +++ b/wear/src/main/java/info/nightscout/androidaps/interaction/actions/TempTargetActivity.java @@ -1,12 +1,9 @@ package info.nightscout.androidaps.interaction.actions; - import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; -import android.support.wearable.view.DotsPageIndicator; import android.support.wearable.view.GridPagerAdapter; -import android.support.wearable.view.GridViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -24,7 +21,6 @@ import info.nightscout.shared.SafeParse; * Created by adrian on 09/02/17. */ - public class TempTargetActivity extends ViewSelectorActivity { PlusMinusEditText lowRange; @@ -36,46 +32,19 @@ public class TempTargetActivity extends ViewSelectorActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.grid_layout); - - final TextView title = findViewById(R.id.title); - title.setText(getString(R.string.menu_tempt)); - - final GridViewPager pager = findViewById(R.id.pager); - pager.setAdapter(new MyGridViewPagerAdapter()); - DotsPageIndicator dotsPageIndicator = findViewById(R.id.page_indicator); - dotsPageIndicator.setPager(pager); + setAdapter(new MyGridViewPagerAdapter()); SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); isMGDL = sp.getBoolean("units_mgdl", true); isSingleTarget = sp.getBoolean("singletarget", true); - pager.setOnPageChangeListener(new GridViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int row, int column, float rowOffset, float columnOffset, int rowOffsetPixels, int columnOffsetPixels) { - dotsPageIndicator.onPageScrolled(row, column, rowOffset, columnOffset, rowOffsetPixels, - columnOffsetPixels); - } - @Override - public void onPageSelected(int row, int column) { - dotsPageIndicator.onPageSelected(row, column); - View view = pager.getChildAt(column); - view.requestFocus(); - } - @Override - public void onPageScrollStateChanged(int state) { - dotsPageIndicator.onPageScrollStateChanged(state); - } - }); } - @Override protected void onPause() { super.onPause(); finish(); } - private class MyGridViewPagerAdapter extends GridPagerAdapter { @Override public int getColumnCount(int arg0) { @@ -183,6 +152,5 @@ public class TempTargetActivity extends ViewSelectorActivity { return view == object; } - } -} \ No newline at end of file +} diff --git a/wear/src/main/java/info/nightscout/androidaps/interaction/actions/ViewSelectorActivity.java b/wear/src/main/java/info/nightscout/androidaps/interaction/actions/ViewSelectorActivity.java index 24796dfeca..3f36538819 100644 --- a/wear/src/main/java/info/nightscout/androidaps/interaction/actions/ViewSelectorActivity.java +++ b/wear/src/main/java/info/nightscout/androidaps/interaction/actions/ViewSelectorActivity.java @@ -2,26 +2,83 @@ package info.nightscout.androidaps.interaction.actions; import android.app.Activity; import android.content.SharedPreferences; +import android.os.Bundle; import android.preference.PreferenceManager; +import android.support.wearable.view.DotsPageIndicator; +import android.support.wearable.view.GridPagerAdapter; +import android.support.wearable.view.GridViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; +import androidx.wear.widget.CurvedTextView; + import info.nightscout.androidaps.R; /** * Created by adrian on 13/02/17. */ + public class ViewSelectorActivity extends Activity { + private GridViewPager pager; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.grid_layout); + + setTitleBasedOnScreenShape(String.valueOf(getTitle())); + + pager = findViewById(R.id.pager); + DotsPageIndicator dotsPageIndicator = findViewById(R.id.page_indicator); + dotsPageIndicator.setPager(pager); + pager.setOnPageChangeListener(new GridViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int row, int column, float rowOffset, float columnOffset, int rowOffsetPixels, int columnOffsetPixels) { + dotsPageIndicator.onPageScrolled(row, column, rowOffset, columnOffset, rowOffsetPixels, + columnOffsetPixels); + } + + @Override + public void onPageSelected(int row, int column) { + dotsPageIndicator.onPageSelected(row, column); + View view = pager.getChildAt(column); + view.requestFocus(); + } + + @Override + public void onPageScrollStateChanged(int state) { + dotsPageIndicator.onPageScrollStateChanged(state); + } + }); + } + + public void setAdapter(GridPagerAdapter adapter) { + pager.setAdapter(adapter); + } + + private void setTitleBasedOnScreenShape(String title) { + CurvedTextView titleViewCurved = findViewById(R.id.title_curved); + TextView titleView = findViewById(R.id.title); + if (this.getResources().getConfiguration().isScreenRound()) { + titleViewCurved.setText(title); + titleViewCurved.setVisibility(View.VISIBLE); + titleView.setVisibility((View.GONE)); + } else { + titleView.setText(title); + titleView.setVisibility(View.VISIBLE); + titleViewCurved.setVisibility((View.GONE)); + } + } View getInflatedPlusMinusView(ViewGroup container) { SharedPreferences sharedPrefs = PreferenceManager .getDefaultSharedPreferences(this); int design = Integer.parseInt(sharedPrefs.getString("input_design", "1")); - if (design == 2){ + if (design == 2) { return LayoutInflater.from(getApplicationContext()).inflate(R.layout.action_editplusminus_item_quickrighty, container, false); } else if (design == 3) { return LayoutInflater.from(getApplicationContext()).inflate(R.layout.action_editplusminus_item_quicklefty, container, false); @@ -33,12 +90,12 @@ public class ViewSelectorActivity extends Activity { return LayoutInflater.from(getApplicationContext()).inflate(R.layout.action_editplusminus_item, container, false); } - void setLabelToPlusMinusView(View view, String labelText){ + void setLabelToPlusMinusView(View view, String labelText) { SharedPreferences sharedPrefs = PreferenceManager .getDefaultSharedPreferences(this); int design = Integer.parseInt(sharedPrefs.getString("input_design", "1")); - if (design == 4){ + if (design == 4) { //@LadyViktoria: Here the label can be set differently, if you like. final TextView textView = view.findViewById(R.id.label); textView.setText(labelText); diff --git a/wear/src/main/java/info/nightscout/androidaps/interaction/actions/WizardActivity.java b/wear/src/main/java/info/nightscout/androidaps/interaction/actions/WizardActivity.java index 8447541fcf..1caa5cfe05 100644 --- a/wear/src/main/java/info/nightscout/androidaps/interaction/actions/WizardActivity.java +++ b/wear/src/main/java/info/nightscout/androidaps/interaction/actions/WizardActivity.java @@ -1,17 +1,13 @@ package info.nightscout.androidaps.interaction.actions; - import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; -import android.support.wearable.view.DotsPageIndicator; import android.support.wearable.view.GridPagerAdapter; -import android.support.wearable.view.GridViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; -import android.widget.TextView; import java.text.DecimalFormat; @@ -24,7 +20,6 @@ import info.nightscout.shared.SafeParse; * Created by adrian on 09/02/17. */ - public class WizardActivity extends ViewSelectorActivity { PlusMinusEditText editCarbs; @@ -32,48 +27,20 @@ public class WizardActivity extends ViewSelectorActivity { boolean hasPercentage; - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.grid_layout); - - final TextView title = findViewById(R.id.title); - title.setText(getString(R.string.menu_wizard)); - - final GridViewPager pager = findViewById(R.id.pager); - pager.setAdapter(new MyGridViewPagerAdapter()); - DotsPageIndicator dotsPageIndicator = findViewById(R.id.page_indicator); - dotsPageIndicator.setPager(pager); + setAdapter(new MyGridViewPagerAdapter()); SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); hasPercentage = sp.getBoolean("wizardpercentage", false); - pager.setOnPageChangeListener(new GridViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int row, int column, float rowOffset, float columnOffset, int rowOffsetPixels, int columnOffsetPixels) { - dotsPageIndicator.onPageScrolled(row, column, rowOffset, columnOffset, rowOffsetPixels, - columnOffsetPixels); - } - @Override - public void onPageSelected(int row, int column) { - dotsPageIndicator.onPageSelected(row, column); - View view = pager.getChildAt(column); - view.requestFocus(); - } - @Override - public void onPageScrollStateChanged(int state) { - dotsPageIndicator.onPageScrollStateChanged(state); - } - }); } - @Override protected void onPause() { super.onPause(); finish(); } - private class MyGridViewPagerAdapter extends GridPagerAdapter { @Override public int getColumnCount(int arg0) { @@ -95,7 +62,6 @@ public class WizardActivity extends ViewSelectorActivity { } else { double def = SafeParse.stringToDouble(editCarbs.editText.getText().toString()); editCarbs = new PlusMinusEditText(view, R.id.amountfield, R.id.plusbutton, R.id.minusbutton, def, 0d, 150d, 1d, new DecimalFormat("0"), false); - } setLabelToPlusMinusView(view, getString(R.string.action_carbs)); container.addView(view); @@ -151,6 +117,5 @@ public class WizardActivity extends ViewSelectorActivity { return view == object; } - } -} \ No newline at end of file +} diff --git a/wear/src/main/java/info/nightscout/androidaps/interaction/menus/MainMenuActivity.java b/wear/src/main/java/info/nightscout/androidaps/interaction/menus/MainMenuActivity.java index b0180cf017..126f7a2ceb 100644 --- a/wear/src/main/java/info/nightscout/androidaps/interaction/menus/MainMenuActivity.java +++ b/wear/src/main/java/info/nightscout/androidaps/interaction/menus/MainMenuActivity.java @@ -44,7 +44,6 @@ public class MainMenuActivity extends MenuListActivity { return menuItems; } - boolean showPrimeFill = sp.getBoolean("primefill", false); boolean showWizard = sp.getBoolean("showWizard", true); diff --git a/wear/src/main/java/info/nightscout/androidaps/interaction/utils/MenuListActivity.java b/wear/src/main/java/info/nightscout/androidaps/interaction/utils/MenuListActivity.java index c9184a61f0..fb53413d1e 100644 --- a/wear/src/main/java/info/nightscout/androidaps/interaction/utils/MenuListActivity.java +++ b/wear/src/main/java/info/nightscout/androidaps/interaction/utils/MenuListActivity.java @@ -10,6 +10,7 @@ import android.widget.RelativeLayout; import android.widget.TextView; import androidx.recyclerview.widget.RecyclerView; +import androidx.wear.widget.CurvedTextView; import androidx.wear.widget.WearableLinearLayoutManager; import androidx.wear.widget.WearableRecyclerView; @@ -23,10 +24,12 @@ import info.nightscout.androidaps.R; public abstract class MenuListActivity extends Activity { List elements; + protected abstract List getElements(); + protected abstract void doAction(String position); - public interface AdapterCallback{ + public interface AdapterCallback { void onItemClicked(MenuAdapter.ItemViewHolder v); } @@ -34,18 +37,22 @@ public abstract class MenuListActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.actions_list_activity); - TextView titleView = findViewById(R.id.title); - titleView.setText(getTitle()); + setTitleBasedOnScreenShape(String.valueOf(getTitle())); elements = getElements(); CustomScrollingLayoutCallback customScrollingLayoutCallback = new CustomScrollingLayoutCallback(); WearableLinearLayoutManager layoutManager = new WearableLinearLayoutManager(this); - if (this.getResources().getConfiguration().isScreenRound()) { - layoutManager.setLayoutCallback(customScrollingLayoutCallback); - } WearableRecyclerView listView = findViewById(R.id.action_list); + boolean isScreenRound = this.getResources().getConfiguration().isScreenRound(); + if (isScreenRound) { + layoutManager.setLayoutCallback(customScrollingLayoutCallback); + listView.setEdgeItemsCenteringEnabled(true); + } else { + // Bug in androidx.wear:wear:1.2.0 + // WearableRecyclerView setEdgeItemsCenteringEnabled requires fix for square screen + listView.setPadding(0, 50, 0, 0); + } listView.setHasFixedSize(true); - listView.setEdgeItemsCenteringEnabled(true); listView.setLayoutManager(layoutManager); listView.setAdapter(new MenuAdapter(elements, v -> { String tag = (String) v.itemView.getTag(); @@ -53,16 +60,30 @@ public abstract class MenuListActivity extends Activity { })); } - private class MenuAdapter extends RecyclerView.Adapter { + private void setTitleBasedOnScreenShape(String title) { + CurvedTextView titleViewCurved = findViewById(R.id.title_curved); + TextView titleView = findViewById(R.id.title); + if (this.getResources().getConfiguration().isScreenRound()) { + titleViewCurved.setText(title); + titleViewCurved.setVisibility(View.VISIBLE); + titleView.setVisibility((View.GONE)); + } else { + titleView.setText(title); + titleView.setVisibility(View.VISIBLE); + titleViewCurved.setVisibility((View.GONE)); + } + } + + private static class MenuAdapter extends RecyclerView.Adapter { private final List mDataset; - private AdapterCallback callback; + private final AdapterCallback callback; public MenuAdapter(List dataset, AdapterCallback callback) { mDataset = dataset; this.callback = callback; } - public class ItemViewHolder extends RecyclerView.ViewHolder { + public static class ItemViewHolder extends RecyclerView.ViewHolder { protected final RelativeLayout menuContainer; protected final TextView actionItem; protected final ImageView actionIcon; @@ -78,9 +99,8 @@ public abstract class MenuListActivity extends Activity { @Override public ItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false); - ItemViewHolder recyclerViewHolder = new ItemViewHolder(view); - return recyclerViewHolder; + return new ItemViewHolder(view); } @Override @@ -89,9 +109,7 @@ public abstract class MenuListActivity extends Activity { holder.actionItem.setText(item.actionItem); holder.actionIcon.setImageResource(item.actionIcon); holder.itemView.setTag(item.actionItem); - holder.menuContainer.setOnClickListener(v -> { - callback.onItemClicked(holder); - }); + holder.menuContainer.setOnClickListener(v -> callback.onItemClicked(holder)); } @Override @@ -100,19 +118,19 @@ public abstract class MenuListActivity extends Activity { } } - protected class MenuItem { + protected static class MenuItem { public MenuItem(int actionIcon, String actionItem) { this.actionIcon = actionIcon; this.actionItem = actionItem; } + public int actionIcon; public String actionItem; } - public class CustomScrollingLayoutCallback extends WearableLinearLayoutManager.LayoutCallback { + public static class CustomScrollingLayoutCallback extends WearableLinearLayoutManager.LayoutCallback { // How much should we scale the icon at most. private static final float MAX_ICON_PROGRESS = 0.65f; - private float progressToCenter; @Override public void onLayoutFinished(View child, RecyclerView parent) { @@ -121,7 +139,7 @@ public abstract class MenuListActivity extends Activity { float yRelativeToCenterOffset = (child.getY() / parent.getHeight()) + centerOffset; // Normalize for center - progressToCenter = Math.abs(0.5f - yRelativeToCenterOffset); + float progressToCenter = Math.abs(0.5f - yRelativeToCenterOffset); // Adjust to the maximum scale progressToCenter = Math.min(progressToCenter, MAX_ICON_PROGRESS); diff --git a/wear/src/main/res/drawable/ic_bolus.xml b/wear/src/main/res/drawable/ic_bolus.xml index 1daf871f0c..f3fbf5cfad 100644 --- a/wear/src/main/res/drawable/ic_bolus.xml +++ b/wear/src/main/res/drawable/ic_bolus.xml @@ -5,7 +5,7 @@ android:viewportWidth="30"> + android:fillColor="@color/colorInsulinButton"/> + android:fillColor="@color/colorCalculatorButton"/> diff --git a/wear/src/main/res/drawable/ic_canula.xml b/wear/src/main/res/drawable/ic_canula.xml index 29e1e43d9b..2e063d4148 100644 --- a/wear/src/main/res/drawable/ic_canula.xml +++ b/wear/src/main/res/drawable/ic_canula.xml @@ -5,7 +5,7 @@ android:viewportWidth="30"> + android:fillColor="@color/colorPrimeButton"/> diff --git a/wear/src/main/res/drawable/ic_e_carbs.xml b/wear/src/main/res/drawable/ic_e_carbs.xml index 047623e21e..b852bb3492 100644 --- a/wear/src/main/res/drawable/ic_e_carbs.xml +++ b/wear/src/main/res/drawable/ic_e_carbs.xml @@ -5,7 +5,7 @@ android:viewportWidth="30"> + android:fillColor="@color/colorCarbsButton"/> + android:fillColor="@color/colorTemptButton"/> diff --git a/wear/src/main/res/layout-v26/list_item.xml b/wear/src/main/res/layout-v26/list_item.xml index b40327f8a2..7e5efb671f 100644 --- a/wear/src/main/res/layout-v26/list_item.xml +++ b/wear/src/main/res/layout-v26/list_item.xml @@ -1,11 +1,11 @@ + android:paddingBottom="8dp"> diff --git a/wear/src/main/res/layout/actions_list_activity.xml b/wear/src/main/res/layout/actions_list_activity.xml index c989dbbf33..45037c8337 100644 --- a/wear/src/main/res/layout/actions_list_activity.xml +++ b/wear/src/main/res/layout/actions_list_activity.xml @@ -1,27 +1,41 @@ + android:layout_height="match_parent"> - + android:scrollbars="vertical"> + + - + + + + + + android:visibility="gone" /> diff --git a/wear/src/main/res/layout/grid_layout.xml b/wear/src/main/res/layout/grid_layout.xml index 7d0c41d95d..b663c592ca 100644 --- a/wear/src/main/res/layout/grid_layout.xml +++ b/wear/src/main/res/layout/grid_layout.xml @@ -1,14 +1,26 @@ + android:layout_height="match_parent"> + + + android:text="Title" + android:textSize="18sp" /> - + android:layout_gravity="center_horizontal|bottom" /> - \ No newline at end of file + diff --git a/wear/src/main/res/layout/list_item.xml b/wear/src/main/res/layout/list_item.xml index 538ff220f6..c5fd3b2433 100644 --- a/wear/src/main/res/layout/list_item.xml +++ b/wear/src/main/res/layout/list_item.xml @@ -1,11 +1,11 @@ + android:paddingBottom="8dp"> #779ECB + #D9000000 @@ -38,10 +39,12 @@ @color/grey_300 @color/grey_500 - - - - + + #67e86a + #ffae01 + #67dfe8 + #CF8BFE + #FBC02D