Commits

HexRx committed 43be3e1

Add sign in state

Comments (0)

Files changed (1)

KPDataSave/Forms/States/SignIn.cs

+/*
+    KPDataSave - KeePass plugin which saves database in Dropbox service
+    Copyright (C) 2011-2012 HexRx
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Windows.Forms;
+using System.Diagnostics;
+using DropboxAPI.Exceptions;
+
+namespace KPDataSave.Forms.States
+{
+    public class SignIn : AbstractForm
+    {
+        private readonly StateControl _stateControl;
+
+        public SignIn(StateControl stateControl)
+        {
+            _stateControl = stateControl;
+            // Устанавливаем заголовок окна
+            Text = "Sign In. Step 1/3";
+            // Кнопка входа
+            Button btnSignIn = new Button();
+            btnSignIn.Dock = DockStyle.Fill;
+            btnSignIn.Text = "Sign In";
+            btnSignIn.UseVisualStyleBackColor = true;
+            btnSignIn.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
+            btnSignIn.Click += new System.EventHandler(BtnSignInClick);
+            tableLayout.Controls.Add(btnSignIn, 1, 1);
+        }
+
+        // Вход в аккаунт Dropbox
+        private void BtnSignInClick(object sender, EventArgs e)
+        {
+            try
+            {
+                // URL куда необходимо перекинуть
+                string url = _stateControl.DropboxClient.Login_GetUrlLink();
+                // Запуск браузера
+                Process.Start(url);
+            }
+            // Ошибка отправки данных, может произойти из-за отсутствия соединения с инетом
+            catch(DropboxClientException)
+            {
+                MessageBox.Show("Error executing query.\nCheck your Internet connection!", "", MessageBoxButtons.OK,
+                                MessageBoxIcon.Warning);
+                return;
+            }
+            
+            // Переход в состояние подтвержения через браузер
+            _stateControl.SetState(_stateControl.AcceptState);
+        }
+    }
+}