/// <summary> /// Überladener Konstruktor. Wird aufgerufen wenn ein Film bearbeitet werden soll /// Speichert das übergebene Movie, speichert den alten Titel, falls er verändert wird /// </summary> /// <param name="movie">Der zu bearbeitende Film</param> public addMovie(Movie movie) { InitializeComponent(); ofdbgw = new clOFDBGW(); controller = new clXMLController(); this.movie = movie; Properties.Settings.Default.tmpTitel = movie.Titel; isEdit = true; }
/// <summary> /// Die Methode liest die übergeben XML-Datei aus /// und bildet mit den darin vorhandenen Informationen, /// ein Movie-Objekt und gibt dieses zurück /// </summary> /// <param name="xmlDoc">Die XML-Datei mit den Informationen zum Film</param> private Movie readInfosFromXML(XmlDocument xmlDoc) { movie = new Movie(); //Titel zuweisen movie.Titel = xmlDoc.DocumentElement["resultat"].ChildNodes.Item(0).InnerText; //Jahr zuweisen movie.Year = xmlDoc.DocumentElement["resultat"].ChildNodes.Item(1).InnerText; //Bild downloaden und speichern movie.MovieImage = Image.FromStream(new System.IO.MemoryStream(new System.Net.WebClient().DownloadData(xmlDoc.DocumentElement["resultat"].ChildNodes.Item(2).InnerText))); if (xmlDoc.DocumentElement["resultat"].ChildNodes.Item(3).InnerText != "") movie.ImdbID = long.Parse(xmlDoc.DocumentElement["resultat"].ChildNodes.Item(3).InnerText); //Überprüfen ob Director gefunden wurde und zuweisen if (!(xmlDoc.DocumentElement["resultat"].ChildNodes.Item(5).ChildNodes.Count == 0)) { movie.Director = xmlDoc.DocumentElement["resultat"].ChildNodes.Item(5).ChildNodes.Item(0).ChildNodes[1].InnerText; } //Genre zuweisen movie.Genre = xmlDoc.DocumentElement["resultat"].ChildNodes.Item(11).ChildNodes.Item(0).ChildNodes[0].InnerText; foreach (XmlElement xele in xmlDoc.DocumentElement["resultat"].ChildNodes.Item(11).ChildNodes) { if (xele.InnerText != movie.Genre) movie.MGenres.Add(xele.InnerText); } //Plot zuweisen movie.Plot = xmlDoc.DocumentElement["resultat"].ChildNodes.Item(13).InnerText; //Actor zuweisen int i = 0; string actor = ""; foreach (XmlElement xele in xmlDoc.DocumentElement["resultat"].ChildNodes.Item(14).ChildNodes) { if (i == 0) { i += 1; actor = xele.ChildNodes[1].InnerText; } else { actor = actor + ", " + xele.ChildNodes[1].InnerText; } } movie.Actors = actor; //xmlDoc.Save("D:\\movie.xml"); return movie; }
/// <summary> /// Ruft die Methode das OFDB-Gateways auf, um nach dem Filmtitel zu suchen, der in der /// Textbox steht. Zeigt alle Treffer in der OFDB an, um den User einen auswählen zu lassen /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnSearch_Click(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(tbTitel.Text)) { errorProvider1.SetError(tbTitel, "Kein Titel angegeben"); } else { int id = 0; list = ofdbgw.searchMoviesByTitel(tbTitel.Text); selectMovie select = new selectMovie(list); if (select.ShowDialog() == System.Windows.Forms.DialogResult.OK) { id = select.movieid; tbOrgtitel.Text = select.orgTitel; } if (id != 0) { movie = ofdbgw.searchMovieInfoByID(id.ToString()); movie.OfdbID = id.ToString(); movie.OrigTitel = tbOrgtitel.Text; tbTitel.Text = movie.Titel; tbRegi.Text = movie.Director; cbGenre.SelectedItem = movie.Genre; pbImage.Image = movie.MovieImage; rtbActor.Text = movie.Actors; rtbDesc.Text = movie.Plot; numYear.Value = decimal.Parse(movie.Year); foreach (string s in movie.MGenres) { int i = 0; i = clbGenre.Items.IndexOf(s); clbGenre.SetItemChecked(i, true); clbGenre.SetSelected(i, true); } } } }
/// <summary> /// Falls kein Film bearbeitet wird, erstelle einen neuen. /// Speichere die Daten in das Movie-Objekt und speichere es in die XML-Datei /// </summary> private void btnSave_Click(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(tbTitel.Text) || string.IsNullOrEmpty(tbTitel.Text) || string.IsNullOrEmpty(cbGenre.SelectedItem.ToString()) || string.IsNullOrWhiteSpace(cbGenre.SelectedItem.ToString())) { errorProvider1.SetError(btnSave, "Titel oder Genre nicht angegeben"); } else { if (movie == null) { movie = new Movie(); } movie.MGenres.Clear(); movie.Screenshots.Clear(); movie.Titel = tbTitel.Text.Trim(); movie.OrigTitel = tbOrgtitel.Text.Trim(); movie.Director = tbRegi.Text.Trim(); movie.Actors = rtbActor.Text.Trim(); movie.Plot = rtbDesc.Text.Trim(); movie.Genre = cbGenre.SelectedItem.ToString(); movie.Year = numYear.Value.ToString(); movie.Rank = starRating2.Rating; movie.Seen = cbSeen.Checked; movie.Wishlist = cbWish.Checked; movie.LentTo = ""; movie.Preis = numPreis.Value.ToString(); movie.MediaCount = int.Parse(numAnzahl.Value.ToString()); movie.MovieImage = pbImage.Image; movie.MoviePath = tbMoviePath.Text.Trim(); try { movie.MediaType = cbMedType.SelectedItem.ToString(); } catch (Exception ex) { movie.MediaType = ""; } //Prüfe ob im TrailerLink auch ein Link steht try { Uri uri = new Uri(tbTrailer.Text.Trim()); movie.Trailer = uri.ToString(); } catch (Exception ex) { movie.Trailer = "http://"; } //Prüfe ob HP-Link auch ein Link ist try { Uri uri = new Uri(tbHPLink.Text.Trim()); movie.HPLink = uri.ToString(); } catch (Exception ex) { movie.HPLink = "http://"; } //Speichere alle Nebengenre foreach (string s in clbGenre.CheckedItems) { movie.MGenres.Add(s); } //Speichere alle Screenshots foreach (PictureBox pb in flowLayoutPanel1.Controls) { movie.Screenshots.Add(pb.Image); } //Wird gerade ein Film bearbeitet? if (!isEdit) { //Keine Bearbeitung, prüfe auf existens und dann speichere den Film if (!controller.checkApperanceMovie(movie.Titel)) { controller.WritetoFileMovie(movie); } } else { controller.saveChanges(Properties.Settings.Default.tmpTitel, movie); } this.DialogResult = System.Windows.Forms.DialogResult.OK; this.Close(); } }
/// <summary> /// Die Funktion speichert die Daten in der XML-Datei. /// Dafür erstellt es für jeden Parameter ein Element und speichert darin die Daten. /// </summary> /// <param name="saveMovie">Der zu speichernde Film als Movie-Objekt</param> public void WritetoFileMovie(Movie saveMovie) { //strPath = GetDataDirectory(); //Existiert die XML-Datei zum speichern der Filme schon? if (!File.Exists(strPath + "\\Movies.xml")) { xDoc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"), new XElement("Movies")); xDoc.Save(strPath + "\\Movies.xml"); } xDoc = XDocument.Load(strPath + "\\Movies.xml"); //Create an XElement with all Subgenre XElement xele = new XElement("Subgenre"); foreach(string s in saveMovie.MGenres) { xele.Add(new XElement("Titel",s)); } //Create Element with all Screenshots XElement screens = new XElement("Screenshots"); foreach (Image img in saveMovie.Screenshots) { screens.Add(new XElement("img", GetStringFromImage(img))); } XElement xElement = new XElement("Movie", new XElement("ImdbID", saveMovie.ImdbID), new XElement("OfdbID", saveMovie.OfdbID), new XElement("Genre", saveMovie.Genre),xele, new XElement("OriginalTitel", saveMovie.OrigTitel), new XElement("Titel", saveMovie.Titel), new XElement("Beschreibung", saveMovie.Plot), new XElement("Rank", saveMovie.Rank), new XElement("AddDate", System.DateTime.Today.ToShortDateString()), new XElement("Jahr", saveMovie.Year), new XElement("Director", saveMovie.Director), new XElement("Actors", saveMovie.Actors), new XElement("Image", GetStringFromImage(saveMovie.MovieImage)), new XElement("Seen", saveMovie.Seen.ToString()), new XElement("Wishlist", saveMovie.Wishlist.ToString()),new XElement("LentTo",saveMovie.LentTo),new XElement("MediaType",saveMovie.MediaType), new XElement("MediaCount",saveMovie.MediaCount),new XElement("Preis",saveMovie.Preis),new XElement("Trailer",saveMovie.Trailer), new XElement("HPLink",saveMovie.HPLink),screens, new XElement("MoviePath",saveMovie.MoviePath)); xDoc.Element("Movies").Add(xElement); xDoc.Save(strPath + "\\Movies.xml"); }
public void saveChanges(string titel, Movie saveMovie) { try { //strPath = GetDataDirectory(); xDoc = XDocument.Load(strPath + "\\Movies.xml"); //Den zu löschenden Film suchen var deletedMovie = from Movies in xDoc.Descendants("Movie") where Movies.Element("Titel").Value.ToString() == titel select Movies; //Film löschen deletedMovie.Remove(); xDoc.Save(strPath + "\\Movies.xml"); WritetoFileMovie(saveMovie); } catch (Exception ex) { MessageBox.Show("Es ist ein Fehler aufgetreten" + Environment.NewLine + ex.Message); } }
/// <summary> /// Die Methode sucht in der XML-Datei nach dem gesuchten Film und speichert die gefundenen Daten in /// ein Movie-Objekt. Dieses wird dann per Event zurück gegeben /// </summary> /// <param name="titel">Der Titel des zu suchenden Filmes</param> public Movie getMovie(string titel) { //strPath = GetDataDirectory(); xDoc = XDocument.Load(strPath + "\\Movies.xml"); var FoundMovie = from Movies in xDoc.Descendants("Movie") where Movies.Element("Titel").Value.ToString() == titel select Movies.Elements(); movie = new Movie(); movie.Titel = titel; try { movie.ImdbID = long.Parse(FoundMovie.ElementAt(0).ElementAt(0).Value); movie.OfdbID = FoundMovie.ElementAt(0).ElementAt(1).Value; movie.Genre = FoundMovie.ElementAt(0).ElementAt(2).Value; movie.OrigTitel = FoundMovie.ElementAt(0).ElementAt(4).Value; movie.Plot = FoundMovie.ElementAt(0).ElementAt(6).Value; movie.Rank = int.Parse(FoundMovie.ElementAt(0).ElementAt(7).Value); movie.AddDate = FoundMovie.ElementAt(0).ElementAt(8).Value; movie.Year = FoundMovie.ElementAt(0).ElementAt(9).Value; movie.Director = FoundMovie.ElementAt(0).ElementAt(10).Value; movie.Actors = FoundMovie.ElementAt(0).ElementAt(11).Value; movie.MovieImage = GetImageFromString(FoundMovie.ElementAt(0).ElementAt(12).Value); movie.Seen = bool.Parse(FoundMovie.ElementAt(0).ElementAt(13).Value); movie.Wishlist = bool.Parse(FoundMovie.ElementAt(0).ElementAt(14).Value); movie.LentTo = FoundMovie.ElementAt(0).ElementAt(15).Value; movie.MediaType = FoundMovie.ElementAt(0).ElementAt(16).Value; movie.MediaCount = int.Parse(FoundMovie.ElementAt(0).ElementAt(17).Value); movie.Preis = FoundMovie.ElementAt(0).ElementAt(18).Value; movie.Trailer = FoundMovie.ElementAt(0).ElementAt(19).Value; movie.HPLink = FoundMovie.ElementAt(0).ElementAt(20).Value; movie.MoviePath = FoundMovie.ElementAt(0).ElementAt(22).Value; foreach (XElement ele in FoundMovie.ElementAt(0).ElementAt(21).Elements()) { movie.Screenshots.Add(GetImageFromString(ele.Value)); } foreach (XElement xele in FoundMovie.ElementAt(0).ElementAt(3).Elements()) { movie.MGenres.Add(xele.Value.ToString()); } } catch (Exception ex) { MessageBox.Show(ex.Message); } return movie; }
/// <summary> /// Beim drücken auf einen Filmtitel in der linken Anzeige wird der passende Film vom "controller" gesucht /// und dann angezeigt. /// </summary> private void showMovie(object sender, ListViewItemSelectionChangedEventArgs e) { btnEdit.Enabled = true; clearALL(); this.Cursor = Cursors.WaitCursor; movie = controller.getMovie(e.Item.Text); show(); this.Cursor = Cursors.Default; }
/// <summary> /// Bei betätigen des "Bearbeiten"-Buttons wird die Form zum erstellen eines Filmes aufgerufen und ihr der zu bearbeitende /// Film übergeben. Wenn die Bearbeitung abgeschlossen ist, wird der Film neu angezeigt und die Liste mit Filmen erneuert, für den Fall, /// das der Titel verändert wurde /// </summary> private void btnEdit_Click(object sender, EventArgs e) { MyMovie.addMovie newMovie = new MyMovie.addMovie(movie); if (newMovie.ShowDialog() == System.Windows.Forms.DialogResult.OK) { movie = controller.getMovie(listView1.SelectedItems[0].Text); clearALL(); show(); getMovies(); listView1.Sort(); //listView1.Items[movie.Titel].Selected = true; //foreach(ListViewItem item in listView1.Items) //{ // if (item.Text == movie.Titel) // { // item.Selected = true; // item.Checked = true; // } //} } }