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 deleted file mode 100644 index a5feccda80..0000000000 --- a/wear/src/main/java/info/nightscout/androidaps/interaction/actions/AcceptActivity.java +++ /dev/null @@ -1,169 +0,0 @@ -package info.nightscout.androidaps.interaction.actions; - -import static info.nightscout.androidaps.comm.DataLayerListenerServiceWear.KEY_ACTION_DATA; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.os.SystemClock; -import android.os.Vibrator; -import android.support.wearable.view.GridPagerAdapter; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.view.ViewConfiguration; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.view.InputDeviceCompat; -import androidx.core.view.MotionEventCompat; -import androidx.core.view.ViewConfigurationCompat; - -import info.nightscout.androidaps.R; -import info.nightscout.androidaps.events.EventWearToMobile; -import info.nightscout.shared.weardata.EventData; - -/** - * Created by adrian on 09/02/17. - */ - -public class AcceptActivity extends ViewSelectorActivity { - - String message = ""; - String actionKey = ""; - private DismissThread dismissThread; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - this.dismissThread = new DismissThread(); - dismissThread.start(); - - Bundle extras = getIntent().getExtras(); - message = extras.getString("message", ""); - actionKey = extras.getString(KEY_ACTION_DATA, ""); - - if (message.isEmpty() || actionKey.isEmpty()) { - finish(); - return; - } - - 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(); - } - - @SuppressWarnings("deprecation") - private class MyGridViewPagerAdapter extends GridPagerAdapter { - @Override - public int getColumnCount(int arg0) { - return 2; - } - - @Override - public int getRowCount() { - return 1; - } - - @Override - public Object instantiateItem(ViewGroup container, int row, int col) { - - final View view; - if (col == 0) { - view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.action_confirm_text, container, false); - final TextView textView = view.findViewById(R.id.message); - final View scrollView = view.findViewById(R.id.message_scroll); - textView.setText(message); - container.addView(view); - scrollView.setOnGenericMotionListener((v, ev) -> { - if (ev.getAction() == MotionEvent.ACTION_SCROLL && - ev.isFromSource(InputDeviceCompat.SOURCE_ROTARY_ENCODER) - ) { - float delta = -ev.getAxisValue(MotionEventCompat.AXIS_SCROLL) * - ViewConfigurationCompat.getScaledVerticalScrollFactor( - ViewConfiguration.get(container.getContext()), - container.getContext()); - v.scrollBy(0, Math.round(delta)); - - return true; - } - return false; - }); - - scrollView.requestFocus(); - } else { - view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.action_send_item, container, false); - final ImageView confirmButton = view.findViewById(R.id.confirmbutton); - confirmButton.setOnClickListener((View v) -> { - EventData returnCommand = EventData.Companion.deserialize(actionKey); - rxBus.send(new EventWearToMobile(returnCommand)); - rxBus.send(new EventData.CancelNotification(System.currentTimeMillis())); - finishAffinity(); - }); - container.addView(view); - } - return view; - } - - @Override - 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 re-init? - container.removeView((View) view); - } - - @Override - public boolean isViewFromObject(View view, Object object) { - return view == object; - } - - } - - @Override - public synchronized void onDestroy() { - super.onDestroy(); - if (dismissThread != null) { - dismissThread.invalidate(); - } - - } - - private class DismissThread extends Thread { - private boolean valid = true; - - public synchronized void invalidate() { - valid = false; - } - - @Override - public void run() { - SystemClock.sleep(60 * 1000); - synchronized (this) { - if (valid) { - AcceptActivity.this.finish(); - } - } - } - } - - @Override - protected synchronized void onNewIntent(Intent intent) { - super.onNewIntent(intent); - if (dismissThread != null) dismissThread.invalidate(); - Bundle extras = intent.getExtras(); - Intent msgIntent = new Intent(this, AcceptActivity.class); - msgIntent.putExtras(extras); - startActivity(msgIntent); - finish(); - } -} diff --git a/wear/src/main/java/info/nightscout/androidaps/interaction/actions/AcceptActivity.kt b/wear/src/main/java/info/nightscout/androidaps/interaction/actions/AcceptActivity.kt new file mode 100644 index 0000000000..4a612697ac --- /dev/null +++ b/wear/src/main/java/info/nightscout/androidaps/interaction/actions/AcceptActivity.kt @@ -0,0 +1,135 @@ +@file:Suppress("DEPRECATION") + +package info.nightscout.androidaps.interaction.actions + +import android.content.Intent +import android.os.Bundle +import android.os.SystemClock +import android.os.Vibrator +import android.support.wearable.view.GridPagerAdapter +import android.view.LayoutInflater +import android.view.MotionEvent +import android.view.View +import android.view.ViewConfiguration +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.core.view.InputDeviceCompat +import androidx.core.view.MotionEventCompat +import androidx.core.view.ViewConfigurationCompat +import info.nightscout.androidaps.R +import info.nightscout.androidaps.comm.DataLayerListenerServiceWear +import info.nightscout.androidaps.events.EventWearToMobile +import info.nightscout.shared.weardata.EventData.CancelNotification +import info.nightscout.shared.weardata.EventData.Companion.deserialize +import kotlin.math.roundToInt + +class AcceptActivity : ViewSelectorActivity() { + + var message = "" + var actionKey = "" + private var dismissThread: DismissThread? = null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + dismissThread = DismissThread() + dismissThread!!.start() + val extras = intent.extras + message = extras!!.getString("message", "") + actionKey = extras.getString(DataLayerListenerServiceWear.KEY_ACTION_DATA, "") + if (message.isEmpty() || actionKey.isEmpty()) { + finish() + return + } + setAdapter(MyGridViewPagerAdapter()) + val v = getSystemService(VIBRATOR_SERVICE) as Vibrator + val vibratePattern = longArrayOf(0, 100, 50, 100, 50) + v.vibrate(vibratePattern, -1) + } + + override fun onPause() { + super.onPause() + finish() + } + + private inner class MyGridViewPagerAdapter : GridPagerAdapter() { + + override fun getColumnCount(arg0: Int): Int = 2 + override fun getRowCount(): Int = 1 + + override fun instantiateItem(container: ViewGroup, row: Int, col: Int): Any { + val view: View + if (col == 0) { + view = LayoutInflater.from(applicationContext).inflate(R.layout.action_confirm_text, container, false) + val textView = view.findViewById(R.id.message) + val scrollView = view.findViewById(R.id.message_scroll) + textView.text = message + container.addView(view) + scrollView.setOnGenericMotionListener { v: View, ev: MotionEvent -> + if (ev.action == MotionEvent.ACTION_SCROLL && + ev.isFromSource(InputDeviceCompat.SOURCE_ROTARY_ENCODER) + ) { + val delta = -ev.getAxisValue(MotionEventCompat.AXIS_SCROLL) * + ViewConfigurationCompat.getScaledVerticalScrollFactor( + ViewConfiguration.get(container.context), + container.context + ) + v.scrollBy(0, delta.roundToInt()) + return@setOnGenericMotionListener true + } + false + } + scrollView.requestFocus() + } else { + view = LayoutInflater.from(applicationContext).inflate(R.layout.action_send_item, container, false) + val confirmButton = view.findViewById(R.id.confirmbutton) + confirmButton.setOnClickListener { + val returnCommand = deserialize(actionKey) + rxBus.send(EventWearToMobile(returnCommand)) + rxBus.send(CancelNotification(System.currentTimeMillis())) + finishAffinity() + } + container.addView(view) + } + return view + } + + override fun destroyItem(container: ViewGroup, row: Int, col: Int, view: Any) { + // Handle this to get the data before the view is destroyed? + // Object should still be kept by this, just setup for re-init? + container.removeView(view as View) + } + + override fun isViewFromObject(view: View, `object`: Any): Boolean = view === `object` + } + + @Synchronized public override fun onDestroy() { + dismissThread?.invalidate() + super.onDestroy() + } + + private inner class DismissThread : Thread() { + + private var valid = true + @Synchronized fun invalidate() { + valid = false + } + + override fun run() { + SystemClock.sleep((60 * 1000L)) + synchronized(this) { + if (valid) finish() + } + } + } + + @Synchronized override fun onNewIntent(intent: Intent) { + super.onNewIntent(intent) + if (dismissThread != null) dismissThread!!.invalidate() + val extras = intent.extras + val msgIntent = Intent(this, AcceptActivity::class.java) + msgIntent.putExtras(extras!!) + startActivity(msgIntent) + finish() + } +} \ No newline at end of file