private IPriceTileCell GetCell(UITableView tableView, PriceTileModel model) { IPriceTileCell priceTileCell = null; switch (model.Status) { case PriceTileStatus.Done: case PriceTileStatus.DoneStale: priceTileCell = tableView.DequeueReusableCell (PriceTileTradeAffirmationViewCell.Key) as PriceTileTradeAffirmationViewCell; if (priceTileCell == null) { priceTileCell = PriceTileTradeAffirmationViewCell.Create (); } break; case PriceTileStatus.Streaming: case PriceTileStatus.Executing: priceTileCell = tableView.DequeueReusableCell (PriceTileViewCell.Key) as PriceTileViewCell; if (priceTileCell == null) { priceTileCell = PriceTileViewCell.Create (); } break; case PriceTileStatus.Stale: priceTileCell = tableView.DequeueReusableCell (PriceTileErrorViewCell.Key) as PriceTileViewCell; if (priceTileCell == null) { priceTileCell = PriceTileErrorViewCell.Create (); } break; } return priceTileCell; }
private void OnItemChanged(PriceTileModel itemModel) { if (IsViewLoaded) { var indexOfItem = _model.ActiveCurrencyPairs.IndexOf (itemModel); NSIndexPath path = NSIndexPath.FromRowSection(indexOfItem, 0); IPriceTileCell cell = (IPriceTileCell)TableView.CellAt (path); if (cell != null) { // TODO: Batch the updates up, to only call ReloadRows once per main event loop loop? if (ShouldUpdateCell(itemModel.Status, cell)) { // System.Console.WriteLine ("Cell is APPROPRIATE", indexOfItem); cell.UpdateFrom (itemModel); } else { TableView.ReloadRows ( new [] { NSIndexPath.Create (0, indexOfItem) }, UITableViewRowAnimation.None); } } } }
private void OnItemChanged(PriceTileModel itemModel) { if (IsViewLoaded) { var indexOfItem = _model.ActiveCurrencyPairs.IndexOf (itemModel); NSIndexPath path = NSIndexPath.FromRowSection(indexOfItem, 0); IPriceTileCell cell = (IPriceTileCell)TableView.CellAt (path); if (cell == null) { // System.Console.WriteLine ("Row {0} not found", indexOfItem); // There's no cell bound to that index in the data, so we can ignore the update. } else { // System.Console.WriteLine ("Row {0} FOUND {1}", indexOfItem, cell.GetType ().ToString ()); bool bAppropriateCell = false; // TODO: Refactor this elsewhere. switch (itemModel.Status) { case PriceTileStatus.Done: case PriceTileStatus.DoneStale: if (cell.GetType ().Equals (Type.GetType ("Adaptive.ReactiveTrader.Client.iOSTab.PriceTileTradeAffirmationViewCell", false))) { bAppropriateCell = true; } break; case PriceTileStatus.Streaming: case PriceTileStatus.Executing: if (cell.GetType ().Equals (Type.GetType ("Adaptive.ReactiveTrader.Client.iOSTab.PriceTileViewCell", false))) { bAppropriateCell = true; } break; case PriceTileStatus.Stale: if (cell.GetType ().Equals (Type.GetType ("Adaptive.ReactiveTrader.Client.iOSTab.PriceTileErrorViewCell", false))) { bAppropriateCell = true; } break; } // TODO: Batch the updates up, to only call ReloadRows once per main event loop loop? if (bAppropriateCell) { // System.Console.WriteLine ("Cell is APPROPRIATE", indexOfItem); cell.UpdateFrom (itemModel); } else { // TODO: If the cell is of the wrong type, reload the row instead. TableView.ReloadRows ( new [] { NSIndexPath.Create (0, indexOfItem) }, UITableViewRowAnimation.None); } } } }
public void UpdateFrom (PriceTileModel model) { _priceTileModel = model; var tradeDone = model.TradeDone; if (tradeDone == null) { return; } UpdateFrom (tradeDone); DoneButton.Hidden = false; }
private void OnCurrencyPairUpdates (IEnumerable<ICurrencyPairUpdate> updates) { foreach (var update in updates) { if (update.UpdateType == Adaptive.ReactiveTrader.Client.Domain.Models.UpdateType.Add) { var tileModel = new PriceTileModel (update.CurrencyPair, this._reactiveTrader.PriceLatencyRecorder, this._concurrencyService); _activeCurrencyPairs.Add (tileModel); } else { // todo handle removal of price tile } } }
public void UpdateFrom(PriceTileModel model) { _priceTileModel = model; var tradeDone = model.TradeDone; if (tradeDone == null) { return; } UpdateFrom(tradeDone); DoneButton.Hidden = false; }
public void UpdateFrom (PriceTileModel model) { _priceTileModel = model; this.CurrencyPair.Text = model.Symbol; }
public void UpdateFrom(PriceTileModel model) { this.CurrencyPair.Text = model.Symbol; }
public void UpdateFrom (PriceTileModel model) { _priceTileModel = model; // // Trading enabled UI may change based on executing vs not executing... // DecorateWithTradingEnabled (UserModel.Instance.OneTouchTradingEnabled); this.CurrencyPair.Text = model.Symbol; SetBuySellSides (model); if (this.Notional.IsEditing) { // TODO: Determine what it really means to update the Notional via the model. // System.Console.WriteLine ("Notional {0} is mid edit, so not updating to {1}", this.Notional.Text, model.Notional); } else { this.Notional.Text = Styles.FormatNotional (model.Notional, true); } // Price and spread... this.LeftSideNumber.Text = model.LeftSideNumber; this.LeftSideBigNumber.Text = model.LeftSideBigNumber; this.LeftSidePips.Text = model.LeftSidePips; this.RightSideNumber.Text = model.RightSideNumber; this.RightSideBigNumber.Text = model.RightSideBigNumber; this.RightSidePips.Text = model.RightSidePips; this.Spread.Text = model.Spread; // Movement... switch (model.Movement) { case PriceMovement.Down: this.PriceMovementDown.Hidden = false; this.PriceMovementUp.Hidden = true; break; case PriceMovement.Up: this.PriceMovementDown.Hidden = true; this.PriceMovementUp.Hidden = false; break; case PriceMovement.None: this.PriceMovementDown.Hidden = true; this.PriceMovementUp.Hidden = true; break; } // Other status... this.Executing.Hidden = (model.Status != PriceTileStatus.Executing); // TODO: Update this when date/time changes, not just when the model updates! this.SpotDate.Text = "SP. " + DateTime.Now.AddDays(2).ToString ("dd MMM"); model.Rendered (); }
void SetBuySellSides (PriceTileModel model) { if (model.NotionalCcy == model.Base) { this.LeftSideAction.Text = "SELL"; this.RightSideAction.Text = "BUY"; } else { this.LeftSideAction.Text = "BUY"; this.RightSideAction.Text = "SELL"; } this.NotionalCCY.SetTitle (model.NotionalCcy, UIControlState.Normal); this.NotionalCCY.SetTitle (model.NotionalCcy, UIControlState.Disabled); this.NotionalCCY.SetTitle (model.NotionalCcy, UIControlState.Selected); // Show what it WILL be, when user is mid tap... this.NotionalCCY.SetTitle ((model.NotionalCcy == model.Base)?model.Counter:model.Base, UIControlState.Highlighted); }
void SwapBuySellSides(PriceTileModel model) { if (model.NotionalCcy == model.Base) { model.NotionalCcy = model.Counter; } else { model.NotionalCcy = model.Base; } }