Skip to content

Commit

Permalink
user can set order expiry
Browse files Browse the repository at this point in the history
  • Loading branch information
gigiyy committed Oct 11, 2018
1 parent 5ac6be9 commit ab93f6a
Show file tree
Hide file tree
Showing 5 changed files with 111 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,17 @@ import android.os.Bundle
import android.support.v4.app.Fragment
import android.text.Editable
import android.text.TextWatcher
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.EditText
import android.widget.PopupMenu
import it.trade.android.japanapp.R
import kotlinx.android.synthetic.main.order_input_fragment.*

private const val TAG = "OrderInputFragment"

class OrderInputFragment : Fragment() {

companion object {
Expand Down Expand Up @@ -61,6 +65,14 @@ class OrderInputFragment : Fragment() {
tvPriceLimit.text = "(値幅制限 $lower-$upper)"
val estimated = String.format("%,.0f", estimatedValue)
tvEstimatedValue.text = "$estimated"

Log.d(TAG, "current expiry is ${orderInfo.expiry}")
btDay.isChecked = orderInfo.expiry == OrderExpiry.DAY
btWeek.isChecked = orderInfo.expiry == OrderExpiry.WEEK
btWeek.isEnabled = orderInfo.type == OrderType.LIMIT
btTillDate.isChecked = orderInfo.expiry == OrderExpiry.TILL_DATE
btTillDate.isEnabled = orderInfo.type == OrderType.LIMIT
btSession.isChecked = orderInfo.expiry in listOf(OrderExpiry.OPENING, OrderExpiry.CLOSING, OrderExpiry.FUNARI)
}
})
btQuantityPlus.setOnClickListener {
Expand Down Expand Up @@ -103,6 +115,44 @@ class OrderInputFragment : Fragment() {
etQuantity.setSelection(selection)
}
}
btDay.setOnClickListener {
viewModel.setExpiry(OrderExpiry.DAY)
}
btWeek.setOnClickListener {
viewModel.setExpiry(OrderExpiry.WEEK)
}
btTillDate.setOnClickListener {
viewModel.setExpiry(OrderExpiry.TILL_DATE)
}
btSession.setOnClickListener {
// the button status should only updated by the viewModel instead of the click event
btSession.isChecked = !btSession.isChecked
val popup = PopupMenu(activity!!, it)
popup.inflate(R.menu.session_popup)
if (btMarket.isChecked) {
popup.menu.findItem(R.id.funari).isVisible = false
}
popup.setOnMenuItemClickListener { item ->
when (item?.itemId) {
R.id.opening -> {
viewModel.setExpiry(OrderExpiry.OPENING)
true
}
R.id.closing -> {
viewModel.setExpiry(OrderExpiry.CLOSING)
true
}
R.id.funari -> {
viewModel.setExpiry(OrderExpiry.FUNARI)
true
}
else -> false
}
}
popup.setOnDismissListener { _ -> viewModel.dummyUpdate()}
popup.show()
}

}

private fun togglePriceType() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import android.arch.lifecycle.MutableLiveData
import android.arch.lifecycle.ViewModel
import android.arch.lifecycle.ViewModelProvider
import android.util.Log
import kotlin.math.exp

private const val TAG = "OrderInputViewModel"

Expand Down Expand Up @@ -56,7 +57,11 @@ class OrderInputViewModel(private val symbol: String) : ViewModel() {

fun setMarketOrder() {
orderForm.value = orderForm.value?.apply {
orderInfo = orderInfo.copy(type = OrderType.MARKET, limitPrice = symbol.price)
val expiry = if (orderInfo.expiry in listOf(OrderExpiry.WEEK, OrderExpiry.TILL_DATE, OrderExpiry.FUNARI))
OrderExpiry.DAY
else
orderInfo.expiry
orderInfo = orderInfo.copy(type = OrderType.MARKET, limitPrice = symbol.price, expiry = expiry)
}
}

Expand All @@ -83,7 +88,7 @@ class OrderInputViewModel(private val symbol: String) : ViewModel() {
isValid = true
}
}
if (isValid){
if (isValid) {
orderForm.value = newValue
}
return isValid
Expand Down Expand Up @@ -111,6 +116,16 @@ class OrderInputViewModel(private val symbol: String) : ViewModel() {
}
return isValid
}

fun setExpiry(expiry: OrderExpiry) {
orderForm.value = orderForm.value?.apply {
orderInfo = orderInfo.copy(expiry = expiry)
}
}

fun dummyUpdate() {
orderForm.value = orderForm.value
}
}

class OrderInputViewModelFactory(private val symbol: String) : ViewModelProvider.NewInstanceFactory() {
Expand Down Expand Up @@ -144,15 +159,6 @@ class OrderForm(val symbol: JapanSymbol, val buyingPower: BuyingPower) {
get() {
return priceChange / symbol.previousDayPrice
}

val availableExpiry: List<OrderExpiry>
get() {
return if (orderInfo.type == OrderType.LIMIT) {
listOf(OrderExpiry.DAY, OrderExpiry.WEEK, OrderExpiry.TILL_DATE, OrderExpiry.OPENING, OrderExpiry.CLOSING, OrderExpiry.FUNARI)
} else {
listOf(OrderExpiry.DAY, OrderExpiry.OPENING, OrderExpiry.CLOSING)
}
}
}

//TODO temp solutions below
Expand Down
36 changes: 24 additions & 12 deletions exampleAppJapan/src/main/res/layout/order_input_fragment.xml
Original file line number Diff line number Diff line change
Expand Up @@ -152,8 +152,8 @@
android:layout_marginTop="8dp"
android:ems="8"
android:inputType="number"
android:textAlignment="center"
android:selectAllOnFocus="true"
android:textAlignment="center"
app:layout_constraintEnd_toStartOf="@+id/btQuantityPlus"
app:layout_constraintStart_toEndOf="@+id/btQuantityMinus" />

Expand Down Expand Up @@ -256,8 +256,8 @@
android:layout_marginTop="8dp"
android:ems="8"
android:inputType="number"
android:textAlignment="center"
android:selectAllOnFocus="true"
android:textAlignment="center"
app:layout_constraintEnd_toStartOf="@+id/btPricePlus"
app:layout_constraintStart_toEndOf="@+id/btPriceMinus" />

Expand Down Expand Up @@ -356,13 +356,15 @@
android:layout_marginEnd="8dp">

<ToggleButton
android:id="@+id/btDay"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textOff="@string/day"
android:textOn="@string/day" />

<ToggleButton
android:id="@+id/btWeek"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
Expand All @@ -377,19 +379,29 @@
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp">

<Spinner
android:layout_width="wrap_content"
<ToggleButton
android:id="@+id/btTillDate"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1">
android:layout_weight="1"
android:drawableEnd="@drawable/ic_arrow_drop_down"
android:textAlignment="center"
android:textOff="@string/till_date"
android:textOn="@string/till_date">

</Spinner>
</ToggleButton>

<Spinner
android:layout_width="wrap_content"
<ToggleButton
android:id="@+id/btSession"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1">
android:layout_weight="1"
android:drawableEnd="@drawable/ic_arrow_drop_down"
android:textAlignment="center"
android:textOff="@string/opening"
android:textOn="@string/opening">

</Spinner>
</ToggleButton>
</android.support.v7.widget.LinearLayoutCompat>
</android.support.v7.widget.LinearLayoutCompat>

Expand Down Expand Up @@ -481,8 +493,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:text="@string/order_review"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
Expand Down
17 changes: 17 additions & 0 deletions exampleAppJapan/src/main/res/menu/session_popup.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<item
android:id="@+id/opening"
android:title="@string/opening" />

<item
android:id="@+id/closing"
android:title="@string/closing" />

<item
android:id="@+id/funari"
android:title="@string/funari" />
</menu>
4 changes: 3 additions & 1 deletion exampleAppJapan/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@
<string name="day">本日中</string>
<string name="week">今週中</string>
<string name="till_date">期間指定</string>
<string name="session">寄付</string>
<string name="opening">寄付</string>
<string name="closing">引け</string>
<string name="funari">不成</string>
<string name="account_type">口座区分</string>
<string name="specific">特定</string>
<string name="general">一般</string>
Expand Down

0 comments on commit ab93f6a

Please sign in to comment.