private void FillFieldList() { comboBoxField.Items.Clear(); FieldCollection fields; if (radioButtonCD.Checked) { fields = FieldHelper.GetAllCDFields(true); } else { fields = FieldHelper.GetAllTrackFields(true); } CDQueryDataSet ds = new CDQueryDataSet(); foreach (Field field in fields) { DataColumn dataColumn; dataColumn = DataBase.GetDataColumnByField(field); if (dataColumn != null && dataColumn.DataType == typeof(string)) comboBoxField.Items.Add(new ComboBoxItem(dataBase, field)); } }
public List <SearchResultItem> Search(string searchFor) { List <SearchResultItem> hits = new List <SearchResultItem>(); CDQueryDataSet dataSet = DataBase.ExecuteTrackQuery(); foreach (CDQueryDataSet.TrackRow track in dataSet.Track) { string trackArtist = track.GetStringByField(DataBase, Field.ArtistTrackName) ?? ""; string trackTitle = (track.Title == null) ? "" : track.Title; if (trackArtist.IndexOf(searchFor, StringComparison.InvariantCultureIgnoreCase) >= 0 || trackTitle.IndexOf(searchFor, StringComparison.InvariantCultureIgnoreCase) >= 0) { if (track.SoundFile != null && File.Exists(track.SoundFile)) { byte[] imageArray = GetCoverFromTrack(track); SearchResultItem sri = new SearchResultItem() { TrackID = track.TrackID, Artist = trackArtist, Title = track.Title, Length = track.Length, SoundFilename = track.SoundFile, CoverImage = imageArray }; hits.Add(sri); } } } return(hits); }
void printDocument_BeginPrint(object sender, PrintEventArgs e) { currentPrintRecord = 0; currentPage = 0; switch (printType) { case PrintType.CDList: { cdQuery = dataBase.ExecuteCDQuery(); CDView = new CDDataView(dataBase, cdQuery, printFilter, cdSortFields, cdListFields.GetFields()); break; } case PrintType.DetailList: { cdQuery = dataBase.ExecuteCDQuery(); DataView view = dataBase.GetCDQueryView(cdQuery, detailListFields, printFilter, cdSortFields); queryTable = view.ToTable(); break; } case PrintType.DetailListWithTracks: { cdQuery = dataBase.ExecuteCDQuery(); CDView = new CDDataView(dataBase, cdQuery, printFilter, cdSortFields); break; } case PrintType.TrackList: { cdQuery = dataBase.ExecuteTrackQuery(); TrackView = new TrackDataView(dataBase, cdQuery, printFilter, trackSortFields); break; } } }
private string BuildFileName(int track) { string form = textFormatFile.Text; string fieldcontent; string fieldcontentNew; string fieldName; FieldCollection fields = FieldHelper.GetAllCDFields(false); FieldCollection track_fields = FieldHelper.GetAllTrackFields(false); // Dann liegt wohl keine CD im Laufwerk if (CD.ID == 0) { return(""); } CDQueryDataSet CDQuery = DataBase.GetCDQueryById(CD.ID); foreach (Field field in fields) { try { fieldName = DataBase.GetNameOfField(field); if (form.IndexOf("[" + fieldName + "]") >= 0) { fieldcontent = CDQuery.CD[0].GetStringByField(DataBase, field); // Hier unbedingt Backslashes aus Feldinhalten entfernen bzw. ersetzen fieldcontent = fieldcontent.Replace("\\", Settings.Current.RecordFileNameCharBackslash); form = form.Replace("[" + fieldName + "]", fieldcontent); } } catch { } } foreach (Field field in track_fields) { try { fieldName = DataBase.GetNameOfField(field); if (form.IndexOf("[Track - " + fieldName + "]") >= 0) { fieldcontent = CD.GetTrackStringByField(track, field); // Hier unbedingt Backslashes aus Feldinhalten entfernen bzw. ersetzen fieldcontent = fieldcontent.Replace("\\", Settings.Current.RecordFileNameCharBackslash); // Sonderbehandlung für Nr. Feld if (fieldName == "Nr.") { //if (CD.NumberOfTracks > 9) // Immer 2 Stellen auch wenn unter 10 Tracks fieldcontentNew = string.Format("{0:00}", Convert.ToInt32(fieldcontent)); if (CD.NumberOfTracks > 99) { fieldcontentNew = string.Format("{0:000}", Convert.ToInt32(fieldcontent)); } if (CD.NumberOfTracks > 999) { fieldcontentNew = string.Format("{0:0000}", Convert.ToInt32(fieldcontent)); } form = form.Replace("[Track - " + fieldName + "]", fieldcontentNew); } else { form = form.Replace("[Track - " + fieldName + "]", fieldcontent); } } } catch { } } // Jetzt müssen noch eventuell nicht erlaubte Zeichen entfernt werden // Der Backslash hier nicht, nur im Feldnamen, siehe oben form = form.Replace("\"", Settings.Current.RecordFileNameCharAnfuehrung); //form = form.Replace("\\", Settings.Current.RecordFileNameCharBackslash); form = form.Replace(":", Settings.Current.RecordFileNameCharDoppelpunkt); form = form.Replace("?", Settings.Current.RecordFileNameCharFragezeichen); form = form.Replace(">", Settings.Current.RecordFileNameCharGroesser); form = form.Replace("<", Settings.Current.RecordFileNameCharKleiner); form = form.Replace("|", Settings.Current.RecordFileNameCharPipe); form = form.Replace("/", Settings.Current.RecordFileNameCharSlash); form = form.Replace("*", Settings.Current.RecordFileNameCharStern); if (Settings.Current.RecordFileNameCharUserOrg1.Length > 0) { form = form.Replace(Settings.Current.RecordFileNameCharUserOrg1, Settings.Current.RecordFileNameCharUserNew1); } if (Settings.Current.RecordFileNameCharUserOrg2.Length > 0) { form = form.Replace(Settings.Current.RecordFileNameCharUserOrg2, Settings.Current.RecordFileNameCharUserNew2); } if (Settings.Current.RecordFileNameCharUserOrg3.Length > 0) { form = form.Replace(Settings.Current.RecordFileNameCharUserOrg3, Settings.Current.RecordFileNameCharUserNew3); } if (Settings.Current.RecordFileNameCharUserOrg4.Length > 0) { form = form.Replace(Settings.Current.RecordFileNameCharUserOrg4, Settings.Current.RecordFileNameCharUserNew4); } if (Settings.Current.RecordFileNameCharUserOrg5.Length > 0) { form = form.Replace(Settings.Current.RecordFileNameCharUserOrg5, Settings.Current.RecordFileNameCharUserNew5); } if (Settings.Current.RecordFileNameCharUserOrg6.Length > 0) { form = form.Replace(Settings.Current.RecordFileNameCharUserOrg6, Settings.Current.RecordFileNameCharUserNew6); } textExample.Text = Recordmedium.textFileDir.Text + "\\" + form; //textFormatFile.Text = listTemplates.Text; SelectedNameFormat = textFormatFile.Text; return(form); }
private void buildFileName() { string form = textFormatFile.Text; string fieldcontent; string fieldName; FieldCollection fields = FieldHelper.GetAllCDFields(false); FieldCollection track_fields = FieldHelper.GetAllTrackFields(false); CDQueryDataSet CDQuery = DataBase.GetCDQueryById(CD.ID); foreach (Field field in fields) { try { fieldName = DataBase.GetNameOfField(field); if (form.IndexOf("[" + fieldName + "]") >= 0) { fieldcontent = CDQuery.CD[0].GetStringByField(DataBase, field); form = form.Replace("[" + fieldName + "]", fieldcontent); } } catch { } } foreach (Field field in track_fields) { try { fieldName = DataBase.GetNameOfField(field); if (form.IndexOf("[Track - " + fieldName + "]") >= 0) { fieldcontent = CD.GetTrackStringByField(currentselectedSampleTrack, field); if (fieldName == "Nr.") { if (CD.NumberOfTracks > 9) { fieldcontent = string.Format("{0:00}", Convert.ToInt32(fieldcontent)); } if (CD.NumberOfTracks > 99) { fieldcontent = string.Format("{0:000}", Convert.ToInt32(fieldcontent)); } form = form.Replace("[Track - " + fieldName + "]", fieldcontent); } else { form = form.Replace("[Track - " + fieldName + "]", fieldcontent); } } } catch { } } //form = form.Replace("[Titel]", CD.Title); //form = form.Replace("[Interpret]", CD.Artist); //form = form.Replace("[Track-Titel]", CD.Tracks[currentselectedSampleTrack].Title); //form = form.Replace("[Track-Interpret]", CD.Tracks[currentselectedSampleTrack].Artist); //form = form.Replace("[Tracknummer]", CD.Tracks[currentselectedSampleTrack].TrackNumber.ToString()); }
public TrackDataView(DataBase db, CDQueryDataSet cdQuery, Condition condition, SortFieldCollection sortedFields, FieldCollection fields) { // Zunächst die Spalten definieren for (int col = 0; col < fields.Count; col++) { AddField(db, fields[col]); } if (sortedFields != null) { for (int col = 0; col < sortedFields.Count; col++) { Field field = GetRealSortField(sortedFields[col].Field); AddField(db, field); } } if (condition != null) { // Jetzt noch die Spalten für die Condition definieren for (int col = 0; col < condition.Count; col++) { if (!fieldsValueDictionary.ContainsKey(condition[col].Field)) { AddField(db, condition[col].Field); } } } // Für die ID des Tracks auch noch eine Spalte vorsehen DataColumn dc = new DataColumn(); dc.Caption = "TrackID"; dc.DataType = typeof(int); dataTable.Columns.Add(dc); TrackIDColumnName = dc.ColumnName; fieldsValueDictionary.Add(Field.TrackID, TrackIDColumnName); fieldsStringDictionary.Add(Field.TrackID, TrackIDColumnName); // Für die ID der CD auch noch eine Spalte vorsehen DataColumn dcCD = new DataColumn(); dcCD.Caption = "CDID"; dcCD.DataType = typeof(int); dataTable.Columns.Add(dcCD); CDIDColumnName = dcCD.ColumnName; fieldsValueDictionary.Add(Field.CDID, CDIDColumnName); fieldsStringDictionary.Add(Field.CDID, CDIDColumnName); // Für die ID des Interpreten auch noch eine Spalte vorsehen DataColumn dcArtist = new DataColumn(); dcArtist.Caption = "ArtistID"; dcArtist.DataType = typeof(int); dataTable.Columns.Add(dcArtist); ArtistIDColumnName = dcArtist.ColumnName; // Für die ID des CD-Interpreten auch noch eine Spalte vorsehen DataColumn dcCDArtist = new DataColumn(); dcCDArtist.Caption = "ArtistCDID"; dcCDArtist.DataType = typeof(int); dataTable.Columns.Add(dcCDArtist); ArtistCDIDColumnName = dcCDArtist.ColumnName; // Alle Inhalte füllen for (int i = 0; i < cdQuery.Track.Count; i++) { object[] values = new object[fieldsToRead.Count * 2 + 4]; int colCount = 0; for (int col = 0; col < fieldsToRead.Count; col++) { object rawValue = cdQuery.Track[i].GetValueByField(db, fieldsToRead[col]); string stringValue = CDQueryDataSet.TrackRow.GetStringByValue(db, fieldsToRead[col], rawValue); values[colCount++] = stringValue; if (Settings.Current.SortArchiveNumberNumeric && fieldsToRead[col] == Field.ArchiveNumber) { rawValue = Misc.Atoi((string)rawValue); } values[colCount++] = rawValue; } values[colCount++] = cdQuery.Track[i].TrackID; values[colCount++] = cdQuery.Track[i].CDID; values[colCount++] = cdQuery.Track[i].ArtistID; values[colCount++] = cdQuery.Track[i].CDRow.ArtistID; dataTable.Rows.Add(values); } // Sortierung definieren string sortString = ""; foreach (SortField sortField in sortedFields) { Field field = GetRealSortField(sortField.Field); if (fieldsStringDictionary.ContainsKey(field)) { if (!string.IsNullOrEmpty(sortString)) { sortString += ", "; } // Bei einigen Feldern wird nach Wert sortiert, bei den meisten nach der String-Repräsentation if (SortFieldByValue(db, field)) { sortString += fieldsValueDictionary[field]; } else { sortString += fieldsStringDictionary[field]; } if (sortField.SortDirection == SortDirection.Descending) { sortString += " DESC"; } } } dataTable.DefaultView.Sort = sortString; if (condition != null) { string filterString = ""; // Filter definieren foreach (SingleCondition cond in condition) { if (!string.IsNullOrEmpty(filterString)) { if (cond.Logical == Logical.Or) { filterString += " OR "; } else { filterString += " AND "; } } if (fieldsStringDictionary.ContainsKey(cond.Field)) { if (DataBase.GetTypeByField(cond.Field) == typeof(string)) { if (cond.Field != Field.Date && cond.Field != Field.ArchiveNumber) { filterString += fieldsStringDictionary[cond.Field]; } else { filterString += fieldsValueDictionary[cond.Field]; } filterString += " " + Condition.GetNameOfOperatorForFilter(cond.Operator) + " "; string val = cond.Value.ToString(); val = val.Replace("'", "''"); if (cond.Operator == Operator.Contains || cond.Operator == Operator.NotContains) { filterString += "'%" + val + "%'"; } else { if (cond.Operator == Operator.StartsWith) { filterString += "'" + val + "%'"; } else { filterString += "'" + val + "'"; } } } else { filterString += fieldsValueDictionary[cond.Field]; filterString += " " + Condition.GetNameOfOperatorForFilter(cond.Operator) + " "; filterString += cond.Value.ToString(); } } } dataTable.DefaultView.RowFilter = filterString; } resultDataTable = dataTable.DefaultView.ToTable(); }
public TrackDataView(DataBase db, CDQueryDataSet cdQuery, Condition condition, SortFieldCollection sortedFields) : this(db, cdQuery, condition, sortedFields, FieldHelper.GetAllFields()) { }
private void SearchAndReplaceCD() { CDTableAdapter ta = new CDTableAdapter(dataBase); CDQueryDataSet ds = new CDQueryDataSet(); ta.Fill(ds.CD); Field selectedField = ((ComboBoxItem)comboBoxField.SelectedItem).Field; progressBar.Visible = true; labelStatus.Visible = true; labelStatus.Text = ""; progressBar.Minimum = 0; progressBar.Maximum = ds.CD.Rows.Count; int found = 0; DataColumn fieldColumn = ds.CD.GetDataColumnByField(selectedField); foreach (CDQueryDataSet.CDRow row in ds.CD.Rows) { if (canceled) break; object value = row.GetValueByField(selectedField); if (value is string) { string str = value as string; if (FindAndReplaceString(ref str)) { row[fieldColumn] = str; ta.Update(row); found++; labelStatus.Text = string.Format(StringTable.RecordsReplaced, found); labelStatus.Update(); } } progressBar.Value++; progressBar.Update(); Application.DoEvents(); } DialogResult = DialogResult.OK; string message; if (found == 0) message = StringTable.FinishReplaceNothing; else if (found == 1) message = StringTable.FinishReplaceSingle; else message = string.Format(StringTable.FinishReplaceMulti, found); MessageBox.Show(message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information); }
void bwAlbumView_DoWork(object sender, DoWorkEventArgs e) { TrackDataView TrackView; CDQuery = DataBase.ExecuteTrackQuery(); // Hier die Felder auflisten, die ich für die Albumansicht brauche FieldCollection fc = new FieldCollection(); fc.AddRange(new Field[] { Field.ArtistCDName, Field.ArtistCDSaveAs, Field.Title, Field.CDCoverFront, Field.Category, Field.ArchiveNumber, Field.YearRecorded, Field.TrackNumber, Field.TrackTitle, Field.TrackLength, Field.TrackRating, Field.ArtistTrackName, Field.ComposerTrackName, Field.TrackSoundFile }); SortFieldCollection sfc = new SortFieldCollection(); sfc.Add(Field.ArtistCDSaveAs); sfc.Add(Field.Title); sfc.Add(Field.CDID); sfc.Add(Field.TrackNumber); TrackView = new TrackDataView(DataBase, CDQuery, Condition, sfc, fc); int count = 0; List <AlbumViewItem> items = new List <AlbumViewItem>(); AlbumViewItem newItem = null; string lastArtist = ""; string lastTitle = ""; int lastcdid = 0; for (int row = 0; row < TrackView.Rows.Count; row++) { string artistDisplay = TrackView.GetRowStringValue(row, Field.ArtistCDName); string artist = TrackView.GetRowStringValue(row, Field.ArtistCDSaveAs); string title = TrackView.GetRowStringValue(row, Field.Title); int cdid = TrackView.GetCDID(row); if (artist != lastArtist || title != lastTitle || cdid != lastcdid) { if (newItem != null) { items.Add(newItem); } newItem = new AlbumViewItem(); newItem.ID = cdid; newItem.Artist = artistDisplay; newItem.Title = title; newItem.ImageFilename = TrackView.GetRowStringValue(row, Field.CDCoverFront); newItem.Genre = TrackView.GetRowStringValue(row, Field.Category); newItem.ArchiveNumber = TrackView.GetRowStringValue(row, Field.ArchiveNumber); int yearRecorded = (int)TrackView.GetRowRawValue(row, Field.YearRecorded); if (yearRecorded > 0) { newItem.Year = yearRecorded.ToString(); } newItem.Tracks = new List <Track>(); lastArtist = artist; lastTitle = title; } if (newItem != null) { Track track = new Track(); track.TrackNumber = (int)TrackView.GetRowRawValue(row, Field.TrackNumber); track.Title = TrackView.GetRowStringValue(row, Field.TrackTitle); track.Length = (int)TrackView.GetRowRawValue(row, Field.TrackLength); track.Rating = (int)TrackView.GetRowRawValue(row, Field.TrackRating); track.Artist = TrackView.GetRowStringValue(row, Field.ArtistTrackName); track.Composer = TrackView.GetRowStringValue(row, Field.ComposerTrackName); track.Soundfile = TrackView.GetRowStringValue(row, Field.TrackSoundFile); track.ID = TrackView.GetTrackID(row); newItem.Tracks.Add(track); } //toolStripStatusProgressBar.Value = (int)(100.0 / TrackView.Rows.Count * count); count++; lastcdid = cdid; } if (newItem != null) { items.Add(newItem); } e.Result = items; }
private void CopyDataToClipboard(FieldCollection selectedFields) { StringBuilder clipboardText = new StringBuilder(); string fieldSeperator = ((ComboBoxSeperator)comboBoxFieldSeperator.SelectedItem).Value; string recordSeperator = ((ComboBoxSeperator)comboBoxRecordSeperator.SelectedItem).Value; // Header-Zeile schreiben? if (checkBoxFieldsInFirstLine.Checked) { int iCount = 0; foreach (Field field in selectedFields) { clipboardText.Append(dataBase.GetNameOfFieldFull(field)); if (iCount < selectedFields.Count - 1) { clipboardText.Append(fieldSeperator); } iCount++; } clipboardText.Append(recordSeperator); } progressBar.Maximum = records.Length; progressBar.Value = 0; CDQueryDataSet cdQuery = null; if (copyTracks) { cdQuery = dataBase.ExecuteTrackQuery(); } else { cdQuery = dataBase.ExecuteCDQuery(); } foreach (int id in records) { if (copyTracks) { string filter = string.Format("TrackID={0}", id); CDQueryDataSet.TrackRow liedRow = (CDQueryDataSet.TrackRow)cdQuery.Track.Select(filter)[0]; int iCount = 0; foreach (Field field in selectedFields) { object value = liedRow.GetValueByField(dataBase, field); if (checkBoxQuoteTextFields.Checked && value is string) { clipboardText.Append("\"" + value + "\""); } else { clipboardText.Append(value); } if (iCount < selectedFields.Count - 1) { clipboardText.Append(fieldSeperator); } iCount++; } } else { string filter = string.Format("CDID={0}", id); CDQueryDataSet.CDRow cdRow = (CDQueryDataSet.CDRow)cdQuery.CD.Select(filter)[0]; int iCount = 0; foreach (Field field in selectedFields) { object value = cdRow.GetValueByField(field); if (checkBoxQuoteTextFields.Checked && value is string) { clipboardText.Append("\"" + value + "\""); } else { clipboardText.Append(value); } if (iCount < selectedFields.Count - 1) { clipboardText.Append(fieldSeperator); } iCount++; } } clipboardText.Append(recordSeperator); progressBar.Value++; progressBar.Update(); Application.DoEvents(); } Clipboard.SetText(clipboardText.ToString(), TextDataFormat.Text); }
private void TransferFields(FormProgress formProgress) { Field sourceField = ((ComboBoxItem)comboBoxSourceField.SelectedItem).Field; Field targetField = ((ComboBoxItem)comboBoxTargetField.SelectedItem).Field; CDQueryDataSet cdQuery = dataBase.ExecuteCDQuery(); CDDataView CDView = new CDDataView(dataBase, cdQuery, condition, new SortFieldCollection(), new FieldCollection()); int errorCount = 0; formProgress.ProgressBar.Maximum = CDView.Rows.Count; formProgress.ProgressBar.Value = 0; for (int i = 0; i < CDView.Rows.Count; i++) { CD cd = dataBase.GetCDById(CDView.GetCDID(i)); try { if (FieldHelper.IsCDField(sourceField)) { object o = cd.GetValueByField(sourceField); cd.SetValueToField(targetField, o); if (checkBoxMoveField.Checked) { Type fieldType = DataBase.GetTypeByField(sourceField); if (fieldType == typeof(string)) { cd.SetValueToField(sourceField, ""); } else if (fieldType == typeof(int)) { cd.SetValueToField(sourceField, 0); } else { cd.SetValueToField(sourceField, null); } } } else { for (int track = 0; track < cd.Tracks.Count; track++) { object o = cd.GetTrackValueByField(track, sourceField); cd.SetTrackValueToField(track, targetField, o); if (checkBoxMoveField.Checked) { Type fieldType = DataBase.GetTypeByField(sourceField); if (fieldType == typeof(string)) { cd.SetTrackValueToField(track, sourceField, ""); } else if (fieldType == typeof(int)) { cd.SetTrackValueToField(track, sourceField, 0); } else { cd.SetTrackValueToField(track, sourceField, null); } } } } cd.Save(dataBase); } catch (Exception e) { errorCount++; } if (formProgress.Canceled) { break; } formProgress.ProgressBar.Value++; Application.DoEvents(); } if (errorCount > 0) { MessageBox.Show(string.Format(StringTable.TransferFieldsTotal, CDView.Rows.Count - errorCount, CDView.Rows.Count), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information); } }