コード例 #1
0
ファイル: Condition.cs プロジェクト: Big3Software/hitbase
        /// <summary>
        /// Verbindet (addiert) beide Conditions
        /// </summary>
        /// <param name="cond1"></param>
        /// <param name="cond2"></param>
        /// <returns></returns>
        public static Condition Combine(Condition cond1, Condition cond2)
        {
            Condition combinedCondition = new Condition();

            foreach (SingleCondition singleCond in cond1)
            {
                if (singleCond.Field != Field.None)
                {
                    // Der letzte braucht eine "AND"-Verknüpfung, damit beide Conditions mit AND verknüpft sind.
                    if (singleCond == cond1[cond1.Count - 1])
                    {
                        combinedCondition.Add(new SingleCondition(singleCond.Field, singleCond.Operator, singleCond.Value, Logical.And));
                    }
                    else
                    {
                        combinedCondition.Add(new SingleCondition(singleCond.Field, singleCond.Operator, singleCond.Value, singleCond.Logical));
                    }
                }
            }

            if (cond2 != null)
            {
                foreach (SingleCondition singleCond in cond2)
                {
                    combinedCondition.Add(new SingleCondition(singleCond.Field, singleCond.Operator, singleCond.Value, singleCond.Logical));
                }
            }

            return(combinedCondition);
        }
コード例 #2
0
        private void dataGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            if (VisualTreeExtensions.FindParent <DataGridRow>(e.OriginalSource as DependencyObject) != null)
            {
                AlbumListItem item = dataGrid.SelectedItem as AlbumListItem;
                if (item != null)
                {
                    switch (CurrentViewMode)
                    {
                    case CurrentViewMode.MediumTable:
                    {
                        ChangeViewCommandParameters changeViewParams = new ChangeViewCommandParameters();
                        changeViewParams.ViewMode = MainControls.CurrentViewMode.AlbumTable;

                        Big3.Hitbase.DataBaseEngine.Condition condition = new Big3.Hitbase.DataBaseEngine.Condition();
                        condition.Add(new SingleCondition(Field.Medium, Operator.Equal, item.Title));
                        changeViewParams.Condition = condition;

                        CatalogViewCommands.ChangeView.Execute(changeViewParams, this);
                        break;
                    }
                    }
                }
            }
        }
コード例 #3
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;
        }