Ejemplo n.º 1
0
        /// <summary>
        /// Вызывается при обычном запуске приложения пользователем.  Будут использоваться другие точки входа,
        /// если приложение запускается для открытия конкретного файла, отображения
        /// результатов поиска и т. д.
        /// </summary>
        /// <param name="e">Сведения о запросе и обработке запуска.</param>
        protected async override void OnLaunched(LaunchActivatedEventArgs e)
        {
            if (!string.IsNullOrEmpty(e.Arguments))
            {
                int noteId = Convert.ToInt32(e.Arguments.Substring(e.Arguments.IndexOf("=") + 1));
                ScheduledToast.DeleteScheduledToast(noteId);

                SimpleNotesModel model = new SimpleNotesModel();
                SNItem item = model.GetItemById(noteId);

                item.N_timer_timestamp = 0;

                model.EditNote(item);
            }

            //
            //GeographicRegion userRegion = new GeographicRegion();
            //System.Diagnostics.Debug.WriteLine("=>" + Windows.System.UserProfile.GlobalizationPreferences.Languages[0]);
            //

            AppConstants appConst = new AppConstants();

            // Инициализируем БД
            StorageFile dbFile = null;
            bool isExists = true;

            try
            {
                dbFile = await StorageFile.GetFileFromPathAsync(AppConstants.DataBasePath);
            }
            catch (FileNotFoundException)
            {
                isExists = false;
            }

            if (!isExists)
            {
                StorageFile input = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(@"Database\simple-notes.db3");
                StorageFolder folder = ApplicationData.Current.LocalFolder;
                StorageFile output = await folder.CreateFileAsync("simple-notes.db3", CreationCollisionOption.ReplaceExisting);

                IBuffer buffer = await FileIO.ReadBufferAsync(input);
                await FileIO.WriteBufferAsync(output, buffer);

                string categoryName = AppConstants.AppMessages[AppConstants.UsedLanguage]["init_category"];

                using (var db = new SQLitePCL.SQLiteConnection(AppConstants.DataBasePath))
                {
                    using (var stmt = db.Prepare("insert into categories (c_caption) values (?)"))
                    {
                        stmt.Bind(1, categoryName);
                        stmt.Step();
                    }
                }
            }
            // **************
#if DEBUG
            if (System.Diagnostics.Debugger.IsAttached)
            {
                this.DebugSettings.EnableFrameRateCounter = true;
            }
#endif

            Frame rootFrame = Window.Current.Content as Frame;

            // Не повторяйте инициализацию приложения, если в окне уже имеется содержимое,
            // только обеспечьте активность окна
            if (rootFrame == null)
            {
                // Создание фрейма, который станет контекстом навигации, и переход к первой странице
                rootFrame = new Frame();

                // TODO: Измените это значение на размер кэша, подходящий для вашего приложения
                rootFrame.CacheSize = 1;

                // Задайте язык по умолчанию
                rootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];

                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
                {
                    // TODO: Загрузить состояние из ранее приостановленного приложения
                }

                // Размещение фрейма в текущем окне
                Window.Current.Content = rootFrame;
            }

            if (rootFrame.Content == null)
            {
                // Удаляет турникетную навигацию для запуска.
                if (rootFrame.ContentTransitions != null)
                {
                    this.transitions = new TransitionCollection();
                    foreach (var c in rootFrame.ContentTransitions)
                    {
                        this.transitions.Add(c);
                    }
                }

                rootFrame.ContentTransitions = null;
                rootFrame.Navigated += this.RootFrame_FirstNavigated;

                // Если стек навигации не восстанавливается для перехода к первой странице,
                // настройка новой страницы путем передачи необходимой информации в качестве параметра
                // навигации
                if (!rootFrame.Navigate(typeof(MainPage), e.Arguments))
                {
                    throw new Exception("Failed to create initial page");
                }
            }

            // Обеспечение активности текущего окна
            Window.Current.Activate();
        }
        private async void btnSave_Click(object sender, RoutedEventArgs e)
        {
            if (string.IsNullOrEmpty(txtNoteCaption.Text) || string.IsNullOrWhiteSpace(txtNoteCaption.Text))
            {
                await (new MessageDialog(AppConstants.AppMessages[AppConstants.UsedLanguage]["np_verifyNoteCaption"]).ShowAsync());
                return;
            }

            SimpleNotesModel model = new SimpleNotesModel();
            SNItem item = new SNItem();

            if (_noteItem == null)
            {
                item.N_caption = txtNoteCaption.Text;
                item.N_cid = (cboNoteCategory.SelectedItem as Category).c_id;
                item.N_text = txtNoteText.Text;
                item.N_timestamp = (int)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;

                if (TmpShedule.IsChanged)
                {
                    item.N_timer_timestamp = TmpShedule.Schedule;
                    TmpShedule.Clear();
                    ScheduledToast.CreateScheduledToast(item.N_timer_timestamp, model.GetLastId(), item.N_caption);
                }

                if (TmpPassword.IsChanged)
                {
                    string hash = Hash.ComputeHash(TmpPassword.NewPassword);
                    string encryptedNoteText = Cipher.Encrypt(txtNoteText.Text, TmpPassword.NewPassword, hash);

                    TmpPassword.Clear();

                    item.N_text = encryptedNoteText;
                    item.N_crypted = 1;
                    item.N_shadow = hash;
                }

                model.AddNote(item);
            }
            else
            {
                item.N_id = _noteItem.N_id;
                item.N_caption = txtNoteCaption.Text;
                item.N_cid = (cboNoteCategory.SelectedItem as Category).c_id;
                item.N_text = txtNoteText.Text;

                if (TmpShedule.IsChanged)
                {
                    item.N_timer_timestamp = TmpShedule.Schedule;
                    TmpShedule.Clear();

                    ScheduledToast.DeleteScheduledToast(item.N_id);
                    ScheduledToast.CreateScheduledToast(item.N_timer_timestamp, item.N_id, item.N_caption);
                }
                else
                {
                    item.N_timer_timestamp = _noteItem.N_timer_timestamp;
                }

                if (TmpPassword.IsChanged)
                {
                    string hash = Hash.ComputeHash(TmpPassword.NewPassword);
                    string encryptedNoteText = Cipher.Encrypt(item.N_text, TmpPassword.NewPassword, hash);

                    TmpPassword.Clear();

                    item.N_text = encryptedNoteText;
                    item.N_crypted = 1;
                    item.N_shadow = hash;
                }
                else
                {
                    if (_noteItem.N_crypted == 1)
                    {
                        item.N_text = Cipher.Encrypt(item.N_text, TmpPassword.NewPassword, _noteItem.N_shadow);
                        TmpPassword.Clear();

                        item.N_crypted = 1;
                        item.N_shadow = _noteItem.N_shadow;
                    }
                }

                model.EditNote(item);
            }

            Frame.GoBack();
        }