/// <summary> /// プロジェクト・設定データの読み込み /// master: true ... 設定データ, master: false ... プロジェクトデータ /// </summary> /// <param name="projectPath">プロジェクトファイル又は設定ファイルのパス</param> /// <param name="master">設定データか、プロジェクトデータか</param> /// <returns>成功したかどうか</returns> private bool loadSettingsFile(string projectPath, bool master) { bool success = false; Forms.LoadingForm lf = new Forms.LoadingForm(); lf.ExitFlag = false; lf.percentProgressBar.Maximum = 4; lf.percentProgressBar.Value = 1; lf.Path_label.Text = "プロジェクトを初期化しています..."; lf.Show(); Enabled = false; collectSettingsData(); Application.DoEvents(); lf.percentProgressBar.Value += 1; lf.Path_label.Text = "プロジェクトファイルを読み込んでいます..."; success = readSettingsFile(projectPath, master); lf.percentProgressBar.Value += 1; if (success) { Application.DoEvents(); lf.Path_label.Text = "プロジェクトファイルを適用しています..."; applySettings(); lf.percentProgressBar.Value += 1; } lf.ExitFlag = true; lf.Close(); Enabled = true; TopMost = true; TopMost = false; return(success); }
/// <summary> /// ファイル・フォルダリストにファイル・フォルダを追加する /// </summary> /// <param name="fileListTmp">ファイルリスト</param> public void AddFileList(string[] fileListTmp) { // ファイルリストの重複を削除 string[] fileList = new List <string>(fileListTmp).Distinct().ToArray(); // 読み込み中ウィンドウフォームの作成・初期化 LoadingForm lf = new LoadingForm(); lf.Path_label.Text = ""; lf.Show(); lf.percentProgressBar.Maximum = fileList.Length; lf.Text = "ファイル・フォルダを追加しています..."; lf.percentProgressBar.Value = 0; // ファイルリストの更新を止める fileList_listView.BeginUpdate(); foreach (string filePath in fileList) { Application.DoEvents(); lf.percentProgressBar.Value += 1; lf.Path_label.Text = "[" + lf.percentProgressBar.Value.ToString() + "/" + fileList.Length.ToString() + "]: " + filePath; // 読み込み中ウィンドウが閉じられれば、中断する if (!lf.Visible) { break; } // ファイル・フォルダリストに重複があれば追加しない if (ContainFileList(filePath)) { continue; } try { // ファイル処理 if (File.Exists(filePath)) { FileInfo fi = new FileInfo(filePath); string[] itemList = { fi.Name + " (.ffc)", fi.LastAccessTime.ToString(), calcBytesToKB(fi.Length) + " KB", filePath }; fileList_listView.Items.Add(new ListViewItem(itemList, 0)); } // フォルダ処理 else if (Directory.Exists(filePath)) { DirectoryInfo di = new DirectoryInfo(filePath); string folderBytes = "0 KB (アクセスエラー)"; try { // アクセス権限で計算できないときもある folderBytes = calcBytesToKB(di.EnumerateFiles("*.*", SearchOption.AllDirectories).Sum(fi => fi.Length)) + " KB"; } catch { } string[] itemList = { di.Name, di.CreationTime.ToString(), folderBytes, filePath }; fileList_listView.Items.Add(new ListViewItem(itemList, 1)); } else if (IsSafePath(filePath, false)) { string[] itemList = { Path.GetFileName(filePath), DateTime.Now.ToString(), "0 KB", filePath }; fileList_listView.Items.Add(new ListViewItem(itemList)); } } catch (Exception ex) { MessageBox.Show("'" + filePath + "' を追加できませんでした:\r\n" + ex.Message, "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error); } } // ファイルリストの更新を再開 fileList_listView.EndUpdate(); // 読み込みウィンドウを閉じる lf.Close(); lf.Dispose(); lf = null; }