Beispiel #1
0
        public RepeatSession GetOrGenerateCurrentSession(RepeatSessionType _Type)
        {
            RepeatSession session;

            if (Data.CurrentSessions.TryGetValue(_Type, out session) && session != null)
            {
                return(Data.CurrentSessions[_Type]);
            }

            session = new RepeatSession(_Type);
            Random random = new Random();

            switch (_Type)
            {
            case RepeatSessionType.FULL_REPEAT:
            case RepeatSessionType.FULL_REPEAT_REVERSED:
                foreach (Word word in Data.GetLearntWords().OrderBy(_W => random.Next()))
                {
                    session.AddWord(word);
                }
                break;

            case RepeatSessionType.REPEAT_FORGOTTEN:
                RepeatSession lastFullSession = Data.CompletedSessions.
                                                LastOrDefault(_S => _S.RepeatSessionType == RepeatSessionType.FULL_REPEAT);

                if (lastFullSession == null)
                {
                    return(null);
                }

                foreach (var word in lastFullSession.Words.Where(_W => _W.IsForgotten).OrderBy(_W => random.Next()))
                {
                    session.AddWord(word.English);
                }

                break;

            case RepeatSessionType.DAILY_REPEAT:
                foreach (var word in Data.GetDailyRepeatWords())
                {
                    session.AddWord(word.English);
                }
                break;

            case RepeatSessionType.DAILY_REPEAT_RANDOM:
                foreach (var word in Data.GetDailyRepeatWords().OrderBy(_W => random.Next()))
                {
                    session.AddWord(word.English);
                }
                break;

            case RepeatSessionType.ACTIVE_LEARN:
                return(null);
            }

            Data.CurrentSessions[_Type] = session;
            SaveDataToCache();
            return(session);
        }
Beispiel #2
0
        public RepeatSession GetActiveLearnSession()
        {
            RepeatSession session = new RepeatSession(RepeatSessionType.ACTIVE_LEARN);

            foreach (var word in Data.GetActiveLearnWords())
            {
                session.AddWord(word.English);
            }

            return(session);
        }
        string GetFullSessionStat(RepeatSession _Session)
        {
            int allWords  = _Session.Words.Count;
            int forgotten = _Session.Words.Count(_W => _W.IsForgotten);

            return(string.Format(
                       "{0}% ({1}/{2})",
                       allWords > 0 ? forgotten * 100 / allWords : 0,
                       forgotten,
                       allWords
                       ));
        }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.activity_learn_active_words);
            m_Session = WordsManager.Instance.GetActiveLearnSession();

            if (m_Session == null)
            {
                Toast.MakeText(Application.Context, "Cant generate session", ToastLength.Long).Show();
                Finish();
                return;
            }

            m_ListView = FindViewById <ListView>(Resource.Id.lwMain);
            m_ListView.TextFilterEnabled = true;
            m_ListView.Adapter           = m_ListViewAdapter = new ListItemWordAdapter(this, m_ListItemWords, false);
            m_ListView.ItemClick        += OnListItemClick;

            FindViewById <Button>(Resource.Id.btnNewWordsShowAll).Click += (sender, e) =>
            {
                foreach (var word in m_ListItemWords)
                {
                    word.ShowTranslate = true;
                }
                m_ListViewAdapter.NotifyDataSetChanged();
            };

            FindViewById <Button>(Resource.Id.btnNewWordsClear).Click += (sender, e) =>
            {
                foreach (var word in m_ListItemWords)
                {
                    word.ShowTranslate = false;
                }
                m_ListViewAdapter.NotifyDataSetChanged();
            };

            foreach (RepeatSessionWord word in m_Session.Words)
            {
                m_ListItemWords.Add(new ListItemWord()
                {
                    Russian = WordsManager.Instance.GetWord(word.English).Russian, English = word.English
                });
            }
            m_ListViewAdapter.NotifyDataSetChanged();
        }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.activity_repeat_word);

            RepeatSessionType type = (RepeatSessionType)Intent.Extras.GetInt("Type", 0);

            m_ListView = FindViewById <ListView>(Resource.Id.lwMain);

            m_Session = WordsManager.Instance.GetOrGenerateCurrentSession(type);

            if (m_Session == null)
            {
                Toast.MakeText(Application.Context, "Cant generate session", ToastLength.Long).Show();
                Finish();
                return;
            }

            if (m_Session.Words.Count == 0)
            {
                Toast.MakeText(Application.Context, "No words for that sesion", ToastLength.Long).Show();
                Finish();
                return;
            }

            m_ListView.TextFilterEnabled = true;
            m_ListView.Adapter           = m_ListViewAdapter = new ListItemWordAdapter(this, m_ListItemWords, type.NeedReverse());
            m_ListView.ItemClick        += OnListItemClick;

            m_NextButton        = FindViewById <Button>(Resource.Id.btnGoNext);
            m_NextButton.Click += (sender, e) =>
            {
                NextButtonClicked();
            };

            PrepareWords();
        }