public void ReadQuestionTest() { Repository.Default.DeleteDatabase(); Repository.Default.CreateDatabase(); Category category = new Category(); category.Name = "bob"; Category.Save(category); Question question = new Question(); question.Title = "Is Fiona going to the baby?"; question.Answer = "Yes, of course within seconds"; question.AskCount = 60; question.Category = Category.Read(1); question.EasinessFactor = 70.50; question.Interval = 80; question.LastAsked = DateTime.Today.AddDays(-2); question.NextAskOn = DateTime.Today.AddDays(2); question.Order = 90; question.PreviousInterval = 100; question.ResponseQuality = 110; Question.Save(question); question = Question.Read(1); Assert.AreEqual("Is Fiona going to the baby?", question.Title); Assert.AreEqual("Yes, of course within seconds", question.Answer); Assert.AreEqual(60, question.AskCount); Assert.AreEqual(1, question.Category.Id); Assert.AreEqual(70.50, question.EasinessFactor); Assert.AreEqual(DateTime.Today.AddDays(-2), question.LastAsked); Assert.AreEqual(DateTime.Today.AddDays(2), question.NextAskOn); Assert.AreEqual(90, question.Order); Assert.AreEqual(100, question.PreviousInterval); Assert.AreEqual(110, question.ResponseQuality); }
public override void ViewDidLoad() { // Hide the toolbar base.ViewDidLoad(); NavigationController.SetToolbarHidden(true,true); // Error state if (_questions.Count < 1) { Logger.Warn("AnswerQuestionsController was pushed with zero questions for {0}", _category.Name); NavigationController.PopViewControllerAnimated(true); } // Flashcard bg image _bgImage = UIImage.FromFile("Assets/Images/flashcardbg.jpg"); _bgImageView = new UIImageView(_bgImage); _bgImageView.Frame = new RectangleF(0,0,320,480); View.AddSubview(_bgImageView); // The question label _labelQuestion = new UILabel(); _labelQuestion.Text = ""; _labelQuestion.Font = UIFont.SystemFontOfSize(24f); _labelQuestion.TextColor = UIColor.Black; _labelQuestion.Frame = new RectangleF(15, 15, 290, 50); _labelQuestion.BackgroundColor = UIColor.Clear; _labelQuestion.Lines = 2; View.AddSubview(_labelQuestion); // Show button, triggers the answer being visible _buttonShow = new UnderlineButton(); _buttonShow.Font = UIFont.SystemFontOfSize(16f); _buttonShow.SetTitle("Reveal answer...",UIControlState.Normal); _buttonShow.SetTitleColor(UIColor.Black,UIControlState.Normal); _buttonShow.HorizontalAlignment = UIControlContentHorizontalAlignment.Left; _buttonShow.Frame = new RectangleF(15,80,120,25); _buttonShow.TouchDown += new EventHandler(ShowAnswer); View.AddSubview(_buttonShow); // The answer label _labelAnswer = new UILabel(); _labelAnswer.Text = ""; _labelAnswer.Font = UIFont.SystemFontOfSize(24f); _labelAnswer.TextColor = UIColor.Gray; _labelAnswer.Frame = new RectangleF(15, 140, 290, 180); _labelAnswer.BackgroundColor = UIColor.Clear; _labelAnswer.Lines = 7; View.AddSubview(_labelAnswer); // The 6 score buttons AddScoreButtons(); // The first question, display it in the labels _currentQuestion = _questions[_questionIndex]; BindQuestion(_currentQuestion); }
private void ScoreClick(object sender, EventArgs e) { ScoreButton button = (ScoreButton)sender; int score = button.Score; // Update the Question's properties and save it QuestionManager.AnswerQuestion(_currentQuestion, score); Question.Save(_currentQuestion); // Pop the next question, or if there's none left pop the controller ++_questionIndex; if (_questionIndex < _questions.Count) { _currentQuestion = _questions[_questionIndex]; BindQuestion(_currentQuestion); } else { NavigationController.PopViewControllerAnimated(true); } }
/// <summary> /// Sets up the question/answer labels for the provided question. /// </summary> /// <param name="question"></param> private void BindQuestion(Question question) { DisableScoreButtons(); // Question and answer text _labelQuestion.Text = question.Title; _labelAnswer.Alpha = 0; _labelAnswer.Text = question.Answer; // As UILabel sucks, this verticially aligns it NSString nsString = new NSString(_labelAnswer.Text); SizeF size = nsString.StringSize(_labelAnswer.Font); SizeF requiredSize = new SizeF(size.Width,size.Height * _labelAnswer.Lines); _labelAnswer.Frame = new RectangleF(_labelAnswer.Frame.Left, _labelAnswer.Frame.Top, _labelAnswer.Frame.Width, requiredSize.Height); for (int i=0;i < requiredSize.Height / size.Height ;i++) { _labelAnswer.Text += "\n"; } }
public void DeleteRow(Question question) { Questions.Remove(question); }
public override void ViewDidLoad() { base.ViewDidLoad(); // Remove this view from the stack if (_question == null) { _question = new Question(); _question.Category = _category; Title = "Add Question"; } else { Title = "Edit Question"; } View.BackgroundColor = UIColor.GroupTableViewBackgroundColor; // Question label _labelQuestion = new UILabel(); _labelQuestion.Text = "Question"; _labelQuestion.Font = UIFont.BoldSystemFontOfSize(16f); _labelQuestion.Frame = new RectangleF(10, 10, 300, 25); _labelQuestion.BackgroundColor = UIColor.Clear; View.AddSubview(_labelQuestion); // Question textbox _textFieldQuestion = new UITextField(); _textFieldQuestion.Text = _question.Title; _textFieldQuestion.Frame = new RectangleF(10, 35, 300, 30); _textFieldQuestion.BorderStyle = UITextBorderStyle.RoundedRect; _textFieldQuestion.ShouldReturn = delegate { _textFieldQuestion.ResignFirstResponder(); return true; }; View.AddSubview(_textFieldQuestion); // Answer label _labelAnswer = new UILabel(); _labelAnswer.Text = "Answer"; _labelAnswer.Font = UIFont.BoldSystemFontOfSize(16f); _labelAnswer.Frame = new RectangleF(10, 75, 300, 25); _labelAnswer.BackgroundColor = UIColor.Clear; View.AddSubview(_labelAnswer); // Answer textbox _textFieldAnswer = new UITextField(); _textFieldAnswer.Text = _question.Answer; _textFieldAnswer.Frame = new RectangleF(10, 100, 300, 120); _textFieldAnswer.BorderStyle = UITextBorderStyle.RoundedRect; _textFieldAnswer.ShouldReturn = delegate { _textFieldAnswer.ResignFirstResponder(); return true; }; View.AddSubview(_textFieldAnswer); // Tips section _labelTipsHeader = new UILabel(); _labelTipsHeader.Text = "Tips"; _labelTipsHeader.Font = UIFont.BoldSystemFontOfSize(16f); _labelTipsHeader.TextColor = UIColor.Gray; _labelTipsHeader.Frame = new RectangleF(15, 225, 300, 25); _labelTipsHeader.BackgroundColor = UIColor.Clear; View.AddSubview(_labelTipsHeader); _labelTipsBody = new UILabel(); _labelTipsBody.Text = "Make the question title short, make the answer short with " + "only a few points. Use acronyms, rhymes and mneumonics where possible. More tips can be found in the help."; _labelTipsBody.Font = UIFont.SystemFontOfSize(16f); _labelTipsBody.TextColor = UIColor.Gray; _labelTipsBody.Frame = new RectangleF(15, 245, 295, 100); _labelTipsBody.BackgroundColor = UIColor.Clear; _labelTipsBody.Lines = 10; View.AddSubview(_labelTipsBody); // Cancel _cancelButton = new UIBarButtonItem(); _cancelButton.Title = "Cancel"; _cancelButton.Clicked += delegate(object sender, EventArgs e) { NavigationController.PopViewControllerAnimated(true); }; // Save button _saveButton = new UIBarButtonItem(); _saveButton.Title = "Save"; _saveButton.Clicked += SaveClick; // Hide the navigation bar, back button and toolbar. NavigationController.SetToolbarHidden(true, true); NavigationItem.HidesBackButton = true; NavigationItem.SetLeftBarButtonItem(_cancelButton, false); NavigationItem.SetRightBarButtonItem(_saveButton, false); }
public AddEditQuestionController(Question question,Category category) { // Null means new category _question = question; _category = category; }
/// <summary> /// Saves the question to the default repository, returning its id. /// </summary> /// <param name="question"></param> /// <returns></returns> public static int Save(Question question) { return Repository.Default.SaveQuestion(question); }
/// <summary> /// Moves the provided question to the new index in the list, and updates all other questions. /// </summary> /// <param name="question"></param> /// <param name="newIndex"></param> public static void Move(Question question, int newIndex) { Repository.Default.MoveQuestion(question, newIndex); }