Exemple #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();
            }
        }
Exemple #2
0
        /// <summary>
        /// Initialization of the package; this method is called right after the package is sited, so this is the place
        /// where you can put all the initialization code that rely on services provided by VisualStudio.
        /// </summary>
        /// <param name="cancellationToken">A cancellation token to monitor for initialization cancellation, which can occur when VS is shutting down.</param>
        /// <param name="progress">A provider for progress updates.</param>
        /// <returns>A task representing the async work of package initialization, or an already completed task if there is none. Do not return null from this method.</returns>
        protected override async Task InitializeAsync(CancellationToken cancellationToken, IProgress <ServiceProgressData> progress)
        {
            // When initialized asynchronously, the current thread may be a background thread at this point.
            // Do any initialization that requires the UI thread after switching to the UI thread.
            await this.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken);

            await TipOfTheDayCommand.InitializeAsync(this);

            // Show TotD at startup
            if (ShouldShowTOTD())
            {
                TipOfTheDay.ShowWindow();
            }
        }
Exemple #3
0
        public void HandleVsInitialized()
        {
            var cadence = GetCadence();

            if (cadence == DisplayCadence.Never || cadence == DisplayCadence.SolutionLoad)
            {
                return;
            }

            if (ShouldShowTip(cadence))
            {
                TipOfTheDay.ShowWindow();
                Task.Run(async() => await SetLastDisplayTimeNowAsync());
            }
        }
Exemple #4
0
        public void HandleSolutionOpened()
        {
            var cadence = GetCadence();

            // Allow one operation when cadence is Startup and multiple when cadence is SolutionLoad
            if (!(cadence == DisplayCadence.Startup && !_solutionOpenedOnce) &&
                !(cadence == DisplayCadence.SolutionLoad))
            {
                return;
            }

            if (ShouldShowTip(cadence))
            {
                TipOfTheDay.ShowWindow();
                _solutionOpenedOnce = true; // When DisplayCadence is Startup, show tip only once
                Task.Run(async() => await SetLastDisplayTimeNowAsync());
            }
        }
Exemple #5
0
        private void GoToNextTip()
        {
            // If there's a next tip in the Tip History, show that. Otherwise, grab a new tip.
            TipInfo        nextTip;
            TipHistoryInfo nextTipInHistory = FindNextTipInHistory();

            if (nextTipInHistory != null)
            {
                // Build a TipInfo object to show in the UI
                nextTip = BuildTipInfoFromHistory(nextTipInHistory);
            }
            else
            {
                // Generate a new Tip to show. Set the LikeStatus to NORMAL.
                nextTip = TipOfTheDay.GetNewTip();
                nextTip.TipLikeStatus = TipLikeEnum.NORMAL;
            }

            // Show the tip
            NavigateToTip(nextTip);
        }
Exemple #6
0
 /// <summary>
 /// This function is the callback used to execute the command when the menu item is clicked.
 /// See the constructor to see how the menu item is associated with this function using
 /// OleMenuCommandService service and MenuCommand class.
 /// </summary>
 /// <param name="sender">Event sender.</param>
 /// <param name="e">Event args.</param>
 private void Execute(object sender, EventArgs e)
 {
     TipOfTheDay.ShowWindow();
 }