コード例 #1
0
        public void FillList()
        {
            if (dataGrid.Columns.Count > 0)
            {
                SaveDataGridColumnWidths();
            }

            SortFieldCollection defaultCdListSort = new SortFieldCollection();

            if (ShowItemType == MainControls.ShowItemType.Directory)
            {
                defaultCdListSort.Add(new SortField(Field.TrackSoundFile, SortDirection.Ascending));
                trackListSort = SortFieldCollection.LoadFromRegistry("DirectoryTableSort", defaultCdListSort);
            }
            else
            {
                defaultCdListSort.Add(new SortField(Field.ArtistTrackName, SortDirection.Ascending));
                defaultCdListSort.Add(new SortField(Field.TrackTitle, SortDirection.Ascending));
                trackListSort = SortFieldCollection.LoadFromRegistry("MyMusicTableSort", defaultCdListSort);
            }

            CreateHeader(trackListFields);
            this.dataGrid.ItemsSource = null;

            if (!backgroundWorker.IsBusy)
            {
                backgroundWorker = new BackgroundWorker();
                backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bwTrackList_RunWorkerCompleted);
                backgroundWorker.DoWork             += new DoWorkEventHandler(bwTrackList_DoWork);
                backgroundWorker.RunWorkerAsync();
            }
        }
コード例 #2
0
        private void buttonSort_Click(object sender, EventArgs e)
        {
            FormSort formSort;

            if (printType != PrintType.TrackList)
            {
                formSort = new FormSort(dataBase, FieldType.CD, cdSortFields);
            }
            else
            {
                formSort = new FormSort(dataBase, FieldType.All, trackSortFields);
            }

            if (formSort.ShowDialog(this) == DialogResult.OK)
            {
                if (printType != PrintType.TrackList)
                {
                    cdSortFields = formSort.SortFields;
                }
                else
                {
                    trackSortFields = formSort.SortFields;
                }

                printPreviewControl.InvalidatePreview();
            }
        }
コード例 #3
0
ファイル: FormSort.cs プロジェクト: Big3Software/hitbase
        public FormSort(DataBase dataBase, FieldType fieldType, SortFieldCollection sortFields)
        {
            InitializeComponent();

            FillList(dataBase, comboBoxSortField1, fieldType, sortFields.Count > 0 ? sortFields[0].Field : Field.None);
            if (sortFields.Count > 0 && sortFields[0].SortDirection == SortDirection.Descending)
            {
                radioButtonSortDirection1Descending.Checked = true;
            }
            else
            {
                radioButtonSortDirection1Ascending.Checked = true;
            }

            FillList(dataBase, comboBoxSortField2, fieldType, sortFields.Count > 1 ? sortFields[1].Field : Field.None);
            if (sortFields.Count > 1 && sortFields[1].SortDirection == SortDirection.Descending)
            {
                radioButtonSortDirection2Descending.Checked = true;
            }
            else
            {
                radioButtonSortDirection2Ascending.Checked = true;
            }

            FillList(dataBase, comboBoxSortField3, fieldType, sortFields.Count > 2 ? sortFields[2].Field : Field.None);
            if (sortFields.Count > 2 && sortFields[2].SortDirection == SortDirection.Descending)
            {
                radioButtonSortDirection3Descending.Checked = true;
            }
            else
            {
                radioButtonSortDirection3Ascending.Checked = true;
            }
        }
コード例 #4
0
        private void buttonOK_Click(object sender, RoutedEventArgs e)
        {
            SortFields = new SortFieldCollection();

            AddSortField(comboBoxSort1, radioButtonSort1Ascending, radioButtonSort1Descending);
            AddSortField(comboBoxSort2, radioButtonSort2Ascending, radioButtonSort2Descending);
            AddSortField(comboBoxSort3, radioButtonSort3Ascending, radioButtonSort3Descending);

            if (OKClicked != null)
            {
                OKClicked(this, new EventArgs());
            }
        }
コード例 #5
0
        public SortUserControl(DataBase dataBase, bool cdOnly, SortFieldCollection sfc)
        {
            InitializeComponent();

            this.dataBase = dataBase;

            comboBoxSort1.ItemsSource       = GetFieldList(cdOnly);
            comboBoxSort1.DisplayMemberPath = "DisplayName";
            comboBoxSort1.SelectedValuePath = "Field";

            if (sfc.Count > 0)
            {
                comboBoxSort1.SelectedValue          = sfc[0].Field;
                radioButtonSort1Ascending.IsChecked  = (sfc[0].SortDirection == SortDirection.Ascending);
                radioButtonSort1Descending.IsChecked = (sfc[0].SortDirection == SortDirection.Descending);
            }
            else
            {
                comboBoxSort1.SelectedIndex = 0;
            }

            comboBoxSort2.ItemsSource       = GetFieldList(cdOnly);
            comboBoxSort2.DisplayMemberPath = "DisplayName";
            comboBoxSort2.SelectedValuePath = "Field";

            if (sfc.Count > 1)
            {
                comboBoxSort2.SelectedValue          = sfc[1].Field;
                radioButtonSort2Ascending.IsChecked  = (sfc[1].SortDirection == SortDirection.Ascending);
                radioButtonSort2Descending.IsChecked = (sfc[1].SortDirection == SortDirection.Descending);
            }
            else
            {
                comboBoxSort2.SelectedIndex = 0;
            }

            comboBoxSort3.ItemsSource       = GetFieldList(cdOnly);
            comboBoxSort3.DisplayMemberPath = "DisplayName";
            comboBoxSort3.SelectedValuePath = "Field";

            if (sfc.Count > 2)
            {
                comboBoxSort3.SelectedValue          = sfc[2].Field;
                radioButtonSort3Ascending.IsChecked  = (sfc[2].SortDirection == SortDirection.Ascending);
                radioButtonSort3Descending.IsChecked = (sfc[2].SortDirection == SortDirection.Descending);
            }
            else
            {
                comboBoxSort3.SelectedIndex = 0;
            }
        }
コード例 #6
0
        private void SaveDataGridColumnWidths()
        {
            // Spaltenbreiten auslesen
            int i = 0;
            SortedList <int, ColumnField> displayColumns = new SortedList <int, ColumnField>();
            SortFieldCollection           sfc            = new SortFieldCollection();

            bool firstColumn = true;

            foreach (DataGridColumn col in dataGrid.Columns)
            {
                // Erste Spalte überspringen (Play-Buttons)
                if (firstColumn)
                {
                    firstColumn = false;
                    continue;
                }

                ColumnField cf = new ColumnField();

                cf.Width = (int)col.Width.DisplayValue;
                cf.Field = trackListFields[i].Field;
                displayColumns.Add(col.DisplayIndex, cf);

                i++;
            }

            ColumnFieldCollection cfc = new ColumnFieldCollection();

            foreach (ColumnField cf in displayColumns.Values)
            {
                cfc.Add(cf);
            }

            trackListFields = cfc;
            cfc.SaveToRegistry("MyMusicTable");
            if (ShowItemType == MainControls.ShowItemType.Directory)
            {
                trackListSort.SaveToRegistry("DirectoryTableSort");
            }
            else
            {
                trackListSort.SaveToRegistry("MyMusicTableSort");
            }
        }
コード例 #7
0
        public AlbumViewTable()
        {
            InitializeComponent();

            ColumnFieldCollection defaultcdListFields = new ColumnFieldCollection();

            defaultcdListFields.Add(Field.ArtistCDName);
            defaultcdListFields.Add(Field.Title);
            defaultcdListFields.Add(Field.NumberOfTracks);
            defaultcdListFields.Add(Field.TotalLength);
            defaultcdListFields.Add(Field.Category);
            defaultcdListFields.Add(Field.ArchiveNumber);
            defaultcdListFields.Add(Field.Rating);
            cdListFields = ColumnFieldCollection.LoadFromRegistry("AlbumViewTable", defaultcdListFields);

            SortFieldCollection defaultCdListSort = new SortFieldCollection();

            defaultCdListSort.Add(new SortField(Field.ArtistCDName, SortDirection.Ascending));
            defaultCdListSort.Add(new SortField(Field.Title, SortDirection.Ascending));
            CdListSort = SortFieldCollection.LoadFromRegistry("AlbumViewTableSort", defaultCdListSort);
        }
コード例 #8
0
        private void CommandBindingEditSort_Executed(object sender, ExecutedRoutedEventArgs e)
        {
            SortFieldCollection sfc = View.SortFields;
            bool cdOnly             = false;

            if (View is AlbumViewTable || View is AlbumViewSymbols)
            {
                cdOnly = true;
            }

            SortUserControl sortUserControl = new SortUserControl(DataBase, cdOnly, sfc);

            GlobalServices.ModalService.NavigateTo(sortUserControl, StringTable.Sort, delegate(bool returnValue)
            {
                if (returnValue == true)
                {
                    View.SortFields = sortUserControl.SortFields;
                    FillList();
                }
            });
        }
コード例 #9
0
        public AlbumViewSymbols()
        {
            InitializeComponent();

            ColumnFieldCollection defaultcdListFields = new ColumnFieldCollection();

            defaultcdListFields.Add(Field.ArtistCDName);
            defaultcdListFields.Add(Field.ArtistCDSaveAs);
            defaultcdListFields.Add(Field.Title);
            defaultcdListFields.Add(Field.CDCoverFront);
            defaultcdListFields.Add(Field.Category);
            defaultcdListFields.Add(Field.ArchiveNumber);
            defaultcdListFields.Add(Field.YearRecorded);
            cdListFields = defaultcdListFields;
            //cdListFields = ColumnFieldCollection.LoadFromRegistry("Catalog", defaultcdListFields);

            SortFieldCollection defaultCdListSort = new SortFieldCollection();

            defaultCdListSort.Add(new SortField(Field.ArtistCDName, SortDirection.Ascending));
            defaultCdListSort.Add(new SortField(Field.Title, SortDirection.Ascending));
            CdListSort = defaultCdListSort;
            //CdListSort = SortFieldCollection.LoadFromRegistry("CatalogSort", defaultCdListSort);
        }
コード例 #10
0
        public MySort(DataBase db, DataGrid dataGrid, ColumnFieldCollection fields, SortFieldCollection sfc)
        {
            DataBase = db;
            DataGrid = dataGrid;
            Fields   = fields;

            columnSortDirections = new List <DataGridSortColumn>();

            foreach (SortField sf in sfc)
            {
                for (int i = 0; i < dataGrid.Columns.Count; i++)
                {
                    Field field = (Field)dataGrid.Columns[i].GetValue(DataGridExtensions.FieldProperty);
                    if (field == sf.Field)
                    {
                        columnSortDirections.Add(new DataGridSortColumn()
                        {
                            Field = field, Index = i, SortDirection = (ListSortDirection)dataGrid.Columns[i].SortDirection
                        });
                        break;
                    }
                }
            }
        }
コード例 #11
0
        private void Search()
        {
            Big3.Hitbase.DataBaseEngine.Condition sel = new Big3.Hitbase.DataBaseEngine.Condition();

            // Diese Sachen direkt speichern, wenn einmal gesucht wurde.
            Settings.SetValue("LinkSameNumber", checkBoxSameTrackCount.IsChecked == true ? (int)1 : (int)0);
            Settings.SetValue("LinkNotLinked", checkBoxNotAssigned.IsChecked == true ? (int)1 : (int)0);

            // Nur CDs.
            sel.Add(Field.AlbumType, Operator.Equal, 0);

            if (this.checkBoxNotAssigned.IsChecked == true)
            {
                sel.Add(Field.Identity, Operator.Empty, 0);
            }

            if (this.checkBoxSameTrackCount.IsChecked == true)
            {
                sel.Add(Field.NumberOfTracks, Operator.Equal, cdInDrive.NumberOfTracks);
            }

            if (textBoxArtist.Text != "")
            {
                sel.Add(Field.ArtistCDName, Operator.Contains, textBoxArtist.Text);
            }

            if (textBoxTitle.Text != "")
            {
                sel.Add(Field.Title, Operator.Contains, textBoxTitle.Text);
            }

            SortFieldCollection sortKeys = new SortFieldCollection();

            sortKeys.Add(Field.ArtistCDName);
            sortKeys.Add(Field.Title);

            FieldCollection fc = new FieldCollection();

            fc.Add(Field.ArtistCDName);
            fc.Add(Field.Title);
            fc.Add(Field.TotalLength);
            fc.Add(Field.NumberOfTracks);

            List <CDItemResult> items = new List <CDItemResult>();

            using (DataBaseView albumView = AlbumView.CreateView(dataBase, fc, sortKeys, 0, sel))
            {
                object[] values;

                while ((values = albumView.Read()) != null)
                {
                    CDItemResult newItem = new CDItemResult();
                    newItem.CDID           = (int)values[0];
                    newItem.Artist         = (string)values[1];
                    newItem.Title          = values[2] is DBNull ? "" : (string)values[2];
                    newItem.Length         = (int)values[3];
                    newItem.NumberOfTracks = (int)values[4];

                    items.Add(newItem);
                }
            }

            DataGridResult.ItemsSource = items;

            return;
        }
コード例 #12
0
        void bwAlbumView_DoWork(object sender, DoWorkEventArgs e)
        {
            FieldCollection fc = new FieldCollection();

            fc.AddRange(new Field[] { Field.CDID, Field.Title, Field.ArchiveNumber, Field.CDCoverFront, Field.YearRecorded,
                                      Field.TrackNumber, Field.TrackTitle, Field.TrackLength, Field.TrackRating, Field.TrackSoundFile,
                                      Field.ArtistCDName, Field.ArtistCDSaveAs, Field.ArtistTrackName, Field.Category, Field.ComposerTrackName });

            int count = 0;

            SortFieldCollection sfc = new SortFieldCollection();

            sfc.Add(Field.ArtistCDSaveAs);
            sfc.Add(Field.Title);
            sfc.Add(Field.CDID);
            // Die Verzeichnisansicht immer sortiert nach Dateiname
            if (this.ShowItemType == ShowItemType.Directory)
            {
                sfc.Add(Field.TrackSoundFile);
            }
            else
            {
                sfc.Add(Field.TrackNumber);
            }

            SafeObservableCollection <AlbumViewItemBase> items = new SafeObservableCollection <AlbumViewItemBase>();

            AlbumViewItem newItem         = null;
            string        lastArtist      = "";
            string        lastArtistTitle = "";
            string        lastTitle       = "";
            int           lastcdid        = 0;

            Big3.Hitbase.DataBaseEngine.Condition searchCondition = Big3.Hitbase.DataBaseEngine.Condition.Combine(Condition, ConditionFromTree);

            using (DataBaseView view = TrackView.CreateView(DataBase, fc, sfc, 0, searchCondition))
            {
                // Überall auf die Indizes 1 addieren, da die erste Spalte die TrackID ist.
                int colArtistName     = fc.IndexOf(Field.ArtistCDName) + 1;
                int colArtistSaveAs   = fc.IndexOf(Field.ArtistCDSaveAs) + 1;
                int colTitle          = fc.IndexOf(Field.Title) + 1;
                int colCDID           = fc.IndexOf(Field.CDID) + 1;
                int colFrontCover     = fc.IndexOf(Field.CDCoverFront) + 1;
                int colCategory       = fc.IndexOf(Field.Category) + 1;
                int colArchiveNumber  = fc.IndexOf(Field.ArchiveNumber) + 1;
                int colYearRecorded   = fc.IndexOf(Field.YearRecorded) + 1;
                int colTrackNumber    = fc.IndexOf(Field.TrackNumber) + 1;
                int colTrackTitle     = fc.IndexOf(Field.TrackTitle) + 1;
                int colTrackLength    = fc.IndexOf(Field.TrackLength) + 1;
                int colTrackRating    = fc.IndexOf(Field.TrackRating) + 1;
                int colTrackArtist    = fc.IndexOf(Field.ArtistTrackName) + 1;
                int colTrackComposer  = fc.IndexOf(Field.ComposerTrackName) + 1;
                int colTrackSoundFile = fc.IndexOf(Field.TrackSoundFile) + 1;
                int colTrackID        = 0;

                object[] values;

                while ((values = view.Read()) != null)
                {
                    string artistDisplay = values[colArtistName] is DBNull ? "" : (string)values[colArtistName];
                    string artist        = values[colArtistSaveAs] is DBNull ? "" : (string)values[colArtistSaveAs];
                    string title         = values[colTitle] is DBNull ? "" : (string)values[colTitle];
                    int    cdid          = (int)values[colCDID];

                    if (cdid != lastcdid)
                    {
                        if (newItem != null)
                        {
                            if (newItem.Artist != lastArtistTitle)
                            {
                                AlbumViewTitle albumTitle = new AlbumViewTitle();
                                albumTitle.Title = newItem.Artist;
                                items.Add(albumTitle);

                                lastArtistTitle = newItem.Artist;
                            }

                            items.Add(newItem);
                        }

                        newItem               = new AlbumViewItem();
                        newItem.ID            = cdid;
                        newItem.Artist        = artistDisplay;
                        newItem.Title         = title;
                        newItem.ImageFilename = values[colFrontCover] is DBNull ? "" : (string)values[colFrontCover];
                        newItem.Genre         = values[colCategory] is DBNull ? "" : (string)values[colCategory];
                        newItem.ArchiveNumber = values[colArchiveNumber] is DBNull ? "" : (string)values[colArchiveNumber];
                        int yearRecorded = values[colYearRecorded] is DBNull ? 0 : (int)values[colYearRecorded];
                        if (yearRecorded > 0)
                        {
                            newItem.Year = yearRecorded.ToString();
                        }

                        newItem.Tracks = new SafeObservableCollection <Track>();
                        lastArtist     = artist;
                        lastTitle      = title;
                    }

                    if (newItem != null)
                    {
                        Track track = new Track();
                        track.TrackNumber = (int)values[colTrackNumber];
                        track.Title       = values[colTrackTitle] is DBNull ? "" : (string)values[colTrackTitle];
                        track.Length      = (int)values[colTrackLength];
                        track.Rating      = values[colTrackRating] is DBNull ? 0 : (int)values[colTrackRating];
                        track.Artist      = values[colTrackArtist] is DBNull ? "" : (string)values[colTrackArtist];
                        track.Composer    = values[colTrackComposer] is DBNull ? "" : (string)values[colTrackComposer];
                        track.Soundfile   = values[colTrackSoundFile] is DBNull ? "" : (string)values[colTrackSoundFile];
                        track.CDID        = cdid;
                        track.ID          = (int)values[colTrackID];

                        newItem.Tracks.Add(track);
                    }

                    //toolStripStatusProgressBar.Value = (int)(100.0 / TrackView.Rows.Count * count);

                    count++;

                    lastcdid = cdid;
                }
            }


            if (newItem != null)
            {
                if (newItem.Artist != lastArtistTitle)
                {
                    AlbumViewTitle albumTitle = new AlbumViewTitle();
                    albumTitle.Title = newItem.Artist;
                    items.Add(albumTitle);
                }

                items.Add(newItem);
            }

            e.Result = items;
        }
コード例 #13
0
        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;
        }