protected override void InitializeViews()
        {
            selectTagToolbarButton      = FindViewById <ImageView>(ToolbarTagButton);
            selectProjectToolbarButton  = FindViewById <ImageView>(ToolbarProjectButton);
            selectBillableToolbarButton = FindViewById <ImageView>(ToolbarBillableButton);

            durationLabel = FindViewById <TextView>(DurationText);

            recyclerView = FindViewById <RecyclerView>(SuggestionsRecyclerView);

            descriptionField = FindViewById <AutocompleteEditText>(DescriptionTextField);

            adapter = new StartTimeEntryRecyclerAdapter();
            recyclerView.SetLayoutManager(new UnpredictiveLinearLayoutManager(this));
            recyclerView.SetAdapter(adapter);

            SetupToolbar();
            SupportActionBar.SetHomeAsUpIndicator(Resource.Drawable.toolbar_close);
        }
Beispiel #2
0
        protected override void InitializeViews()
        {
            closeButton                 = FindViewById <ImageView>(CloseButton);
            selectTagToolbarButton      = FindViewById <ImageView>(ToolbarTagButton);
            selectProjectToolbarButton  = FindViewById <ImageView>(ToolbarProjectButton);
            selectBillableToolbarButton = FindViewById <ImageView>(ToolbarBillableButton);

            doneButton    = FindViewById <TextView>(DoneButton);
            durationLabel = FindViewById <TextView>(DurationText);

            recyclerView = FindViewById <RecyclerView>(SuggestionsRecyclerView);

            descriptionField = FindViewById <AutocompleteEditText>(DescriptionTextField);

            doneButton.Text = Shared.Resources.Done;

            adapter = new StartTimeEntryRecyclerAdapter();
            recyclerView.SetLayoutManager(new LinearLayoutManager(this));
            recyclerView.SetAdapter(adapter);
        }
Beispiel #3
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView(Resource.Layout.StartTimeEntryActivity);
            OverridePendingTransition(Resource.Animation.abc_slide_in_bottom, Resource.Animation.abc_fade_out);

            InitializeViews();

            // Suggestions RecyclerView
            var adapter = new StartTimeEntryRecyclerAdapter();

            recyclerView.SetLayoutManager(new LinearLayoutManager(this));
            recyclerView.SetAdapter(adapter);

            ViewModel.Suggestions
            .Subscribe(adapter.Rx().Items())
            .DisposedBy(DisposeBag);

            adapter.ItemTapObservable
            .Subscribe(ViewModel.SelectSuggestion.Inputs)
            .DisposedBy(DisposeBag);

            adapter.ToggleTasks
            .Subscribe(ViewModel.ToggleTasks.Inputs)
            .DisposedBy(DisposeBag);

            // Displayed time
            ViewModel.DisplayedTime
            .Subscribe(durationLabel.Rx().TextObserver())
            .DisposedBy(DisposeBag);

            // Toggle project suggestions toolbar button
            selectProjectToolbarButton.Rx()
            .BindAction(ViewModel.ToggleProjectSuggestions)
            .DisposedBy(DisposeBag);

            ViewModel.IsSuggestingProjects
            .Select(isSuggesting => isSuggesting ? Resource.Drawable.te_project_active : Resource.Drawable.project)
            .Subscribe(selectProjectToolbarButton.SetImageResource)
            .DisposedBy(DisposeBag);

            // Toggle tag suggestions toolbar button
            selectTagToolbarButton.Rx()
            .BindAction(ViewModel.ToggleTagSuggestions)
            .DisposedBy(DisposeBag);

            ViewModel.IsSuggestingTags
            .Select(isSuggesting => isSuggesting ? Resource.Drawable.te_tag_active : Resource.Drawable.tag)
            .Subscribe(selectTagToolbarButton.SetImageResource)
            .DisposedBy(DisposeBag);

            // Billable toolbar button
            selectBillableToolbarButton.Rx()
            .BindAction(ViewModel.ToggleBillable)
            .DisposedBy(DisposeBag);

            ViewModel.IsBillable
            .Select(isSuggesting => isSuggesting ? Resource.Drawable.te_billable_active : Resource.Drawable.billable)
            .Subscribe(selectBillableToolbarButton.SetImageResource)
            .DisposedBy(DisposeBag);

            ViewModel.IsBillableAvailable
            .Subscribe(selectBillableToolbarButton.Rx().IsVisible())
            .DisposedBy(DisposeBag);

            // Finish buttons
            doneButton.Rx()
            .BindAction(ViewModel.Done)
            .DisposedBy(DisposeBag);

            closeButton.Rx().Tap()
            .Subscribe(ViewModel.Close.Inputs)
            .DisposedBy(DisposeBag);

            // Description text field
            descriptionField.Hint = ViewModel.PlaceholderText;

            ViewModel.TextFieldInfo
            .Subscribe(onTextFieldInfo)
            .DisposedBy(DisposeBag);

            durationLabel.Rx()
            .BindAction(ViewModel.ChangeTime)
            .DisposedBy(DisposeBag);

            descriptionField.TextObservable
            .SubscribeOn(ThreadPoolScheduler.Instance)
            .Throttle(typingThrottleDuration)
            .Select(text => text.AsImmutableSpans(descriptionField.SelectionStart))
            .Subscribe(ViewModel.SetTextSpans.Inputs)
            .DisposedBy(DisposeBag);

            onLayoutFinished = (s, e) => ViewModel.StopSuggestionsRenderingStopwatch();
            recyclerView.ViewTreeObserver.GlobalLayout += onLayoutFinished;
        }