Esempio n. 1
0
        private bool TryBuildAggregateDeckName(out string aggregateDeckName)
        {
            if (mTrackBarMin.Value > mTrackBarMax.Value)
            {
                aggregateDeckName = "Invalid: Min greater than Max";
                return(false);
            }

            aggregateDeckName = "";
            if (!string.IsNullOrEmpty(mAggregateFilterDownTo) && !mAggregateFilterDownTo.Equals("Everything"))
            {
                aggregateDeckName = mAggregateFilterDownTo + " ";
            }

            BookAndChapterNum minValue = mBookAndChapterNumbers[mTrackBarMin.Value];

            if (mTrackBarMin.Value == mTrackBarMax.Value)
            {
                aggregateDeckName += minValue.ToString();
                return(true);
            }

            BookAndChapterNum maxValue = mBookAndChapterNumbers[mTrackBarMax.Value];

            aggregateDeckName += string.Format("{0} → {1}", minValue.ToString(), maxValue.ToString());
            return(true);
        }
Esempio n. 2
0
        private void WriteAggregateDecks()
        {
            string aggregateDeckName;

            if (TryBuildAggregateDeckName(out aggregateDeckName))
            {
                EnablePermanentExtraOptionsFromUI(mAggregateEnabledOptions);

                const int totalSteps = 5;
                ResetProgressBar(totalSteps);

                // 1 : Aggregate all specified decks into a list
                List <Deck> sourceDecks = new List <Deck>();
                for (int i = mTrackBarMin.Value; i <= mTrackBarMax.Value; ++i)
                {
                    BookAndChapterNum selectedChapter = mBookAndChapterNumbers[i];
                    mDeckSerializer.AddAllDecksOfQualifyingBookAndChapter(selectedChapter, ref sourceDecks);
                }
                IncrementBar();

                // 2 : Combine the decks into a mega-deck
                Deck combinedDeck = new Deck(mDeckSerializer);
                combinedDeck.InitializeFromDeckList(sourceDecks, aggregateDeckName);
                IncrementBar();

                // 3 : Filter mega-deck down to selected card type
                CardType filterDownTo = CardType.kInvalid;
                switch (mAggregateFilterDownTo)
                {
                case "Verbs":
                    filterDownTo = CardType.kVerb;
                    break;

                case "Adjectives":
                    filterDownTo = CardType.kAdjective;
                    break;

                case "Phrases":
                    filterDownTo = CardType.kPhrase;
                    break;
                }

                if (filterDownTo != CardType.kInvalid)
                {
                    combinedDeck.FilterCardsDownTo(filterDownTo);
                }
                IncrementBar();

                // 4 : Randomize deck
                if (mDeckSerializer.HasExtraOptionEnabled(StudyOptions.Option.kRandomize))
                {
                    combinedDeck.RandomizeDeck();
                }
                IncrementBar();

                // 5 : Write Deck
                mDeckSerializer.SetPermanentExtraOption(StudyOptions.Option.kIncludeChapterSourceInResult);
                mDeckSerializer.WriteSingleDeck(combinedDeck);
                IncrementBar();

                mDeckSerializer.ClearPermanentExtraOptions();
            }
        }