/// <summary> /// Конструктор объекта приложения. /// </summary> public App() { // Глобальный обработчик неперехваченных исключений. UnhandledException += Application_UnhandledException; // Стандартная инициализация Silverlight InitializeComponent(); // Инициализация телефона InitializePhoneApplication(); // Отображение сведений о профиле графики во время отладки. if (System.Diagnostics.Debugger.IsAttached) { // Отображение текущих счетчиков частоты смены кадров Application.Current.Host.Settings.EnableFrameRateCounter = true; // Отображение областей приложения, перерисовываемых в каждом кадре. //Application.Current.Host.Settings.EnableRedrawRegions = true; // Включение режима визуализации анализа нерабочего кода // для отображения областей страницы, переданных в GPU, с цветным наложением. //Application.Current.Host.Settings.EnableCacheVisualization = true; // Отключите обнаружение простоя приложения, установив для свойства UserIdleDetectionMode // объекта PhoneApplicationService приложения значение Disabled. // Внимание! Используйте только в режиме отладки. Приложение, в котором отключено обнаружение бездействия пользователя, будет продолжать работать // и потреблять энергию батареи, когда телефон не будет использоваться. PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled; } mDictionary = Dictionary.Open(Dictionary.AppConnectionString); mVocabulary = Vocabulary.Open(Vocabulary.IsoConnectionString); }
public static Dictionary Open(string connectionString) { Dictionary self = new Dictionary(connectionString); if (!self.DatabaseExists()) { self.CreateDatabase(); } self.Upgrade(); self.TotalWords = self.Words.Count(); self.TotalTranslations = self.Translations.Count(); self.Description = self.Info.FirstOrDefault(); return self; }
public Word AddWord(Dictionary.Word dictWord, Dictionary dict, bool submit = true) { Word w = new Word { Text = dictWord.Text, SourceLang = dict.Description.SourceLanguage }; foreach (Dictionary.Translation dt in dictWord.Translations) { Translation t = new Translation { Word = w, Text = dt.Text, TargetLang = dict.Description.TargetLanguage, ReverseMark = MarkValue.ToLearn, ForwardMark = MarkValue.ToLearn}; Translations.InsertOnSubmit(t); w.Translations.Add(t); } Words.InsertOnSubmit(w); if (submit) { SubmitChanges(); } return w; }
public bool StartNextTest() { Dictionary<MarkValue, List<int>> allIds = new Dictionary<MarkValue, List<int>>(); int numTriedMarks = 0; while (true) { int random = mRand.Next(100); MarkValue mark = MarkValue.Unknown; if (random < 15) // 15% { mark = MarkValue.AlmostLearned; } else if (random < 50) // 35% { mark = MarkValue.WithHints; } else // 50% { mark = MarkValue.ToLearn; } if (!allIds.ContainsKey(mark)) { var idQuery = from t in mVocabulary.Translations where t.ReverseMark == mark select t.ID; allIds[mark] = idQuery.ToList(); numTriedMarks++; } if (allIds[mark].Count > 0) { random = mRand.Next(allIds[mark].Count); var tranQuery = from t in mVocabulary.Translations where t.WordID == random select t; List<Vocabulary.Translation> trans = tranQuery.ToList(); if (trans.Count > 0) { CurrentTest = new ReverseTest(trans.First()); return true; } else { break; } } else { // try again unless there is nothing to learn if (numTriedMarks == 3) { break; } } } CurrentTest = null; return false; }
public void Import(FileStream fs, Dictionary dict) { mCancel = false; using (StreamReader stream = new StreamReader(fs, Encoding.Unicode)) { string line = null; string word = null; List<string> translations = new List<string>(); Info info = new Info(); while ((line = stream.ReadLine()) != null) { if (mCancel) break; if (line.StartsWith("#")) { if (line.StartsWith("#INDEX_LANGUAGE")) { info.SourceLanguage = GetSubstringBetween(line, "\""); } else if (line.StartsWith("#CONTENTS_LANGUAGE")) { info.TargetLanguage = GetSubstringBetween(line, "\""); } else if (line.StartsWith("#NAME")) { info.Name = GetSubstringBetween(line, "\""); } } else if (line.Length != 0 && !Char.IsWhiteSpace(line, 0)) { word = line; } else if (line.Contains("[trn]")) { translations.Add(GetSubstringBetween(line, "[trn]", "[/trn]")); } else if (line.Trim().Length == 0) { Dictionary.Word w = dict.AddWord(word, translations, false); if (w == null) { Debug.WriteLine("Importing failed on word '{0}'", word); break; } info.WordCount++; info.TranslationCount += translations.Count; if (info.WordCount % 100 == 0) { dict.SubmitChanges(); info.Progress = (double) fs.Position / (double) fs.Length; if (ProgressHandler != null) { ProgressHandler.Invoke(this, info); } } translations.Clear(); } } dict.SubmitChanges(); Dictionary.Information dictInfo = new Dictionary.Information(); dictInfo.Name = info.Name; dictInfo.SourceLanguage = info.SourceLanguage; dictInfo.TargetLanguage = info.TargetLanguage; dictInfo.OriginalFormat = "dsl"; dictInfo.OriginalFile = fs.Name; dict.Info.InsertOnSubmit(dictInfo); dict.SubmitChanges(); } }
public DictViewModel(Dictionary dict, Vocabulary voc) { mDictionary = dict; mVocabulary = voc; }