예제 #1
0
        /// <summary>
        /// Добавление нового фильма
        /// </summary>
        /// <param name="newFilmInfo"></param>
        public void AddFilm(FilmInfo newFilmInfo)
        {
            FindDisk(newFilmInfo.Number);

            this.mFilmInfo.Add(newFilmInfo);
            SortFilms();
            Save();
        }
예제 #2
0
        /// <summary>
        /// Редактирование фильма
        /// </summary>
        /// <param name="oldFilmInfo"></param>
        /// <param name="newFilmInfo"></param>
        public void EditFilm(FilmInfo oldFilmInfo, FilmInfo newFilmInfo)
        {
            FindDisk(newFilmInfo.Number);

            this.mFilmInfo.RemoveAt(FindFilm(oldFilmInfo));
            this.mFilmInfo.Add(newFilmInfo);
            SortFilms();
            Save();
        }
예제 #3
0
        public AddEditFilmForm(MainForm mainForm, AddEditState currentState, FilmotecClass filmotecClass, SettingClass settingClass, FilmInfo editFilmInfo)
        {
            InitializeComponent();

            this.mMainForm      = mainForm;
            this.mCurrentState  = currentState;
            this.mFilmotecClass = filmotecClass;
            this.mSettingClass  = settingClass;
            this.mOldFilmInfo   = editFilmInfo;
        }
예제 #4
0
        /// <summary>
        /// Найти фильм по номеру диска и названию
        /// </summary>
        private int FindFilm(FilmInfo findFilmInfo)
        {
            int findIndex = this.mFilmInfo.TakeWhile(filmInfo => filmInfo.Number != findFilmInfo.Number || filmInfo.Name != findFilmInfo.Name).Count();

            if (findIndex == this.mFilmInfo.Count)
            {
                throw new MyException(
                          string.Format("Фильм {0} на диске номер {1} не найден", findFilmInfo.Name, findFilmInfo.Number));
            }

            return(findIndex);
        }
예제 #5
0
        /// <summary>
        /// Загрузить базы данных из файла
        /// </summary>
        /// <returns>Success - true, oherwise - false</returns>
        private void Load()
        {
            this.mDiskInfo = new List <DiskInfo>();
            this.mFilmInfo = new List <FilmInfo>();

            var fi = new FileInfo(this.mPathDb);

            if (!fi.Exists)
            {
                return;
            }

            FileStream fs          = File.OpenRead(this.mPathDb);
            var        bytesBuffer = new byte[fs.Length];

            fs.Read(bytesBuffer, 0, (int)fs.Length);
            fs.Close();
            fs.Dispose();

            byte[] rez = UnpackXML(bytesBuffer);

            if (rez.Length > 0)
            {
                string text = Encoding.GetEncoding("windows-1251").GetString(rez);

                string[] parseText = text.Split(new[] { "^^!!&&^^" }, StringSplitOptions.None);

                var diskStr = new string[0];
                if (parseText.Length > 0 && parseText[0].Length > 0)
                {
                    diskStr = parseText[0].Split(new[] { "^!&^" }, StringSplitOptions.None);
                }

                var filmStr = new string[0];
                if (parseText.Length > 1 && parseText[1].Length > 0)
                {
                    filmStr = parseText[1].Split(new[] { "^!&^" }, StringSplitOptions.None);
                }

                for (int i = 0; i < diskStr.Length; i += 2)
                {
                    if (i + 1 < diskStr.Length)
                    {
                        var diskInfo = new DiskInfo {
                            Number = Convert.ToInt32(diskStr[i])
                        };
                        if (diskStr[i + 1] == "Buy")
                        {
                            diskInfo.Info = DiskType.Buy;
                        }
                        else if (diskStr[i + 1] == "OwnR")
                        {
                            diskInfo.Info = DiskType.OwnR;
                        }
                        else if (diskStr[i + 1] == "OwnRW")
                        {
                            diskInfo.Info = DiskType.OwnRW;
                        }
                        else
                        {
                            diskInfo.Info = DiskType.Empty;
                        }

                        this.mDiskInfo.Add(diskInfo);
                    }
                }

                for (int i = 0; i < filmStr.Length; i += 4)
                {
                    if (i + 3 < filmStr.Length)
                    {
                        GenreType genre = Helper.StringToGenre(filmStr[i + 3]);

                        var filmInfo = new FilmInfo
                        {
                            Number = Convert.ToInt32(filmStr[i]),
                            Name   = filmStr[i + 1],
                            Info   = filmStr[i + 2],
                            Genre  = genre
                        };
                        this.mFilmInfo.Add(filmInfo);
                    }
                }
            }
            else
            {
                throw new MyException("Файл с сохранённой информацией повреждён");
            }
        }
예제 #6
0
 /// <summary>
 /// Удаление фильма
 /// </summary>
 /// <param name="deleteFilmInfo"></param>
 public void DeleteFilm(FilmInfo deleteFilmInfo)
 {
     this.mFilmInfo.RemoveAt(FindFilm(deleteFilmInfo));
     SortFilms();
     Save();
 }
예제 #7
0
        /// <summary>
        /// Кнопка подтверждения
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonOK_Click(object sender, EventArgs e)
        {
            try
            {
                Convert.ToInt32(textBoxDiskNumber.Text);
            }
            catch
            {
                MessageBox.Show("Непонятный номер диска", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                textBoxDiskNumber.Focus();
                return;
            }

            GenreType genreType = Helper.StringToGenre(comboBoxFilterGenre.Text);

            var newFilmInfo = new FilmInfo
            {
                Number = Convert.ToInt32(textBoxDiskNumber.Text),
                Name   = textBoxFilmName.Text,
                Info   = textBoxFilmInfo.Text,
                Genre  = genreType
            };

            try
            {
                if (this.mCurrentState == AddEditState.Add)
                {
                    this.mFilmotecClass.AddFilm(newFilmInfo);
                    if (this.mSettingClass.IsCloseFilmForm)
                    {
                        Close();
                    }
                    else
                    {
                        if (checkBoxClearFields.Checked)
                        {
                            textBoxFilmInfo.Text = string.Empty;
                            textBoxFilmName.Text = string.Empty;
                        }

                        textBoxFilmName.Focus();
                        textBoxFilmName.SelectionStart  = 0;
                        textBoxFilmName.SelectionLength = textBoxFilmName.Text.Length;
                    }
                }
                else
                {
                    this.mFilmotecClass.EditFilm(this.mOldFilmInfo, newFilmInfo);
                    this.mMainForm.NewFilmName = newFilmInfo.Name;
                    Close();
                }
            }
            catch (MyException ex)
            {
                MessageBox.Show(ex.Message, "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Произошла непредвиденная ошибка: \r\n\r\n" + ex.Message + "\r\n\r\nСообщите разработчикам", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }