OSDN Git Service

書庫読み込み時に進捗バーが機能していなかったのを修正。
authorsirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Fri, 14 Jan 2011 14:13:15 +0000 (14:13 +0000)
committersirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Fri, 14 Jan 2011 14:13:15 +0000 (14:13 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/tpi/tpi@472 9df91469-1e22-0410-86e7-ea8537beb833

src/lychee/dlg_process.cpp
src/lychee/frm_main.cpp

index 4f05c2d..54cb22d 100644 (file)
@@ -103,10 +103,6 @@ int ProcessDialog::CallbackProc(unsigned int _uMsg, void * _pStructure)
        case TPI_MESSAGE_STATUS:\r
        {\r
                static int s_nGaugeCounter = 0, s_nInterval = 0;\r
-               if (! this->IsShown())\r
-               {\r
-                       return TPI_CALLBACK_CONTINUE;\r
-               }\r
                switch (piInfo->eStatus)\r
                {\r
                case TPI_STATUS_OPENARCHIVE:\r
@@ -138,15 +134,16 @@ int ProcessDialog::CallbackProc(unsigned int _uMsg, void * _pStructure)
                                s_nGaugeCounter = 0;\r
                        }\r
                        break;\r
-               // 書庫ロード時用の独自仕様。\r
-               case 0x1000:\r
+               // Lycheeの独自仕様。\r
+               case 0x1000: // 初期設定。\r
                        this->ebSource->ChangeValue(piInfo->fiInfo.fnFileName.GetFullPath());\r
+                       this->Update();\r
+               case 0x1001: // 書庫ロード時には最初にファイル数が分からないので、ここで設定。\r
                        this->gArchive->SetRange(piInfo->fiInfo.nUnpackedSize);\r
                        this->gArchive->SetValue(0);\r
-                       this->Update();\r
                        s_nInterval = piInfo->fiInfo.nUnpackedSize / 10;\r
                        break;\r
-               case 0x1001:\r
+               case 0x1002: // 各ファイルの処理を開始。\r
                        if (piInfo->fiInfo.nUnpackedSize > 10000)\r
                        {\r
                                this->ebTarget->ChangeValue(piInfo->fiInfo.fnFileName.GetFullPath());\r
index afab185..89482e7 100644 (file)
@@ -326,12 +326,13 @@ void MainFrame::OnArcOpen(wxCommandEvent& e)
        // 進捗ダイアログ表示。\r
        ProcessDialog procDlg;\r
        procDlg.fnArchive  = & this->fnArchive;\r
+       procDlg.Show(true);\r
 \r
        // DnD以外で書庫を開く場合、TPIを読み込み。\r
        TPI_PROCESSINFO piInfo;\r
        if (! this->LoadTPI(this->fnArchive.GetFullPath(), & piInfo.fiInfo.nUnpackedSize))\r
        {\r
-               tpi.FreeLibrary();\r
+               procDlg.Show(false);\r
                if (nMode == 2)\r
                {\r
                        // DnDの場合は書庫を作成する。\r
@@ -350,8 +351,16 @@ void MainFrame::OnArcOpen(wxCommandEvent& e)
                return;\r
        }\r
 \r
-       procDlg.nFileCount = piInfo.fiInfo.nUnpackedSize;\r
-       procDlg.Show(true);\r
+       piInfo.eMessage = TPI_MESSAGE_STATUS;\r
+       piInfo.eStatus = 0x1001;\r
+       if (this->ErrorCheck(procDlg.CallbackProc(TPI_NOTIFY_COMMON, & piInfo), wxT("Callback")) == TPI_CALLBACK_CANCEL)\r
+       {\r
+               procDlg.Show(false);\r
+               tpi.CloseArchive();\r
+               wxCommandEvent e;\r
+               this->OnArcClose(e);\r
+               return;\r
+       }\r
 \r
        // 配列のサイズを確保。\r
        this->fileinfo.Alloc(piInfo.fiInfo.nUnpackedSize);\r
@@ -377,8 +386,7 @@ void MainFrame::OnArcOpen(wxCommandEvent& e)
        // ファイル情報をロード。\r
        if (tpi.GetFileInformation(& piInfo.fiInfo, true))\r
        {\r
-               piInfo.eMessage = TPI_MESSAGE_STATUS;\r
-               piInfo.eStatus = 0x1001;\r
+               piInfo.eStatus = 0x1002;\r
                piInfo.nProcessedSize = 0;\r
                do\r
                {\r