// dgridMovieGroup_SelectionChangedから呼び出し
        public GroupFilesInfo ClearAndExecute(int myFilterKind, MovieGroup myGroupData)
        {
            Clear();

            if (myGroupData.Kind == 1)
                SetLabel(myGroupData.Explanation);
            else if (myGroupData.Kind == 3)
                SetSiteContents(myGroupData.Label, myGroupData.Explanation);
            else if (myGroupData.Kind == 4)
                SetActress(myGroupData.Name);

            GroupFilesInfo FilesInfo = Execute();

            return FilesInfo;
        }
        public static MovieGroup DbExport(MovieGroup myMovieGroup, DbConnection myDbCon)
        {
            if (myDbCon == null)
                myDbCon = new DbConnection();

            myDbCon.openConnection();
            string querySting = "INSERT INTO MOVIE_GROUP( NAME, LABEL, EXPLANATION, KIND ) VALUES ( @pName, @pLabel, @pExplanation, @pKind ) ";

            SqlParameter[] sqlparams = new SqlParameter[4];
            // Create and append the parameters for the Update command.
            sqlparams[0] = new SqlParameter("@pName", SqlDbType.VarChar);
            sqlparams[0].Value = myMovieGroup.Name;

            sqlparams[1] = new SqlParameter("@pLabel", SqlDbType.VarChar);
            sqlparams[1].Value = myMovieGroup.Label;

            sqlparams[2] = new SqlParameter("@pExplanation", SqlDbType.VarChar);
            sqlparams[2].Value = myMovieGroup.Explanation;

            sqlparams[3] = new SqlParameter("@pKind", SqlDbType.Int);
            sqlparams[3].Value = myMovieGroup.Kind;

            myDbCon.SetParameter(sqlparams);
            myDbCon.execSqlCommand(querySting);

            string queryString
                        = "SELECT "
                        + "    ID, NAME, LABEL, EXPLANATION, KIND, CREATE_DATE, UPDATE_DATE "
                        + "  FROM MOVIE_GROUP WHERE ID IN (SELECT MAX(ID) FROM MOVIE_GROUP) "
                        + ""
                        + "";

            SqlDataReader reader = null;
            MovieGroup data = null;
            try
            {
                reader = myDbCon.GetExecuteReader(queryString);

                do
                {

                    if (reader.IsClosed)
                    {
                        _logger.Debug("reader.IsClosed");
                        throw new Exception("MOVIE_SITESTOREの取得でreaderがクローズされています");
                    }

                    while (reader.Read())
                    {
                        data = new MovieGroup();

                        data.Id = DbExportCommon.GetDbInt(reader, 0);
                        data.Name = DbExportCommon.GetDbString(reader, 1);
                        data.Label = DbExportCommon.GetDbString(reader, 2);
                        data.Explanation = DbExportCommon.GetDbString(reader, 3);
                        data.Kind = DbExportCommon.GetDbInt(reader, 4);
                        data.CreateDate = DbExportCommon.GetDbDateTime(reader, 5);
                        data.UpdateDate = DbExportCommon.GetDbDateTime(reader, 6);
                    }
                } while (reader.NextResult());
            }
            finally
            {
                reader.Close();
            }

            return data;
        }
        public static List<MovieGroup> GetDbData(DbConnection myDbCon)
        {
            List<MovieGroup> listMovieGroup = new List<MovieGroup>();

            if (myDbCon == null)
                myDbCon = new DbConnection();

            string queryString
                        = "SELECT "
                        + "    ID, NAME, LABEL, EXPLANATION, KIND, CREATE_DATE, UPDATE_DATE "
                        + "  FROM MOVIE_GROUP "
                        + ""
                        + "";

            SqlDataReader reader = null;
            try
            {
                reader = myDbCon.GetExecuteReader(queryString);

                do
                {

                    if (reader.IsClosed)
                    {
                        _logger.Debug("reader.IsClosed");
                        throw new Exception("MOVIE_SITESTOREの取得でreaderがクローズされています");
                    }

                    while (reader.Read())
                    {
                        MovieGroup data = new MovieGroup();

                        data.Id = DbExportCommon.GetDbInt(reader, 0);
                        data.Name = DbExportCommon.GetDbString(reader, 1);
                        data.Label = DbExportCommon.GetDbString(reader, 2);
                        data.Explanation = DbExportCommon.GetDbString(reader, 3);
                        data.Kind = DbExportCommon.GetDbInt(reader, 4);
                        data.CreateDate = DbExportCommon.GetDbDateTime(reader, 5);
                        data.UpdateDate = DbExportCommon.GetDbDateTime(reader, 6);

                        listMovieGroup.Add(data);
                    }
                } while (reader.NextResult());
            }
            finally
            {
                reader.Close();
            }

            reader.Close();

            myDbCon.closeConnection();

            return listMovieGroup;
        }
 public void DbDelete(MovieGroup myData, DbConnection myDbCon)
 {
     ColViewListMovieGroup.Remove(myData);
     MovieGroups.DbDelete(myData, myDbCon);
 }
        public static void DbDelete(MovieGroup myData, DbConnection myDbCon)
        {
            if (myDbCon == null)
                myDbCon = new DbConnection();

            myDbCon.openConnection();

            string querySting = "DELETE FROM MOVIE_GROUP WHERE ID = @pId ";

            SqlParameter[] sqlparams = new SqlParameter[1];

            sqlparams[0] = new SqlParameter("@pId", SqlDbType.Int);
            sqlparams[0].Value = myData.Id;

            myDbCon.SetParameter(sqlparams);
            myDbCon.execSqlCommand(querySting);

            myDbCon.closeConnection();
        }
        public void ExportMovieGroupFromMovieFilesTagOnly(List<MovieGroup> myListGroup)
        {
            List<string> listTag = GetOnlyTagList();

            foreach (string data in listTag)
            {
                string[] csvSplit = data.Split(',');

                if (csvSplit.Length > 1)
                {
                    foreach (string field in csvSplit)
                    {
                        var checkdata = from groupInfo in myListGroup
                                        where groupInfo.Name == field.Trim()
                                        select groupInfo;

                        if (checkdata.Count() <= 0)
                        {
                            Debug.Print("TAGのみ " + field);
                            MovieGroup ginfo = new MovieGroup();
                            ginfo.Name = field;
                            ginfo.Explanation = "TAGのみ";
                            ginfo.Kind = 4;

                            MovieGroups.DbExport(ginfo, dbcon);
                        }
                    }
                }
                else
                {
                    var checkdata = from groupInfo in myListGroup
                                    where groupInfo.Name == data.Trim()
                                    select groupInfo;

                    if (checkdata.Count() <= 0)
                    {
                        Debug.Print("TAGのみ " + data);
                        MovieGroup ginfo = new MovieGroup();
                        ginfo.Name = data;
                        ginfo.Explanation = "TAGのみ";
                        ginfo.Kind = 4;

                        MovieGroups.DbExport(ginfo, dbcon);
                    }
                }
            }
        }
 public void Add(MovieGroup myData)
 {
     listMovieGroup.Add(myData);
 }
        private void OnDisplayImage(MovieContents myMovieContents, MovieGroup myTargetGroup)
        {
            // パラメータがnullの場合は画像表示を全てクリア
            if (myMovieContents == null)
            {
                imagePackage.Source = null;
                return;
            }

            if (image == null) image = new common.Image(myMovieContents, myTargetGroup);

            // PackageImage
            // Visibleの場合のみ表示
            FileInfo fileInfoPackage = image.GetDefaultPackageFileInfo();

            if (fileInfoPackage != null && fileInfoPackage.Exists)
            {
                string path = myMovieContents.GetExistPath(myTargetGroup);
                if (path != null)
                {
                    txtStatusBar.Text = myMovieContents.ExistMovie[0];
                    txtStatusBarFileLength.Text = CommonMethod.GetDisplaySize(myMovieContents.Size);
                    imagePackage.Source = ImageMethod.GetImageStream(fileInfoPackage.FullName);
                }
            }
            else
            {
                imagePackage.Source = null;
            }

            // ImageContents
            // Visibleの場合のみ表示
            //   Kind == 1 ( File )
            //     isThumbnail
            //       true  サムネイル画像を表示
            //       false Dirがあれば、Dir内の画像、無い場合はパッケージを表示、ImagePackageを非表示
            //   Kind == 2 ( Site )
            if (image.IsThumbnail())
            {
                List<FileInfo> listFileInfo = image.listImageFileInfo;

                if (listFileInfo != null && listFileInfo.Count >= 1)
                {
                    imageSitesImageOne.Source = ImageMethod.GetImageStream(listFileInfo[0].FullName);
                    imageSitesImageOne.ToolTip = listFileInfo[0].Name;
                    imageSitesImageTwo.Visibility = Visibility.Collapsed;
                    imageSitesImageThree.Visibility = Visibility.Collapsed;
                    imageSitesImageFour.Visibility = Visibility.Collapsed;

                    imageSitesImageOne.SetValue(Grid.RowSpanProperty, 2);
                    imageSitesImageOne.SetValue(Grid.ColumnSpanProperty, 2);

                    BitmapImage bitmapImage = (BitmapImage)imageSitesImageOne.Source;
                    imageSitesImageOne.Width = lgridMain.ColumnDefinitions[MAIN_COLUMN_NO_CONTENTS].ActualWidth;
                    imageSitesImageOne.Height = (imageSitesImageOne.Width / bitmapImage.Width) * bitmapImage.Height;
                    imageSitesImageOne.Stretch = Stretch.Uniform;
                }
            }
            else
            {
                List<FileInfo> listFileInfo = image.listImageFileInfo;
                txtbImageInfo.Text = image.DisplayPage;

                txtStatusBar.Text = Path.Combine(myMovieContents.Label, myMovieContents.Name);
                txtStatusBarFileLength.Text = CommonMethod.GetDisplaySize(myMovieContents.Size);

                if (listFileInfo.Count > 1)
                {
                    imageSitesImageOne.SetValue(Grid.RowSpanProperty, 1);
                    imageSitesImageOne.SetValue(Grid.ColumnSpanProperty, 1);

                    imageSitesImageOne.Width = imageSitesImageTwo.Width;
                    imageSitesImageOne.Height = imageSitesImageTwo.Height;

                    if (listFileInfo.Count >= 1)
                    {
                        imageSitesImageOne.Source = ImageMethod.GetImageStream(listFileInfo[0].FullName);
                        imageSitesImageOne.ToolTip = listFileInfo[0].Name;
                        imageSitesImageOne.Visibility = Visibility.Visible;
                    }
                    if (listFileInfo.Count >= 2)
                    {
                        imageSitesImageTwo.Source = ImageMethod.GetImageStream(listFileInfo[1].FullName);
                        imageSitesImageTwo.ToolTip = listFileInfo[1].Name;
                        imageSitesImageTwo.Visibility = Visibility.Visible;
                    }
                    else
                        imageSitesImageTwo.Visibility = Visibility.Collapsed;

                    if (listFileInfo.Count >= 3)
                    {
                        imageSitesImageThree.Source = ImageMethod.GetImageStream(listFileInfo[2].FullName);
                        imageSitesImageThree.ToolTip = listFileInfo[2].Name;
                        imageSitesImageThree.Visibility = Visibility.Visible;
                    }
                    else
                        imageSitesImageThree.Visibility = Visibility.Collapsed;

                    if (listFileInfo.Count >= 4)
                    {
                        imageSitesImageFour.Source = ImageMethod.GetImageStream(listFileInfo[3].FullName);
                        imageSitesImageFour.ToolTip = listFileInfo[3].Name;
                        imageSitesImageFour.Visibility = Visibility.Visible;
                    }
                    else
                        imageSitesImageFour.Visibility = Visibility.Collapsed;
                }
                else
                {
                    if (listFileInfo.Count >= 1)
                    {
                        imageSitesImageOne.Source = ImageMethod.GetImageStream(listFileInfo[0].FullName);
                        imageSitesImageOne.ToolTip = listFileInfo[0].Name;
                        imageSitesImageOne.Visibility = Visibility.Visible;
                    }
                    else
                        imageSitesImageOne.Source = null;

                    imageSitesImageTwo.Visibility = Visibility.Collapsed;
                    imageSitesImageThree.Visibility = Visibility.Collapsed;
                    imageSitesImageFour.Visibility = Visibility.Collapsed;

                    imageSitesImageOne.SetValue(Grid.RowSpanProperty, 2);
                    imageSitesImageOne.SetValue(Grid.ColumnSpanProperty, 2);
                }
            }
        }
        public string GetExistPath(MovieGroup myGroup)
        {
            if (myGroup == null)
                return null;

            IsExecuteExistPath = true;
            if (Kind == KIND_FILE)
            {
                string fileName = Path.Combine(Label, Name) + "." + Extension.ToLower();

                if (File.Exists(fileName))
                {
                    ExistMovie = new string[1];
                    ExistMovie[0] = fileName;
                    return new FileInfo(fileName).DirectoryName;
                }
                else
                {
                    ExistMovie = Directory.GetFiles(Label, Name + "_*." + Extension.ToLower());

                    if (ExistMovie != null && ExistMovie.Length > 0)
                        return new FileInfo(ExistMovie[0]).DirectoryName;
                }
            }
            else if (Kind == KIND_SITE)
            {
                string path = Path.Combine(myGroup.Explanation, Name);

                if (Directory.Exists(path))
                    return new DirectoryInfo(path).FullName;
            }
            if (Kind == MovieContents.KIND_CONTENTS)
            {
                string path = Path.Combine(myGroup.Explanation, Name);

                if (Directory.Exists(path))
                    return new DirectoryInfo(path).FullName;

                if (File.Exists(path))
                {
                    ExistMovie = new string[1];
                    ExistMovie[0] = path;
                    return new FileInfo(path).DirectoryName;
                }
            }

            return null;
        }
        private void OnAddGroupDelete(object sender, RoutedEventArgs e)
        {
            if (dispinfoSelectGroup == null)
                return;

            MessageBoxResult result = MessageBox.Show("DBから削除します", "削除確認", MessageBoxButton.OKCancel);

            if (result == MessageBoxResult.Cancel)
                return;

            ColViewMovieGroup.DbDelete(dispinfoSelectGroup, null);
            dispinfoSelectGroup = null;
        }
        private void dgridMovieGroup_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            dispinfoSelectGroup = (MovieGroup)dgridMovieGroup.SelectedItem;
            if (dispinfoSelectGroup == null)
                return;

            // 画像表示はクリア
            OnDisplayImage(null, dispinfoTargetGroupBySelectContents);

            // 選択されているグループで表示
            GroupFilesInfo filesInfo = ColViewMovieContents.ClearAndExecute(ColViewMovieGroup.FilterKind, dispinfoSelectGroup);

            this.Title = "未評価 [" + filesInfo.Unrated + "/" + filesInfo.FileCount + "]  Size [" + CommonMethod.GetDisplaySize(filesInfo.Size) + "]";
            txtbGroupInfo.Text = "未評価 [" + filesInfo.Unrated + "/" + filesInfo.FileCount + "]  Size [" + CommonMethod.GetDisplaySize(filesInfo.Size) + "]";
        }
        private void dgridMovieContents_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            dispinfoSelectContents = (MovieContents)dgridMovieContents.SelectedItem;
            image = null;

            if (dispinfoSelectContents != null)
            {
                txtLargeComment.Text = dispinfoSelectContents.Comment;
                cmbLargeRating.SelectedValue = dispinfoSelectContents.Rating;
            }
            else
                return;

            dispinfoTargetGroupBySelectContents = ColViewMovieGroup.GetMatchDataByContents(dispinfoSelectContents);

            if (dispinfoTargetGroupBySelectContents == null)
                txtStatusBar.Text = "" + dispinfoSelectContents.Label + "に一致するグループが存在しませんでした";

            OnDisplayImage(dispinfoSelectContents, dispinfoTargetGroupBySelectContents);

            if (dispinfoContentsVisibleKind == CONTENTS_VISIBLE_KIND_DETAIL)
            {
                if (dispinfoSelectContents == null)
                    return;

                if (dispinfoSelectContents.Kind == MovieContents.KIND_FILE
                    || dispinfoSelectContents.Kind == MovieContents.KIND_CONTENTS)
                {
                    lgridSiteDetail.Visibility = Visibility.Collapsed;
                    lgridFileDetail.Visibility = Visibility.Visible;

                    ColViewFileDetail = new detail.FileDetail(dispinfoSelectContents, dispinfoTargetGroupBySelectContents);
                    dgridFileDetail.ItemsSource = ColViewFileDetail.listFileInfo;

                    OnRefreshFileDetailInfo(null, null);

                    return;
                }
                lgridSiteDetail.Visibility = Visibility.Visible;
                lgridFileDetail.Visibility = Visibility.Collapsed;

                txtSiteDetailContentsName.Text = dispinfoSelectContents.Name;
                txtSiteDetailContentsTag.Text = dispinfoSelectContents.Tag;
                string path = dispinfoSelectContents.GetExistPath(dispinfoTargetGroupBySelectContents);
                txtSiteDetailContentsPath.Text = path;
                txtSiteDetailContentsComment.Text = dispinfoSelectContents.Comment;

                if (path != null)
                {
                    ScreenDisableBorderSiteDetail.Width = 0;
                    ScreenDisableBorderSiteDetail.Height = 0;
                    ScreenDisableBorderImageContents.Width = 0;
                    ScreenDisableBorderImageContents.Height = 0;

                    txtSiteDetailContentsPath.Text = path;
                    txtSiteDetailContentsComment.Text = dispinfoSelectContents.Comment;
                    ColViewSiteDetail = new SiteDetail(txtSiteDetailContentsPath.Text);

                    dgridSiteDetail.ItemsSource = ColViewSiteDetail.listFileInfo;
                    btnSiteDetailImage.Content = "Image (" + ColViewSiteDetail.ImageCount + ")";
                    btnSiteDetailMovie.Content = "Movie (" + ColViewSiteDetail.MovieCount + ")";
                    btnSiteDetailList.Content = "List (" + ColViewSiteDetail.ListCount + ")";

                    imageSiteDetail.Source = ImageMethod.GetImageStream(ColViewSiteDetail.StartImagePathname);
                }
                // 存在しないpathの場合
                else
                {
                    ScreenDisableBorderSiteDetail.Width = Double.NaN;
                    ScreenDisableBorderSiteDetail.Height = Double.NaN;
                    ScreenDisableBorderImageContents.Width = Double.NaN;
                    ScreenDisableBorderImageContents.Height = Double.NaN;

                    dgridSiteDetail.ItemsSource = null;
                    imageSiteDetail.Source = null;
                }
            }
        }
        private void btnAddGroupExecute_Click(object sender, RoutedEventArgs e)
        {
            if (cmbAddGroupKind.SelectedValue == null)
            {
                MessageBox.Show("KINDが指定されていません");
                return;
            }

            int kind = Convert.ToInt32(cmbAddGroupKind.SelectedValue);

            if (kind == MovieGroup.KIND_DIR)
            {
                DirectoryInfo dir = new DirectoryInfo(txtAddGroupExplanation.Text);

                if (!dir.Exists)
                {
                    MessageBox.Show("説明に指定されているフォルダが存在しません");
                    return;
                }
            }

            if (txtbAddGroupMode.Text == "Regist")
            {
                MovieGroup registerData = new MovieGroup();
                registerData.Name = txtAddGroupName.Text;
                registerData.Explanation = txtAddGroupExplanation.Text;
                registerData.Label = txtAddGroupLabel.Text;
                registerData.Kind = kind;

                registerData = MovieGroups.DbExport(registerData, dbcon);
                ColViewMovieGroup.Add(registerData);

                ColViewMovieGroup.Refresh(); // .Execute(MovieGroupFilterAndSorts.EXECUTE_MODE_NORMAL);
            }
            else
            {
                dispinfoSelectGroup.Name = txtAddGroupName.Text;
                dispinfoSelectGroup.Explanation = txtAddGroupExplanation.Text;
                dispinfoSelectGroup.Label = txtAddGroupLabel.Text;

                dispinfoSelectGroup.DbUpdate(dbcon);
            }

            txtAddGroupName.Text = "";
            txtAddGroupExplanation.Text = "";
            txtAddGroupLabel.Text = "";
            cmbAddGroupKind.SelectedValue = null;
            txtAddGroupId.Text = "";
            txtbAddGroupMode.Text = "";

            dispinfoIsGroupAddVisible = false;
            LayoutChange();
        }
        private void btnAddGroupCheck_Click(object sender, RoutedEventArgs e)
        {
            int kind = Convert.ToInt32(cmbAddGroupKind.SelectedValue);

            if (kind == MovieGroup.KIND_DIR)
            {
                DirectoryInfo dir = new DirectoryInfo(txtAddGroupExplanation.Text);

                if (!dir.Exists)
                {
                    MessageBox.Show("説明に指定されているフォルダが存在しません");
                    return;
                }
            }

            MovieGroup filterGroup = new MovieGroup();
            filterGroup.Name = txtAddGroupName.Text;
            filterGroup.Explanation = txtAddGroupExplanation.Text;
            filterGroup.Label = txtAddGroupLabel.Text;
            filterGroup.Kind = kind;

            // 登録・更新で入力されているグループで表示
            ColViewMovieContents.ClearAndExecute(ColViewMovieGroup.FilterKind, filterGroup);
        }