public static async Task<LogTimeEntriesViewModel> Init () { var vm = new LogTimeEntriesViewModel (); await vm.SyncModel (); vm.SyncCollectionView (); return vm; }
public void SetViewModel (LogTimeEntriesViewModel viewModel) { ViewModel = viewModel; // TODO: investigate why WhenSourceChanges doesn't work. :( isRunningBinding = this.SetBinding (() => ViewModel.IsTimeEntryRunning, () => IsRunning); durationBinding = this.SetBinding (() => ViewModel.Duration, () => DurationTextView.Text); descBinding = this.SetBinding (() => ViewModel.Description, () => DescriptionTextView.Text) .ConvertSourceToTarget (desc => desc != string.Empty ? desc : activity.ApplicationContext.Resources.GetText (Resource.String.TimerComponentNoDescription)); projectBinding = this.SetBinding (() => ViewModel.ProjectName, () => ProjectTextView.Text) .ConvertSourceToTarget (proj => proj != string.Empty ? proj : activity.ApplicationContext.Resources.GetText (Resource.String.TimerComponentNoProject)); }
public async override void OnViewCreated (View view, Bundle savedInstanceState) { base.OnViewCreated (view, savedInstanceState); ViewModel = new LogTimeEntriesViewModel (); await ViewModel.Init (); hasMoreBinding = this.SetBinding ( ()=> ViewModel.HasMore) .WhenSourceChanges (ShowEmptyState); collectionBinding = this.SetBinding ( ()=> ViewModel.CollectionView) .WhenSourceChanges (() => { logAdapter = new LogTimeEntriesAdapter (recyclerView, ViewModel.CollectionView); recyclerView.SetAdapter (logAdapter); }); fabBinding = this.SetBinding ( () => ViewModel.IsTimeEntryRunning, () => StartStopBtn.ButtonAction) .ConvertSourceToTarget (isRunning => isRunning ? FABButtonState.Stop : FABButtonState.Start); StartStopBtn.Click += StartStopClick; }
public static LogTimeEntriesViewModel Init () { var vm = new LogTimeEntriesViewModel (); return vm; }
public ScrollListener (LinearLayoutManager linearLayoutManager, LogTimeEntriesViewModel viewModel) { this.linearLayoutManager = linearLayoutManager; this.viewModel = viewModel; }
private void SetupRecyclerView (LogTimeEntriesViewModel viewModel) { // Touch listeners. itemTouchListener = new ItemTouchListener (recyclerView, this); recyclerView.AddOnItemTouchListener (itemTouchListener); // Scroll listener recyclerView.AddOnScrollListener ( new ScrollListener ((LinearLayoutManager)recyclerView.GetLayoutManager (), viewModel)); var touchCallback = new SwipeDismissCallback (ItemTouchHelper.Up | ItemTouchHelper.Down, ItemTouchHelper.Left, this); var touchHelper = new ItemTouchHelper (touchCallback); touchHelper.AttachToRecyclerView (recyclerView); // Decorations. dividerDecoration = new DividerItemDecoration (Activity, DividerItemDecoration.VerticalList); shadowDecoration = new ShadowItemDecoration (Activity); recyclerView.AddItemDecoration (dividerDecoration); recyclerView.AddItemDecoration (shadowDecoration); recyclerView.GetItemAnimator ().SupportsChangeAnimations = false; }
public static LogTimeEntriesViewModel Init() { var vm = new LogTimeEntriesViewModel(); return(vm); }
public async override void OnViewCreated (View view, Bundle savedInstanceState) { base.OnViewCreated (view, savedInstanceState); viewModel = new LogTimeEntriesViewModel (); await viewModel.Init (); binding = Binding.Create (() => HasMore == viewModel.CollectionView.HasMore && ItemCount == viewModel.ItemCount && CollectionView == viewModel.CollectionView && IsRunning == viewModel.IsTimeEntryRunning); startStopBtn.Click += async (sender, e) => await viewModel.StartStopTimeEntry (); }