public static string AmountAsString(DebtCalculation calc, decimal amount) { var numberFormat = (NumberFormatInfo)Thread.CurrentThread.CurrentCulture.NumberFormat.Clone(); numberFormat.CurrencySymbol = GetCurrencySymbol(calc); return amount.ToString("C", numberFormat); }
// TODO: Find better way of doing this on WP8 private static string GetCurrencySymbol(DebtCalculation calc) { switch (calc.Currency) { case "EUR": return "€"; case "USD": return "$"; case "GPD": return "£"; case "SEK": return "kr"; default: return calc.Currency; } }
private void ShowParticipants(DebtCalculation calc) { var i = 1; foreach (var participant in calc.Participants) { ParticipantsGrid.RowDefinitions.Add(new RowDefinition()); if (i % 2 == 1) { var background = new Grid { Background = (SolidColorBrush) Application.Current.Resources["SujutLightGreenBrush"] }; Grid.SetRow(background, i); Grid.SetColumn(background, 0); Grid.SetColumnSpan(background, 3); ParticipantsGrid.Children.Add(background); } var name = new TextBlock { Text = participant.User.FullName() }; Grid.SetRow(name, i); Grid.SetColumn(name, 0); ParticipantsGrid.Children.Add(name); var addedExpenses = new TextBlock { Text = participant.DoneAddingExpenses ? "✓" : " ", HorizontalAlignment = HorizontalAlignment.Center }; Grid.SetRow(addedExpenses, i); Grid.SetColumn(addedExpenses, 1); ParticipantsGrid.Children.Add(addedExpenses); var hasPaid = new TextBlock { Text = participant.HasPaid ? "✓" : " ", HorizontalAlignment = HorizontalAlignment.Center }; Grid.SetRow(hasPaid, i); Grid.SetColumn(hasPaid, 2); ParticipantsGrid.Children.Add(hasPaid); i++; } }
private void ShowExpenses(DebtCalculation calc) { var totalParticipants = calc.Participants.Count(); var i = 1; foreach (var expense in calc.Expenses) { ExpensesGrid.RowDefinitions.Add(new RowDefinition()); ExpensesGrid.RowDefinitions.Add(new RowDefinition()); if ((i/2) % 2 == 0) { var background = new Grid { Background = (SolidColorBrush)Application.Current.Resources["SujutLightGreenBrush"] }; Grid.SetRow(background, i); Grid.SetColumn(background, 0); Grid.SetColumnSpan(background, 3); ExpensesGrid.Children.Add(background); var background2 = new Grid { Background = (SolidColorBrush)Application.Current.Resources["SujutLightGreenBrush"] }; Grid.SetRow(background2, i + 1); Grid.SetColumn(background2, 0); Grid.SetColumnSpan(background2, 3); ExpensesGrid.Children.Add(background2); } var payer = calc.Participants.Single(p => p.User.Id == expense.Payer.Id); var payerText = new TextBlock { Text = payer.User.FullName() }; Grid.SetRow(payerText, i); Grid.SetColumn(payerText, 0); ExpensesGrid.Children.Add(payerText); var amount = new TextBlock { Text = Utils.AmountAsString(calc, expense.Amount), HorizontalAlignment = HorizontalAlignment.Center }; Grid.SetRow(amount, i); Grid.SetColumn(amount, 1); ExpensesGrid.Children.Add(amount); var participants = new TextBlock { Text = expense.Debtors.Count() + "/" + totalParticipants, HorizontalAlignment = HorizontalAlignment.Center }; Grid.SetRow(participants, i); Grid.SetColumn(participants, 2); ExpensesGrid.Children.Add(participants); var description = new TextBlock { Text = expense.Description, TextWrapping = new TextWrapping()}; Grid.SetRow(description, i+1); Grid.SetColumn(description, 0); Grid.SetColumnSpan(description, 3); ExpensesGrid.Children.Add(description); i += 2; } }
private void ShowDebts(DebtCalculation calc) { var i = 0; foreach (var debt in calc.Debts) { var grid = new Grid(); grid.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto }); grid.ColumnDefinitions.Add(new ColumnDefinition()); grid.RowDefinitions.Add(new RowDefinition()); grid.RowDefinitions.Add(new RowDefinition()); grid.RowDefinitions.Add(new RowDefinition()); grid.RowDefinitions.Add(new RowDefinition()); if (i % 2 == 0) { grid.Background = (SolidColorBrush)Application.Current.Resources["SujutLightGreenBrush"]; } var debtorHeader = new TextBlock { Text = AppResources.From, FontWeight = FontWeights.Bold }; Grid.SetRow(debtorHeader, 0); Grid.SetColumn(debtorHeader, 0); grid.Children.Add(debtorHeader); var debtor = calc.Participants.Single(p => p.User.Id == debt.Debtor.Id); var debtorText = new TextBlock { Text = debtor.User.FullName(), HorizontalAlignment = HorizontalAlignment.Right }; Grid.SetRow(debtorText, 0); Grid.SetColumn(debtorText, 1); grid.Children.Add(debtorText); var creditorHeader = new TextBlock { Text = AppResources.To, FontWeight = FontWeights.Bold}; Grid.SetRow(creditorHeader, 1); Grid.SetColumn(creditorHeader, 0); grid.Children.Add(creditorHeader); var creditor = calc.Participants.Single(p => p.User.Id == debt.Creditor.Id); var creditorText = new TextBlock { Text = creditor.User.FullName(), HorizontalAlignment = HorizontalAlignment.Right }; Grid.SetRow(creditorText, 1); Grid.SetColumn(creditorText, 1); grid.Children.Add(creditorText); var amountHeader = new TextBlock { Text = AppResources.Amount, FontWeight = FontWeights.Bold }; Grid.SetRow(amountHeader, 2); Grid.SetColumn(amountHeader, 0); grid.Children.Add(amountHeader); var amount = new TextBlock { Text = Utils.AmountAsString(calc, debt.Amount), HorizontalAlignment = HorizontalAlignment.Right }; Grid.SetRow(amount, 2); Grid.SetColumn(amount, 1); grid.Children.Add(amount); var hasPaidHeader = new TextBlock { Text = AppResources.HasPaid, FontWeight = FontWeights.Bold }; Grid.SetRow(hasPaidHeader, 3); Grid.SetColumn(hasPaidHeader, 0); grid.Children.Add(hasPaidHeader); var hasPaid = new TextBlock { Text = debtor.HasPaid ? "✓" : " ", HorizontalAlignment = HorizontalAlignment.Right }; Grid.SetRow(hasPaid, 3); Grid.SetColumn(hasPaid, 1); grid.Children.Add(hasPaid); DebtsList.Children.Add(grid); i++; } }