public override void ViewDidLoad() { base.ViewDidLoad(); //Empty state button config EmptyStateButton.Layer.BorderWidth = 1; EmptyStateButton.Layer.BorderColor = Color.TimeEntriesLog.ButtonBorder.ToNativeColor().CGColor; EmptyStateButton.SetTitle(Resources.TimeEntriesLogEmptyStateButton, UIControlState.Normal); //TableView config var source = new TimeEntriesLogViewSource(TimeEntriesTableView); TimeEntriesTableView.Source = source; //Converters var visibilityConverter = new MvxVisibilityValueConverter(); var invertedVisibilityConverter = new MvxInvertedVisibilityValueConverter(); var bindingSet = this.CreateBindingSet <TimeEntriesLogViewController, TimeEntriesLogViewModel>(); //Text bindingSet.Bind(EmptyStateTextLabel).To(vm => vm.EmptyStateText); bindingSet.Bind(EmptyStateTitleLabel).To(vm => vm.EmptyStateTitle); //Time entries log bindingSet.Bind(source).To(vm => vm.TimeEntries); //Visibility bindingSet.Bind(EmptyStateView) .For(v => v.BindVisibility()) .To(vm => vm.IsEmpty) .WithConversion(visibilityConverter); bindingSet.Bind(EmptyStateButton) .For(v => v.BindVisibility()) .To(vm => vm.IsWelcome) .WithConversion(invertedVisibilityConverter); bindingSet.Bind(TimeEntriesTableView) .For(v => v.BindVisibility()) .To(vm => vm.IsEmpty) .WithConversion(invertedVisibilityConverter); bindingSet.Bind(EmptyStateImageView) .For(v => v.BindVisibility()) .To($"{nameof(TimeEntriesLogViewModel.IsEmpty)}&&!{nameof(TimeEntriesLogViewModel.IsWelcome)}") .WithConversion(visibilityConverter); bindingSet.Bind(WelcomeImageView) .For(v => v.BindVisibility()) .To($"{nameof(TimeEntriesLogViewModel.IsEmpty)}&&{nameof(TimeEntriesLogViewModel.IsWelcome)}") .WithConversion(visibilityConverter); //Commands bindingSet.Bind(source) .For(s => s.SelectionChangedCommand) .To(vm => vm.EditCommand); bindingSet.Apply(); }
public void VisibilityValueConverter_Test(bool visible, bool hide, MvxVisibility expected) { var converter = new MvxVisibilityValueConverter(); var result = converter.Convert(visible, typeof(bool), hide, CultureInfo.CurrentUICulture); Assert.Equal(expected, result); }
public override void AwakeFromNib() { base.AwakeFromNib(); ContentView.BackgroundColor = UIColor.White; DurationLabel.Font = DurationLabel.Font.GetMonospacedDigitFont(); this.DelayBind(() => { var visibilityConverter = new MvxVisibilityValueConverter(); var durationCombiner = new DurationValueCombiner(); var dateTitleConverter = new DateToTitleStringValueConverter(); var bindingSet = this.CreateBindingSet <TimeEntriesLogHeaderViewCell, TimeEntryViewModelCollection>(); //Text bindingSet.Bind(DateLabel) .To(vm => vm.Date) .WithConversion(dateTitleConverter); bindingSet.Bind(DurationLabel) .ByCombining(durationCombiner, vm => vm.TotalTime, vm => vm.DurationFormat); bindingSet.Apply(); }); }
public override void ViewDidLoad() { base.ViewDidLoad(); prepareViews(); var colorConverter = new MvxNativeColorValueConverter(); var visibilityConverter = new MvxVisibilityValueConverter(); var timeSpanConverter = new TimeSpanToDurationValueConverter(); var invertedVisibilityConverter = new MvxInvertedVisibilityValueConverter(); var bindingSet = this.CreateBindingSet <MainViewController, MainViewModel>(); //Commands bindingSet.Bind(settingsButton).To(vm => vm.OpenSettingsCommand); bindingSet.Bind(StopTimeEntryButton).To(vm => vm.StopTimeEntryCommand); bindingSet.Bind(StartTimeEntryButton).To(vm => vm.StartTimeEntryCommand); bindingSet.Bind(EditTimeEntryButton).To(vm => vm.EditTimeEntryCommand); bindingSet.Bind(MainPagedScrollView) .For(v => v.RefreshCommand) .To(vm => vm.RefreshCommand); bindingSet.Bind(CurrentTimeEntryCard) .For(v => v.BindTap()) .To(vm => vm.EditTimeEntryCommand); //Visibility bindingSet.Bind(CurrentTimeEntryCard) .For(v => v.BindVisibility()) .To(vm => vm.CurrentlyRunningTimeEntry) .WithConversion(visibilityConverter); bindingSet.Bind(StartTimeEntryButton) .For(v => v.BindVisibility()) .To(vm => vm.CurrentlyRunningTimeEntry) .WithConversion(invertedVisibilityConverter); bindingSet.Bind(SpiderBroImageView) .For(v => v.BindVisibility()) .To(vm => vm.SpiderIsVisible) .WithConversion(visibilityConverter); bindingSet.Bind(SyncIndicatorView) .For(v => v.BindVisibility()) .To(vm => vm.IsSyncing) .WithConversion(visibilityConverter); bindingSet.Bind(MainPagedScrollView) .For(v => v.IsSyncing) .To(vm => vm.IsSyncing); //Text bindingSet.Bind(CurrentTimeEntryDescriptionLabel).To(vm => vm.CurrentlyRunningTimeEntry.Description); bindingSet.Bind(CurrentTimeEntryElapsedTimeLabel) .To(vm => vm.CurrentTimeEntryElapsedTime) .WithConversion(timeSpanConverter); bindingSet.Apply(); }
public override void AwakeFromNib() { base.AwakeFromNib(); TimeLabel.Font = TimeLabel.Font.GetMonospacedDigitFont(); this.DelayBind(() => { var colorConverter = new MvxRGBValueConverter(); var visibilityConverter = new MvxVisibilityValueConverter(); var timeSpanConverter = new TimeSpanToDurationValueConverter(); var descriptionTopDistanceValueConverter = new BoolToConstantValueConverter <nfloat>(HasProjectDistance, NoProjectDistance); var bindingSet = this.CreateBindingSet <TimeEntriesLogViewCell, TimeEntryViewModel>(); //Text bindingSet.Bind(ProjectLabel).To(vm => vm.ProjectName); bindingSet.Bind(DescriptionLabel).To(vm => vm.Description); bindingSet.Bind(TimeLabel) .To(vm => vm.Duration) .WithConversion(timeSpanConverter); //Color bindingSet.Bind(ProjectLabel) .For(v => v.TextColor) .To(vm => vm.ProjectColor) .WithConversion(colorConverter); bindingSet.Bind(ProjectDotView) .For(v => v.BackgroundColor) .To(vm => vm.ProjectColor) .WithConversion(colorConverter); //Visibility bindingSet.Bind(DescriptionTopDistanceConstraint) .For(v => v.Constant) .To(vm => vm.HasProject) .WithConversion(descriptionTopDistanceValueConverter); bindingSet.Bind(ProjectLabel) .For(v => v.BindVisibility()) .To(vm => vm.HasProject) .WithConversion(visibilityConverter); bindingSet.Bind(ProjectDotView) .For(v => v.BindVisibility()) .To(vm => vm.HasProject) .WithConversion(visibilityConverter); bindingSet.Bind(TaskLabel) .For(v => v.BindVisibility()) .To(vm => vm.HasProject) .WithConversion(visibilityConverter); bindingSet.Apply(); }); }
public override void AwakeFromNib() { base.AwakeFromNib(); ContentView.BackgroundColor = UIColor.White; this.DelayBind(() => { var colorConverter = new MvxRGBValueConverter(); var visibilityConverter = new MvxVisibilityValueConverter(); var timeSpanConverter = new TimeSpanToDurationValueConverter(); var descriptionTopDistanceValueConverter = new BoolToConstantValueConverter <nfloat>(HasProjectDistance, NoProjectDistance); var bindingSet = this.CreateBindingSet <SuggestionsViewCell, Suggestion>(); //Text bindingSet.Bind(ProjectLabel).To(vm => vm.ProjectName); bindingSet.Bind(DescriptionLabel).To(vm => vm.Description); //Color bindingSet.Bind(ProjectLabel) .For(v => v.TextColor) .To(vm => vm.ProjectColor) .WithConversion(colorConverter); bindingSet.Bind(ProjectDotView) .For(v => v.BackgroundColor) .To(vm => vm.ProjectColor) .WithConversion(colorConverter); //Visibility bindingSet.Bind(DescriptionTopDistanceConstraint) .For(v => v.Constant) .To(vm => vm.HasProject) .WithConversion(descriptionTopDistanceValueConverter); bindingSet.Bind(ProjectLabel) .For(v => v.BindVisibility()) .To(vm => vm.HasProject) .WithConversion(visibilityConverter); bindingSet.Bind(ProjectDotView) .For(v => v.BindVisibility()) .To(vm => vm.HasProject) .WithConversion(visibilityConverter); bindingSet.Bind(TaskLabel) .For(v => v.BindVisibility()) .To(vm => vm.HasProject) .WithConversion(visibilityConverter); bindingSet.Apply(); }); }
public override void ViewDidLoad() { base.ViewDidLoad(); //TableView config var source = new TimeEntriesLogViewSource(TimeEntriesTableView); TimeEntriesTableView.Source = source; //Converters var visibilityConverter = new MvxVisibilityValueConverter(); var invertedVisibilityConverter = new MvxInvertedVisibilityValueConverter(); var bindingSet = this.CreateBindingSet <TimeEntriesLogViewController, TimeEntriesLogViewModel>(); //Text bindingSet.Bind(EmptyStateTextLabel).To(vm => vm.EmptyStateText); bindingSet.Bind(EmptyStateTitleLabel).To(vm => vm.EmptyStateTitle); //Time entries log bindingSet.Bind(source).To(vm => vm.TimeEntries); //Visibility bindingSet.Bind(EmptyStateView) .For(v => v.BindVisibility()) .To(vm => vm.IsEmpty) .WithConversion(visibilityConverter); bindingSet.Bind(TimeEntriesTableView) .For(v => v.BindVisibility()) .To(vm => vm.IsEmpty) .WithConversion(invertedVisibilityConverter); bindingSet.Bind(EmptyStateImageView) .For(v => v.BindVisibility()) .To($"{nameof(TimeEntriesLogViewModel.IsEmpty)}&&!{nameof(TimeEntriesLogViewModel.IsWelcome)}") .WithConversion(visibilityConverter); bindingSet.Bind(WelcomeImageView) .For(v => v.BindVisibility()) .To($"{nameof(TimeEntriesLogViewModel.IsEmpty)}&&{nameof(TimeEntriesLogViewModel.IsWelcome)}") .WithConversion(visibilityConverter); //Commands bindingSet.Bind(source) .For(s => s.SelectionChangedCommand) .To(vm => vm.EditCommand); bindingSet.Bind(source) .For(v => v.ContinueTimeEntryCommand) .To(vm => vm.ContinueTimeEntryCommand); bindingSet.Apply(); }
public override void AwakeFromNib() { base.AwakeFromNib(); ContentView.BackgroundColor = UIColor.White; FadeView.Layer.AddSublayer(new CAGradientLayer { Colors = new[] { UIColor.White.ColorWithAlpha(0.0f).CGColor, UIColor.White.CGColor }, Locations = new[] { new NSNumber(0.0f), new NSNumber(0.2f) }, StartPoint = new CGPoint(0.0, 0.5), EndPoint = new CGPoint(1.0, 0.5), Frame = FadeView.Bounds }); StartButton.TouchUpInside += onStartButtonTap; this.DelayBind(() => { var colorConverter = new MvxRGBValueConverter(); var visibilityConverter = new MvxVisibilityValueConverter(); var timeSpanConverter = new TimeSpanToDurationValueConverter(); var descriptionTopDistanceValueConverter = new BoolToConstantValueConverter <nfloat>(HasProjectDistance, NoProjectDistance); var projectTaskClientCombiner = new ProjectTaskClientValueCombiner( ProjectTaskClientLabel.Font.CapHeight, Color.Suggestions.ClientColor.ToNativeColor(), true ); var bindingSet = this.CreateBindingSet <SuggestionsViewCell, Suggestion>(); //Text bindingSet.Bind(DescriptionLabel).To(vm => vm.Description); bindingSet.Bind(ProjectTaskClientLabel) .For(v => v.AttributedText) .ByCombining(projectTaskClientCombiner, v => v.ProjectName, v => v.TaskName, v => v.ClientName, v => v.ProjectColor); //Visibility bindingSet.Bind(DescriptionTopDistanceConstraint) .For(v => v.Constant) .To(vm => vm.HasProject) .WithConversion(descriptionTopDistanceValueConverter); bindingSet.Bind(ProjectTaskClientLabel) .For(v => v.BindVisibility()) .To(vm => vm.HasProject) .WithConversion(visibilityConverter); bindingSet.Apply(); }); }
public override void AwakeFromNib() { base.AwakeFromNib(); prepareViews(); this.DelayBind(() => { var backgroundColorConverter = new BoolToConstantValueConverter <UIColor>( Color.Calendar.SelectedDayBackgoundColor.ToNativeColor(), Color.Common.Transparent.ToNativeColor()); var todayVisibilityConverter = new MvxVisibilityValueConverter(); var bindingSet = this.CreateBindingSet <ReportsCalendarViewCell, CalendarDayViewModel>(); //Text bindingSet.Bind(Text).To(vm => vm.Day); //Color bindingSet.Bind(Text) .For(v => v.TextColor) .ByCombining(new CalendarCellTextColorValueCombiner(), v => v.IsInCurrentMonth, v => v.Selected); bindingSet.Bind(BackgroundView) .For(v => v.BackgroundColor) .To(vm => vm.Selected) .WithConversion(backgroundColorConverter); //Rounding bindingSet.Bind(BackgroundView) .For(v => v.RoundLeft) .To(vm => vm.IsStartOfSelectedPeriod); bindingSet.Bind(BackgroundView) .For(v => v.RoundRight) .To(vm => vm.IsEndOfSelectedPeriod); //Today bindingSet.Bind(TodayBackgroundView) .For(v => v.BindVisibility()) .To(vm => vm.IsToday) .WithConversion(todayVisibilityConverter); bindingSet.Apply(); }); AddGestureRecognizer(new UITapGestureRecognizer( () => CellTappedCommand?.Execute((CalendarDayViewModel)DataContext))); }
public override void AwakeFromNib() { base.AwakeFromNib(); FadeView.FadeRight = true; this.DelayBind(() => { var colorConverter = new MvxRGBValueConverter(); var durationCombiner = new DurationValueCombiner(); var visibilityConverter = new MvxVisibilityValueConverter(); var bindingSet = this.CreateBindingSet <ReportsLegendViewCell, ChartSegment>(); ProjectLabel.SetKerning(-0.2); ClientLabel.SetKerning(-0.2); TotalTimeLabel.SetKerning(-0.2); PercentageLabel.SetKerning(-0.2); //Text bindingSet.Bind(ProjectLabel).To(vm => vm.ProjectName); bindingSet.Bind(ClientLabel).To(vm => vm.ClientName); bindingSet.Bind(PercentageLabel) .For(v => v.Text) .ByCombining("Format", "'{0:0.00}%'", nameof(ChartSegment.Percentage)); bindingSet.Bind(TotalTimeLabel) .ByCombining(durationCombiner, vm => vm.TrackedTime, vm => vm.DurationFormat); bindingSet.Bind(ClientLabel) .For(v => v.BindVisibility()) .To(vm => vm.HasClient) .WithConversion(visibilityConverter); // Color bindingSet.Bind(ProjectLabel) .For(v => v.TextColor) .To(vm => vm.Color) .WithConversion(colorConverter); bindingSet.Bind(CircleView) .For(v => v.BackgroundColor) .To(vm => vm.Color) .WithConversion(colorConverter); bindingSet.Apply(); }); }
public override void ViewDidLoad() { base.ViewDidLoad(); CurrentTimeEntryCard.Layer.BorderWidth = 1; CurrentTimeEntryCard.Layer.CornerRadius = 8; CurrentTimeEntryCard.Layer.BorderColor = Color.TimeEntriesLog.ButtonBorder.ToNativeColor().CGColor; CurrentTimeEntryElapsedTimeLabel.Font = CurrentTimeEntryElapsedTimeLabel.Font.GetMonospacedDigitFont(); StartTimeEntryButton.Transform = CGAffineTransform.MakeScale(0.01f, 0.01f); reportsButton.SetImage(UIImage.FromBundle("icReports"), UIControlState.Normal); settingsButton.SetImage(UIImage.FromBundle("icSettings"), UIControlState.Normal); var visibilityConverter = new MvxVisibilityValueConverter(); var timeSpanConverter = new TimeSpanToDurationValueConverter(); var invertedVisibilityConverter = new MvxInvertedVisibilityValueConverter(); var bindingSet = this.CreateBindingSet <MainViewController, MainViewModel>(); //Commands bindingSet.Bind(settingsButton).To(vm => vm.OpenSettingsCommand); bindingSet.Bind(StopTimeEntryButton).To(vm => vm.StopTimeEntryCommand); bindingSet.Bind(StartTimeEntryButton).To(vm => vm.StartTimeEntryCommand); bindingSet.Bind(EditTimeEntryButton).To(vm => vm.EditTimeEntryCommand); bindingSet.Bind(CurrentTimeEntryCard) .For(v => v.BindTap()) .To(vm => vm.EditTimeEntryCommand); //Visibility bindingSet.Bind(CurrentTimeEntryCard) .For(v => v.BindVisibility()) .To(vm => vm.CurrentlyRunningTimeEntry) .WithConversion(visibilityConverter); bindingSet.Bind(StartTimeEntryButton) .For(v => v.BindVisibility()) .To(vm => vm.CurrentlyRunningTimeEntry) .WithConversion(invertedVisibilityConverter); //Text bindingSet.Bind(CurrentTimeEntryDescriptionLabel).To(vm => vm.CurrentlyRunningTimeEntry.Description); bindingSet.Bind(CurrentTimeEntryElapsedTimeLabel) .To(vm => vm.CurrentTimeEntryElapsedTime) .WithConversion(timeSpanConverter); bindingSet.Apply(); }
public override void AwakeFromNib() { base.AwakeFromNib(); ContentView.BackgroundColor = UIColor.White; FadeView.FadeRight = true; StartButton.TouchUpInside += onStartButtonTap; this.DelayBind(() => { var colorConverter = new MvxRGBValueConverter(); var visibilityConverter = new MvxVisibilityValueConverter(); var timeSpanConverter = new TimeSpanToDurationValueConverter(); var descriptionTopDistanceValueConverter = new BoolToConstantValueConverter <nfloat>(HasProjectDistance, NoProjectDistance); var projectTaskClientCombiner = new ProjectTaskClientValueCombiner( ProjectTaskClientLabel.Font.CapHeight, Color.Suggestions.ClientColor.ToNativeColor(), true ); var bindingSet = this.CreateBindingSet <SuggestionsViewCell, Suggestion>(); //Text bindingSet.Bind(DescriptionLabel).To(vm => vm.Description); bindingSet.Bind(ProjectTaskClientLabel) .For(v => v.AttributedText) .ByCombining(projectTaskClientCombiner, v => v.ProjectName, v => v.TaskName, v => v.ClientName, v => v.ProjectColor); //Visibility bindingSet.Bind(DescriptionTopDistanceConstraint) .For(v => v.Constant) .To(vm => vm.HasProject) .WithConversion(descriptionTopDistanceValueConverter); bindingSet.Bind(ProjectTaskClientLabel) .For(v => v.BindVisibility()) .To(vm => vm.HasProject) .WithConversion(visibilityConverter); bindingSet.Apply(); }); }
public override void ViewDidLoad() { base.ViewDidLoad(); //Empty state button config EmptyStateButton.Layer.BorderWidth = 1; EmptyStateButton.Layer.BorderColor = Color.TimeEntriesLog.ButtonBorder.ToNativeColor().CGColor; EmptyStateButton.SetTitle(Resources.TimeEntriesLogEmptyStateButton, UIControlState.Normal); //TableView config var source = new GroupBindingTableViewSource <DateTime, ITimeEntry>( TimeEntriesTableView, nameof(TimeEntriesLogHeaderViewCell), nameof(TimeEntriesLogViewCell) ); TimeEntriesTableView.Source = source; //Converters var visibilityConverter = new MvxVisibilityValueConverter(); var invertedVisibilityConverter = new MvxInvertedVisibilityValueConverter(); var bindingSet = this.CreateBindingSet <TimeEntriesLogViewController, TimeEntriesLogViewModel>(); //Text bindingSet.Bind(EmptyStateTextLabel).To(vm => vm.EmptyStateText); bindingSet.Bind(EmptyStateTitleLabel).To(vm => vm.EmptyStateTitle); //Time entries log bindingSet.Bind(source).To(vm => vm.TimeEntries); //Visibility bindingSet.Bind(EmptyStateView) .For(v => v.BindVisibility()) .To(vm => vm.IsEmpty) .WithConversion(visibilityConverter); bindingSet.Bind(EmptyStateButton) .For(v => v.BindVisibility()) .To(vm => vm.IsWelcome) .WithConversion(invertedVisibilityConverter); bindingSet.Bind(TimeEntriesTableView) .For(v => v.BindVisibility()) .To(vm => vm.IsEmpty) .WithConversion(invertedVisibilityConverter); bindingSet.Apply(); }
public override void AwakeFromNib() { base.AwakeFromNib(); ClientNameLabel.LineBreakMode = UILineBreakMode.TailTruncation; ProjectNameLabel.LineBreakMode = UILineBreakMode.TailTruncation; this.DelayBind(() => { var colorConverter = new MvxRGBValueConverter(); var taskCountConverter = new TaskCountConverter(); var visibilityConverter = new MvxVisibilityValueConverter(); var bindingSet = this.CreateBindingSet <StartTimeEntryProjectsViewCell, ProjectSuggestionViewModel>(); //Text bindingSet.Bind(ProjectNameLabel).To(vm => vm.ProjectName); bindingSet.Bind(ClientNameLabel).To(vm => vm.ClientName); bindingSet.Bind(AmountOfTasksLabel) .To(vm => vm.NumberOfTasks) .WithConversion(taskCountConverter); //Color bindingSet.Bind(ProjectNameLabel) .For(v => v.TextColor) .To(vm => vm.ProjectColor) .WithConversion(colorConverter); bindingSet.Bind(ProjectDotView) .For(v => v.BackgroundColor) .To(vm => vm.ProjectColor) .WithConversion(colorConverter); //Visibility bindingSet.Bind(ToggleTaskImage) .For(v => v.BindVisibility()) .To(vm => vm.NumberOfTasks) .WithConversion(visibilityConverter); bindingSet.Apply(); }); }
public override void AwakeFromNib() { base.AwakeFromNib(); this.DelayBind(() => { var visibilityConverter = new MvxVisibilityValueConverter(); var bindingSet = this.CreateBindingSet <CountryViewCell, SelectableCountryViewModel>(); bindingSet.Bind(NameLabel).To(vm => vm.Country.Name); bindingSet.Bind(CheckBoxImageView) .For(v => v.BindVisibility()) .To(vm => vm.Selected) .WithConversion(visibilityConverter); bindingSet.Apply(); }); }
public override void AwakeFromNib() { base.AwakeFromNib(); this.DelayBind(() => { var visibilityConverter = new MvxVisibilityValueConverter(); var descriptionTopDistanceValueConverter = new BoolToConstantValueConverter <nfloat>(HasProjectDistance, NoProjectDistance); var projectTaskClientCombiner = new ProjectTaskClientValueCombiner( ProjectLabel.Font.CapHeight, Color.Suggestions.ClientColor.ToNativeColor(), true ); var bindingSet = this.CreateBindingSet <StartTimeEntryViewCell, TimeEntrySuggestion>(); //Text bindingSet.Bind(DescriptionLabel).To(vm => vm.Description); bindingSet.Bind(ProjectLabel) .For(v => v.AttributedText) .ByCombining(projectTaskClientCombiner, v => v.ProjectName, v => v.TaskName, v => v.ClientName, v => v.ProjectColor); //Visibility bindingSet.Bind(DescriptionTopDistanceConstraint) .For(v => v.Constant) .To(vm => vm.HasProject) .WithConversion(descriptionTopDistanceValueConverter); bindingSet.Bind(ProjectLabel) .For(v => v.BindVisibility()) .To(vm => vm.HasProject) .WithConversion(visibilityConverter); bindingSet.Apply(); }); }
public override void ViewDidLoad() { base.ViewDidLoad(); prepareViews(); Title = ViewModel.Title; var inverseBoolConverter = new BoolToConstantValueConverter <bool>(false, true); var visibilityConverter = new MvxVisibilityValueConverter(); var durationFormatToStringConverter = new DurationFormatToStringValueConverter(); var bindingSet = this.CreateBindingSet <SettingsViewController, SettingsViewModel>(); // Text bindingSet.Bind(EmailLabel).To(vm => vm.Email); bindingSet.Bind(WorkspaceLabel).To(vm => vm.WorkspaceName); bindingSet.Bind(DateFormatLabel).To(vm => vm.DateFormat.Localized); bindingSet.Bind(DurationFormatLabel) .To(vm => vm.DurationFormat) .WithConversion(durationFormatToStringConverter); bindingSet.Bind(BeginningOfWeekLabel).To(vm => vm.BeginningOfWeek); bindingSet.Bind(VersionLabel).To(vm => vm.Version); // Commands bindingSet.Bind(LogoutButton).To(vm => vm.LogoutCommand); bindingSet.Bind(EmailView) .For(v => v.BindTap()) .To(vm => vm.EditProfileCommand); bindingSet.Bind(DateFormatView) .For(v => v.BindTap()) .To(vm => vm.SelectDateFormatCommand); bindingSet.Bind(DurationFormatView) .For(verticalSpacing => verticalSpacing.BindTap()) .To(vm => vm.SelectDurationFormatCommand); bindingSet.Bind(WorkspaceView) .For(v => v.BindTap()) .To(vm => vm.PickWorkspaceCommand); bindingSet.Bind(ManualModeView) .For(v => v.BindTap()) .To(vm => vm.ToggleManualModeCommand); bindingSet.Bind(TwentyFourHourClockView) .For(v => v.BindTap()) .To(vm => vm.ToggleUseTwentyFourHourClockCommand); bindingSet.Bind(TwentyFourHourClockSwitch) .For(v => v.BindValueChanged()) .To(vm => vm.ToggleUseTwentyFourHourClockCommand); bindingSet.Bind(BeginningOfWeekView) .For(v => v.BindTap()) .To(vm => vm.SelectBeginningOfWeekCommand); bindingSet.Bind(FeedbackView) .For(v => v.BindTap()) .To(vm => vm.SubmitFeedbackCommand); bindingSet.Bind(AboutView) .For(v => v.BindTap()) .To(vm => vm.AboutCommand); // Logout process bindingSet.Bind(LogoutButton) .For(btn => btn.Enabled) .To(vm => vm.IsLoggingOut) .WithConversion(inverseBoolConverter); bindingSet.Bind(NavigationItem) .For(nav => nav.BindHidesBackButton()) .To(vm => vm.IsLoggingOut); bindingSet.Bind(SyncingView) .For(view => view.BindVisibility()) .To(vm => vm.IsRunningSync) .WithConversion(visibilityConverter); bindingSet.Bind(SyncedView) .For(view => view.BindVisibility()) .To(vm => vm.IsSynced) .WithConversion(visibilityConverter); bindingSet.Bind(LoggingOutView) .For(view => view.BindVisibility()) .To(vm => vm.IsLoggingOut) .WithConversion(visibilityConverter); // Switches bindingSet.Bind(TwentyFourHourClockSwitch) .For(v => v.BindAnimatedOn()) .To(vm => vm.UseTwentyFourHourClock); bindingSet.Bind(ManualModeSwitch) .For(v => v.BindAnimatedOn()) .To(vm => vm.IsManualModeEnabled); bindingSet.Apply(); willEnterForegroundNotification = UIApplication.Notifications.ObserveWillEnterForeground((sender, e) => startAnimations()); }
public override void AwakeFromNib() { base.AwakeFromNib(); FadeView.FadeRight = true; TimeLabel.Font = TimeLabel.Font.GetMonospacedDigitFont(); ContinueButton.TouchUpInside += onContinueButtonTap; this.DelayBind(() => { var colorConverter = new MvxRGBValueConverter(); var visibilityConverter = new MvxVisibilityValueConverter(); var timeSpanConverter = new TimeSpanToDurationValueConverter(); var invertedVisibilityConverter = new MvxInvertedVisibilityValueConverter(); var projectTaskClientCombiner = new ProjectTaskClientValueCombiner( ProjectTaskClientLabel.Font.CapHeight, Color.TimeEntriesLog.ClientColor.ToNativeColor(), true ); var descriptionTopDistanceValueConverter = new BoolToConstantValueConverter <nfloat>(hasProjectDistance, noProjectDistance); var bindingSet = this.CreateBindingSet <TimeEntriesLogViewCell, TimeEntryViewModel>(); //Text bindingSet.Bind(DescriptionLabel).To(vm => vm.Description); bindingSet.Bind(ProjectTaskClientLabel) .For(v => v.AttributedText) .ByCombining(projectTaskClientCombiner, v => v.ProjectName, v => v.TaskName, v => v.ClientName, v => v.ProjectColor); bindingSet.Bind(TimeLabel) .To(vm => vm.Duration) .WithConversion(timeSpanConverter); //Visibility bindingSet.Bind(DescriptionTopDistanceConstraint) .For(v => v.Constant) .To(vm => vm.HasProject) .WithConversion(descriptionTopDistanceValueConverter); bindingSet.Bind(ProjectTaskClientLabel) .For(v => v.BindVisibility()) .To(vm => vm.HasProject) .WithConversion(visibilityConverter); bindingSet.Bind(AddDescriptionLabel) .For(v => v.BindVisibility()) .To(vm => vm.HasDescription) .WithConversion(invertedVisibilityConverter); bindingSet.Bind(AddDescriptionTopDistanceConstraint) .For(v => v.Constant) .To(vm => vm.HasProject) .WithConversion(descriptionTopDistanceValueConverter); bindingSet.Bind(SyncErrorImageView) .For(v => v.BindVisibility()) .To(vm => vm.CanSync) .WithConversion(invertedVisibilityConverter); bindingSet.Bind(UnsyncedImageView) .For(v => v.BindVisibility()) .To(vm => vm.NeedsSync) .WithConversion(visibilityConverter); bindingSet.Bind(ContinueButton) .For(v => v.BindVisibility()) .To(vm => vm.CanSync) .WithConversion(visibilityConverter); bindingSet.Bind(ContinueImageView) .For(v => v.BindVisibility()) .To(vm => vm.CanSync) .WithConversion(visibilityConverter); bindingSet.Apply(); }); }
public override void ViewDidLoad() { base.ViewDidLoad(); prepareViews(); var colorConverter = new MvxNativeColorValueConverter(); var visibilityConverter = new MvxVisibilityValueConverter(); var timeSpanConverter = new TimeSpanToDurationValueConverter(); var invertedVisibilityConverter = new MvxInvertedVisibilityValueConverter(); var projectTaskClientCombiner = new ProjectTaskClientValueCombiner( CurrentTimeEntryProjectTaskClientLabel.Font.CapHeight, Color.Main.CurrentTimeEntryClientColor.ToNativeColor(), true ); var bindingSet = this.CreateBindingSet <MainViewController, MainViewModel>(); //Commands bindingSet.Bind(settingsButton).To(vm => vm.OpenSettingsCommand); bindingSet.Bind(StopTimeEntryButton).To(vm => vm.StopTimeEntryCommand); bindingSet.Bind(StartTimeEntryButton).To(vm => vm.StartTimeEntryCommand); bindingSet.Bind(EditTimeEntryButton).To(vm => vm.EditTimeEntryCommand); bindingSet.Bind(MainPagedScrollView) .For(v => v.RefreshCommand) .To(vm => vm.RefreshCommand); bindingSet.Bind(CurrentTimeEntryCard) .For(v => v.BindTap()) .To(vm => vm.EditTimeEntryCommand); //Visibility bindingSet.Bind(CurrentTimeEntryCard) .For(v => v.BindVisibility()) .To(vm => vm.HasCurrentTimeEntry) .WithConversion(visibilityConverter); bindingSet.Bind(StartTimeEntryButton) .For(v => v.BindVisibility()) .To(vm => vm.HasCurrentTimeEntry) .WithConversion(invertedVisibilityConverter); bindingSet.Bind(SpiderBroImageView) .For(v => v.BindVisibility()) .To(vm => vm.SpiderIsVisible) .WithConversion(visibilityConverter); bindingSet.Bind(SpiderHinge) .For(v => v.BindVisibility()) .To(vm => vm.SpiderIsVisible) .WithConversion(visibilityConverter); bindingSet.Bind(SyncIndicatorView) .For(v => v.BindVisibility()) .To(vm => vm.IsSyncing) .WithConversion(visibilityConverter); bindingSet.Bind(MainPagedScrollView) .For(v => v.IsSyncing) .To(vm => vm.IsSyncing); //Text bindingSet.Bind(CurrentTimeEntryDescriptionLabel).To(vm => vm.CurrentTimeEntryDescription); bindingSet.Bind(CurrentTimeEntryElapsedTimeLabel) .To(vm => vm.CurrentTimeEntryElapsedTime) .WithConversion(timeSpanConverter); bindingSet.Bind(CurrentTimeEntryProjectTaskClientLabel) .For(v => v.AttributedText) .ByCombining(projectTaskClientCombiner, v => v.CurrentTimeEntryProject, v => v.CurrentTimeEntryTask, v => v.CurrentTimeEntryClient, v => v.CurrentTimeEntryProjectColor); bindingSet.Apply(); }
public override void ViewDidLoad() { base.ViewDidLoad(); prepareViews(); Title = ViewModel.Title; var inverseBoolConverter = new BoolToConstantValueConverter <bool>(false, true); var visibilityConverter = new MvxVisibilityValueConverter(); var bindingSet = this.CreateBindingSet <SettingsViewController, SettingsViewModel>(); // Text bindingSet.Bind(EmailLabel).To(vm => vm.Email); bindingSet.Bind(VersionLabel).To(vm => vm.Version); bindingSet.Bind(PlanLabel).To(vm => vm.CurrentPlan); bindingSet.Bind(WorkspaceLabel).To(vm => vm.WorkspaceName); // Commands bindingSet.Bind(LogoutButton).To(vm => vm.LogoutCommand); bindingSet.Bind(EmailView) .For(v => v.BindTap()) .To(vm => vm.EditProfileCommand); bindingSet.Bind(WorkspaceView) .For(v => v.BindTap()) .To(vm => vm.EditWorkspaceCommand); bindingSet.Bind(SubscriptionView) .For(v => v.BindTap()) .To(vm => vm.EditSubscriptionCommand); bindingSet.Bind(TwentyFourHourClockView) .For(v => v.BindTap()) .To(vm => vm.ToggleUseTwentyFourHourClockCommand); bindingSet.Bind(AddMobileTagView) .For(v => v.BindTap()) .To(vm => vm.ToggleAddMobileTagCommand); bindingSet.Bind(FeedbackView) .For(v => v.BindTap()) .To(vm => vm.SubmitFeedbackCommand); bindingSet.Bind(RateView) .For(v => v.BindTap()) .To(vm => vm.RateCommand); bindingSet.Bind(UpdateView) .For(v => v.BindTap()) .To(vm => vm.UpdateCommand); bindingSet.Bind(HelpView) .For(v => v.BindTap()) .To(vm => vm.HelpCommand); // Logout process bindingSet.Bind(LogoutButton) .For(btn => btn.Enabled) .To(vm => vm.IsLoggingOut) .WithConversion(inverseBoolConverter); bindingSet.Bind(NavigationItem) .For(nav => nav.BindHidesBackButton()) .To(vm => vm.IsLoggingOut); bindingSet.Bind(SyncingView) .For(view => view.BindVisibility()) .To(vm => vm.IsRunningSync) .WithConversion(visibilityConverter); bindingSet.Bind(SyncedView) .For(view => view.BindVisibility()) .To(vm => vm.IsSynced) .WithConversion(visibilityConverter); bindingSet.Bind(LoggingOutView) .For(view => view.BindVisibility()) .To(vm => vm.IsLoggingOut) .WithConversion(visibilityConverter); // Switches bindingSet.Bind(AddMobileTagSwitch) .For(v => v.BindAnimatedOn()) .To(vm => vm.AddMobileTag); bindingSet.Bind(TwentyFourHourClockSwitch) .For(v => v.BindAnimatedOn()) .To(vm => vm.UseTwentyFourHourClock); bindingSet.Apply(); }
public override void ViewDidLoad() { base.ViewDidLoad(); //TableView config var source = new TimeEntriesLogViewSource(TimeEntriesTableView); TimeEntriesTableView.Source = source; //Add negative bottom inset, so that footers won't stick to the bottom of the screen var bottomContentInset = -source.GetHeightForFooter(TimeEntriesTableView, 0); if (UIDevice.CurrentDevice.CheckSystemVersion(11, 0)) { var bottomSafeAreaInset = UIApplication.SharedApplication.KeyWindow.SafeAreaInsets.Bottom; bottomContentInset -= bottomSafeAreaInset; } var tableViewContentInset = TimeEntriesTableView.ContentInset; tableViewContentInset.Bottom = bottomContentInset; TimeEntriesTableView.ContentInset = tableViewContentInset; //Converters var visibilityConverter = new MvxVisibilityValueConverter(); var invertedVisibilityConverter = new MvxInvertedVisibilityValueConverter(); var bindingSet = this.CreateBindingSet <TimeEntriesLogViewController, TimeEntriesLogViewModel>(); //Text bindingSet.Bind(EmptyStateTextLabel).To(vm => vm.EmptyStateText); bindingSet.Bind(EmptyStateTitleLabel).To(vm => vm.EmptyStateTitle); //Time entries log bindingSet.Bind(source).To(vm => vm.TimeEntries); //Visibility bindingSet.Bind(EmptyStateView) .For(v => v.BindVisibility()) .To(vm => vm.IsEmpty) .WithConversion(visibilityConverter); bindingSet.Bind(TimeEntriesTableView) .For(v => v.BindVisibility()) .To(vm => vm.IsEmpty) .WithConversion(invertedVisibilityConverter); bindingSet.Bind(EmptyStateImageView) .For(v => v.BindVisibility()) .To($"{nameof(TimeEntriesLogViewModel.IsEmpty)}&&!{nameof(TimeEntriesLogViewModel.IsWelcome)}") .WithConversion(visibilityConverter); bindingSet.Bind(WelcomeImageView) .For(v => v.BindVisibility()) .To($"{nameof(TimeEntriesLogViewModel.IsEmpty)}&&{nameof(TimeEntriesLogViewModel.IsWelcome)}") .WithConversion(visibilityConverter); //Commands bindingSet.Bind(source) .For(s => s.SelectionChangedCommand) .To(vm => vm.EditCommand); bindingSet.Bind(source) .For(v => v.ContinueTimeEntryCommand) .To(vm => vm.ContinueTimeEntryCommand); bindingSet.Bind(source) .For(v => v.DeleteTimeEntryCommand) .To(vm => vm.DeleteCommand); bindingSet.Apply(); }
public override void ViewDidLoad() { base.ViewDidLoad(); setupDismissingByTappingOnBackground(); prepareViews(); var durationCombiner = new DurationValueCombiner(); var dateCombiner = new DateTimeOffsetDateFormatValueCombiner(TimeZoneInfo.Local); var timeCombiner = new DateTimeOffsetTimeFormatValueCombiner(TimeZoneInfo.Local); var visibilityConverter = new MvxVisibilityValueConverter(); var invertedBoolConverter = new BoolToConstantValueConverter <bool>(false, true); var inverterVisibilityConverter = new MvxInvertedVisibilityValueConverter(); var projectTaskClientCombiner = new ProjectTaskClientValueCombiner( ProjectTaskClientLabel.Font.CapHeight, Color.EditTimeEntry.ClientText.ToNativeColor(), false ); var stopRunningTimeEntryAndEditDurationForStoppedConverter = new BoolToConstantValueConverter <IMvxCommand>( ViewModel.StopCommand, ViewModel.EditDurationCommand); var bindingSet = this.CreateBindingSet <EditTimeEntryViewController, EditTimeEntryViewModel>(); //Error message view bindingSet.Bind(ErrorMessageLabel) .For(v => v.Text) .To(vm => vm.SyncErrorMessage); bindingSet.Bind(ErrorView) .For(v => v.BindTap()) .To(vm => vm.DismissSyncErrorMessageCommand); bindingSet.Bind(ErrorView) .For(v => v.BindVisible()) .To(vm => vm.SyncErrorMessageVisible) .WithConversion(inverterVisibilityConverter); //Text bindingSet.Bind(DescriptionTextView) .For(v => v.RemainingLength) .To(vm => vm.DescriptionRemainingLength); bindingSet.Bind(DescriptionTextView) .For(v => v.BindText()) .To(vm => vm.Description); bindingSet.Bind(BillableSwitch) .For(v => v.BindAnimatedOn()) .To(vm => vm.Billable); bindingSet.Bind(DurationLabel) .ByCombining(durationCombiner, vm => vm.Duration, vm => vm.DurationFormat); bindingSet.Bind(ProjectTaskClientLabel) .For(v => v.AttributedText) .ByCombining(projectTaskClientCombiner, v => v.Project, v => v.Task, v => v.Client, v => v.ProjectColor); bindingSet.Bind(StartDateLabel) .ByCombining(dateCombiner, vm => vm.StartTime, vm => vm.DateFormat); bindingSet.Bind(StartTimeLabel) .ByCombining(timeCombiner, vm => vm.StartTime, vm => vm.TimeFormat); bindingSet.Bind(EndTimeLabel) .ByCombining(timeCombiner, vm => vm.StopTime, vm => vm.TimeFormat); //Commands bindingSet.Bind(CloseButton).To(vm => vm.CloseCommand); bindingSet.Bind(DeleteButton).To(vm => vm.DeleteCommand); bindingSet.Bind(ConfirmButton).To(vm => vm.ConfirmCommand); bindingSet.Bind(DurationView) .For(v => v.BindTap()) .To(vm => vm.EditDurationCommand); bindingSet.Bind(StartTimeView) .For(v => v.BindTap()) .To(vm => vm.EditDurationCommand); bindingSet.Bind(StopButton) .To(vm => vm.StopCommand); bindingSet.Bind(EndTimeView) .For(v => v.BindTap()) .To(vm => vm.IsTimeEntryRunning) .WithConversion(stopRunningTimeEntryAndEditDurationForStoppedConverter); bindingSet.Bind(ProjectTaskClientLabel) .For(v => v.BindTap()) .To(vm => vm.SelectProjectCommand); bindingSet.Bind(AddProjectAndTaskView) .For(v => v.BindTap()) .To(vm => vm.SelectProjectCommand); bindingSet.Bind(StartDateView) .For(v => v.BindTap()) .To(vm => vm.SelectStartDateCommand); bindingSet.Bind(TagsTextView) .For(v => v.BindTap()) .To(vm => vm.SelectTagsCommand); bindingSet.Bind(AddTagsView) .For(v => v.BindTap()) .To(vm => vm.SelectTagsCommand); bindingSet.Bind(BillableView) .For(v => v.BindTap()) .To(vm => vm.ToggleBillableCommand); //End time and the stop button visibility bindingSet.Bind(StopButton) .For(v => v.BindVisible()) .To(vm => vm.IsTimeEntryRunning) .WithConversion(inverterVisibilityConverter); bindingSet.Bind(EndTimeLabel) .For(v => v.BindVisible()) .To(vm => vm.IsTimeEntryRunning) .WithConversion(visibilityConverter); //Project visibility bindingSet.Bind(AddProjectAndTaskView) .For(v => v.BindVisible()) .To(vm => vm.Project) .WithConversion(visibilityConverter); bindingSet.Bind(ProjectTaskClientLabel) .For(v => v.BindVisible()) .To(vm => vm.Project) .WithConversion(inverterVisibilityConverter); //Tags visibility bindingSet.Bind(AddTagsView) .For(v => v.BindVisible()) .To(vm => vm.HasTags) .WithConversion(visibilityConverter); bindingSet.Bind(TagsTextView) .For(v => v.BindVisible()) .To(vm => vm.HasTags) .WithConversion(inverterVisibilityConverter); //Confirm button enabled bindingSet.Bind(ConfirmButton) .For(v => v.Enabled) .To(vm => vm.DescriptionLimitExceeded) .WithConversion(invertedBoolConverter); bindingSet.Bind(ConfirmButton) .For(v => v.Alpha) .To(vm => vm.DescriptionLimitExceeded) .WithConversion(new BoolToConstantValueConverter <nfloat>(0.5f, 1)); bindingSet.Bind(BillableView) .For(v => v.BindVisibility()) .To(vm => vm.IsBillableAvailable) .WithConversion(visibilityConverter); bindingSet.Apply(); }
public override void ViewDidLoad() { base.ViewDidLoad(); preparePlaceholders(); if (UIDevice.CurrentDevice.CheckSystemVersion(11, 0)) { var navigationBarHeight = NavigationController.NavigationBar.Frame.Height; AdditionalSafeAreaInsets = new UIEdgeInsets(-navigationBarHeight, 0, 0, 0); } PageControl.Pages = ViewModel.NumberOfPages; FirstPageLabel.Text = Resources.OnboardingTrackPageCopy; SecondPageLabel.Text = Resources.OnboardingMostUsedPageCopy; ThirdPageLabel.Text = Resources.OnboardingReportsPageCopy; var visibilityConverter = new MvxVisibilityValueConverter(); var invertedVisibilityConverter = new MvxInvertedVisibilityValueConverter(); var colorConverter = new MvxNativeColorValueConverter(); var bindingSet = this.CreateBindingSet <OnboardingViewController, OnboardingViewModel>(); var pagedBackgroundImageColorConverter = new PaginationValueConverter <UIImage>(new[] { UIImage.FromBundle("bgNoiseBlue"), UIImage.FromBundle("bgNoisePurple"), UIImage.FromBundle("bgNoiseYellow"), UIImage.FromBundle("bgNoiseBlue") }); //Commands bindingSet.Bind(Skip).To(vm => vm.SkipCommand); bindingSet.Bind(Next).To(vm => vm.NextCommand); bindingSet.Bind(Login).To(vm => vm.LoginCommand); bindingSet.Bind(SignUp).To(vm => vm.SignUpCommand); bindingSet.Bind(Previous).To(vm => vm.PreviousCommand); //Color bindingSet.Bind(View) .For(v => v.BindAnimatedBackground()) .To(vm => vm.BackgroundColor) .WithConversion(colorConverter); bindingSet.Bind(PhoneFrame) .For(v => v.BindAnimatedBackground()) .To(vm => vm.BorderColor) .WithConversion(colorConverter); //Noise image bindingSet.Bind(BackgroundImage) .For(v => v.BindAnimatedImage()) .To(vm => vm.CurrentPage) .WithConversion(pagedBackgroundImageColorConverter); //Visibility bindingSet.Bind(PhoneContents) .For(v => v.BindVisibility()) .To(vm => vm.IsLastPage) .WithConversion(invertedVisibilityConverter); bindingSet.Bind(LastPageItems) .For(v => v.BindVisibility()) .To(vm => vm.IsLastPage) .WithConversion(visibilityConverter); bindingSet.Bind(Next) .For(v => v.BindVisibility()) .To(vm => vm.IsLastPage) .WithConversion(invertedVisibilityConverter); bindingSet.Bind(ScrollView) .For(v => v.BindVisibility()) .To(vm => vm.IsLastPage) .WithConversion(invertedVisibilityConverter); bindingSet.Bind(Skip) .For(v => v.BindVisibility()) .To(vm => vm.IsLastPage) .WithConversion(invertedVisibilityConverter); bindingSet.Bind(Previous) .For(v => v.BindVisibility()) .To(vm => vm.IsFirstPage) .WithConversion(invertedVisibilityConverter); bindingSet.Bind(trackPagePlaceholder) .For(v => v.BindVisibility()) .To(vm => vm.IsTrackPage) .WithConversion(visibilityConverter); bindingSet.Bind(mostUsedPagePlaceholder) .For(v => v.BindVisibility()) .To(vm => vm.IsMostUsedPage) .WithConversion(visibilityConverter); bindingSet.Bind(reportsPagePlaceholder) .For(v => v.BindVisibility()) .To(vm => vm.IsSummaryPage) .WithConversion(visibilityConverter); //Current Page bindingSet.Bind(ScrollView) .For(v => v.BindAnimatedCurrentPage()) .To(vm => vm.CurrentPage); bindingSet.Bind(PageControl) .For(v => v.CurrentPage) .To(vm => vm.CurrentPage); bindingSet.Apply(); }
public override void ViewDidLoad() { base.ViewDidLoad(); PageControl.Pages = ViewModel.NumberOfPages; FirstPageLabel.Text = Resources.OnboardingTrackPageCopy; SecondPageLabel.Text = Resources.OnboardingLogPageCopy; ThirdPageLabel.Text = Resources.OnboardingSummaryPageCopy; var visibilityConverter = new MvxVisibilityValueConverter(); var invertedVisibilityConverter = new MvxInvertedVisibilityValueConverter(); var colorConverter = new MvxNativeColorValueConverter(); var bindingSet = this.CreateBindingSet <OnboardingViewController, OnboardingViewModel>(); //Commands bindingSet.Bind(Skip).To(vm => vm.SkipCommand); bindingSet.Bind(Next).To(vm => vm.NextCommand); bindingSet.Bind(Login).To(vm => vm.LoginCommand); bindingSet.Bind(SignUp).To(vm => vm.SignUpCommand); bindingSet.Bind(Previous).To(vm => vm.PreviousCommand); //Color bindingSet.Bind(View) .For(v => v.BindAnimatedBackground()) .To(vm => vm.BackgroundColor) .WithConversion(colorConverter); bindingSet.Bind(PhoneFrame) .For(v => v.BindAnimatedBackground()) .To(vm => vm.BorderColor) .WithConversion(colorConverter); //Visibility bindingSet.Bind(PhoneContents) .For(v => v.BindVisibility()) .To(vm => vm.IsLastPage) .WithConversion(invertedVisibilityConverter); bindingSet.Bind(LastPageItems) .For(v => v.BindVisibility()) .To(vm => vm.IsLastPage) .WithConversion(visibilityConverter); bindingSet.Bind(Next) .For(v => v.BindVisibility()) .To(vm => vm.IsLastPage) .WithConversion(invertedVisibilityConverter); bindingSet.Bind(ScrollView) .For(v => v.BindVisibility()) .To(vm => vm.IsLastPage) .WithConversion(invertedVisibilityConverter); bindingSet.Bind(Skip) .For(v => v.BindVisibility()) .To(vm => vm.IsLastPage) .WithConversion(invertedVisibilityConverter); bindingSet.Bind(Previous) .For(v => v.BindVisibility()) .To(vm => vm.IsFirstPage) .WithConversion(invertedVisibilityConverter); //Current Page bindingSet.Bind(ScrollView) .For(v => v.BindCurrentPage()) .To(vm => vm.CurrentPage); bindingSet.Bind(PageControl) .For(v => v.CurrentPage) .To(vm => vm.CurrentPage); bindingSet.Apply(); }
public override void ViewDidLoad() { base.ViewDidLoad(); prepareViews(); prepareOnboarding(); setupTableViewHeader(); var visibilityConverter = new MvxVisibilityValueConverter(); var projectTaskClientCombiner = new ProjectTaskClientValueCombiner( CurrentTimeEntryProjectTaskClientLabel.Font.CapHeight, Color.Main.CurrentTimeEntryClientColor.ToNativeColor(), true ); var startTimeEntryButtonManualModeIconConverter = new BoolToConstantValueConverter <UIImage>( UIImage.FromBundle("manualIcon"), UIImage.FromBundle("playIcon") ); var durationCombiner = new DurationValueCombiner(); var bindingSet = this.CreateBindingSet <MainViewController, MainViewModel>(); // Table view tableViewSource = new TimeEntriesLogViewSource(ViewModel.TimeEntries, TimeEntriesLogViewCell.Identifier); TimeEntriesLogTableView .Rx() .Bind(tableViewSource) .DisposedBy(disposeBag); this.Bind(tableViewSource.FirstCell, f => { onFirstTimeEntryChanged(f); firstTimeEntryCell = f; }); this.Bind(tableViewSource.ScrollOffset, onTableScroll); var continueTimeEntry = Observable.Merge( tableViewSource.ContinueTap, tableViewSource.SwipeToContinue ); this.Bind(continueTimeEntry, ViewModel.ContinueTimeEntry); this.Bind(tableViewSource.SwipeToDelete, ViewModel.TimeEntriesViewModel.DelayDeleteTimeEntry); this.Bind(tableViewSource.ItemSelected, ViewModel.SelectTimeEntry); this.Bind(ViewModel.TimeEntriesViewModel.ShouldShowUndo, toggleUndoDeletion); tableViewSource.SwipeToContinue .VoidSubscribe(() => { swipeRightStep.Dismiss(); }) .DisposedBy(disposeBag); tableViewSource.SwipeToDelete .VoidSubscribe(() => { swipeLeftStep.Dismiss(); }) .DisposedBy(disposeBag); // Refresh Control var refreshControl = new RefreshControl(ViewModel.SyncProgressState, tableViewSource); this.Bind(refreshControl.Refresh, ViewModel.RefreshAction); TimeEntriesLogTableView.CustomRefreshControl = refreshControl; //Commands bindingSet.Bind(settingsButton).To(vm => vm.OpenSettingsCommand); bindingSet.Bind(StopTimeEntryButton).To(vm => vm.StopTimeEntryCommand); bindingSet.Bind(StartTimeEntryButton).To(vm => vm.StartTimeEntryCommand); bindingSet.Bind(EditTimeEntryButton).To(vm => vm.EditTimeEntryCommand); bindingSet.Bind(syncFailuresButton).To(vm => vm.OpenSyncFailuresCommand); bindingSet.Bind(CurrentTimeEntryCard) .For(v => v.BindTap()) .To(vm => vm.EditTimeEntryCommand); bindingSet.Bind(suggestionsView) .For(v => v.SuggestionTappedCommad) .To(vm => vm.SuggestionsViewModel.StartTimeEntryCommand); bindingSet.Bind(StartTimeEntryButton) .For(v => v.BindLongPress()) .To(vm => vm.AlternativeStartTimeEntryCommand); //Visibility var shouldWelcomeBack = ViewModel.ShouldShowWelcomeBack; this.Bind(ViewModel.ShouldShowEmptyState, visible => emptyStateView.Hidden = !visible); this.Bind(shouldWelcomeBack, WelcomeBackView.Rx().IsVisible()); this.Bind(shouldWelcomeBack, spiderContainerView.Rx().IsVisible()); this.Bind(shouldWelcomeBack, visible => { if (visible) { spiderBroView.Show(); } else { spiderBroView.Hide(); } }); //Text bindingSet.Bind(CurrentTimeEntryDescriptionLabel).To(vm => vm.CurrentTimeEntryDescription); bindingSet.Bind(CurrentTimeEntryElapsedTimeLabel) .ByCombining(durationCombiner, vm => vm.CurrentTimeEntryElapsedTime, vm => vm.CurrentTimeEntryElapsedTimeFormat); bindingSet.Bind(CurrentTimeEntryProjectTaskClientLabel) .For(v => v.AttributedText) .ByCombining(projectTaskClientCombiner, v => v.CurrentTimeEntryProject, v => v.CurrentTimeEntryTask, v => v.CurrentTimeEntryClient, v => v.CurrentTimeEntryProjectColor); //The start button bindingSet.Bind(StartTimeEntryButton) .For(v => v.BindImage()) .To(vm => vm.IsInManualMode) .WithConversion(startTimeEntryButtonManualModeIconConverter); //The sync failures button bindingSet.Bind(syncFailuresButton) .For(v => v.BindVisibility()) .To(vm => vm.NumberOfSyncFailures) .WithConversion(visibilityConverter); bindingSet.Apply(); this.Bind(ViewModel.RatingViewModel.IsFeedbackSuccessViewShowing, SendFeedbackSuccessView.Rx().AnimatedIsVisible()); this.BindVoid(SendFeedbackSuccessView.Rx().Tap(), ViewModel.RatingViewModel.CloseFeedbackSuccessView); ViewModel.ShouldReloadTimeEntryLog .VoidSubscribe(reload) .DisposedBy(disposeBag); View.SetNeedsLayout(); View.LayoutIfNeeded(); NSNotificationCenter.DefaultCenter.AddObserver(UIApplication.DidBecomeActiveNotification, onApplicationDidBecomeActive); }
public override void ViewDidLoad() { base.ViewDidLoad(); prepareViews(); if (PresentationController is ModalPresentationController modalPresentationController) { syncErrorMessageView = EditTimeEntryErrorView.Create(); var contentView = modalPresentationController.AdditionalContentView; contentView.AddSubview(syncErrorMessageView); syncErrorMessageView.TranslatesAutoresizingMaskIntoConstraints = false; syncErrorMessageView.TopAnchor .ConstraintEqualTo(contentView.TopAnchor, 28).Active = true; syncErrorMessageView.LeadingAnchor .ConstraintEqualTo(contentView.LeadingAnchor, 8).Active = true; syncErrorMessageView.TrailingAnchor .ConstraintEqualTo(contentView.TrailingAnchor, -8).Active = true; } var durationConverter = new TimeSpanToDurationWithUnitValueConverter(); var dateConverter = new DateToTitleStringValueConverter(); var timeConverter = new DateTimeToTimeConverter(); var visibilityConverter = new MvxVisibilityValueConverter(); var inverterVisibilityConverter = new MvxInvertedVisibilityValueConverter(); var projectTaskClientCombiner = new ProjectTaskClientValueCombiner( ProjectTaskClientLabel.Font.CapHeight, Color.EditTimeEntry.ClientText.ToNativeColor(), false ); var bindingSet = this.CreateBindingSet <EditTimeEntryViewController, EditTimeEntryViewModel>(); if (syncErrorMessageView != null) { bindingSet.Bind(syncErrorMessageView) .For(v => v.Text) .To(vm => vm.SyncErrorMessage); bindingSet.Bind(syncErrorMessageView) .For(v => v.BindTap()) .To(vm => vm.DismissSyncErrorMessageCommand); bindingSet.Bind(syncErrorMessageView) .For(v => v.CloseCommand) .To(vm => vm.DismissSyncErrorMessageCommand); bindingSet.Bind(syncErrorMessageView) .For(v => v.BindVisible()) .To(vm => vm.SyncErrorMessageVisible) .WithConversion(inverterVisibilityConverter); } //Text bindingSet.Bind(DescriptionTextField).To(vm => vm.Description); bindingSet.Bind(BillableSwitch) .For(v => v.BindAnimatedOn()) .To(vm => vm.Billable); bindingSet.Bind(DurationLabel) .To(vm => vm.Duration) .WithConversion(durationConverter); bindingSet.Bind(ProjectTaskClientLabel) .For(v => v.AttributedText) .ByCombining(projectTaskClientCombiner, v => v.Project, v => v.Task, v => v.Client, v => v.ProjectColor); bindingSet.Bind(StartDateLabel) .To(vm => vm.StartTime) .WithConversion(dateConverter); bindingSet.Bind(StartTimeLabel) .To(vm => vm.StartTime) .WithConversion(timeConverter); bindingSet.Bind(TagsLabel) .To(vm => vm.Tags) .WithConversion(new CollectionToStringValueConverter <string>()); //Commands bindingSet.Bind(CloseButton).To(vm => vm.CloseCommand); bindingSet.Bind(DeleteButton).To(vm => vm.DeleteCommand); bindingSet.Bind(ConfirmButton).To(vm => vm.ConfirmCommand); bindingSet.Bind(DurationLabel) .For(v => v.BindTap()) .To(vm => vm.EditDurationCommand); bindingSet.Bind(ProjectTaskClientLabel) .For(v => v.BindTap()) .To(vm => vm.SelectProjectCommand); bindingSet.Bind(AddProjectAndTaskView) .For(v => v.BindTap()) .To(vm => vm.SelectProjectCommand); bindingSet.Bind(StartDateTimeView) .For(v => v.BindTap()) .To(vm => vm.SelectStartDateTimeCommand); bindingSet.Bind(TagsLabel) .For(v => v.BindTap()) .To(vm => vm.SelectTagsCommand); bindingSet.Bind(AddTagsView) .For(v => v.BindTap()) .To(vm => vm.SelectTagsCommand); bindingSet.Bind(BillableView) .For(v => v.BindTap()) .To(vm => vm.ToggleBillableCommand); //Project visibility bindingSet.Bind(AddProjectAndTaskView) .For(v => v.BindVisible()) .To(vm => vm.Project) .WithConversion(visibilityConverter); bindingSet.Bind(ProjectTaskClientLabel) .For(v => v.BindVisible()) .To(vm => vm.Project) .WithConversion(inverterVisibilityConverter); //Tags visibility bindingSet.Bind(AddTagsView) .For(v => v.BindVisible()) .To(vm => vm.HasTags) .WithConversion(visibilityConverter); bindingSet.Bind(TagsLabel) .For(v => v.BindVisible()) .To(vm => vm.HasTags) .WithConversion(inverterVisibilityConverter); bindingSet.Apply(); }
public override void ViewDidLoad() { base.ViewDidLoad(); TitleLabel.Text = Resources.Edit; BillableLabel.Text = Resources.Billable; StartDateDescriptionLabel.Text = Resources.Startdate; DurationDescriptionLabel.Text = Resources.Duration; StartDescriptionLabel.Text = Resources.Start; EndDescriptionLabel.Text = Resources.End; ErrorMessageTitleLabel.Text = Resources.Oops; AddProjectTaskLabel.Text = Resources.AddProjectTask; CategorizeWithProjectsLabel.Text = Resources.CategorizeYourTimeWithProjects; AddTagsLabel.Text = Resources.AddTags; DeleteButton.SetTitle(Resources.Delete, UIControlState.Normal); ConfirmButton.SetTitle(Resources.ConfirmChanges, UIControlState.Normal); prepareViews(); prepareOnboarding(); contentSizeChangedDisposable = ScrollViewContent.AddObserver(boundsKey, NSKeyValueObservingOptions.New, onContentSizeChanged); var durationCombiner = new DurationValueCombiner(); var dateCombiner = new DateTimeOffsetDateFormatValueCombiner(TimeZoneInfo.Local); var timeCombiner = new DateTimeOffsetTimeFormatValueCombiner(TimeZoneInfo.Local); var visibilityConverter = new MvxVisibilityValueConverter(); var invertedBoolConverter = new BoolToConstantValueConverter <bool>(false, true); var inverterVisibilityConverter = new MvxInvertedVisibilityValueConverter(); var projectTaskClientCombiner = new ProjectTaskClientValueCombiner( ProjectTaskClientLabel.Font.CapHeight, Color.EditTimeEntry.ClientText.ToNativeColor(), false ); var stopRunningTimeEntryAndSelectStopTimeForStoppedConverter = new BoolToConstantValueConverter <IMvxCommand>( ViewModel.StopCommand, ViewModel.SelectStopTimeCommand); var isInaccessibleTextColorConverter = new BoolToConstantValueConverter <UIColor>( Color.Common.Disabled.ToNativeColor(), Color.Common.TextColor.ToNativeColor() ); var showTagsCombiner = new ShowTagsValueCombiner(); var bindingSet = this.CreateBindingSet <EditTimeEntryViewController, EditTimeEntryViewModel>(); //Error message view bindingSet.Bind(ErrorMessageLabel) .For(v => v.Text) .To(vm => vm.SyncErrorMessage); bindingSet.Bind(ErrorView) .For(v => v.BindTap()) .To(vm => vm.DismissSyncErrorMessageCommand); bindingSet.Bind(ErrorView) .For(v => v.BindVisible()) .To(vm => vm.SyncErrorMessageVisible) .WithConversion(inverterVisibilityConverter); //Text bindingSet.Bind(RemainingCharacterCount) .To(vm => vm.DescriptionRemainingLength); bindingSet.Bind(RemainingCharacterCount) .For(v => v.BindVisible()) .To(vm => vm.DescriptionLimitExceeded); bindingSet.Bind(DescriptionTextView) .For(v => v.BindText()) .To(vm => vm.Description); bindingSet.Bind(DescriptionTextView) .For(v => v.BindDidBecomeFirstResponder()) .To(vm => vm.StartEditingDescriptionCommand); bindingSet.Bind(DurationLabel) .ByCombining(durationCombiner, vm => vm.Duration, vm => vm.DurationFormat); bindingSet.Bind(ProjectTaskClientLabel) .For(v => v.AttributedText) .ByCombining(projectTaskClientCombiner, v => v.Project, v => v.Task, v => v.Client, v => v.ProjectColor); bindingSet.Bind(StartDateLabel) .ByCombining(dateCombiner, vm => vm.StartTime, vm => vm.DateFormat); bindingSet.Bind(StartTimeLabel) .ByCombining(timeCombiner, vm => vm.StartTime, vm => vm.TimeFormat); bindingSet.Bind(EndTimeLabel) .ByCombining(timeCombiner, vm => vm.StopTime, vm => vm.TimeFormat); //Commands bindingSet.Bind(CloseButton).To(vm => vm.CloseCommand); bindingSet.Bind(DeleteButton).To(vm => vm.DeleteCommand); bindingSet.Bind(ConfirmButton).To(vm => vm.SaveCommand); bindingSet.Bind(DurationView) .For(v => v.BindTap()) .To(vm => vm.SelectDurationCommand); bindingSet.Bind(StartTimeView) .For(v => v.BindTap()) .To(vm => vm.SelectStartTimeCommand); bindingSet.Bind(StopButton) .To(vm => vm.StopCommand); bindingSet.Bind(EndTimeView) .For(v => v.BindTap()) .To(vm => vm.IsTimeEntryRunning) .WithConversion(stopRunningTimeEntryAndSelectStopTimeForStoppedConverter); bindingSet.Bind(ProjectTaskClientLabel) .For(v => v.BindTap()) .To(vm => vm.SelectProjectCommand); bindingSet.Bind(AddProjectAndTaskView) .For(v => v.BindTap()) .To(vm => vm.SelectProjectCommand); bindingSet.Bind(StartDateView) .For(v => v.BindTap()) .To(vm => vm.SelectStartDateCommand); bindingSet.Bind(TagsTextView) .For(v => v.BindTap()) .To(vm => vm.SelectTagsCommand); bindingSet.Bind(AddTagsView) .For(v => v.BindTap()) .To(vm => vm.SelectTagsCommand); bindingSet.Bind(BillableSwitch) .For(v => v.BindValueChanged()) .To(vm => vm.ToggleBillableCommand); //End time and the stop button visibility bindingSet.Bind(StopButton) .For(v => v.BindVisible()) .To(vm => vm.IsTimeEntryRunning) .WithConversion(inverterVisibilityConverter); bindingSet.Bind(EndTimeLabel) .For(v => v.BindVisible()) .To(vm => vm.IsTimeEntryRunning) .WithConversion(visibilityConverter); //Project visibility bindingSet.Bind(AddProjectAndTaskView) .For(v => v.BindVisible()) .To(vm => vm.Project) .WithConversion(visibilityConverter); bindingSet.Bind(ProjectTaskClientLabel) .For(v => v.BindVisible()) .To(vm => vm.Project) .WithConversion(inverterVisibilityConverter); //Tags visibility bindingSet.Bind(AddTagsView) .For(v => v.BindVisible()) .To(vm => vm.HasTags) .WithConversion(visibilityConverter); bindingSet.Bind(TagsTextView) .For(v => v.BindVisible()) .To(vm => vm.HasTags) .WithConversion(inverterVisibilityConverter); //Confirm button enabled bindingSet.Bind(ConfirmButton) .For(v => v.Enabled) .To(vm => vm.DescriptionLimitExceeded) .WithConversion(invertedBoolConverter); bindingSet.Bind(ConfirmButton) .For(v => v.Alpha) .To(vm => vm.DescriptionLimitExceeded) .WithConversion(new BoolToConstantValueConverter <nfloat>(0.5f, 1)); bindingSet.Bind(BillableView) .For(v => v.BindVisibility()) .To(vm => vm.IsBillableAvailable) .WithConversion(visibilityConverter); //Regarding inaccessible entries getLabelsToChangeColorWhenEditingInaccessibleEntry().ForEach(createTextColorBindingForInaccessibleEntries); bindingSet.Bind(DescriptionTextView) .For(v => v.TextColor) .To(vm => vm.IsInaccessible) .WithConversion(isInaccessibleTextColorConverter); bindingSet.Bind(DescriptionTextView) .For(v => v.UserInteractionEnabled) .To(vm => vm.IsInaccessible) .WithConversion(invertedBoolConverter); bindingSet.Bind(BillableSwitch) .For(v => v.Enabled) .To(vm => vm.IsInaccessible) .WithConversion(invertedBoolConverter); bindingSet.Bind(TagsContainerView) .For(v => v.Hidden) .ByCombining(showTagsCombiner, vm => vm.IsInaccessible, vm => vm.HasTags) .WithConversion(invertedBoolConverter); bindingSet.Bind(TagsSeparator) .For(v => v.Hidden) .ByCombining(showTagsCombiner, vm => vm.IsInaccessible, vm => vm.HasTags) .WithConversion(invertedBoolConverter); bindingSet.Apply(); void createTextColorBindingForInaccessibleEntries(UILabel label) { bindingSet.Bind(label) .For(v => v.TextColor) .To(vm => vm.IsInaccessible) .WithConversion(isInaccessibleTextColorConverter); } }
public void Include(MvxVisibilityValueConverter converter) { converter.Convert(null, null, null, null); converter.ConvertBack(null, null, null, null); }
public override void ViewDidLoad() { base.ViewDidLoad(); prepareViews(); source = new MainTableViewSource(TimeEntriesLogTableView); prepareOnboarding(); var suggestionsView = new SuggestionsView(); TimeEntriesLogTableView.TableHeaderView = suggestionsView; TimeEntriesLogTableView.Source = source; suggestionsView.DataContext = ViewModel.SuggestionsViewModel; source.Initialize(); var timeEntriesLogFooter = new UIView( new CGRect(0, 0, UIScreen.MainScreen.Bounds.Width, 64) ); var colorConverter = new MvxNativeColorValueConverter(); var visibilityConverter = new MvxVisibilityValueConverter(); var parametricTimeSpanConverter = new ParametricTimeSpanToDurationValueConverter(); var invertedVisibilityConverter = new MvxInvertedVisibilityValueConverter(); var timeEntriesLogFooterConverter = new BoolToConstantValueConverter <UIView>(new UIView(), timeEntriesLogFooter); var projectTaskClientCombiner = new ProjectTaskClientValueCombiner( CurrentTimeEntryProjectTaskClientLabel.Font.CapHeight, Color.Main.CurrentTimeEntryClientColor.ToNativeColor(), true ); var startTimeEntryButtonManualModeIconConverter = new BoolToConstantValueConverter <UIImage>( UIImage.FromBundle("manualIcon"), UIImage.FromBundle("playIcon") ); var bindingSet = this.CreateBindingSet <MainViewController, MainViewModel>(); //Table view bindingSet.Bind(source) .For(v => v.ObservableCollection) .To(vm => vm.TimeEntriesLogViewModel.TimeEntries); bindingSet.Bind(source) .For(v => v.SyncProgress) .To(vm => vm.SyncingProgress); bindingSet.Bind(TimeEntriesLogTableView) .For(v => v.TableFooterView) .To(vm => vm.TimeEntriesLogViewModel.IsEmpty) .WithConversion(timeEntriesLogFooterConverter); //Commands bindingSet.Bind(reportsButton).To(vm => vm.OpenReportsCommand); bindingSet.Bind(settingsButton).To(vm => vm.OpenSettingsCommand); bindingSet.Bind(StopTimeEntryButton).To(vm => vm.StopTimeEntryCommand); bindingSet.Bind(StartTimeEntryButton).To(vm => vm.StartTimeEntryCommand); bindingSet.Bind(EditTimeEntryButton).To(vm => vm.EditTimeEntryCommand); bindingSet.Bind(CurrentTimeEntryCard) .For(v => v.BindTap()) .To(vm => vm.EditTimeEntryCommand); bindingSet.Bind(source) .For(v => v.SelectionChangedCommand) .To(vm => vm.TimeEntriesLogViewModel.EditCommand); bindingSet.Bind(source) .For(v => v.ContinueTimeEntryCommand) .To(vm => vm.TimeEntriesLogViewModel.ContinueTimeEntryCommand); bindingSet.Bind(source) .For(v => v.RefreshCommand) .To(vm => vm.RefreshCommand); bindingSet.Bind(source) .For(v => v.DeleteTimeEntryCommand) .To(vm => vm.TimeEntriesLogViewModel.DeleteCommand); bindingSet.Bind(suggestionsView) .For(v => v.SuggestionTappedCommad) .To(vm => vm.SuggestionsViewModel.StartTimeEntryCommand); //Visibility bindingSet.Bind(WelcomeBackView) .For(v => v.BindVisibility()) .To(vm => vm.ShouldShowWelcomeBack) .WithConversion(visibilityConverter); bindingSet.Bind(spiderContainerView) .For(v => v.BindVisibility()) .To(vm => vm.ShouldShowWelcomeBack) .WithConversion(visibilityConverter); bindingSet.Bind(spiderBroView) .For(v => v.BindSpiderVisibility()) .To(vm => vm.ShouldShowWelcomeBack); bindingSet.Bind(emptyStateView) .For(v => v.BindVisibility()) .To(vm => vm.ShouldShowEmptyState) .WithConversion(visibilityConverter); //Text bindingSet.Bind(CurrentTimeEntryDescriptionLabel).To(vm => vm.CurrentTimeEntryDescription); bindingSet.Bind(CurrentTimeEntryElapsedTimeLabel) .To(vm => vm.CurrentTimeEntryElapsedTime) .WithConversion(parametricTimeSpanConverter, DurationFormat.Improved); bindingSet.Bind(CurrentTimeEntryProjectTaskClientLabel) .For(v => v.AttributedText) .ByCombining(projectTaskClientCombiner, v => v.CurrentTimeEntryProject, v => v.CurrentTimeEntryTask, v => v.CurrentTimeEntryClient, v => v.CurrentTimeEntryProjectColor); //The start button bindingSet.Bind(StartTimeEntryButton) .For(v => v.BindImage()) .To(vm => vm.IsInManualMode) .WithConversion(startTimeEntryButtonManualModeIconConverter); bindingSet.Apply(); View.SetNeedsLayout(); View.LayoutIfNeeded(); }
public override void ViewDidLoad() { base.ViewDidLoad(); DurationLabel.Font = DurationLabel.Font.GetMonospacedDigitFont(); PreferredContentSize = View.Frame.Size; resizeSwitch(); var durationConverter = new TimeSpanToDurationWithUnitValueConverter(); var dateConverter = new DateToTitleStringValueConverter(); var timeConverter = new DateTimeToTimeConverter(); var visibilityConverter = new MvxVisibilityValueConverter(); var inverterVisibilityConverter = new MvxInvertedVisibilityValueConverter(); var colorConverter = new MvxRGBValueConverter(); var bindingSet = this.CreateBindingSet <EditTimeEntryViewController, EditTimeEntryViewModel>(); //Text bindingSet.Bind(DescriptionLabel).To(vm => vm.Description); bindingSet.Bind(ProjectLabel).To(vm => vm.Project); bindingSet.Bind(ClientLabel).To(vm => vm.Client); bindingSet.Bind(BillableSwitch).To(vm => vm.Billable); bindingSet.Bind(DurationLabel) .To(vm => vm.Duration) .WithConversion(durationConverter); bindingSet.Bind(StartDateLabel) .To(vm => vm.StartTime) .WithConversion(dateConverter); bindingSet.Bind(StartTimeLabel) .To(vm => vm.StartTime) .WithConversion(timeConverter); //Commands bindingSet.Bind(CloseButton).To(vm => vm.CloseCommand); bindingSet.Bind(DeleteButton).To(vm => vm.DeleteCommand); //Description visibility bindingSet.Bind(AddDescriptionView) .For(v => v.BindVisible()) .To(vm => vm.Description) .WithConversion(visibilityConverter); bindingSet.Bind(DescriptionLabel) .For(v => v.BindVisible()) .To(vm => vm.Description) .WithConversion(inverterVisibilityConverter); //Project visibility bindingSet.Bind(AddProjectAndTaskView) .For(v => v.BindVisible()) .To(vm => vm.Project) .WithConversion(visibilityConverter); bindingSet.Bind(ProjectLabel) .For(v => v.BindVisible()) .To(vm => vm.Project) .WithConversion(inverterVisibilityConverter); bindingSet.Bind(ProjectDot) .For(v => v.BindVisible()) .To(vm => vm.Project) .WithConversion(inverterVisibilityConverter); //Tags visibility bindingSet.Bind(AddTagsView) .For(v => v.BindVisible()) .To(vm => vm.Tags) .WithConversion(visibilityConverter); bindingSet.Bind(TagsLabel) .For(v => v.BindVisible()) .To(vm => vm.Tags) .WithConversion(inverterVisibilityConverter); //Colors bindingSet.Bind(ProjectDot) .For(v => v.BackgroundColor) .To(vm => vm.ProjectColor) .WithConversion(colorConverter); bindingSet.Apply(); }