快捷键消费
diff --git a/app/src/main/java/com/supwisdom/activities/consumeMode/ConsumeModeActivity.kt b/app/src/main/java/com/supwisdom/activities/consumeMode/ConsumeModeActivity.kt
index 4e0d932..e7399e5 100644
--- a/app/src/main/java/com/supwisdom/activities/consumeMode/ConsumeModeActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/consumeMode/ConsumeModeActivity.kt
@@ -4,6 +4,8 @@
 import android.os.Bundle
 import android.os.CountDownTimer
 import android.view.KeyEvent
+import android.view.View
+import android.widget.LinearLayout
 import android.widget.TextView
 import com.supwisdom.R
 import com.supwisdom.activities.BaseActivity
@@ -21,6 +23,7 @@
  **/
 class ConsumeModeActivity : BaseActivity() {
     private lateinit var vPayamt: TextView
+    private lateinit var llHotList: LinearLayout
     private val pos = SPApplication.getInstance().getPos()
     private var keyActive = true
     private var shoppwdPass = false
@@ -30,10 +33,28 @@
         super.onCreate(savedInstanceState)
         this.setContentView(R.layout.activity_consume_mode)
         initView()
+        initData()
+    }
+
+    private fun initData() {
+
     }
 
     private fun initView() {
         vPayamt = findViewById<TextView>(R.id.tv_consume_mode_payamt)
+        llHotList = findViewById<LinearLayout>(R.id.ll_hot_list)
+        this.findViewById<TextView>(R.id.tv_hot_add).setOnClickListener {
+            val item = View.inflate(this, R.layout.item_hotkey_pay, null)
+            item.findViewById<TextView>(R.id.tv_hot_del).setOnClickListener {
+                llHotList.removeView(item)
+            }
+            val key = item.findViewById<TextView>(R.id.tv_hot_key)
+            key.text = "${llHotList.childCount + 1}"
+            llHotList.addView(item)
+        }
+        this.findViewById<TextView>(R.id.tv_hot_save).setOnClickListener {
+            finish()
+        }
     }
 
     private fun checkShopPwd(keyCode: Int) {
@@ -98,10 +119,9 @@
             KeyEvent.KEYCODE_7,
             KeyEvent.KEYCODE_8,
             KeyEvent.KEYCODE_9 -> addValueToEdit(keyCode - KeyEvent.KEYCODE_0)
-            KeyEvent.KEYCODE_DEL ->
-                //cancel
-                delValueToEdit()
-            KeyEvent.KEYCODE_POUND, KeyEvent.KEYCODE_PERIOD -> addDotToEdit()
+            KeyEvent.KEYCODE_DEL -> delValueToEdit()
+            KeyEvent.KEYCODE_POUND,
+            KeyEvent.KEYCODE_PERIOD -> addDotToEdit()
             KeyEvent.KEYCODE_ENTER -> {
                 pos.replaceControlPara(PublicDef.CONTROL_FIXAMT, getFixAmount())
                 jumpActivity(MenuActivity::class.java)
diff --git a/app/src/main/java/com/supwisdom/db/BeanPropEnum.kt b/app/src/main/java/com/supwisdom/db/BeanPropEnum.kt
index 5182e5f..f94037d 100644
--- a/app/src/main/java/com/supwisdom/db/BeanPropEnum.kt
+++ b/app/src/main/java/com/supwisdom/db/BeanPropEnum.kt
@@ -108,4 +108,9 @@
         status,
         upflag
     }
+
+    enum class HotkeyPay {
+        key,
+        amount
+    }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/db/DBParaHelper.kt b/app/src/main/java/com/supwisdom/db/DBParaHelper.kt
index d2fd01f..c8e37aa 100644
--- a/app/src/main/java/com/supwisdom/db/DBParaHelper.kt
+++ b/app/src/main/java/com/supwisdom/db/DBParaHelper.kt
@@ -13,12 +13,13 @@
 class DBParaHelper private constructor(context: Context) : SQLiteOpenHelper(context, DB_NAME, null, VERSION) {
     companion object {
         private val DB_NAME = "db_para"
-        private val VERSION = 2
+        private val VERSION = 3
 
         val TABLE_NAME_SYSPARA = "tb_syspara"
         val TABLE_NAME_DYNAMICPARA = "tb_dynamicpara"
         val TABLE_NAME_CONTROLPARA = "tb_controlpara"
         val TABLE_NAME_WHITELIST = "tb_whitelist"
+        val TABLE_NAME_HOTKEY = "tb_hotkey"
 
         private var instance: DBParaHelper? = null
         fun getInstance(context: Context): DBParaHelper {
@@ -37,6 +38,10 @@
     /**
      * SQL for create table
      */
+    private val CREATE_TABLE_NAME_HOTKEY = ("create table IF NOT EXISTS "
+            + TABLE_NAME_HOTKEY + " ( "
+            + BeanPropEnum.HotkeyPay.key + " integer primary key,"
+            + BeanPropEnum.HotkeyPay.amount + " integer)")
     private val CREATE_TABLE_NAME_WHITELIST = ("create table IF NOT EXISTS "
             + TABLE_NAME_WHITELIST + " ( "
             + BeanPropEnum.WhiteList.cardphyid + " varchar(32),"
@@ -92,6 +97,7 @@
         db.execSQL(CREATE_TABLE_NAME_DYNAMICPARA)
         db.execSQL(CREATE_TABLE_NAME_CONTROLPARA)
         db.execSQL(CREATE_TABLE_NAME_WHITELIST)
+        db.execSQL(CREATE_TABLE_NAME_HOTKEY)
     }
 
     override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
@@ -99,6 +105,9 @@
             if (oldVersion < 2 && newVersion >= 2) {
                 db.execSQL("alter table $TABLE_NAME_SYSPARA add column ${BeanPropEnum.Syspara.maxDayOfflineAmt} integer")
             }
+            if (oldVersion < 3 && newVersion >= 3) {
+                db.execSQL(CREATE_TABLE_NAME_HOTKEY)
+            }
         }
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/db/HotkeyPayDao.kt b/app/src/main/java/com/supwisdom/db/HotkeyPayDao.kt
new file mode 100644
index 0000000..3826967
--- /dev/null
+++ b/app/src/main/java/com/supwisdom/db/HotkeyPayDao.kt
@@ -0,0 +1,98 @@
+package com.supwisdom.db
+
+import android.content.ContentValues
+import android.content.Context
+import android.database.Cursor
+import com.supwisdom.entity.HotKeyPayRecord
+import java.util.concurrent.locks.Lock
+
+/**
+ ** create by zzq on 2019/9/4
+ ** @desc
+ **/
+class HotkeyPayDao constructor(context: Context) {
+    private val dbHelper = DBParaHelper.getInstance(context)
+    private val TABLE = DBParaHelper.TABLE_NAME_HOTKEY
+
+    fun getLock(): Lock {
+        return dbHelper.getLock()
+    }
+
+    fun replace(record: HotKeyPayRecord): Boolean {
+        val db = dbHelper.readableDatabase
+        val values = getContentValues(record)
+        try {
+            db.beginTransaction()
+            if (db.replace(TABLE, null, values) > 0) {
+                db.setTransactionSuccessful()
+                return true
+            }
+        } finally {
+            db.endTransaction()
+        }
+        return false
+    }
+
+    fun save(list: List<HotKeyPayRecord>): Boolean {
+        val db = dbHelper.writableDatabase
+        try {
+            db.beginTransaction()
+            if (db.delete(TABLE, null, null) < 0) {
+                return false
+            }
+            list.forEach {
+                val values = getContentValues(it)
+                if (db.insert(TABLE, null, values) <= 0) {
+                    return false
+                }
+            }
+            db.setTransactionSuccessful()
+            return true
+        } finally {
+            db.endTransaction()
+        }
+    }
+
+    fun get(): List<HotKeyPayRecord>? {
+        val db = dbHelper.readableDatabase
+        var cursor: Cursor? = null
+        try {
+            cursor = db.query(TABLE, null, null, null, null, null, null)
+            val list = ArrayList<HotKeyPayRecord>()
+            while (cursor != null && cursor.moveToNext()) {
+                list.add(getRecord(cursor))
+            }
+            return list
+        } finally {
+            cursor?.close()
+        }
+    }
+
+    fun clear(): Boolean {
+        val db = dbHelper.writableDatabase
+        try {
+            db.beginTransaction()
+            if (db.delete(TABLE, null, null) < 0) {
+                return false
+            }
+            db.setTransactionSuccessful()
+            return true
+        } finally {
+            db.endTransaction()
+        }
+    }
+
+    private fun getRecord(cursor: Cursor): HotKeyPayRecord {
+        val record = HotKeyPayRecord()
+        record.key = cursor.getInt(cursor.getColumnIndex(BeanPropEnum.HotkeyPay.key.toString()))
+        record.amount = cursor.getInt(cursor.getColumnIndex(BeanPropEnum.HotkeyPay.amount.toString()))
+        return record
+    }
+
+    private fun getContentValues(record: HotKeyPayRecord): ContentValues {
+        val values = ContentValues()
+        values.put(BeanPropEnum.HotkeyPay.key.toString(), record.key)
+        values.put(BeanPropEnum.HotkeyPay.amount.toString(), record.amount)
+        return values
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/db/Pos.kt b/app/src/main/java/com/supwisdom/db/Pos.kt
index 660f201..00ae522 100644
--- a/app/src/main/java/com/supwisdom/db/Pos.kt
+++ b/app/src/main/java/com/supwisdom/db/Pos.kt
@@ -17,6 +17,7 @@
     private var sysRecord: SysParaRecord? = null
     private val controlParaDao = ControlParaDao(context)
     private val whiteListDao = WhiteListDao(context)
+    private val hotkeyPayDao = HotkeyPayDao(context)
     private val transdtlOnlineDao = TransdtlOnlineDao(sdContext)
     private val transdtlOfflineDao = TransdtlOfflineDao(sdContext)
     private val transdtlUnionDao = TransdtlUnionDao(sdContext)
@@ -54,6 +55,24 @@
         return cfgRecord
     }
 
+    fun saveHotkeyPay(list: List<HotKeyPayRecord>): Boolean {
+        try {
+            hotkeyPayDao.getLock().lock()
+            return hotkeyPayDao.save(list)
+        } finally {
+            hotkeyPayDao.getLock().unlock()
+        }
+    }
+
+    fun getHotkeyPay(): List<HotKeyPayRecord>? {
+        try {
+            hotkeyPayDao.getLock().lock()
+            return hotkeyPayDao.get()
+        } finally {
+            hotkeyPayDao.getLock().unlock()
+        }
+    }
+
     fun replaceControlPara(record: ControlParaRecord): Boolean {
         try {
             controlParaDao.getLock().lock()
@@ -278,7 +297,7 @@
     fun getTransdtlOfflineAmt(date: String, cardno: String, cardphyid: String): Int {
         try {
             transdtlOfflineDao.getLock().lock()
-            return transdtlOfflineDao.getOfflineAmt(date,cardno,cardphyid)
+            return transdtlOfflineDao.getOfflineAmt(date, cardno, cardphyid)
         } finally {
             transdtlOfflineDao.getLock().unlock()
         }
diff --git a/app/src/main/java/com/supwisdom/entity/HotKeyPayRecord.kt b/app/src/main/java/com/supwisdom/entity/HotKeyPayRecord.kt
new file mode 100644
index 0000000..4d8bb24
--- /dev/null
+++ b/app/src/main/java/com/supwisdom/entity/HotKeyPayRecord.kt
@@ -0,0 +1,11 @@
+package com.supwisdom.entity
+
+/**
+ ** create by zzq on 2019/9/5
+ ** @desc
+ **/
+class HotKeyPayRecord {
+    var key: Int = 0
+    var amount: Int = 0
+
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_consume_mode.xml b/app/src/main/res/layout/activity_consume_mode.xml
index e738ecb..3ec88c5 100644
--- a/app/src/main/res/layout/activity_consume_mode.xml
+++ b/app/src/main/res/layout/activity_consume_mode.xml
@@ -7,38 +7,104 @@
         <TextView
                 style="@style/head_title_text_style"
                 android:text="消费模式"/>
-
-        <TextView
-                android:layout_width="match_parent"
+        <RadioGroup
                 android:layout_height="wrap_content"
-                android:padding="10dp"
-                android:text="none-普通消费\n值-定额消费\n单位(元)"
-                android:textColor="@color/light_blue2"
-                android:textSize="20sp"/>
-
-        <LinearLayout
                 android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:orientation="horizontal">
-
+                android:orientation="vertical">
+            <RadioButton
+                    android:id="@+id/rb_normal_mode"
+                    android:text="普通消费"
+                    style="@style/consume_mode_rb_style"
+                    android:checked="true"/>
+            <RadioButton
+                    android:id="@+id/rb_fix_mode"
+                    android:text="定额消费"
+                    style="@style/consume_mode_rb_style"/>
+            <RadioButton
+                    android:id="@+id/rb_hot_mode"
+                    android:text="快捷消费"
+                    style="@style/consume_mode_rb_style"/>
+        </RadioGroup>
+        <LinearLayout
+                android:id="@+id/ll_fix_mode"
+                android:visibility="gone"
+                android:orientation="vertical"
+                android:padding="10dp"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent">
             <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:padding="10dp"
-                    android:text="金额: "
-                    android:textColor="@color/light_blue2"
-                    android:textSize="30sp"/>
-
-            <TextView
-                    android:id="@+id/tv_consume_mode_payamt"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:maxLength="6"
-                    android:padding="10dp"
-                    android:text="0"
+                    android:text="定额消费(单位:元)"
                     android:textColor="@color/light_blue2"
-                    android:textSize="30sp"/>
-        </LinearLayout>
+                    android:textSize="20sp"/>
 
+            <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:orientation="horizontal">
+
+                <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="金额: "
+                        android:textColor="@color/light_blue2"
+                        android:textSize="30sp"/>
+
+                <TextView
+                        android:id="@+id/tv_consume_mode_payamt"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:maxLength="8"
+                        android:text="0"
+                        android:textColor="@color/light_blue2"
+                        android:textSize="30sp"/>
+            </LinearLayout>
+        </LinearLayout>
+        <LinearLayout
+                android:id="@+id/ll_hot_mode"
+                android:orientation="vertical"
+                android:padding="10dp"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent">
+            <TextView
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:text="快捷消费(单位:元)"
+                    android:textColor="@color/light_blue2"
+                    android:textSize="20sp"/>
+            <LinearLayout
+                    android:orientation="horizontal"
+                    android:gravity="center"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content">
+                <TextView
+                        android:id="@+id/tv_hot_save"
+                        android:textSize="25sp"
+                        android:text="保存"
+                        android:background="@drawable/corner_bg_gray"
+                        android:padding="10dp"
+                        android:textColor="@color/light_blue2"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"/>
+                <TextView
+                        android:id="@+id/tv_hot_add"
+                        android:textSize="25sp"
+                        android:text="添加"
+                        android:layout_marginLeft="100dp"
+                        android:background="@drawable/corner_bg_gray"
+                        android:padding="10dp"
+                        android:textColor="@color/light_blue2"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"/>
+            </LinearLayout>
+
+            <LinearLayout
+                    android:id="@+id/ll_hot_list"
+                    android:layout_width="match_parent"
+                    android:orientation="vertical"
+                    android:layout_height="match_parent"/>
+
+        </LinearLayout>
     </LinearLayout>
 </LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_hotkey_pay.xml b/app/src/main/res/layout/item_hotkey_pay.xml
new file mode 100644
index 0000000..7ba2b51
--- /dev/null
+++ b/app/src/main/res/layout/item_hotkey_pay.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:orientation="horizontal"
+              android:background="@color/white"
+              android:layout_width="match_parent"
+              android:weightSum="5"
+              android:layout_marginTop="10dp"
+              android:layout_height="match_parent">
+    <TextView
+            android:layout_height="wrap_content"
+            android:layout_width="0dp"
+            android:layout_weight="1"
+            android:text="快捷键: "
+            android:textColor="@color/light_blue2"
+            android:textSize="25sp"/>
+    <TextView
+            android:id="@+id/tv_hot_key"
+            android:layout_height="wrap_content"
+            android:layout_width="0dp"
+            android:layout_weight="1"
+            android:text="1"
+            android:textColor="@color/cl_red"
+            android:textSize="25sp"/>
+    <EditText
+            android:id="@+id/tv_hot_amount"
+            android:layout_height="wrap_content"
+            android:layout_width="0dp"
+            android:inputType="numberDecimal"
+            android:layout_weight="2"
+            android:maxLines="1"
+            android:text="0"
+            android:textColor="@color/light_blue2"
+            android:textSize="25sp"/>
+    <TextView
+            android:id="@+id/tv_hot_del"
+            android:layout_height="wrap_content"
+            android:layout_width="0dp"
+            android:layout_weight="1"
+            android:text="删除"
+            android:layout_marginLeft="10dp"
+            android:gravity="center"
+            android:padding="10dp"
+            android:background="@drawable/corner_bg_gray"
+            android:textColor="@color/light_blue2"
+            android:textSize="25sp"/>
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 123c964..d85e0af 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -426,7 +426,12 @@
         <item name="android:textColor">@color/black</item>
         <item name="android:gravity">center</item>
     </style>
-
+    <style name="consume_mode_rb_style">
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:textSize">25sp</item>
+        <item name="android:textColor">@color/light_blue2</item>
+    </style>
     <style name="consume_pay_way_text_style">
         <item name="android:layout_height">wrap_content</item>
         <item name="android:layout_width">match_parent</item>