/// <summary>
 /// Создание экземпляра класса
 /// </summary>
 /// <param name="controller">Контроллер приложения</param>
 /// <param name="view">Представление предварительной настройки приложения</param>
 /// <param name="messageDialog">Механизм показа диалоговых сообщений</param>
 /// <param name="testsLoader">Загрузчик базы данных тестов</param>
 public PreloadPresenter
     (ApplicationController controller,
     IPreloadView view,
     IMessageDialog messageDialog,
     TestsLoader testsLoader) :
     base(controller, view)
 {
     _messageDialog = messageDialog;
     _testsLoader   = testsLoader;
 }
        /// <summary>
        /// Создание экземпляра класса
        /// </summary>
        /// <param name="controller">Контроллер приложения</param>
        /// <param name="view">Представление настроек приложения</param>
        /// <param name="messageDialog">Механизм показа диалоговых сообщений</param>
        /// <param name="waitingAnimation">Средство показа анимации ожидания</param>
        /// <param name="authentificator">Средство авторизации в системе Дневник</param>
        /// <param name="testsLoader">Загрузчик базы данных тестов</param>
        public SettingsPresenter
            (ApplicationController controller,
            ISettingsView view,
            IMessageDialog messageDialog,
            IWaitingAnimation waitingAnimation,
            DnevnikApiAuthentificator authentificator,
            TestsLoader testsLoader) :
            base(controller, view)
        {
            _messageDialog             = messageDialog;
            _waitingAnimation          = waitingAnimation;
            _dnevnikApiAuthentificator = authentificator;
            _testsLoader = testsLoader;

            view.UpdateTests       += UpdateTests;
            view.TryLogInToDnevnik += TryLogInToDnevnik;
            view.LogOutFromDnevnik += LogOutFromDnevnik;
        }
Exemple #3
0
        public SessionConfiguration(
            IProjectClonesManager fileManager,
            TestsLoader testLoader,
            IFactory <AutoCreationController> autoCreationControllerFactory,
            IRootFactory <SessionController> sessionFactory,
            IWhiteSource whiteCache)
        {
            _testLoader = testLoader;
            _autoCreationControllerFactory = autoCreationControllerFactory;
            _sessionFactory = sessionFactory;
            _whiteCache     = whiteCache;

            _originalFilesClone = fileManager.CreateClone("Mutants");

            _testsClone = fileManager.CreateClone("Tests");
            if (_originalFilesClone.IsIncomplete || _testsClone.IsIncomplete ||
                _testsClone.Assemblies.Count == 0)
            {
                AssemblyLoadProblem = true;
            }
        }
        public SessionConfiguration(
            IProjectClonesManager fileManager,
            TestsLoader testLoader,
            IFactory<AutoCreationController> autoCreationControllerFactory,
            IRootFactory<SessionController> sessionFactory,
            IWhiteSource whiteCache)
        {
            _testLoader = testLoader;
            _autoCreationControllerFactory = autoCreationControllerFactory;
            _sessionFactory = sessionFactory;
            _whiteCache = whiteCache;

            

            _originalFilesClone = fileManager.CreateClone("Mutants");

            _testsClone = fileManager.CreateClone("Tests");
            if (_originalFilesClone.IsIncomplete || _testsClone.IsIncomplete
                || _testsClone.Assemblies.Count == 0)
            {
                AssemblyLoadProblem = true;
            }
        }
        public void StartTest()
        {
            testsInfo = TestsLoader.LoadTestsFromFile(@"Resources/Tasks.test");
            if (randomizeTasks)
            {
                testsInfo = RandomizeArray(testsInfo);
            }
            if (testsArr != null)
            {
                for (int i = 0; i < testsArr.Length; i++)
                {
                    testsArr[i].Dispose();
                }
            }
            TestSelector.Items.Clear();
            testsArr = new BaseTest[testsInfo.Length];
            Padding singleAnswerPadding = new Padding(35, 0, 0, 0);
            Padding multyAnswerPadding  = new Padding(80, 0, 0, 0);
            int     imageBottomPadding  = 55;

            for (int i = 0; i < testsArr.Length; i++)
            {
                TestInfo info = testsInfo[i];
                switch (info.TestType)
                {
                case TestType.Text:
                    TestText testText = new TestText();
                    testText.Parent = TestPanelHolder;
                    testText.Size   = TestPanelHolder.Size;

                    TextBox textBox = new TextBox();
                    testText.AnswerBox      = textBox;
                    textBox.Parent          = testText;
                    textBox.Font            = new Font(textBox.Font.FontFamily, 32);
                    textBox.BackColor       = Color.FromArgb(255, 4, 13, 21);
                    textBox.ForeColor       = Color.FromKnownColor(KnownColor.Control);
                    textBox.TextAlign       = HorizontalAlignment.Center;
                    textBox.Width           = 650;
                    textBox.Anchor          = AnchorStyles.Left;
                    textBox.Left            = (testText.Width - textBox.Width) / 2;
                    textBox.Top             = (testText.Height - textBox.Height) / 2;
                    textBox.CharacterCasing = CharacterCasing.Upper;


                    testsArr[i] = testText;
                    break;

                case TestType.SingleAnswer:
                    TestSingleAnswer testSingleAnswer = new TestSingleAnswer();
                    testSingleAnswer.Parent           = TestPanelHolder;
                    testSingleAnswer.Size             = TestPanelHolder.Size;
                    testSingleAnswer.LayoutPanel.Size = testSingleAnswer.Size;
                    testSingleAnswer.RadioButtons     = new RadioButton[info.Tasks.Length];

                    for (int x = 0; x < info.Tasks.Length; x++)
                    {
                        RadioButton button = new RadioButton();
                        testSingleAnswer.RadioButtons[x] = button;
                        button.Parent    = testSingleAnswer.LayoutPanel;
                        button.ForeColor = Color.FromKnownColor(KnownColor.Control);
                        button.Text      = (x + 1) + ") " + info.Tasks[x];
                        button.Padding   = singleAnswerPadding;
                        button.Font      = new Font(button.Font.FontFamily, 20);

                        Size size = testSingleAnswer.LayoutPanel.Size;
                        size.Width  = size.Width / 2 - 9;
                        size.Height = (size.Height / (int)Math.Ceiling(info.Tasks.Length * 0.5)) - 3;
                        button.Size = size;
                    }
                    testsArr[i] = testSingleAnswer;
                    break;

                case TestType.MultyAnswer:
                    TestMultyAnswer testMultyAnswer = new TestMultyAnswer();

                    testMultyAnswer.Parent           = TestPanelHolder;
                    testMultyAnswer.Size             = TestPanelHolder.Size;
                    testMultyAnswer.LayoutPanel.Size = testMultyAnswer.Size;
                    testMultyAnswer.CheckBoxes       = new CheckBox[info.Tasks.Length];
                    testMultyAnswer.MultyAnswer      = new string[info.Tasks.Length];

                    for (int x = 0; x < info.Tasks.Length; x++)
                    {
                        CheckBox checkBox = new CheckBox();

                        testMultyAnswer.CheckBoxes[x] = checkBox;
                        checkBox.Parent    = testMultyAnswer.LayoutPanel;
                        checkBox.ForeColor = Color.FromKnownColor(KnownColor.Control);
                        checkBox.Text      = (x + 1) + ") " + info.Tasks[x];
                        checkBox.Padding   = multyAnswerPadding;
                        checkBox.Font      = new Font(checkBox.Font.FontFamily, 20);

                        Size size = testMultyAnswer.LayoutPanel.Size;
                        size.Height   = (size.Height / info.Tasks.Length) - 3;
                        checkBox.Size = size;
                    }

                    testsArr[i] = testMultyAnswer;
                    break;

                case TestType.Image:
                    TestImage testImage = new TestImage();

                    testImage.Parent           = TestPanelHolder;
                    testImage.Size             = TestPanelHolder.Size;
                    testImage.LayoutPanel.Size = testImage.Size;
                    testImage.RadioButtons     = new RadioButton[info.Tasks.Length];

                    for (int x = 0; x < info.Tasks.Length; x++)
                    {
                        RadioButton button = new RadioButton();
                        testImage.RadioButtons[x] = button;
                        button.Parent             = testImage.LayoutPanel;
                        button.ForeColor          = Color.FromKnownColor(KnownColor.Control);
                        button.Text = (x + 1) + ") " + info.Tasks[x];
                        button.Font = new Font(button.Font.FontFamily, 14);

                        Size size = testImage.LayoutPanel.Size;
                        size.Width  = size.Width / 2 - 9;
                        size.Height = (size.Height / (int)Math.Ceiling(info.Tasks.Length * 0.5)) - 3;
                        button.Size = size;
                        Padding padding = new Padding(button.Width / 2, button.Height - imageBottomPadding, 0, 0);
                        button.Padding = padding;


                        PictureBox picture     = new PictureBox();
                        string     picturePath = @"Resources/";
                        picturePath     += info.Pictures[x];
                        picture.Image    = Image.FromFile(picturePath);
                        picture.Parent   = button;
                        picture.SizeMode = PictureBoxSizeMode.Zoom;

                        int imageSideSize = button.Height - imageBottomPadding - 4;
                        picture.Size = new Size(imageSideSize, imageSideSize);
                        picture.Left = (button.Width / 2) - (imageSideSize / 2);
                        picture.Top  = 4;
                    }

                    testsArr[i] = testImage;
                    break;

                case TestType.Connection:
                    testsArr[i] = new TestConnection();
                    break;

                default:
                    break;
                }
                testsArr[i].TestInfo = info;
                testsArr[i].Hide();

                TestSelector.Items.Add((i + 1) + ") " + info.TestTitle);
            }
            selectedTask  = 0;
            Question.Text = "Вопрос: " + testsInfo[selectedTask].TestTask;
            testsArr[selectedTask].Show();
        }