Seems to work
This commit is contained in:
parent
077fda732a
commit
f2bb4b3e5c
@ -2,7 +2,8 @@
|
|||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:local="clr-namespace:Päevaküsimus"
|
xmlns:local="clr-namespace:Päevaküsimus"
|
||||||
StartupUri="MainWindow.xaml">
|
StartupUri="MainWindow.xaml"
|
||||||
|
Exit="App_OnExit">
|
||||||
<Application.Resources>
|
<Application.Resources>
|
||||||
|
|
||||||
</Application.Resources>
|
</Application.Resources>
|
||||||
|
@ -13,5 +13,15 @@ namespace Päevaküsimus
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class App : Application
|
public partial class App : Application
|
||||||
{
|
{
|
||||||
|
public static MainWindowVM mwvm;
|
||||||
|
private void App_OnExit(object sender, ExitEventArgs e)
|
||||||
|
{
|
||||||
|
if (App.mwvm != null)
|
||||||
|
{
|
||||||
|
SerializationService.Serialize(App.mwvm.questions);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,15 +19,16 @@
|
|||||||
<ColumnDefinition />
|
<ColumnDefinition />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<Label Grid.Column="0" Grid.Row="0" Content="Päevaküsimus on:"/>
|
<Label Grid.Column="0" Grid.Row="0" Content="Päevaküsimus on:"/>
|
||||||
<Label Grid.Column="1" Grid.Row="0" Content="Placeholder"/>
|
<Label Grid.Column="1" Grid.Row="0" Content="{Binding dayQuestion.question}"/>
|
||||||
<Label Grid.Column="0" Grid.Row="1" Content="Vali õige vastuse variant"/>
|
<Label Grid.Column="0" Grid.Row="1" Content="Vali õige vastuse variant"/>
|
||||||
<ListBox Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2">
|
<ListBox Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" ItemsSource="{Binding dayQuestion.answers}" x:Name="gameAnswerSelectionListBox" SelectionChanged="GameAnswerSelectionListBox_OnSelectionChanged">
|
||||||
<ListBox.ItemTemplate>
|
<ListBox.ItemTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<Label Content="Bla" />
|
<Label Content="{Binding answer}" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</ListBox.ItemTemplate>
|
</ListBox.ItemTemplate>
|
||||||
</ListBox>
|
</ListBox>
|
||||||
|
<Button x:Name="displayNewQuestion" Content="Kuva uus küsimus" Grid.Column="1" HorizontalAlignment="Right" Margin="0,0,0,0" Grid.Row="1" Padding="7,0" Click="DisplayNewQuestion_OnClick"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem Header="Admin">
|
<TabItem Header="Admin">
|
||||||
@ -42,7 +43,7 @@
|
|||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<Label Grid.Row="0" Grid.Column="0" Content="Küsimused"></Label>
|
<Label Grid.Row="0" Grid.Column="0" Content="Küsimused"></Label>
|
||||||
<Label Grid.Row="0" Grid.Column="1" Content="Vaata/Muuda"></Label>
|
<Label Grid.Row="0" Grid.Column="1" Content="Vaata/Muuda"></Label>
|
||||||
<ListBox x:Name="allQuestionsListBox" Grid.Column="0" Grid.Row="1" ItemsSource="{Binding questions}" SelectionChanged="AllQuestionsListBox_OnSelectionChanged">
|
<ListBox x:Name="allQuestionsListBox" Grid.Column="0" Grid.Row="1" ItemsSource="{Binding questions}" SelectionChanged="AllQuestionsListBox_OnSelectionChanged" Width="150">
|
||||||
<ListBox.ItemTemplate>
|
<ListBox.ItemTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<Label Content="{Binding question}" />
|
<Label Content="{Binding question}" />
|
||||||
@ -57,14 +58,25 @@
|
|||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="Auto"></ColumnDefinition>
|
<ColumnDefinition Width="Auto"></ColumnDefinition>
|
||||||
<ColumnDefinition></ColumnDefinition>
|
<ColumnDefinition></ColumnDefinition>
|
||||||
|
<ColumnDefinition Width="Auto"></ColumnDefinition>
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<Label Grid.Row="0" Grid.Column="0" Content="Küsimus:"></Label>
|
<Label Grid.Row="0" Grid.Column="0" Content="Küsimus:"></Label>
|
||||||
<TextBox Grid.Row="0" Grid.Column="1" Text="Uus Küsimus?"></TextBox>
|
<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding selectedQuestion.question}" KeyUp="QuestionQuestionTextBox_OnKeyUp" x:Name="questionQuestionTextBox"/>
|
||||||
|
<DataGrid Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" ItemsSource="{Binding selectedQuestion.answers}" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False">
|
||||||
<DataGrid Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" x:Name="dataGrid" ItemsSource="{Binding selectedQuestion.answers}">
|
<DataGrid.Columns>
|
||||||
|
<DataGridTextColumn Header="Vastus" IsReadOnly="False" Binding="{Binding answer}" Width="*">
|
||||||
|
</DataGridTextColumn>
|
||||||
|
<DataGridCheckBoxColumn Header="Õige?" IsReadOnly="False" Binding="{Binding correct}">
|
||||||
|
</DataGridCheckBoxColumn>
|
||||||
|
<DataGridTemplateColumn Header="Vastanuid" IsReadOnly="True">
|
||||||
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
|
<DataTemplate>
|
||||||
|
<Label Content="{Binding selectionCount}" Margin="0" Padding="0" HorizontalContentAlignment="Center"/>
|
||||||
|
</DataTemplate>
|
||||||
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
|
</DataGridTemplateColumn>
|
||||||
|
</DataGrid.Columns>
|
||||||
</DataGrid>
|
</DataGrid>
|
||||||
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
@ -31,14 +31,34 @@ namespace Päevaküsimus
|
|||||||
|
|
||||||
private void AllQuestionsListBox_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
|
private void AllQuestionsListBox_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||||
{
|
{
|
||||||
if (this.allQuestionsListBox.SelectedIndex > -1)
|
if (this.allQuestionsListBox.SelectedIndex > 0)
|
||||||
{
|
{
|
||||||
_vm.selectedQuestion = allQuestionsListBox.SelectedItem as Question;
|
_vm.selectedQuestion = allQuestionsListBox.SelectedItem as Question;
|
||||||
}
|
}
|
||||||
else
|
else if (this.allQuestionsListBox.SelectedIndex == 0)
|
||||||
{
|
{
|
||||||
_vm.selectedQuestion = new Question("Uus küsimus");
|
this.allQuestionsListBox.SelectedItem = _vm.CreateNewQuestion();
|
||||||
}
|
}
|
||||||
|
this.questionQuestionTextBox.SelectAll();
|
||||||
|
this.questionQuestionTextBox.Focus();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void QuestionQuestionTextBox_OnKeyUp(object sender, KeyEventArgs e)
|
||||||
|
{
|
||||||
|
_vm.selectedQuestion.question = questionQuestionTextBox.Text;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DisplayNewQuestion_OnClick(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
_vm.dayQuestion = _vm.GetQuestionOfTheDay();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void GameAnswerSelectionListBox_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||||
|
{
|
||||||
|
var answer = gameAnswerSelectionListBox.SelectedItem as Answer;
|
||||||
|
var winText = answer.correct ? "You WON!" : "Vale vastus :(";
|
||||||
|
MessageBox.Show($"Peale sinu on selle vastuse valinud veel {answer.selectionCount} inimest.", winText);
|
||||||
|
answer.selectionCount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ using Päevaküsimus.Models;
|
|||||||
|
|
||||||
namespace Päevaküsimus
|
namespace Päevaküsimus
|
||||||
{
|
{
|
||||||
class MainWindowVM:NotificationBase
|
public class MainWindowVM : NotificationBase
|
||||||
{
|
{
|
||||||
public ObservableCollection<Question> questions { get; set; }
|
public ObservableCollection<Question> questions { get; set; }
|
||||||
private Question _seleceQuestion;
|
private Question _seleceQuestion;
|
||||||
@ -17,39 +17,59 @@ namespace Päevaküsimus
|
|||||||
set
|
set
|
||||||
{
|
{
|
||||||
_seleceQuestion = value;
|
_seleceQuestion = value;
|
||||||
selectedQuestionAnswers = value.answers;
|
|
||||||
NotifyPropertyChanged();
|
NotifyPropertyChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private ObservableCollection<Answer> _selectedQuestionAnswers;
|
private Question _dayQuestion;
|
||||||
public ObservableCollection<Answer> selectedQuestionAnswers {
|
public Question dayQuestion
|
||||||
get { return _selectedQuestionAnswers; }
|
{
|
||||||
|
get { return _dayQuestion; }
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
_selectedQuestionAnswers = value;
|
_dayQuestion = value;
|
||||||
NotifyPropertyChanged();
|
NotifyPropertyChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Random _rnd;
|
private Random _rnd;
|
||||||
|
|
||||||
public MainWindowVM()
|
public MainWindowVM()
|
||||||
{
|
{
|
||||||
this._rnd = new Random();
|
this._rnd = new Random();
|
||||||
this.questions = new ObservableCollection<Question>();
|
this.questions = SerializationService.DeSerialize();
|
||||||
var question = new Question("Mis värvi on armastus?");
|
if (this.questions == null)
|
||||||
question.AddAnswer(new Answer("Punane", true));
|
|
||||||
foreach (var color in new [] {"Roheline", "Sinine", "Roosa", "Lilla"})
|
|
||||||
{
|
{
|
||||||
question.AddAnswer(new Answer(color));
|
this.questions = new ObservableCollection<Question>();
|
||||||
}
|
var question = new Question("Lisa uus küsimus");
|
||||||
this.questions.Add(question);
|
this.questions.Add(question);
|
||||||
this.questions.Add(new Question("Test"));
|
}
|
||||||
|
App.mwvm = this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Question CreateNewQuestion()
|
||||||
|
{
|
||||||
|
var question = new Question("Ja minu uueks küsimuseks on?");
|
||||||
|
question.AddAnswer(new Answer("Õige vastus 1", true));
|
||||||
|
foreach (var answer in new[] { "Vale vastus 1", "Vale vastus 2", "Vale vastus 3", "Vale vastus 4" })
|
||||||
|
{
|
||||||
|
question.AddAnswer(new Answer(answer));
|
||||||
|
}
|
||||||
|
this.questions.Insert(1, question);
|
||||||
|
this.selectedQuestion = question;
|
||||||
|
return question;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Question GetQuestionOfTheDay()
|
public Question GetQuestionOfTheDay()
|
||||||
{
|
{
|
||||||
return this.questions.ElementAt(this._rnd.Next(0, this.questions.Count));
|
try
|
||||||
|
{
|
||||||
|
return this.questions.ElementAt(this._rnd.Next(1, this.questions.Count));
|
||||||
|
}
|
||||||
|
catch (ArgumentOutOfRangeException e)
|
||||||
|
{
|
||||||
|
return new Question("Palun lisa süsteemi mõni küsimus!");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,11 +3,30 @@ using System.Collections;
|
|||||||
|
|
||||||
namespace Päevaküsimus.Models
|
namespace Päevaküsimus.Models
|
||||||
{
|
{
|
||||||
public class Answer
|
[Serializable()]
|
||||||
|
public class Answer : NotificationBase, ICloneable
|
||||||
{
|
{
|
||||||
public string answer { get; set; }
|
private string _answer;
|
||||||
|
public string answer {
|
||||||
|
get { return _answer; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_answer = value;
|
||||||
|
NotifyPropertyChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
public bool correct { get; set; }
|
public bool correct { get; set; }
|
||||||
public int selectionCount { get; set; }
|
private int _selectionCount;
|
||||||
|
|
||||||
|
public int selectionCount
|
||||||
|
{
|
||||||
|
get { return _selectionCount; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_selectionCount = value;
|
||||||
|
NotifyPropertyChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public Answer(string answer)
|
public Answer(string answer)
|
||||||
{
|
{
|
||||||
@ -20,5 +39,12 @@ namespace Päevaküsimus.Models
|
|||||||
this.answer = answer;
|
this.answer = answer;
|
||||||
this.correct = correct;
|
this.correct = correct;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public object Clone()
|
||||||
|
{
|
||||||
|
var c = new Answer(answer.Clone() as string, correct);
|
||||||
|
c.selectionCount = selectionCount;
|
||||||
|
return c;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -4,10 +4,20 @@ using System.Collections.ObjectModel;
|
|||||||
|
|
||||||
namespace Päevaküsimus.Models
|
namespace Päevaküsimus.Models
|
||||||
{
|
{
|
||||||
public class Question
|
[Serializable()]
|
||||||
|
public class Question : NotificationBase, ICloneable
|
||||||
{
|
{
|
||||||
public string question { get; set; }
|
private string _question;
|
||||||
|
public string question {
|
||||||
|
get { return _question; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_question = value;
|
||||||
|
NotifyPropertyChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
private ObservableCollection<Answer> _answers;
|
private ObservableCollection<Answer> _answers;
|
||||||
|
public ObservableCollection<Answer> answers { get { return _answers; } }
|
||||||
|
|
||||||
public Question(string question)
|
public Question(string question)
|
||||||
{
|
{
|
||||||
@ -15,11 +25,19 @@ namespace Päevaküsimus.Models
|
|||||||
this._answers = new ObservableCollection<Answer>();
|
this._answers = new ObservableCollection<Answer>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ObservableCollection<Answer> answers { get { return _answers; } }
|
|
||||||
|
|
||||||
public void AddAnswer(Answer answer)
|
public void AddAnswer(Answer answer)
|
||||||
{
|
{
|
||||||
_answers.Add(answer);
|
_answers.Add(answer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public object Clone()
|
||||||
|
{
|
||||||
|
var q = new Question(_question.Clone() as string);
|
||||||
|
foreach (var answer in _answers)
|
||||||
|
{
|
||||||
|
q.AddAnswer(answer.Clone() as Answer);
|
||||||
|
}
|
||||||
|
return q;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -4,6 +4,7 @@ using System.Runtime.CompilerServices;
|
|||||||
|
|
||||||
namespace Päevaküsimus
|
namespace Päevaküsimus
|
||||||
{
|
{
|
||||||
|
[Serializable()]
|
||||||
public class NotificationBase : INotifyPropertyChanged
|
public class NotificationBase : INotifyPropertyChanged
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -57,6 +57,7 @@
|
|||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</ApplicationDefinition>
|
</ApplicationDefinition>
|
||||||
|
<Compile Include="SerializationService.cs" />
|
||||||
<Page Include="MainWindow.xaml">
|
<Page Include="MainWindow.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
|
41
Päevaküsimus/SerializationService.cs
Normal file
41
Päevaküsimus/SerializationService.cs
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
using System.IO;
|
||||||
|
using System.Runtime.Serialization.Formatters.Binary;
|
||||||
|
using Päevaküsimus.Models;
|
||||||
|
|
||||||
|
namespace Päevaküsimus
|
||||||
|
{
|
||||||
|
public class SerializationService
|
||||||
|
{
|
||||||
|
static private string _fileName = "data.bin";
|
||||||
|
|
||||||
|
public static void Serialize(object o)
|
||||||
|
{
|
||||||
|
using (Stream stream = new FileStream(_fileName, FileMode.Create, FileAccess.Write, FileShare.Write))
|
||||||
|
{
|
||||||
|
BinaryFormatter binaryFormatter = new BinaryFormatter();
|
||||||
|
binaryFormatter.Serialize(stream, o);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ObservableCollection<Question> DeSerialize ()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (Stream stream = new FileStream(_fileName, FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read))
|
||||||
|
{
|
||||||
|
BinaryFormatter binaryFormatter = new BinaryFormatter();
|
||||||
|
ObservableCollection<Question> questions = binaryFormatter.Deserialize(stream) as ObservableCollection<Question>;
|
||||||
|
return questions;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
System.Diagnostics.Trace.WriteLine("Error: " + ex.Message);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user