public void ReportExperiment(string actionKey, string actionValue)
 {
     if (HasItems != CollectionState.NotEmpty && ServiceContainer.Resolve <ISettingsStore> ().ShowWelcome)
     {
         OBMExperimentManager.Send(actionKey, actionValue);
     }
 }
        private void SetCollectionState()
        {
            // TODO RX OfflineMode needs to show the experiment screen.
            if (ViewModel.HasItems != LogTimeEntriesViewModel.CollectionState.NotReady)
            {
                View emptyView      = emptyMessageView;
                var  isWelcome      = ServiceContainer.Resolve <ISettingsStore> ().ShowWelcome;
                var  isInExperiment = OBMExperimentManager.IncludedInExperiment();
                var  hasItems       = ViewModel.HasItems == LogTimeEntriesViewModel.CollectionState.NotEmpty;

                if (isWelcome && isInExperiment)
                {
                    emptyView = experimentEmptyView;
                }
                else
                {
                    // always keeps this view hidden if it is not needed.
                    experimentEmptyView.Visibility = ViewStates.Gone;
                }

                // According to settings, show welcome message or no.
                welcomeMessage.Visibility = isWelcome ? ViewStates.Visible : ViewStates.Gone;
                noItemsMessage.Visibility = isWelcome ? ViewStates.Gone : ViewStates.Visible;

                emptyView.Visibility    = hasItems ? ViewStates.Gone : ViewStates.Visible;
                recyclerView.Visibility = hasItems ? ViewStates.Visible : ViewStates.Gone;
            }
        }
Exemple #3
0
        private void ShowEmptyState()
        {
            //Empty state is experimental.
            if (!OBMExperimentManager.IncludedInExperiment(OBMExperimentManager.HomeEmptyState))
            {
                return;
            }

            recyclerView.Visibility     = ViewModel.HasMoreItems ? ViewStates.Visible : ViewStates.Gone;
            emptyMessageView.Visibility = ViewModel.HasMoreItems ? ViewStates.Gone : ViewStates.Visible;
        }
Exemple #4
0
        private async void OnActionButtonTouchUpInside(object sender, EventArgs e)
        {
            if (isActing)
            {
                return;
            }
            isActing = true;

            try {
                if (currentTimeEntry != null && currentTimeEntry.State == TimeEntryState.Running)
                {
                    await TimeEntryModel.StopAsync(currentTimeEntry);

                    // Ping analytics
                    ServiceContainer.Resolve <ITracker>().SendTimerStopEvent(TimerStopSource.App);
                }
                else if (timeEntryManager != null)
                {
                    currentTimeEntry = (TimeEntryModel)timeEntryManager.ActiveTimeEntry;
                    if (currentTimeEntry == null)
                    {
                        return;
                    }

                    OBMExperimentManager.Send(OBMExperimentManager.HomeEmptyState, "startButton", "click");
                    await TimeEntryModel.StartAsync(currentTimeEntry);

                    var controllers = new List <UIViewController> (parentController.NavigationController.ViewControllers);
                    controllers.Add(new EditTimeEntryViewController((TimeEntryModel)currentTimeEntry));
                    if (ServiceContainer.Resolve <SettingsStore> ().ChooseProjectForNew)
                    {
                        controllers.Add(new ProjectSelectionViewController((TimeEntryModel)currentTimeEntry));
                    }
                    parentController.NavigationController.SetViewControllers(controllers.ToArray(), true);

                    // Ping analytics
                    ServiceContainer.Resolve <ITracker>().SendTimerStartEvent(TimerStartSource.AppNew);
                }
            } finally {
                isActing = false;
            }
        }
        private void SetCollectionState()
        {
            if (ViewModel.HasItems != LogTimeEntriesViewModel.CollectionState.NotReady)
            {
                UIView emptyView      = defaultEmptyView; // Default empty view.
                var    isWelcome      = ServiceContainer.Resolve <ISettingsStore> ().ShowWelcome;
                var    isInExperiment = OBMExperimentManager.IncludedInExperiment();
                var    hasItems       = ViewModel.HasItems == LogTimeEntriesViewModel.CollectionState.NotEmpty;

                // According to settings, show welcome message or no.
                ((SimpleEmptyView)emptyView).Title = isWelcome ? "LogWelcomeTitle".Tr() : "LogEmptyTitle".Tr();

                if (isWelcome && isInExperiment)
                {
                    emptyView = obmEmptyView;
                }

                TableView.TableFooterView = hasItems ? new UIView() : emptyView;
            }
        }
Exemple #6
0
 protected virtual void UpdateFooter()
 {
     if (dataView.HasMore || dataView.IsLoading)
     {
         if (defaultFooterView == null)
         {
             defaultFooterView       = new UIActivityIndicatorView(UIActivityIndicatorViewStyle.Gray);
             defaultFooterView.Frame = new CGRect(0, 0, 50, 50);
         }
         tableView.TableFooterView = defaultFooterView;
         defaultFooterView.StartAnimating();
     }
     else if (IsEmpty && OBMExperimentManager.IncludedInExperiment(OBMExperimentManager.HomeEmptyState))
     {
         tableView.TableFooterView = OBMEmptyView;
     }
     else if (IsEmpty)
     {
         tableView.TableFooterView = EmptyView;
     }
 }
Exemple #7
0
        public async void StartStopClick(object sender, EventArgs e)
        {
            var timeEntryData = await ViewModel.StartStopTimeEntry();

            if (ViewModel.HasMoreItems)
            {
                OBMExperimentManager.Send(OBMExperimentManager.HomeWithTEListState, "startButton", "click");
            }

            if (timeEntryData.State == Toggl.Phoebe.Data.TimeEntryState.Running)
            {
                NewTimeEntryStartedByFAB = true;

                var ids = new List <string> {
                    timeEntryData.Id.ToString()
                };
                var intent = new Intent(Activity, typeof(EditTimeEntryActivity));
                intent.PutStringArrayListExtra(EditTimeEntryActivity.ExtraGroupedTimeEntriesGuids, ids);
                intent.PutExtra(EditTimeEntryActivity.IsGrouped, false);
                StartActivity(intent);
            }
        }