Example #1
0
        private void CreateItemList(string collectionName)
        {
            // preparation
            stopImageTask = false;
            string previewFolder = Path.Combine(CollectionStore.Settings.BaseDirectory, CollectionStore.DataDirectoryName, CollectionStore.PreviewDirectoryName);

            if (!Directory.Exists(previewFolder))
            {
                Directory.CreateDirectory(previewFolder);
            }
            MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
            // processing
            Collection collection = CollectionStore.Get(collectionName);

            foreach (KeyValuePair <string, CollectionItemMeta> collectionItem in collection.ActualItems)
            {
                if (stopImageTask)
                {
                    break;
                }
                ListBoxImageItem listBoxImageItem = new ListBoxImageItem(collectionItem.Key, collectionItem.Value);
                GeneratePreviewAndDescription(previewFolder, collectionItem.Key, md5, listBoxImageItem);
                if (stopImageTask)
                {
                    break;
                }
                //Dispatcher.Invoke(() =>
                //{
                //    string previewFile = Path.Combine(previewFolder, $"{listBoxImageItem.Hash}.jpg");
                //    MemoryStream memoryStream = new MemoryStream(File.ReadAllBytes(previewFile));
                //    BitmapImage preview = new BitmapImage();
                //    preview.BeginInit();
                //    preview.StreamSource = memoryStream;
                //    preview.EndInit();
                //    listBoxImageItem.Preview = preview;
                //    collectionItems.Add(listBoxImageItem);
                //});
                Dispatcher.Invoke(new Func <int>(() =>
                {
                    string previewFile        = Path.Combine(previewFolder, $"{listBoxImageItem.Hash}.jpg");
                    MemoryStream memoryStream = new MemoryStream(File.ReadAllBytes(previewFile));
                    BitmapImage preview       = new BitmapImage();
                    preview.BeginInit();
                    preview.StreamSource = memoryStream;
                    preview.EndInit();
                    listBoxImageItem.Preview = preview;
                    collectionItems.Add(listBoxImageItem);
                    return(1);
                }), TimeSpan.FromMilliseconds(500));
            }
        }
Example #2
0
 private void MenuItem_RenameFile_Click(object sender, RoutedEventArgs e)
 {
     if (comboBox_CollectionNames.SelectedItem != null && listBox_CollectionItems.SelectedItem != null)
     {
         string           currentCollectionName = (string)comboBox_CollectionNames.SelectedItem;
         ListBoxImageItem listBoxImageItem      = (ListBoxImageItem)listBox_CollectionItems.SelectedItem;
         RenameFileWindow renameFileWindow      = new RenameFileWindow(currentCollectionName, listBoxImageItem.Path);
         renameFileWindow.ShowDialog();
         if (renameFileWindow.IsApply)
         {
             listBoxImageItem.Path = renameFileWindow.NewFileName;
         }
     }
 }
Example #3
0
        private void hyperlinkDownload_Click(object sender, RoutedEventArgs e)
        {
            this.gridDownloadAcitivities.Visibility = System.Windows.Visibility.Visible;
            if (this._isLoadUserInfo)
            {
                this.listBoxRunnableActivities.Items.Clear();
                var activities = PT_BS_Service.Client.Framework.BeOperationInvoker.Invoke <I_CO_IA.ActivityManage.I_CO_IA_ActivityManage, ActivityExt[]>(channel =>
                {
                    return(channel.GetActivityWithPlaces(CO_IA.Types.ActivityStage.Prepare));
                });

                foreach (var activity in activities)
                {
                    ListBoxImageItem item = new ListBoxImageItem();
                    item.DataContext = activity;
                    item.ToolTip     = activity.Name;

                    if (activity.Icon != null && activity.Icon.Length > 100)
                    {
                        MemoryStream ms          = new MemoryStream(activity.Icon);
                        BitmapImage  bitmapImage = new BitmapImage();
                        bitmapImage.BeginInit();
                        bitmapImage.StreamSource = ms;
                        bitmapImage.EndInit();
                        item.ImageSource = bitmapImage;
                    }
                    else
                    {
                        item.ImageSource = new BitmapImage(new Uri(@"/CO_IA.MonitoringCollecting;component/Images/defaultActivity.png", UriKind.RelativeOrAbsolute));
                    }
                    item.Header = activity.Name;
                    if (!this.dicLocalActivity.Keys.Contains(activity.Guid))
                    {
                        item.Opacity = 0.35;
                    }
                    this.listBoxRunnableActivities.Items.Add(item);
                }
            }
        }
Example #4
0
        private void Init()
        {
            if (_isLoadUserInfo)
            {
                AsyncBatchOperationInvoker invoker = new AsyncBatchOperationInvoker(result =>
                {
                    gridLogin.Visibility = System.Windows.Visibility.Collapsed;
                    if (!result.IsValid)
                    {
                        StringBuilder builder = new StringBuilder();
                        builder.AppendLine("加载启动信息出错,程序将自动关闭");
                        builder.AppendLine("错误信息:");
                        builder.AppendLine(result.Exception.GetExceptionMessage());
                        MessageBox.Show(this, builder.ToString());
                        App.Current.Shutdown();
                    }
                },
                                                                                    hintInfo =>
                {
                    this.textBlockHint.Text = hintInfo;
                },
                                                                                    System.Threading.SynchronizationContext.Current);

                #region 读取用户权限
                invoker.Add <ISubsystem, StringList>(channel =>
                {
                    return(channel.GetUsableAuthoritiesBySubsystemID(RiasPortal.Current.UserSetting.UserID, CO_IA.Public.SubSystemIDs.Rias));
                },
                                                     result =>
                {
                    if (result.IsValid)
                    {
                        var activities = result.Result;
                        RiasPortal.Current.UserSetting.UserRights = result.Result.ToArray();
                    }
                }, "正在加载用户权限");
                #endregion
                #region 加载地图地址
                invoker.Add <I_CO_IA.Setting.I_CO_IA_Setting, MapConfig>(channel =>
                {
                    return(channel.GetMapConig());
                },
                                                                         result =>
                {
                    if (result.IsValid)
                    {
                        RiasPortal.Current.MapConfig.ElectricUrl  = result.Result.ElectricUrl;
                        RiasPortal.Current.MapConfig.SatelliteUrl = result.Result.SatelliteUrl;
                        RiasPortal.RegisterSessionParam(RiasPortal.MapDefaultArea, result.Result.DefaultGeoRange);
                    }
                }, "读取地图配置信息");
                #endregion
                invoker.Invoke();
            }
            #region 加载活动列表
            //List<Activity> activities2=null;
            //if (this._isLoadUserInfo)
            //{
            //    PT_BS_Service.Client.Framework.BeOperationInvoker.Invoke<I_CO_IA.ActivityManage.I_CO_IA_ActivityManage>(channel =>
            //        {
            //            activities2 = channel.GetActivities().ToList();
            //        });
            //}
            //else
            //{
            List <Activity> activities2 = SQLiteDataService.QueryActivitiesFromLocal();
            //}
            if (gridLogin.Visibility == System.Windows.Visibility.Visible)
            {
                gridLogin.Visibility = System.Windows.Visibility.Collapsed;
            }
            this.dicLocalActivity.Clear();
            foreach (var activity in activities2)
            {
                this.dicLocalActivity[activity.Guid] = activity;
                ListBoxImageItem item = new ListBoxImageItem();
                item.DataContext = activity;
                item.ToolTip     = activity.Name;

                if (activity.Icon != null && activity.Icon.Length > 100)
                {
                    MemoryStream ms          = new MemoryStream(activity.Icon);
                    BitmapImage  bitmapImage = new BitmapImage();
                    bitmapImage.BeginInit();
                    bitmapImage.StreamSource = ms;
                    bitmapImage.EndInit();
                    item.ImageSource = bitmapImage;
                }
                else
                {
                    item.ImageSource = new BitmapImage(new Uri(@"/CO_IA.MonitoringCollecting;component/Images/defaultActivity.png", UriKind.RelativeOrAbsolute));
                }
                item.Header = activity.Name;
                //item.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Left;
                this.listBoxActivities.Items.Add(item);
            }

            #endregion
        }
Example #5
0
        private void GeneratePreviewAndDescription(string previewFolder, string item, MD5CryptoServiceProvider md5, ListBoxImageItem imageItem)
        {
            if (string.IsNullOrEmpty(imageItem.Hash))
            {
                // processing generate hash
                byte[]        hash          = md5.ComputeHash(Encoding.UTF8.GetBytes(item));
                StringBuilder stringBuilder = new StringBuilder(hash.Length * 2);
                for (int i = 0; i < hash.Length; i++)
                {
                    stringBuilder.Append(hash[i].ToString("X2"));
                }
                imageItem.Hash = stringBuilder.ToString();
            }
            string previewImage = Path.Combine(previewFolder, $"{imageItem.Hash}.jpg");

            if (string.IsNullOrEmpty(imageItem.Description) || !File.Exists(previewImage))
            {
                // preparation
                string      originalImage       = Path.Combine(CollectionStore.Settings.BaseDirectory, item);
                BitmapImage bitmapImage         = new BitmapImage();
                byte[]      originalImageBuffer = File.ReadAllBytes(originalImage);
                // processing description
                bitmapImage.BeginInit();
                bitmapImage.StreamSource = new MemoryStream(originalImageBuffer);
                bitmapImage.EndInit();
                imageItem.Description = $"{bitmapImage.PixelWidth}x{bitmapImage.PixelHeight}; {Math.Round(originalImageBuffer.Length / 1024.0 / 1024.0, 2)} Мб";
                // processing generate preview
                if (!File.Exists(previewImage))
                {
                    int decodeWidth = (int)(1.0 * bitmapImage.PixelWidth / bitmapImage.PixelHeight * 94.0);
                    bitmapImage = new BitmapImage();
                    bitmapImage.BeginInit();
                    bitmapImage.StreamSource      = new MemoryStream(originalImageBuffer);
                    bitmapImage.DecodePixelHeight = 94;
                    bitmapImage.DecodePixelWidth  = decodeWidth;
                    bitmapImage.EndInit();
                    JpegBitmapEncoder jpegBitmapEncoder = new JpegBitmapEncoder();
                    jpegBitmapEncoder.Frames.Add(BitmapFrame.Create(bitmapImage));
                    using (FileStream fileStream = new FileStream(previewImage, FileMode.Create, FileAccess.Write))
                    {
                        jpegBitmapEncoder.Save(fileStream);
                    }
                }
            }
        }
Example #6
0
        private void MenuItem_RemoveSelectedFiles_Click(object sender, RoutedEventArgs e)
        {
            if (listBox_CollectionItems.SelectedItems.Count > 1)
            {
                if (Classes.UI.MessageBox.Show("Вы действительно хотите удалить выбранные файлы?", App.Name,
                                               MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
                {
                    string     currentCollectionName = (string)comboBox_CollectionNames.SelectedItem;
                    Collection collection            = CollectionStore.Get(currentCollectionName);
                    IEnumerable <ListBoxImageItem> enSelectedItems = listBox_CollectionItems.SelectedItems.Cast <ListBoxImageItem>();

                    int firstCollectionItemSelectedIndex = enSelectedItems.Min(x => collectionItems.IndexOf(x));

                    List <ListBoxImageItem> selectedItems = new List <ListBoxImageItem>(enSelectedItems);
                    foreach (ListBoxImageItem item in selectedItems)
                    {
                        File.Delete(Path.Combine(CollectionStore.Settings.BaseDirectory, item.Path));
                        collection.RemoveIgnorRules(item.Path);
                        collection.IsChanged = true;
                        collectionItems.Remove(item);
                    }

                    listBox_CollectionItems.SelectedIndex = Math.Min(firstCollectionItemSelectedIndex, collectionItems.Count - 1);

                    Task.Run(() =>
                    {
                        string previewFolder = Path.Combine(CollectionStore.Settings.BaseDirectory, CollectionStore.DataDirectoryName, CollectionStore.PreviewDirectoryName);
                        foreach (ListBoxImageItem item in selectedItems)
                        {
                            if (!string.IsNullOrEmpty(item.Hash))
                            {
                                string deletePreviewFile = Path.Combine(previewFolder, $"{item.Hash}.jpg");
                                if (File.Exists(deletePreviewFile))
                                {
                                    try
                                    {
                                        File.Delete(deletePreviewFile);
                                    }
                                    catch { }
                                }
                            }
                        }
                    });
                }
            }
            else
            {
                string           currentCollectionName = (string)comboBox_CollectionNames.SelectedItem;
                ListBoxImageItem currentCollectionItem = (ListBoxImageItem)listBox_CollectionItems.SelectedItem;
                int    currentCollectionItemIndex      = listBox_CollectionItems.SelectedIndex;
                string deleteFile = Path.Combine(CollectionStore.Settings.BaseDirectory, currentCollectionItem.Path);
                if (Classes.UI.MessageBox.Show($"Удалить \"{deleteFile}\"?", App.Name, MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
                {
                    Collection collection = CollectionStore.Get(currentCollectionName);
                    File.Delete(deleteFile);
                    collection.RemoveIgnorRules(currentCollectionItem.Path);
                    collection.IsChanged = true;
                    collectionItems.RemoveAt(currentCollectionItemIndex);

                    listBox_CollectionItems.SelectedIndex = Math.Min(currentCollectionItemIndex, collectionItems.Count - 1);

                    try
                    {
                        if (!string.IsNullOrEmpty(currentCollectionItem.Hash))
                        {
                            string deletePreviewFile = Path.Combine(CollectionStore.Settings.BaseDirectory, CollectionStore.DataDirectoryName,
                                                                    CollectionStore.PreviewDirectoryName, $"{currentCollectionItem.Hash}.jpg");
                            if (File.Exists(deletePreviewFile))
                            {
                                File.Delete(deletePreviewFile);
                            }
                        }
                    }
                    catch { }
                }
            }
        }