- •1 Постановка задачи 6
- •Введение
- •1 Постановка задачи
- •2 Теоретический раздел
- •3 Обзор предметной области
- •3.1 Апплет Clock2.Java
- •3.2 Обзор исходного кода Clock2.Java
- •4. Инструкция программиста
- •4.1. Бизнес-логика приложения в пользовательском классе
- •4.1.1. Поля и свойства Clock
- •4.1.2. Конструкторы класса Clock
- •4.1.3. Методы класса Clock
- •4.2. Визуализация текущей даты и времени
- •4.3. Сохранение текущего состояния приложения в файл и чтение из файла
- •4.3.1. Поля и свойства пользовательского класса ClockConfig
- •4.3.2. Конструкторы пользовательского класса ClockConfig
- •4.3.3. Методы пользовательского класса ClockConfig
- •5. Инструкция Пользователя
- •5.1. Запуск приложения
- •5.2. Основные элементы приложения
- •5.3. Управление главным окном приложения
- •5.4. Настройка приложения
- •Приложение а
- •Приложение б
- •Приложение в
- •Приложение г
- •Приложение д
- •Приложение е
- •Список использованных источников
Приложение г
Текст программы окна настройки приложения
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace Clock2JavaToCS
{
/// <summary>
/// Логика взаимодействия для Window1.xaml
/// </summary>
public partial class OptionWin : Window
{
private Clock clock;
public OptionWin(ref Clock _clock) {
InitializeComponent();
clock = _clock;
chbVisibleDate.IsChecked = (_clock.TBDate.Visibility == Visibility.Visible);
chbVisibleDigitalCl.IsChecked = (_clock.TBTime.Visibility == Visibility.Visible);
chbVisibleSeconds.IsChecked = (_clock.SecondsArrow.Visibility == Visibility.Visible);
editSize.Text = _clock.Radius.ToString();
btnDefault.Click += btnDefault_Click;
btnSave.Click += btnSave_Click;
btnApply.Click += btnSave_Click;
editSize.KeyUp += editSize_KeyUp;
editSize.LostFocus += editSize_LostFocus;
for (int i = 0; i < cmbColor.Items.Count; i++) {
if (_clock.CircleOfDial.Fill.ToString() == (cmbColor.Items[i] as ComboBoxItem).Background.ToString())
cmbColor.SelectedIndex = i;
}
}
void editSize_LostFocus(object sender, RoutedEventArgs e) {
if ((sender as TextBox).Text == "") (sender as TextBox).Text = "0";
}
void editSize_KeyUp(object sender, KeyEventArgs e) {
if ((e.Key == Key.Back)) return;
TextBox _textBox = (sender as TextBox);
string text = "";
for (int i = 0; i < _textBox.Text.Count(); i++)
{
if (Char.IsDigit(_textBox.Text[i]))
{
text += _textBox.Text[i];
}
else
{
e.Handled = true;
}
}
if (text == "") text = "0";
_textBox.Text = text;
_textBox.CaretIndex = text.Count();
_textBox.Tag = 0;
}
void btnSave_Click(object sender, RoutedEventArgs e) {
bool bError = false;
//*******************************************************************
//запоминаем старые настройки, чтобы востановить в случае ошибки
//*******************************************************************
Visibility visibilityDate = clock.TBDate.Visibility;
Visibility visibilityDigitClock = clock.TBTime.Visibility;
Visibility visibilitySeconds = clock.SecondsArrow.Visibility;
Brush ColorClock = clock.CircleOfDial.Fill;
double R = clock.Radius;
//*******************************************************************
try {
double size = 0;
try {
size = Double.Parse(editSize.Text);
}
catch (FormatException) {
MessageBox.Show("Ошибка! Было введено некорректное значение радиуса.");
return;
}
if ((cmbColor.SelectedItem == null)) {
MessageBox.Show("Ошибка! Необходимо выбрать цвет циферблата");
return;
}
//*******************************************************************
//применение настроек
//*******************************************************************
clock.SetSizeClock(size);
if ((bool) (chbVisibleDate.IsChecked)) clock.TBDate.Visibility = Visibility.Visible;
else clock.TBDate.Visibility = Visibility.Hidden;
if ((bool) (chbVisibleDigitalCl.IsChecked)) clock.TBTime.Visibility = Visibility.Visible;
else clock.TBTime.Visibility = Visibility.Hidden;
if ((bool) (chbVisibleSeconds.IsChecked)) clock.SecondsArrow.Visibility = Visibility.Visible;
else clock.SecondsArrow.Visibility = Visibility.Hidden;
clock.SetColor((cmbColor.SelectedItem as ComboBoxItem).Background);
//*******************************************************************
//сохранение настроек в файл
//*******************************************************************
if ((sender as Button).Name == btnSave.Name)
{
clock.clockConfig.SaveConfig(clock);
MessageBox.Show("Сохранеине успешно завершено");
}
}
catch (ClockException E)
{
bError = true;
MessageBox.Show(E.Message);
}
catch (EConfig E)
{
bError = true;
MessageBox.Show(E.Message);
}
catch (Exception E) {
MessageBox.Show("Неизвестная ошибка задания настроек. ("+E.Message+").");
}
finally {
if (bError) {
clock.SetSizeClock(R);
clock.TBDate.Visibility = visibilityDate;
clock.TBTime.Visibility = visibilityDigitClock;
clock.SecondsArrow.Visibility = visibilitySeconds;
clock.CircleOfDial.Fill = ColorClock;
}
}
}
void btnDefault_Click(object sender, RoutedEventArgs e)
{
chbVisibleDate.IsChecked = ( ClockConfig.DefaultVisibleDate == Visibility.Visible);
chbVisibleDigitalCl.IsChecked = (ClockConfig.DefaultVisibleDigClock == Visibility.Visible);
chbVisibleSeconds.IsChecked = (ClockConfig.DefaultVisibleSeconds == Visibility.Visible);
editSize.Text = ClockConfig.defaultR.ToString();
cmbColor.SelectedIndex = 1;
}
}
}
