Пример #1
0
        //編集で値が変更された場合に呼ばれます
        public FileData ValueChanged(FileData orgFileData, string newValue)
        {
            //評価を更新します
            using (var connection = _db.GetConnection()) {
                FileDataDao.UpdateField(connection, orgFileData.id, "value", newValue);
            }

            orgFileData.value = StringUtils.ToInt(newValue);
            return(orgFileData);
        }
Пример #2
0
        //編集で値が変更された場合に呼ばれます
        public FileData ValueChanged(FileData orgFileData, string newValue)
        {
            //タイトルを更新します
            using (var connection = _db.GetConnection()) {
                FileDataDao.UpdateField(connection, orgFileData.id, "title", newValue);
            }

            orgFileData.title = newValue;
            return(orgFileData);
        }
Пример #3
0
        /// <summary>
        /// 編集で値が変更された場合に呼ばれます
        /// </summary>
        /// <param name="orgFileData"></param>
        /// <param name="newValue"></param>
        /// <returns></returns>
        public FileData ValueChanged(FileData orgFileData, string newValue)
        {
            if (FileUtils.IsDir(orgFileData.path))
            {
                return(null);
            }

            //新旧の拡張子を取得します
            var oldExt = Path.GetExtension(orgFileData.path).Replace(".", "");
            var newExt = newValue.Replace(".", ""); //入力値の先頭に「.」がある場合は削除する

            //変更がない場合は処理を抜けます
            if (oldExt.Equals(newExt))
            {
                return(null);
            }

            var oldPath     = orgFileData.path;
            var oldDirPath  = Path.GetDirectoryName(oldPath);                     //フォルダのパス
            var oldFileName = Path.GetFileNameWithoutExtension(orgFileData.path); //拡張子を除いたファイル名
            var newPath     = FileUtils.AppendPath(oldDirPath, oldFileName + "." + newExt);

            //ファイル名の変更がない場合は処理を抜けます
            if (oldFileName.Equals(newValue))
            {
                return(null);
            }

            //ファイル名を変更します
            try {
                if (FileUtils.IsFile(oldPath))
                {
                    //ファイルの場合
                    File.Move(oldPath, newPath);
                }
                else
                {
                    //フォルダの場合
                    Directory.Move(oldPath, newPath);
                }
            } catch (Exception ex) {
                __.ShowErrorMsgBox(ex.Message);
                return(null);
            }

            //パスを更新します
            using (var connection = _db.GetConnection()) {
                FileDataDao.UpdateField(connection, orgFileData.id, "path", newPath);
            }

            orgFileData.path = newPath;
            return(orgFileData);
        }
Пример #4
0
        /******************************************************************************
        *
        *  プラグイン用イベントハンドラー
        *
        ******************************************************************************/

        /// <summary>
        /// ファイル名変更イベント
        /// </summary>
        /// <param name="param"></param>
        /// <param name="sender"></param>
        public void PluginEvent_FileNameChanged(EventParam param, object sender)
        {
            //変更前と変更後のパスを取得します
            var oldPath = ((FileNameChangedEventParam)param).OldPath;
            var newPath = ((FileNameChangedEventParam)param).NewPath;

            using (var connection = _db.GetConnection()) {
                var fileData = FileDataDao.GetData(connection, oldPath, "path");
                if (fileData != null)
                {
                    FileDataDao.UpdateField(connection, fileData.id, "path", newPath);
                }
            }
        }
Пример #5
0
        /// <summary>
        /// ファイル情報テーブルからデータを取得します
        /// </summary>
        /// <param name="id"></param>
        public void LoadData(string id)
        {
            using (var connection = _db.GetConnection()) {
                var fileData = FileDataDao.GetData(connection, id);
                if (fileData != null)
                {
                    fileData._tags = TagDataDao.GetTags(connection, fileData.id);

                    //ファイルデータを入力欄に設定します
                    SetFileData(fileData);
                }
            }

            //変更なしにします
            Modified = false;
        }
Пример #6
0
        public FileInfo ValueChanged(FileInfo orgFile, string newValue)
        {
            //スレッドが動いている場合は、処理しない
            if (_thread != null && _thread.IsAlive == true)
            {
                return(orgFile);
            }

            var path = orgFile.FullName;

            using (var connection = _db.GetConnection()) {
                var data = FileDataDao.GetDataByPath(connection, orgFile.FullName);
                if (data == null)
                {
                    //データがない場合
                    data       = new FileData();
                    data.title = orgFile.Name;                                //ファイル名
                    data.value = StringUtils.ToInt(newValue, 0);              //評価・重要度
                    data.path  = path;                                        //ファイルのフルパス
                    data.size  = FileUtils.IsFile(path) ? orgFile.Length : 0; //ファイルサイズ

                    //ファイル種別
                    data.kind = 0;
                    if (FileUtils.IsFile(path))
                    {
                        data.kind = 1;
                    }
                    if (FileUtils.IsDir(path))
                    {
                        data.kind = 2;
                    }
                }
                else
                {
                    //データがある場合
                    data.value = StringUtils.ToInt(newValue, 0); //評価・重要度
                }

                //データを更新します
                FileDB.SaveData(connection, data);

                //キャッシュに反映します
                _cache[orgFile.FullName] = data.value.ToString();
            }

            return(orgFile);
        }
Пример #7
0
        /// <summary>
        /// 編集で値が変更された場合に呼ばれます
        /// </summary>
        /// <param name="orgFileData"></param>
        /// <param name="newValue"></param>
        /// <returns></returns>
        public FileData ValueChanged(FileData orgFileData, string newValue)
        {
            var oldPath     = orgFileData.path;
            var oldDir      = Path.GetDirectoryName(oldPath);
            var oldFileName = Path.GetFileName(oldPath);
            var newPath     = FileUtils.AppendPath(oldDir, newValue);

            //ファイル名の変更がない場合は処理を抜けます
            if (oldFileName.Equals(newValue))
            {
                return(null);
            }

            //ファイル名を変更します
            try {
                if (FileUtils.IsFile(oldPath))
                {
                    //ファイルの場合
                    File.Move(oldPath, newPath);
                }
                else
                {
                    //フォルダの場合
                    Directory.Move(oldPath, newPath);
                }
            } catch (Exception ex) {
                __.ShowErrorMsgBox(ex.Message);
                return(null);
            }

            //パスを更新します
            using (var connection = _db.GetConnection()) {
                FileDataDao.UpdateField(connection, orgFileData.id, "path", newPath);
            }

            orgFileData.path = newPath;
            return(orgFileData);
        }
Пример #8
0
        /// <summary>
        /// 評価を一括更新します
        /// </summary>
        private bool UpdateValue(IList <int> idList)
        {
            using (var connection = _db.GetConnection()) {
                //トランザクション開始
                var transaction = connection.BeginTransaction();

                try {
                    foreach (var id in idList)
                    {
                        //評価を更新します
                        FileDataDao.UpdateField(connection, id, "value", _value.ToString());
                    }

                    //コミット
                    transaction.Commit();
                    return(true);
                } catch (Exception ex) {
                    //ロールバック
                    transaction.Rollback();
                    MsgBoxUtils.ShowErrorMsgBox("更新に失敗しました。\n" + ex.Message);
                    return(false);
                }
            }
        }
Пример #9
0
        /// <summary>
        /// ファイルデータを検索して、結果を一覧で表示します
        /// </summary>
        public void ShowFileList()
        {
            //キーワードの検索モード(and, or, not)を取得します
            Enum.TryParse(cmbKeyword.SelectedItem.ToString(), true, out FileDataDao.SearchMode searchModeKeyword);

            //タグの検索モード(and, or, not)を取得します
            Enum.TryParse(cmbTag.SelectedItem.ToString(), true, out FileDataDao.SearchMode searchModeTag);

            //入力されたキーワードをスペースで分割してリストにします
            var keywordList = ListUtils.Split(" ", txtKeyword.Text.Replace(' ', ' '));

            //入力されたタグをスペースで分割してリストにします
            var tagList = ListUtils.Split(" ", txtTag.Text.Replace(' ', ' '));

            //検索結果の表示件数を取得します
            int limit = StringUtils.ToInt(txtDisplayCount.Text, 0);

            //データの件数を取得します
            int count = FileDataDao.GetDataListCount(_db.GetConnection(),
                                                     cmbValueFrom.SelectedIndex,
                                                     cmbValueTo.SelectedIndex,
                                                     keywordList,
                                                     tagList,
                                                     searchModeTag,
                                                     searchModeKeyword,
                                                     chkFile.Checked,
                                                     chkDir.Checked);

            //データを検索します
            var dataList = FileDataDao.GetDataList(_db.GetConnection(),
                                                   cmbValueFrom.SelectedIndex,
                                                   cmbValueTo.SelectedIndex,
                                                   keywordList,
                                                   tagList,
                                                   searchModeTag,
                                                   searchModeKeyword,
                                                   chkFile.Checked,
                                                   chkDir.Checked,
                                                   limit);

            //列の初期化処理を実行します
            foreach (IFileListColumn column in _grid.Columns)
            {
                column.ShowFileListBefore();
            }

            //行を全て削除します
            _grid.Rows.Clear();

            //行にデータを追加します
            foreach (var data in dataList)
            {
                //行データの生成
                var rowData = new object[_grid.ColumnCount];

                //行を追加します
                var rowIndex = _grid.Rows.Add(rowData);

                //行データを設定します
                SetRowData(rowIndex, data);
            }

            //列の解放処理を実行します
            foreach (IFileListColumn column in _grid.Columns)
            {
                column.ShowFileListAfter();
            }

            //グリッドにフォーカスを移動します
            _grid.Focus();

            //カーソルを一番上に移動します
            if (_grid.RowCount > 0)
            {
                _grid.CurrentCell = _grid[0, 0];
            }

            //検索結果の表示
            lblResult.Text = "検索結果:" + count + "件";
        }