/// <summary> /// Fügt ein Item hinzu oder ersetzt das vorhandene /// </summary> /// <param name="mf"></param> /// <returns></returns> public static Boolean AddItem(MP3File.MP3File mf) { try { MP3File.MP3File ent = RatedListItems.Find(x => x.Pfad == mf.Pfad); if (ent == null) { //nicht gefunden daher zufügen RatedListItems.Add(mf); } else { RatedListItems.Remove(ent); RatedListItems.Add(mf); } WriteData(); } catch { return(false); } return(false); }
/// <summary> /// Überprüft ob die übergeben ConditionGroup in den Feldern enthalten ist. /// </summary> /// <param name="cog">Liste der Conditionobjekctgroup</param> /// <param name="mp3">Zu prüfender Song</param> /// <returns></returns> static public Boolean Ceck(ConditionObjectGroup cog, MP3File.MP3File mp3) { Boolean retval = false; bool[] condition = new bool[cog.ConditionObjectList.Count]; int counter = 0; //Für jedes Objekt prüfen, ob die Conditon gegeben ist und setzen. foreach (ConditionObject b in cog.ConditionObjectList) { string checker = String.Empty; switch (b.Feld) { case "Album": checker = mp3.Album; break; case "Artist": checker = mp3.Artist; break; case "Verlag": checker = mp3.Verlag; break; case "Typ": checker = mp3.Typ; break; case "Bewertung": checker = mp3.Bewertung; break; case "BewertungMine": checker = mp3.BewertungMine; break; case "Gelegenheit": checker = mp3.Gelegenheit.ToString(); break; case "Genre": checker = mp3.Genre; break; case "Geschwindigkeit": checker = mp3.Geschwindigkeit.ToString(); break; case "Jahr": checker = mp3.Jahr; break; case "Komponist": checker = mp3.Komponist; break; case "Lyric": checker = mp3.Lyric; break; case "Stimmung": checker = mp3.Stimmung.ToString(); break; case "Titel": checker = mp3.Titel; break; case "Tracknumber": checker = mp3.Tracknumber.ToString(CultureInfo.InvariantCulture); break; case "Aufwecken": checker = Convert.ToString(mp3.Aufwecken); break; case "ArtistPlaylist": checker = Convert.ToString(mp3.ArtistPlaylist); break; } /* Wenn das Feld gefunden wurde, wird nun geprüft, welcher Vergleichsoperator genomen wurde und * sollte dieser entsprechen wird die condition auf true gesetzt. */ int ch; int wert; if (b.Wert == null) { b.Wert = String.Empty; } switch (b.Operator) { case FieldOperator.Contains: if (!String.IsNullOrEmpty(b.Wert) && b.Wert.Contains(",")) { string[] k = b.Wert.Split(','); condition[counter] = false; foreach (string con in k) { if (checker.ToLower().Contains(con.TrimStart().ToLower())) { condition[counter] = true; break; } } } else { condition[counter] = checker.ToLower().Contains(b.Wert.ToLower()); } break; case FieldOperator.Equal: condition[counter] = checker == b.Wert; break; case FieldOperator.NonEqual: condition[counter] = checker != b.Wert; break; case FieldOperator.StartsWith: if (!String.IsNullOrEmpty(b.Wert) && b.Wert.Contains(",")) { string[] k = b.Wert.Split(','); condition[counter] = false; foreach (string con in k) { if (checker.ToLower().StartsWith(con.TrimStart().ToLower())) { condition[counter] = true; break; } } } else { condition[counter] = !checker.ToLower().StartsWith(b.Wert.ToLower()); } break; case FieldOperator.EndWith: if (!String.IsNullOrEmpty(b.Wert) && b.Wert.Contains(",")) { string[] k = b.Wert.Split(','); condition[counter] = false; foreach (string con in k) { if (checker.ToLower().EndsWith(con.TrimStart().ToLower())) { condition[counter] = true; break; } } } else { condition[counter] = !checker.ToLower().EndsWith(b.Wert.ToLower()); } break; case FieldOperator.ContainsNot: if (!String.IsNullOrEmpty(b.Wert) && b.Wert.Contains(",")) { string[] k = b.Wert.Split(','); condition[counter] = true; foreach (string con in k) { if (checker.ToLower().Contains(con.TrimStart().ToLower())) { condition[counter] = false; break; } } } else { condition[counter] = !checker.ToLower().Contains(b.Wert.ToLower()); } break; case FieldOperator.No: condition[counter] = checker.ToLower() == "false"; break; case FieldOperator.Yes: condition[counter] = checker.ToLower() == "true"; break; case FieldOperator.Bigger: try { ch = Convert.ToInt16(checker); wert = Convert.ToInt16(b.Wert); if (ch > wert) { condition[counter] = true; } else { condition[counter] = false; } } catch { condition[counter] = false; } break; case FieldOperator.Smaler: try { ch = Convert.ToInt16(checker); wert = Convert.ToInt16(b.Wert); if (ch < wert) { condition[counter] = true; } else { condition[counter] = false; } } catch { condition[counter] = false; } break; } counter++; } //CombineOperator prüfen. switch (cog.CombineOperator) { case CombineOperator.And: foreach (bool c in condition) { if (c == false) { retval = false; break; } retval = true; } break; case CombineOperator.Or: foreach (bool c in condition) { if (c) { retval = true; break; } } break; } return(retval); }