Skip to content

Commit

Permalink
Add crypto menus to exampleAppKotlin
Browse files Browse the repository at this point in the history
  • Loading branch information
guillaumedebavelaere committed Sep 7, 2018
1 parent 84dc18a commit bba3088
Show file tree
Hide file tree
Showing 6 changed files with 222 additions and 12 deletions.
11 changes: 0 additions & 11 deletions exampleApp/src/main/res/layout/content_get_crypto_quote.xml

This file was deleted.

6 changes: 6 additions & 0 deletions exampleAppKotlin/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,17 @@
<activity
android:name=".PreviewOrderActivity"
android:parentActivityName=".MainActivity" />
<activity
android:name=".PreviewCryptoOrderActivity"
android:parentActivityName=".MainActivity" />
<activity
android:name=".BrokersListActivity"
android:parentActivityName=".MainActivity" />
<activity android:name=".OrdersStatusActivity"
android:parentActivityName=".MainActivity" />
<activity
android:name=".GetCryptoQuoteActivity"
android:parentActivityName=".MainActivity" />
</application>

</manifest>
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package it.trade.android.exampleapp

import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.text.method.ScrollingMovementMethod
import android.widget.TextView
import it.trade.android.sdk.model.TradeItCryptoQuoteResponseParcelable

class GetCryptoQuoteActivity : AppCompatActivity() {

private var textView: TextView? = null

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_get_crypto_quote)

textView = this.findViewById(R.id.get_crypto_quote_textview) as TextView
textView!!.movementMethod = ScrollingMovementMethod()
val intent = intent
val cryptoQuoteResponseParcelable = intent
.getParcelableExtra(MainActivity.GET_CRYPTO_QUOTE_PARAMETER) as TradeItCryptoQuoteResponseParcelable
textView!!.setText(cryptoQuoteResponseParcelable.toString())
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,10 @@ import android.widget.TableRow
import android.widget.TextView
import it.trade.android.sdk.TradeItConfigurationBuilder
import it.trade.android.sdk.TradeItSDK
import it.trade.android.sdk.enums.TradeItOrderAction
import it.trade.android.sdk.enums.TradeItOrderExpirationType
import it.trade.android.sdk.enums.TradeItOrderPriceType
import it.trade.android.sdk.enums.TradeItOrderQuantityType
import it.trade.android.sdk.exceptions.TradeItDeleteLinkedLoginException
import it.trade.android.sdk.exceptions.TradeItSaveLinkedLoginException
import it.trade.android.sdk.manager.TradeItLinkedBrokerManager
Expand All @@ -28,9 +30,11 @@ import it.trade.model.TradeItErrorResult
import it.trade.model.TradeItSecurityQuestion
import it.trade.model.callback.TradeItCallback
import it.trade.model.callback.TradeItCallbackWithSecurityQuestionImpl
import it.trade.model.reponse.Instrument
import it.trade.model.reponse.TradeItResponse
import it.trade.model.request.TradeItEnvironment
import kotlinx.android.synthetic.main.activity_main.*
import java.math.BigDecimal
import java.util.*

class MainActivity : AppCompatActivity() {
Expand Down Expand Up @@ -94,6 +98,14 @@ class MainActivity : AppCompatActivity() {
Log.d(TAG, "preview trade first linked broker account was tapped!")
previewTradeFirstLinkedBroker()
}
MainActivity.MainActivityActions.PREVIEW_CRYPTO_TRADE_FIRST_CRYPTO_BROKER_ACCOUNT -> {
Log.d(TAG, "preview trade first crypto broker account was tapped!")
previewCryptoTradeFirstCryptoBrokerAccount()
}
MainActivity.MainActivityActions.GET_CRYPTO_QUOTE_FIRST_CRYPTO_BROKER_ACCOUNT -> {
Log.d(TAG, "getCryptoQuote first crypto broker account was tapped!")
getCryptoQuoteFirstCryptoBrokerAccount()
}
MainActivity.MainActivityActions.SYNC_LOCAL_LINKED_BROKERS -> {
Log.d(TAG, "synch local linked brokers was tapped!")
syncLocalLinkedBrokers()
Expand Down Expand Up @@ -121,7 +133,9 @@ class MainActivity : AppCompatActivity() {
PARCEL_FIRST_LINKED_BROKER_ACCOUNT("Parcel first linked broker account"),
GET_POSITIONS_FIRST_LINKED_BROKER_ACCOUNT("Get positions for first linked broker account"),
REFRESH_ORDERS_STATUS_FIRST_LINKED_BROKER_ACCOUNT("Refresh orders status for first linked broker account"),
PREVIEW_TRADE_FIRST_LINKED_BROKER_ACCOUNT("Preview trade for first linked broker account")
PREVIEW_TRADE_FIRST_LINKED_BROKER_ACCOUNT("Preview trade for first linked broker account"),
PREVIEW_CRYPTO_TRADE_FIRST_CRYPTO_BROKER_ACCOUNT("Preview crypto trade for first crypto broker account"),
GET_CRYPTO_QUOTE_FIRST_CRYPTO_BROKER_ACCOUNT("Get crypto quote for first crypto broker account")
}

override fun onCreate(savedInstanceState: Bundle?) {
Expand Down Expand Up @@ -421,6 +435,77 @@ class MainActivity : AppCompatActivity() {
}
}

private fun previewCryptoTradeFirstCryptoBrokerAccount() {
val mainActivity = this
val linkedBrokers = linkedBrokerManager.linkedBrokers
if (linkedBrokers.isEmpty()) {
showAlert("previewTradeFirstLinkedBroker", "No linked broker!")
} else {
var cryptoAccount: TradeItLinkedBrokerAccountParcelable? = null
for (linkedBroker in linkedBrokers) {
cryptoAccount = linkedBroker.accounts.find {
it.getOrderCapabilityForInstrument(Instrument.CRYPTO) != null
}
if (cryptoAccount != null) {
break
}
}

if (cryptoAccount != null) {
val cryptoOrderParcelable = TradeItCryptoOrderParcelable(
cryptoAccount,
"BTC/USD",
TradeItOrderAction.BUY
)
cryptoOrderParcelable.priceType = TradeItOrderPriceType.LIMIT
cryptoOrderParcelable.expiration = TradeItOrderExpirationType.GOOD_FOR_DAY
cryptoOrderParcelable.limitPrice = BigDecimal(2000.0)
cryptoOrderParcelable.orderQuantityType = TradeItOrderQuantityType.QUOTE_CURRENCY
cryptoOrderParcelable.quantity = BigDecimal(1.0)
val intent = Intent(mainActivity, PreviewCryptoOrderActivity::class.java)
intent.putExtra(PREVIEW_ORDER_PARAMETER, cryptoOrderParcelable)
startActivity(intent)
} else {
showAlert("previewTradeFirstLinkedBroker", "No crypto account!")
}
}
}

private fun getCryptoQuoteFirstCryptoBrokerAccount() {
val mainActivity = this
val linkedBrokers = linkedBrokerManager.linkedBrokers
if (linkedBrokers.isEmpty()) {
showAlert("getCryptoQuoteFirstCryptoBrokerAccount", "No linked broker!")
} else {
var cryptoAccount: TradeItLinkedBrokerAccountParcelable? = null
for (linkedBroker in linkedBrokers) {
cryptoAccount = linkedBroker.accounts.find {
it.getOrderCapabilityForInstrument(Instrument.CRYPTO) != null
}
if (cryptoAccount != null) {
break
}
}
if (cryptoAccount != null) {
cryptoAccount.getCryptoQuote("BTC/USD", object : TradeItCallback<TradeItCryptoQuoteResponseParcelable> {
override fun onSuccess(tradeItCryptoQuoteResponseParcelable: TradeItCryptoQuoteResponseParcelable) {
val intent = Intent(mainActivity, GetCryptoQuoteActivity::class.java)
intent.putExtra(GET_CRYPTO_QUOTE_PARAMETER, tradeItCryptoQuoteResponseParcelable)
startActivity(intent)
}

override fun onError(tradeItErrorResult: TradeItErrorResult) {
showAlert(tradeItErrorResult.shortMessage,
tradeItErrorResult.longMessages.joinToString()
)
}
})
} else {
showAlert("getCryptoQuoteFirstCryptoBrokerAccount", "No crypto account!")
}
}
}

private fun goToLinkedBrokersActivity() {
val intent = Intent(this.applicationContext, LinkedBrokersActivity::class.java)
intent.putParcelableArrayListExtra(LINKED_BROKERS_PARAMETER, linkedBrokerManager.linkedBrokers as ArrayList<out Parcelable>)
Expand Down Expand Up @@ -486,5 +571,6 @@ class MainActivity : AppCompatActivity() {
const val ORDERS_STATUS_PARAMETER = "it.trade.android.exampleapp.ORDERS_STATUS"
const val PREVIEW_ORDER_PARAMETER = "it.trade.android.exampleapp.PREVIEW_ORDER"
const val RELINK_OAUTH_PARAMETER = "it.trade.android.exampleapp.RELINK_OAUTH"
const val GET_CRYPTO_QUOTE_PARAMETER = "it.trade.android.exampleapp.GET_CRYPTO_QUOTE"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
package it.trade.android.exampleapp

import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.text.method.ScrollingMovementMethod
import android.util.Log
import android.view.View
import android.widget.Button
import android.widget.TextView
import it.trade.android.exampleapp.MainActivity.Companion.PREVIEW_ORDER_PARAMETER
import it.trade.android.sdk.model.TradeItCryptoOrderParcelable
import it.trade.android.sdk.model.TradeItPlaceCryptoOrderResponseParcelable
import it.trade.android.sdk.model.TradeItPreviewCryptoOrderResponseParcelable
import it.trade.android.sdk.model.orderstatus.TradeItOrderStatusParcelable
import it.trade.model.TradeItErrorResult
import it.trade.model.callback.TradeItCallback

class PreviewCryptoOrderActivity : AppCompatActivity() {
private var orderId: String? = null
private var order: TradeItCryptoOrderParcelable? = null
private var textView: TextView? = null
private var cancelOrderButton: Button? = null
internal var orderNumber: String? = null

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_preview_order)
textView = this.findViewById<View>(R.id.preview_order_textview) as TextView
textView!!.movementMethod = ScrollingMovementMethod()
val intent = intent
order = intent.getParcelableExtra(PREVIEW_ORDER_PARAMETER)
val placeOrderButton = this.findViewById<View>(R.id.place_trade_button) as Button
cancelOrderButton = this.findViewById<View>(R.id.cancel_order_button) as Button
order!!.previewCryptoOrder(object : TradeItCallback<TradeItPreviewCryptoOrderResponseParcelable> {
override fun onSuccess(response: TradeItPreviewCryptoOrderResponseParcelable) {
textView!!.text = response.toString()
orderId = response.orderId
placeOrderButton.isEnabled = true
}

override fun onError(error: TradeItErrorResult) {
Log.e(TAG, "ERROR previewCryptoOrder: $error")
textView!!.text = "ERROR previewCryptoOrder: $error"
}
})
}

fun placeTrade(view: View) {
order!!.placeCryptoOrder(orderId!!, object : TradeItCallback<TradeItPlaceCryptoOrderResponseParcelable> {
override fun onSuccess(placeOrderResponse: TradeItPlaceCryptoOrderResponseParcelable) {
textView!!.append(placeOrderResponse.toString())
cancelOrderButton!!.isEnabled = true
orderNumber = placeOrderResponse.orderNumber
}

override fun onError(error: TradeItErrorResult) {
Log.e(TAG, "ERROR placeOrder: " + error.toString())
textView!!.text = "ERROR placeOrder: $error"
}
})
}

fun cancelOrder(view: View) {
order!!.linkedBrokerAccount.cancelOrder(orderNumber!!, object : TradeItCallback<TradeItOrderStatusParcelable> {
override fun onSuccess(orderStatusParcelable: TradeItOrderStatusParcelable) {
textView!!.append(orderStatusParcelable.toString())
}

override fun onError(error: TradeItErrorResult) {
Log.e(TAG, "ERROR cancelOrder: " + error.toString())
textView!!.text = "ERROR cancelOrder: $error"
}
})
}

companion object {
private val TAG = PreviewCryptoOrderActivity::class.java.name
}
}
25 changes: 25 additions & 0 deletions exampleAppKotlin/src/main/res/layout/activity_get_crypto_quote.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_get_crypto_quote"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="it.trade.android.exampleapp.GetCryptoQuoteActivity">

<TextView
android:id="@+id/get_crypto_quote_textview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_margin="10dp"
android:gravity="bottom"
android:scrollbars="vertical"
android:text="..."
android:textSize="10sp"
android:typeface="monospace" />

</RelativeLayout>

0 comments on commit bba3088

Please sign in to comment.