Exemplo n.º 1
0
 private void UpdateToDB(File_DownloadItemViewModel fileItem, bool IsFinished = false)
 {
     if (fileItem != null)
     {
         string text = "";
         int    num  = 0;
         try
         {
             if (IsFinished)
             {
                 text = "update FileRow set Url=@1,StorageFileName=@2\r\n                           , DownloadBytes=@3,TotalBytes=@4 ,FileVersion=@5,FinishedFileVersion=@6 where ID=@7 and UserID=@8 and MeetingID=@9";
                 fileItem.CanUpdate = false;
                 num = MSCE.ExecuteNonQuery(text, fileItem.Url, fileItem.StorageFileName, fileItem.DownloadBytes.ToString(), fileItem.TotalBytes.ToString(), fileItem.FileVersion.ToString(), fileItem.FileVersion.ToString(), fileItem.ID, fileItem.UserID, fileItem.MeetingID);
             }
             else
             {
                 text = "update FileRow set Url=@1,StorageFileName=@2\r\n                           , DownloadBytes=@3,TotalBytes=@4 where ID=@6 and UserID=@7 and MeetingID=@8";
                 num  = MSCE.ExecuteNonQuery(text, fileItem.Url, fileItem.StorageFileName, fileItem.DownloadBytes.ToString(), fileItem.TotalBytes.ToString(), fileItem.ID, fileItem.UserID, fileItem.MeetingID);
             }
         }
         catch (Exception ex)
         {
             LogTool.Debug(ex);
         }
         if (num < 1)
         {
             LogTool.Debug(new Exception("DB失敗:" + text));
         }
     }
 }
Exemplo n.º 2
0
 private void DownloadError(File_DownloadItemViewModel fileItem)
 {
     if (fileItem != null)
     {
         DeleteFiles(fileItem);
         ResetFileItemDB(fileItem);
         if (this.MeetingDataCT_DownloadError_Event != null)
         {
             this.MeetingDataCT_DownloadError_Event(fileItem);
         }
         if (this.Home_UnZipError_Event != null)
         {
             this.Home_UnZipError_Event(string.Format("檔名: {0},{1}", (NowFileItem.FileName == null) ? "" : NowFileItem.FileName, Enum.GetName(typeof(DownloaderType), DownloaderType.出錯)));
             Thread.Sleep(1100);
         }
         bool flag = false;
         lock (thisLock)
         {
             if (list.Count == 0)
             {
                 flag = true;
             }
         }
         if (flag && this.MeetingRoom_DownloadFileToErrorCompleted_Event != null)
         {
             this.MeetingRoom_DownloadFileToErrorCompleted_Event(fileItem);
         }
     }
 }
Exemplo n.º 3
0
        private void ResetFileItemDB(File_DownloadItemViewModel fileItem)
        {
            if (fileItem == null)
            {
                return;
            }

            fileItem.DownloadBytes  = 0;
            fileItem.TotalBytes     = 0;
            fileItem.LastPercentage = 0;

            if (File.Exists(fileItem.StorageFilePath) == true)
            {
                File.Delete(fileItem.StorageFilePath);
            }
            //寫DB
            string SQL = @"update  FileRow set Url=@1,StorageFileName=@2
                       , DownloadBytes=@3,TotalBytes=@4 where ID=@6 and UserID=@7 and MeetingID=@8";

            int successNum = MSCE.ExecuteNonQuery(SQL
                                                  , fileItem.Url
                                                  , fileItem.StorageFileName
                                                  , fileItem.DownloadBytes.ToString()
                                                  , fileItem.TotalBytes.ToString()
                                                  , fileItem.ID
                                                  , fileItem.UserID
                                                  , fileItem.MeetingID);

            if (successNum < 1)
            {
                LogTool.Debug(new Exception("DB失敗:" + SQL));
            }
        }
Exemplo n.º 4
0
        private double GetNowMeetingFilesTotalPercent(File_DownloadItemViewModel fileItem)
        {
            double totalPercent = 0;

            DataTable dt = MSCE.GetDataTable(@"select count(ID) as FinishedFiles from FileRow where UserID =@1 and MeetingID=@2 and DownloadBytes!=0 and DownloadBytes >= TotalBytes;"
                                             , UserID, userMeeting.ID);

            if (dt.Rows.Count > 0)
            {
                int.TryParse(dt.Rows[0]["FinishedFiles"].ToString(), out FinishedFiles);
            }

            if (TotalFiles > 0)
            {
                totalPercent = ((double)FinishedFiles / (double)TotalFiles) * 100.0;

                if (fileItem.NowPercentage < 100)
                {
                    //小於100趴才需要,後面這一段+ (fileItem.NowPercentage / 100.0) * (100.0 / (double)TotalFiles)
                    totalPercent += (fileItem.NowPercentage / 100.0) * (100.0 / (double)TotalFiles);
                }
            }


            return(totalPercent);
        }
Exemplo n.º 5
0
        private void MeetingRoom_DownloadFileToErrorCompleted_Callback(File_DownloadItemViewModel fileItem)
        {
            //先判斷是否要invoke
            if (this.Dispatcher.CheckAccess() == false)
            {
                // 這裡是下載事件處理,優先權設定為ContextIdle => 列舉值為 3。 幕後作業完成後,會處理作業。
                this.Dispatcher.BeginInvoke(DispatcherPriority.SystemIdle, new Action <File_DownloadItemViewModel>(MeetingRoom_DownloadFileToErrorCompleted_Callback), fileItem);
            }
            else
            {
                ForceStopAjaxLoader = true;
                double totalPercent = GetNowMeetingFilesTotalPercent(fileItem);

                // 全部都已經下載完成或失敗,要變成暫停狀態,一定不會是100%
                this.btnDownloadForbidden.Visibility = Visibility.Collapsed;
                this.btnRead2Forbidden.Visibility    = Visibility.Collapsed;
                this.btnDelete.Visibility            = Visibility.Collapsed;
                this.btnDownload.Visibility          = Visibility.Collapsed;
                this.btnPause.Visibility             = Visibility.Collapsed;
                this.txtPercent.Text       = ((int)totalPercent).ToString() + " %";
                this.txtPercent.Foreground = Brushes.Black;
                this.txtPercent.Visibility = Visibility.Visible;
                this.pb.Value              = totalPercent;
                this.pb.Foreground         = Brushes.Orange;
                this.pb.Background         = Brushes.Black;
                this.pb.Visibility         = Visibility.Visible;
                this.btnPausing.Visibility = Visibility.Visible;
            }
        }
Exemplo n.º 6
0
        private void StartNextFileItemDownload(File_DownloadItemViewModel fileItem)
        {
            if (downloaderType == DownloaderType.停止)
            {
                // 停止之後不能馬上加入不然
                // 有可能會再開新執行序下載
                // 清空所有列表
                lock (thisLock)
                {
                    list.Clear();
                }
            }
            // 設定成 沒有正在下載 和 沒有正在下載的物件
            //string MeetingID = fileItem.MeetingID;
            NowFileItem    = null;
            downloaderType = DownloaderType.沒有任何檔案下載中;
            // 不同線程的回呼,不會造成Recursive堆疊上限
            // 如果不是停止就開始新的檔案物件下載


            //FileDownloader fileDownloader = Singleton_FileDownloader.GetInstance(MeetingID);
            if (this.downloaderType == DownloaderType.沒有任何檔案下載中)
            {
                //ThreadPool.QueueUserWorkItem(callback => { this.Start(); });
                Task.Factory.StartNew(() => this.Start(), TaskCreationOptions.LongRunning);
            }
        }
Exemplo n.º 7
0
 private void MeetingRoom_DownloadFileStart_Callback(File_DownloadItemViewModel fileItem)
 {
     if (HasReceiveStart_callback == false)
     {
         HasReceiveStart_callback = true;
         MeetingRoom_DownloadProgressChanged_Callback(fileItem, true);
     }
 }
Exemplo n.º 8
0
 private void DeleteFiles(File_DownloadItemViewModel fileItem)
 {
     if (File.Exists(fileItem.StorageFilePath))
     {
         File.Delete(fileItem.StorageFilePath);
     }
     DirectoryTool.FullDeleteDirectories(fileItem.UnZipFilePath);
 }
Exemplo n.º 9
0
 public PDFFactoryRow(int index, File_DownloadItemViewModel fileItem)
 {
     InitializeComponent();
     this.index    = index;
     sb            = (Storyboard)TryFindResource("sb");
     this.fileItem = fileItem;
     base.Loaded  += new RoutedEventHandler(PDFFactoryRow_Loaded);
 }
Exemplo n.º 10
0
        private void DeleteFiles(File_DownloadItemViewModel fileItem)
        {
            // 解壓縮失敗,要記得把原始檔案和解壓縮資料夾一起刪除
            if (File.Exists(fileItem.StorageFilePath) == true)
            {
                File.Delete(fileItem.StorageFilePath);
            }

            DirectoryTool.FullDeleteDirectories(fileItem.UnZipFilePath);
        }
Exemplo n.º 11
0
 // 帳號,姓名,裝置,燈號
 public PDFFactoryRow(int index, File_DownloadItemViewModel fileItem)
 {
     //MouseTool.ShowLoading();
     InitializeComponent();
     this.index    = index;
     sb            = (Storyboard)this.TryFindResource("sb");
     this.fileItem = fileItem;
     this.Loaded  += PDFFactoryRow_Loaded;
     //MouseTool.ShowArrow();
 }
Exemplo n.º 12
0
            public void _003CInitSelectDB_003Eb__2()
            {
                int num = 0;

                foreach (MeetingDataDownloadFileFile file in FileList)
                {
                    num++;
                    File_DownloadItemViewModel fileItem = FileItemTool.Gen(file, _003C_003E4__this.UserID, _003C_003E4__this.MeetingID);
                    _003C_003E4__this.PDFFactoryRowSP.Children.Add(new PDFFactoryRow(num, fileItem));
                }
            }
Exemplo n.º 13
0
        private void UpdateToDB(File_DownloadItemViewModel fileItem, bool IsFinished = false)
        {
            if (fileItem == null)
            {
                return;
            }

            string SQL     = "";
            int    success = 0;

            try
            {
                if (IsFinished == true)
                {
                    SQL = @"update FileRow set Url=@1,StorageFileName=@2
                           , DownloadBytes=@3,TotalBytes=@4 ,FileVersion=@5,FinishedFileVersion=@6 where ID=@7 and UserID=@8 and MeetingID=@9";

                    fileItem.CanUpdate = false;
                    success            = MSCE.ExecuteNonQuery(SQL
                                                              , fileItem.Url
                                                              , fileItem.StorageFileName
                                                              , fileItem.DownloadBytes.ToString()
                                                              , fileItem.TotalBytes.ToString()
                                                              , fileItem.FileVersion.ToString()
                                                              , fileItem.FileVersion.ToString()
                                                              , fileItem.ID
                                                              , fileItem.UserID
                                                              , fileItem.MeetingID);
                }
                else
                {
                    SQL     = @"update FileRow set Url=@1,StorageFileName=@2
                           , DownloadBytes=@3,TotalBytes=@4 where ID=@6 and UserID=@7 and MeetingID=@8";
                    success = MSCE.ExecuteNonQuery(SQL
                                                   , fileItem.Url
                                                   , fileItem.StorageFileName
                                                   , fileItem.DownloadBytes.ToString()
                                                   , fileItem.TotalBytes.ToString()
                                                   , fileItem.ID
                                                   , fileItem.UserID
                                                   , fileItem.MeetingID);
                }
            }
            catch (Exception ex)
            {
                LogTool.Debug(ex);
            }


            if (success < 1)
            {
                LogTool.Debug(new Exception("DB失敗:" + SQL));
            }
        }
Exemplo n.º 14
0
            public void _003CGetMeetingData_DoAction_003Eb__23()
            {
                FileDownloader instance = Singleton_FileDownloader.GetInstance(md.ID);

                instance.Stop();
                List <MeetingDataDownloadFileFile> list = new List <MeetingDataDownloadFileFile>();

                try
                {
                    MeetingDataMeetingsFileFile[] fileList = md.MeetingsFile.FileList;
                    foreach (MeetingDataMeetingsFileFile meetingDataMeetingsFileFile in fileList)
                    {
                        MeetingDataDownloadFileFile meetingDataDownloadFileFile = new MeetingDataDownloadFileFile();
                        meetingDataDownloadFileFile.AgendaID = "record";
                        meetingDataDownloadFileFile.FileName = meetingDataMeetingsFileFile.FileName;
                        meetingDataDownloadFileFile.ID       = meetingDataMeetingsFileFile.ID;
                        meetingDataDownloadFileFile.Url      = meetingDataMeetingsFileFile.Url;
                        meetingDataDownloadFileFile.version  = meetingDataMeetingsFileFile.version;
                        list.Add(meetingDataDownloadFileFile);
                    }
                }
                catch (Exception ex)
                {
                    LogTool.Debug(ex);
                }
                list.AddRange(Enumerable.ToList(md.DownloadFile.DownloadFileList));
                _003C_003E4__this.TotalFiles = list.Count;
                List <File_DownloadItemViewModel> list2 = new List <File_DownloadItemViewModel>();

                foreach (MeetingDataDownloadFileFile item in list)
                {
                    File_DownloadItemViewModel file_DownloadItemViewModel = FileItemTool.Gen(item, _003C_003E4__this.UserID, md.ID);
                    if (file_DownloadItemViewModel.DownloadBytes == 0 || file_DownloadItemViewModel.DownloadBytes < file_DownloadItemViewModel.TotalBytes)
                    {
                        list2.Add(file_DownloadItemViewModel);
                    }
                }
                if (!instance.HasMeetingRoom_DownloadFileStart_Event())
                {
                    instance.MeetingRoom_DownloadFileStart_Event += _003C_003E4__this.Start_callback;
                }
                if (!instance.HasMeetingRoom_DownloadProgressChanged_Event())
                {
                    instance.MeetingRoom_DownloadProgressChanged_Event += _003C_003E4__this.Progress_callback;
                }
                if (!instance.HasMeetingRoom_DownloadFileToErrorCompleted_Event())
                {
                    instance.MeetingRoom_DownloadFileToErrorCompleted_Event += _003C_003E4__this.ErrorFinish_callback;
                }
                instance.AddItem(list2);
            }
Exemplo n.º 15
0
 private void DownloadFileStart(File_DownloadItemViewModel fileItem)
 {
     if (fileItem != null)
     {
         if (this.MeetingDataCT_DownloadFileStart_Event != null)
         {
             this.MeetingDataCT_DownloadFileStart_Event(fileItem);
         }
         if (this.MeetingRoom_DownloadFileStart_Event != null)
         {
             this.MeetingRoom_DownloadFileStart_Event(NowFileItem);
         }
     }
 }
Exemplo n.º 16
0
 private void DownloadProgressChanged(File_DownloadItemViewModel fileItem)
 {
     if (fileItem != null)
     {
         if (this.MeetingDataCT_DownloadProgressChanged_Event != null)
         {
             this.MeetingDataCT_DownloadProgressChanged_Event(fileItem);
         }
         if (this.MeetingRoom_DownloadProgressChanged_Event != null)
         {
             this.MeetingRoom_DownloadProgressChanged_Event(fileItem);
         }
     }
 }
Exemplo n.º 17
0
        private void MeetingRoom_DownloadProgressChanged_Callback(File_DownloadItemViewModel fileItem, bool ForceUpdate)
        {
            //先判斷是否要invoke
            if (this.Dispatcher.CheckAccess() == false)
            {
                // 這裡是下載事件處理,優先權設定為ContextIdle => 列舉值為 3。 幕後作業完成後,會處理作業。
                //this.Dispatcher.BeginInvoke(DispatcherPriority.SystemIdle, new Action<File_DownloadItemViewModel, bool>(MeetingRoom_DownloadProgressChanged_Callback), fileItem, ForceUpdate);
                this.Dispatcher.BeginInvoke(new Action <File_DownloadItemViewModel, bool>(MeetingRoom_DownloadProgressChanged_Callback), fileItem, ForceUpdate);
            }
            else
            {
                ForceStopAjaxLoader = true;

                double totalPercent = GetNowMeetingFilesTotalPercent(fileItem);

                if (totalPercent >= 100)
                {
                    // 下載完了,顯示可以刪除的圖示
                    this.btnDownloadForbidden.Visibility = Visibility.Collapsed;
                    this.btnRead2Forbidden.Visibility    = Visibility.Collapsed;
                    this.btnDownload.Visibility          = Visibility.Collapsed;
                    this.btnPausing.Visibility           = Visibility.Collapsed;
                    this.txtPercent.Visibility           = Visibility.Collapsed;
                    this.pb.Visibility       = Visibility.Collapsed;
                    this.btnPause.Visibility = Visibility.Collapsed;

                    this.btnDelete.Visibility = Visibility.Visible;
                }
                else if (totalPercent - pb.Value > 1 || ForceUpdate == true)
                {
                    // 還沒下載完了,持續更新進度
                    this.btnDownloadForbidden.Visibility = Visibility.Collapsed;
                    this.btnRead2Forbidden.Visibility    = Visibility.Collapsed;
                    this.btnDelete.Visibility            = Visibility.Collapsed;
                    this.btnDownload.Visibility          = Visibility.Collapsed;
                    this.btnPausing.Visibility           = Visibility.Collapsed;
                    this.txtPercent.Text       = ((int)totalPercent).ToString() + " %";
                    this.txtPercent.Foreground = Brushes.Black;
                    this.txtPercent.Visibility = Visibility.Visible;
                    this.pb.Value            = totalPercent;
                    this.pb.Foreground       = Brushes.Orange;
                    this.pb.Background       = Brushes.Black;
                    this.pb.Visibility       = Visibility.Visible;
                    this.btnPause.Visibility = Visibility.Visible;
                }
            }
        }
Exemplo n.º 18
0
        private void btnPausing_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            btnPausing.Visibility = Visibility.Collapsed;
            FileDownloader             instance = Singleton_FileDownloader.GetInstance(MeetingID);
            File_DownloadItemViewModel inList   = instance.GetInList(MeetingID);

            instance.AddItem(fileItem);
            if (inList != null)
            {
                if (instance.NowFileItem != null && instance.NowFileItem.ID.Equals(fileItem.ID))
                {
                    btnPausing.Visibility = Visibility.Collapsed;
                    txtPercent.Text       = (int)inList.LastPercentage + " %";
                    txtPercent.Foreground = Brushes.Black;
                    txtPercent.Visibility = Visibility.Visible;
                    pb.Value            = inList.NowPercentage;
                    pb.Foreground       = Brushes.Orange;
                    pb.Background       = Brushes.Black;
                    pb.Visibility       = Visibility.Visible;
                    btnPause.Visibility = Visibility.Visible;
                }
                else
                {
                    btnPausing.Visibility = Visibility.Collapsed;
                    txtPercent.Text       = "等待中";
                    txtPercent.Foreground = Brushes.Gray;
                    txtPercent.Visibility = Visibility.Visible;
                    pb.Value            = inList.NowPercentage;
                    pb.Foreground       = Brushes.Wheat;
                    pb.Background       = Brushes.Gray;
                    pb.Visibility       = Visibility.Visible;
                    btnPause.Visibility = Visibility.Visible;
                }
            }
            else
            {
                btnPausing.Visibility = Visibility.Collapsed;
                txtPercent.Text       = "等待中";
                txtPercent.Foreground = Brushes.Gray;
                txtPercent.Visibility = Visibility.Visible;
                pb.Foreground         = Brushes.Wheat;
                pb.Background         = Brushes.Gray;
                pb.Visibility         = Visibility.Visible;
                btnPause.Visibility   = Visibility.Visible;
            }
        }
Exemplo n.º 19
0
        private void DownloadFileStart(File_DownloadItemViewModel fileItem)
        {
            if (fileItem == null)
            {
                return;
            }


            //呼叫完成event並且在主執行序執行
            if (MeetingDataCT_DownloadFileStart_Event != null)
            {
                MeetingDataCT_DownloadFileStart_Event(fileItem);
            }

            if (MeetingRoom_DownloadFileStart_Event != null)
            {
                MeetingRoom_DownloadFileStart_Event(NowFileItem);
            }
        }
Exemplo n.º 20
0
        private double GetNowMeetingFilesTotalPercent(File_DownloadItemViewModel fileItem)
        {
            double    num       = 0.0;
            DataTable dataTable = MSCE.GetDataTable("select count(ID) as FinishedFiles from FileRow where UserID =@1 and MeetingID=@2 and DownloadBytes!=0 and DownloadBytes >= TotalBytes;", UserID, userMeeting.ID);

            if (dataTable.Rows.Count > 0)
            {
                int.TryParse(dataTable.Rows[0]["FinishedFiles"].ToString(), out FinishedFiles);
            }
            if (TotalFiles > 0)
            {
                num = (double)FinishedFiles / (double)TotalFiles * 100.0;
                if (fileItem.NowPercentage < 100.0)
                {
                    num += fileItem.NowPercentage / 100.0 * (100.0 / (double)TotalFiles);
                }
            }
            return(num);
        }
Exemplo n.º 21
0
 private void ResetFileItemDB(File_DownloadItemViewModel fileItem)
 {
     if (fileItem != null)
     {
         fileItem.DownloadBytes  = 0L;
         fileItem.TotalBytes     = 0L;
         fileItem.LastPercentage = 0.0;
         if (File.Exists(fileItem.StorageFilePath))
         {
             File.Delete(fileItem.StorageFilePath);
         }
         string text = "update  FileRow set Url=@1,StorageFileName=@2\r\n                       , DownloadBytes=@3,TotalBytes=@4 where ID=@6 and UserID=@7 and MeetingID=@8";
         int    num  = MSCE.ExecuteNonQuery(text, fileItem.Url, fileItem.StorageFileName, fileItem.DownloadBytes.ToString(), fileItem.TotalBytes.ToString(), fileItem.ID, fileItem.UserID, fileItem.MeetingID);
         if (num < 1)
         {
             LogTool.Debug(new Exception("DB失敗:" + text));
         }
     }
 }
Exemplo n.º 22
0
        public File_DownloadItemViewModel GetInList(string MeetingDataDownloadFileFile_ID)
        {
            //if (NowFileItem == null)
            //    return list.Where(x => x.ID.Equals(MeetingDataDownloadFileFile_ID)).FirstOrDefault();
            File_DownloadItemViewModel rtn = new File_DownloadItemViewModel();

            lock (this)
            {
                if (NowFileItem != null && NowFileItem.ID.Equals(MeetingDataDownloadFileFile_ID))
                {
                    rtn = NowFileItem;
                }
                else //不包含暫停的下載物件,因為已經從list取出了,所以會回傳null
                {
                    rtn = list.Where(x => x.ID.Equals(MeetingDataDownloadFileFile_ID)).FirstOrDefault();
                }
            }
            return(rtn);
        }
Exemplo n.º 23
0
        public void AddItem(File_DownloadItemViewModel fileItem)
        {
            lock (this)
            {
                if (fileItem == null)
                {
                    return;
                }
                list.Add(fileItem);
            }

            //FileDownloader fileDownloader = Singleton_FileDownloader.GetInstance(fileItem.MeetingID);
            // 如果沒有在下載中
            if (this.downloaderType == DownloaderType.沒有任何檔案下載中 || this.downloaderType == DownloaderType.停止)
            {
                //ThreadPool.QueueUserWorkItem(callback => { this.Start(); });
                Task.Factory.StartNew(() => this.Start());//, TaskCreationOptions.LongRunning);
            }
        }
Exemplo n.º 24
0
        private void DownloadError(File_DownloadItemViewModel fileItem)
        {
            if (fileItem == null)
            {
                return;
            }

            DeleteFiles(fileItem);
            ResetFileItemDB(fileItem);


            if (MeetingDataCT_DownloadError_Event != null)
            {
                MeetingDataCT_DownloadError_Event(fileItem);
            }
            if (Home_UnZipError_Event != null)
            {
                Home_UnZipError_Event(string.Format("檔名: {0},{1}"
                                                    , NowFileItem.FileName == null ? "" : NowFileItem.FileName
                                                    , Enum.GetName(typeof(DownloaderType), DownloaderType.出錯)));
                Thread.Sleep(1100);
            }

            // 要記得Check現在的下載佇列List是否為0
            // 也就是最後一個下載,但是下載失敗了,就要呼叫改變MeetingRoom變成暫停的狀態
            bool IsLastFileItemFinishedButError = false;

            lock (thisLock)
            {
                if (list.Count == 0)
                {
                    IsLastFileItemFinishedButError = true;
                }
            }

            if (IsLastFileItemFinishedButError == true)
            {
                if (MeetingRoom_DownloadFileToErrorCompleted_Event != null)
                {
                    MeetingRoom_DownloadFileToErrorCompleted_Event(fileItem);
                }
            }
        }
Exemplo n.º 25
0
        private void btnPause_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            btnPause.Visibility = Visibility.Collapsed;
            FileDownloader             instance = Singleton_FileDownloader.GetInstance(MeetingID);
            File_DownloadItemViewModel inList   = instance.GetInList(MeetingID);

            instance.Pause(meetingDataDownloadFileFile.ID);
            int num = 0;

            num = ((inList == null) ? ((int)fileItem.NowPercentage) : ((int)inList.NowPercentage));
            btnPause.Visibility   = Visibility.Collapsed;
            txtPercent.Text       = num + " %";
            txtPercent.Foreground = Brushes.Gray;
            txtPercent.Visibility = Visibility.Visible;
            pb.Value              = num;
            pb.Foreground         = Brushes.Wheat;
            pb.Background         = Brushes.Gray;
            pb.Visibility         = Visibility.Visible;
            btnPausing.Visibility = Visibility.Visible;
        }
Exemplo n.º 26
0
        // 準備做暫停
        private void btnPause_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            // 隱藏要先做
            btnPause.Visibility = Visibility.Collapsed;

            FileDownloader             fileDownloader  = Singleton_FileDownloader.GetInstance(MeetingID);
            File_DownloadItemViewModel _InListFileItem = fileDownloader.GetInList(MeetingID);

            fileDownloader.Pause(meetingDataDownloadFileFile.ID);
            // 等待下載器自己暫停。
            //Thread.Sleep(500);

            // 進度和進度條是灰色可見
            // 進度條文字顯示進度
            int percent = 0;

            if (_InListFileItem != null)
            {
                percent = (int)_InListFileItem.NowPercentage;
            }
            else
            {
                percent = (int)this.fileItem.NowPercentage;
            }
            // 進度和進度條是灰色可見
            // 進度條文字顯示進度
            // 藍色暫停不可見
            // 橘色暫停可見
            btnPause.Visibility   = Visibility.Collapsed;
            txtPercent.Text       = percent.ToString() + " %";
            txtPercent.Foreground = Brushes.Gray;
            txtPercent.Visibility = Visibility.Visible;
            pb.Value              = percent;
            pb.Foreground         = Brushes.Wheat;
            pb.Background         = Brushes.Gray;
            pb.Visibility         = Visibility.Visible;
            btnPausing.Visibility = Visibility.Visible;
            return;
        }
Exemplo n.º 27
0
        public void AddItem(File_DownloadItemViewModel fileItem)
        {
            Action action = null;

            lock (this)
            {
                if (fileItem == null)
                {
                    return;
                }
                list.Add(fileItem);
            }
            if (downloaderType == DownloaderType.沒有任何檔案下載中 || downloaderType == DownloaderType.停止)
            {
                TaskFactory factory = Task.Factory;
                if (action == null)
                {
                    action = new Action(_003CAddItem_003Eb__6);
                }
                factory.StartNew(action);
            }
        }
Exemplo n.º 28
0
        public File_DownloadItemViewModel GetInList(string MeetingDataDownloadFileFile_ID)
        {
            Func <File_DownloadItemViewModel, bool> func = null;
            _003C_003Ec__DisplayClass14             _003C_003Ec__DisplayClass = new _003C_003Ec__DisplayClass14();

            _003C_003Ec__DisplayClass.MeetingDataDownloadFileFile_ID = MeetingDataDownloadFileFile_ID;
            File_DownloadItemViewModel file_DownloadItemViewModel = new File_DownloadItemViewModel();

            lock (this)
            {
                if (NowFileItem != null && NowFileItem.ID.Equals(_003C_003Ec__DisplayClass.MeetingDataDownloadFileFile_ID))
                {
                    return(NowFileItem);
                }
                List <File_DownloadItemViewModel> source = list;
                if (func == null)
                {
                    func = new Func <File_DownloadItemViewModel, bool>(_003C_003Ec__DisplayClass._003CGetInList_003Eb__12);
                }
                return(Enumerable.FirstOrDefault(Enumerable.Where(source, func)));
            }
        }
Exemplo n.º 29
0
        private void UnzipTrigger(File_DownloadItemViewModel fileItem)
        {
            if (fileItem == null)
            {
                return;
            }
            bool flag = false;

            if (this.MeetingDataCT_UnZip_Event != null)
            {
                this.MeetingDataCT_UnZip_Event(fileItem);
            }
            try
            {
                UnZipTool unZipTool = new UnZipTool();
                flag = unZipTool.UnZip(fileItem.StorageFilePath, fileItem.UnZipFilePath, "", true);
            }
            catch (Exception ex)
            {
                LogTool.Debug(ex);
            }
            if (flag)
            {
                UpdateToDB(fileItem, true);
                fileItem.FileType = MeetingFileType.已下載完成;
                return;
            }
            ResetFileItemDB(fileItem);
            fileItem.FileType = MeetingFileType.解壓縮失敗;
            DeleteFiles(fileItem);
            if (this.MeetingDataCT_UnZipError_Event != null)
            {
                this.MeetingDataCT_UnZipError_Event(fileItem);
            }
            if (this.Home_UnZipError_Event != null)
            {
                this.Home_UnZipError_Event(string.Format("檔名: {0},{1}", fileItem.FileName, Enum.GetName(typeof(MeetingFileType), MeetingFileType.解壓縮失敗)));
            }
        }
Exemplo n.º 30
0
        private void DownloadProgressChanged(File_DownloadItemViewModel fileItem)
        {
            if (fileItem == null)
            {
                return;
            }

            //呼叫完成event並且在主執行序執行
            if (MeetingDataCT_DownloadProgressChanged_Event != null)
            {
                MeetingDataCT_DownloadProgressChanged_Event(fileItem);
            }

            if (MeetingRoom_DownloadProgressChanged_Event != null)
            {
                MeetingRoom_DownloadProgressChanged_Event(fileItem);
            }

            //  讓事件得以舒緩,加到100毫秒似乎也差異不大。
            //  一樣會卡卡的。
            //Thread.Sleep(1);
        }