private void ContinueTimeEntry(TimeEntryModel model)
        {
            var entry = model.Continue();

            var bus = ServiceContainer.Resolve <MessageBus> ();

            bus.Send(new UserTimeEntryStateChangeMessage(this, entry));

            DurOnlyNoticeDialogFragment.TryShow(FragmentManager);
        }
        private async void ContinueTimeEntry(TimeEntryModel model)
        {
            DurOnlyNoticeDialogFragment.TryShow(FragmentManager);

            var entry = await model.ContinueAsync();

            var bus = ServiceContainer.Resolve <MessageBus> ();

            bus.Send(new UserTimeEntryStateChangeMessage(this, entry));

            // Ping analytics
            ServiceContainer.Resolve <ITracker> ().SendTimerStartEvent(TimerStartSource.AppContinue);
        }
        public override async void OnListItemClick(ListView l, View v, int position, long id)
        {
            RecentTimeEntriesAdapter adapter = null;

            if (l.Adapter is HeaderViewListAdapter)
            {
                var headerAdapter = (HeaderViewListAdapter)l.Adapter;
                adapter = headerAdapter.WrappedAdapter as RecentTimeEntriesAdapter;
                // Adjust the position by taking into account the fact that we've got headers
                position -= headerAdapter.HeadersCount;
            }
            else if (l.Adapter is RecentTimeEntriesAdapter)
            {
                adapter = (RecentTimeEntriesAdapter)l.Adapter;
            }

            if (adapter == null || position < 0 || position >= adapter.Count)
            {
                return;
            }

            var data = adapter.GetEntry(position);

            if (data == null)
            {
                return;
            }

            var model = new TimeEntryModel(data);

            // Show a notice about tapping on entries acts as continue.
            if (RecentTimeEntryContinueDialogFragment.TryShow(FragmentManager, model))
            {
                return;
            }

            // Scroll to top (where the new model will appear)
            ListView.SmoothScrollToPosition(0);

            DurOnlyNoticeDialogFragment.TryShow(FragmentManager);

            var entry = await model.ContinueAsync();

            // Notify that the user explicitly started something
            var bus = ServiceContainer.Resolve <MessageBus> ();

            bus.Send(new UserTimeEntryStateChangeMessage(this, entry));

            // Ping analytics
            ServiceContainer.Resolve <ITracker> ().SendTimerStartEvent(TimerStartSource.AppContinue);
        }
        public override void OnListItemClick(ListView l, View v, int position, long id)
        {
            RecentTimeEntriesAdapter adapter = null;

            if (l.Adapter is HeaderViewListAdapter)
            {
                var headerAdapter = (HeaderViewListAdapter)l.Adapter;
                adapter = headerAdapter.WrappedAdapter as RecentTimeEntriesAdapter;
                // Adjust the position by taking into account the fact that we've got headers
                position -= headerAdapter.HeadersCount;
            }
            else if (l.Adapter is RecentTimeEntriesAdapter)
            {
                adapter = (RecentTimeEntriesAdapter)l.Adapter;
            }

            if (adapter == null || position < 0 || position >= adapter.Count)
            {
                return;
            }

            var model = adapter.GetEntry(position);

            if (model == null)
            {
                return;
            }

            var entry = model.Continue();

            // Scroll to top (where the new model will appear)
            ListView.SmoothScrollToPosition(0);

            // Notify that the user explicitly started something
            var bus = ServiceContainer.Resolve <MessageBus> ();

            bus.Send(new UserTimeEntryStateChangeMessage(this, entry));

            DurOnlyNoticeDialogFragment.TryShow(FragmentManager);
        }