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); }
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(); }