예제 #1
0
        private void GoToNextTip()
        {
            // If the current tip is not the last tip in the tip history, then go to the next tip in the tip history that exists.
            List <string> tipHistory = _tipHistoryManager.GetTipHistory();

            // Is there a tip later in the history than the current tip?
            var     currentTipIndex  = tipHistory.LastIndexOf(currentTip); // Use LastIndexOf for performance as it will normally be towards the end of the list.
            TipInfo nextTipInHistory = GetNextTipInHistory(tipHistory, currentTipHistoryIndex: currentTipIndex);

            if (nextTipInHistory != null)
            {
                // Navigate to the next tip in history.
                NavigateToTip(nextTipInHistory, markAsSeen: false);
                return;
            }

            // There are no more tips to show from the history. Find a new tip.
            TipInfo nextTip = TipOfTheDay.GetNewTip();
            var     success = NavigateToTip(nextTip, markAsSeen: true);

            if (!success)
            {
                // Failed to show next tip. Close window.
                Close();
            }
        }
예제 #2
0
        private TipHistoryInfo FindNextTipInHistory()
        {
            List <TipHistoryInfo> tipHistoryList = _tipHistoryManager.GetTipHistory();

            // Get the index of the current tip in the TipHistory
            // Perf Note: Use LastIndexOf for performance as the current tip will normally be towards the end of the list.
            int currentTipIndex = tipHistoryList.FindLastIndex(a => a.GlobalTipId.Equals(currentTip));

            // Get the next tip from the TipHistory - if there is one.
            return(GetNextTipFromHistory(tipHistoryList, currentTipHistoryIndex: currentTipIndex));
        }
예제 #3
0
        public TipInfo GetNextTip()
        {
            List <string> tipHistoryList = TipHistoryManager.GetTipHistory();
            //List<string> tipHistoryList = GetTipHistory();

            string lastSeenGroupId = GetLastTipGroupSeen(tipHistoryList);

            // Get the next tip (using Tip generator algorithm)
            TipInfo nextTip = GetNextTipAlgorithm(lastSeenGroupId);

            return(nextTip);
        }
예제 #4
0
        private static TipInfo GetTipAfterResetTipHistory(ref TipInfo nextTip)
        {
            // Check strange case - No new tips and no tips shown.
            if (_tipHistoryManager.GetTipHistory() == null)
            {
                // No tip found and there are none in the history, so we must have no tips at all. (Strange case)
                Debug.WriteLine("No tips seen and no tips yet to see. (Check if tip groups loaded correctly.)");
                return(null);
            }

            // Ask user if they want to clear the history and start again from the beginning.
            if (!ShouldResetHistory())
            {
                // User does not want to reset history. Exit nicely.
                return(null);
            }

            // Reset Tip History
            _tipHistoryManager.ClearTipHistory();

            // Fetch next tip
            return(_tipCalculator.GetNextTip());
        }