Exemplo n.º 1
0
 private void AddStrings(RateMeDialogStrings rateMeDialogStrings)
 {
     _localizedStringsRepository.AddString(_titleTextKey, rateMeDialogStrings.TitleText);
     _localizedStringsRepository.AddString(_messageTextKey, rateMeDialogStrings.MessageText);
     _localizedStringsRepository.AddString(_rateItButtonTextKey, rateMeDialogStrings.RateItButtonText);
     _localizedStringsRepository.AddString(_notNowButtonTextKey, rateMeDialogStrings.NotNowButtonText);
 }
Exemplo n.º 2
0
        /// <summary>
        /// Constructs the dialog
        /// </summary>
        /// <param name="launchesUntilPrompt"></param>
        /// <param name="maxRateShowTimes"></param>
        /// <param name="rateAppUri"></param>
        /// <param name="dialogDefinition"></param>
        /// <param name="font"></param>
        /// <param name="localizedStringsRepository"></param>
        /// <param name="rateMeDialogStrings"></param>
        /// <param name="webPageOpener"></param>
        /// <param name="settingsRepository"></param>
        /// <param name="buttonADefinition"></param>
        /// <param name="buttonBDefinition"></param>
        /// <param name="backgroundColor"></param>
        /// <param name="buttonsBackgroundColor"></param>
        /// <param name="buttonsShadowColor"></param>
        /// <param name="backgroundShadowColor"></param>
        /// <param name="titleColor"></param>
        /// <param name="buttonsTextColor"></param>
        /// <param name="titlePositionOffset"></param>
        /// <param name="buttonTextPadding"></param>
        /// <param name="titlePadding"></param>
        public RateMeDialog(
            int launchesUntilPrompt,
            int maxRateShowTimes,
            Uri rateAppUri,
            Rectangle dialogDefinition,
            SpriteFont font,
            ILocalizedStringsRepository localizedStringsRepository,
            RateMeDialogStrings rateMeDialogStrings,
            IWebPageOpener webPageOpener,
            ISettingsRepository settingsRepository,
            Rectangle buttonADefinition,
            Rectangle buttonBDefinition,
            Color backgroundColor,
            Color buttonsBackgroundColor,
            Color buttonsShadowColor,
            Color backgroundShadowColor,
            Color titleColor,
            Color buttonsTextColor,
            Vector2 titlePositionOffset,
            float buttonTextPadding,
            float titlePadding)
        {
            _launchesUntilPrompt        = launchesUntilPrompt;
            _maxRateShowTimes           = maxRateShowTimes;
            _rateAppUri                 = rateAppUri;
            _localizedStringsRepository = localizedStringsRepository;
            _settingsRepository         = settingsRepository;

            AddStrings(rateMeDialogStrings);

            var buttonA = new ButtonWithText(
                font: font,
                text: localizedStringsRepository.Get(_rateItButtonTextKey),
                collisionRectangle: buttonADefinition,
                backgroundColor: buttonsBackgroundColor,
                textColor: buttonsTextColor,
                shadowColor: buttonsShadowColor,
                onClick: () =>
            {
                _settingsRepository.SetBool(_dontShowAgainSettingKey, true);
                ShouldShowDialog = false;
                webPageOpener.OpenWebpage(_rateAppUri);
            },
                textPadding: buttonTextPadding);

            var buttonB = new ButtonWithText(
                font: font,
                text: localizedStringsRepository.Get(_notNowButtonTextKey),
                collisionRectangle: buttonBDefinition,
                backgroundColor: buttonsBackgroundColor,
                textColor: buttonsTextColor,
                shadowColor: buttonsShadowColor,
                onClick: () =>
            {
                // If users says "Not now", I reset the app launch count
                _settingsRepository.SetInt(_appLaunchCountSettingKey, 0);
                ShouldShowDialog = false;
            },
                textPadding: buttonTextPadding);

            var minScale = Math.Min(buttonA.TextScale, buttonB.TextScale);

            buttonA.TextScale = minScale;
            buttonB.TextScale = minScale;

            _titleButtonButtonDialog = new Dialog(
                title: localizedStringsRepository.Get(_messageTextKey),
                font: font,
                dialogWindowDefinition: dialogDefinition,
                titlePositionOffset: titlePositionOffset,
                backgroundColor: backgroundColor,
                backgroundShadowColor: backgroundShadowColor,
                titleColor: titleColor,
                titlePadding: titlePadding,
                buttons: new ButtonWithText[] { buttonA, buttonB });

            EvaluateRateMe();
        }