ZigbeeApp/Shared/Phone/UserCenter/HideOption/HideOptionSearchAllFile.cs
New file
@@ -0,0 +1,258 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shared.Phone.UserCenter.HideOption
{
    /// <summary>
    /// 查看全部文件
    /// </summary>
    public class HideOptionSearchAllFile : EditorCommonForm
    {
        #region ■ 变量声明___________________________
        /// <summary>
        /// 解密
        /// </summary>
        private bool decryptPassword = false;
        private string nowDirectory = string.Empty;
        #endregion
        #region ■ 初始化_____________________________
        /// <summary>
        /// 画面显示(底层会固定调用此方法,借以完成画面创建)
        /// </summary>
        public void ShowForm(string directory)
        {
            this.nowDirectory = directory;
            //设置头部信息
            base.SetTitleText("文件列表");
            var btnButton = new NormalViewControl(200, 69, true);
            btnButton.Gravity = Gravity.CenterVertical;
            btnButton.X = bodyFrameLayout.Width - Application.GetRealWidth(200) - ControlCommonResourse.XXLeft;
            btnButton.TextColor = UserCenterColor.Current.TopLayoutTitleText;
            btnButton.TextAlignment = TextAlignment.BottomRight;
            btnButton.TextSize = 17;
            btnButton.Text = "翻译";
            topFrameLayout.AddChidren(btnButton);
            btnButton.ButtonClickEvent += (sender, e) =>
            {
                if (this.decryptPassword == false)
                {
                    this.decryptPassword = true;
                    //初始化中部信息
                    this.InitMiddleFrame(nowDirectory);
                }
            };
            //初始化中部信息
            this.InitMiddleFrame(nowDirectory);
            this.BackButtonClickEvent = (btnContr) =>
            {
                string rootPath = Shared.IO.FileUtils.RootPath.Trim('/');
                if (this.nowDirectory.Trim('/') == rootPath)
                {
                    this.CloseForm();
                    return;
                }
                string[] Arry = this.nowDirectory.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
                string nextDir = string.Empty;
                for (int i = 0; i < Arry.Length - 1; i++)
                {
                    nextDir += Arry[i] + "/";
                }
                //初始化中部信息
                this.InitMiddleFrame(nextDir);
            };
        }
        /// <summary>
        /// 初始化中部信息
        /// </summary>
        private void InitMiddleFrame(string directory)
        {
            this.nowDirectory = directory;
            this.ClearBodyFrame();
            var listDirectory = new List<string>();
            var listAllFile = new List<string>();
            //string rootPath = Shared.IO.FileUtils.RootPath.Trim('/');
            //if (this.nowDirectory.Trim('/') == rootPath)
            //{
            //    //根目录只要两个就可以了
            //    listDirectory.Add(Common.Config.Instance.Guid);
            //    listDirectory.Add(Application.Skin != null ? Application.Skin : "Phone");
            //}
            //else
            {
                var files = System.IO.Directory.GetDirectories(directory);
                foreach (var file in files)
                {
                    string[] arry = file.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
                    listDirectory.Add(arry[arry.Length - 1]);
                }
                listDirectory.Sort();
                listAllFile = HdlFileLogic.Current.GetFileFromDirectory(directory.TrimEnd('/'));
                listAllFile.Sort();
            }
            var listView = new VerticalListControl(23);
            listView.BackgroundColor = UserCenterColor.Current.White;
            listView.Height = bodyFrameLayout.Height;
            bodyFrameLayout.AddChidren(listView);
            if (listDirectory.Count > 0)
            {
                var row1 = new RowLayoutControl(listView.rowSpace / 2);
                listView.AddChidren(row1);
                row1.frameTable.UseClickStatu = false;
                row1.frameTable.AddLeftCaption("【文件夹列表】", 800);
                for (int i = 0; i < listDirectory.Count; i++)
                {
                    this.AddDirectoryRowControl(listView, listDirectory[i], directory, i != listDirectory.Count - 1);
                }
            }
            if (listAllFile.Count > 0)
            {
                var row1 = new RowLayoutControl(listView.rowSpace / 2);
                listView.AddChidren(row1);
                row1.frameTable.UseClickStatu = false;
                row1.frameTable.AddLeftCaption("【文件列表】", 800);
                for (int i = 0; i < listAllFile.Count; i++)
                {
                    this.AddFileRowControl(listView, listAllFile[i], directory, i != listAllFile.Count - 1);
                }
            }
            listView.AdjustRealHeightByBottomButton(Application.GetRealHeight(50));
            var btnButon = new BottomClickButton();
            btnButon.Text = "删除文件夹";
            bodyFrameLayout.AddChidren(btnButon);
            btnButon.ButtonClickEvent += (sender, e) =>
            {
                this.ShowMassage(ShowMsgType.Confirm, "是否清除该文件夹", () =>
                {
                    try
                    {
                        System.IO.Directory.Delete(directory, true);
                        this.CloseForm();
                    }
                    catch (Exception ex)
                    {
                        this.ShowMassage(ShowMsgType.Error, "清除缓存文件夹异常");
                        HdlLogLogic.Current.WriteLog(ex, "清除缓存文件夹异常");
                    }
                });
            };
            if (directory == Common.Config.Instance.FullPath)
            {
                btnButon.CanClick = false;
            }
        }
        private void AddDirectoryRowControl(VerticalListControl listView, string directoryName, string directory, bool addLine)
        {
            string dirNewName = directoryName;
            if (decryptPassword == true)
            {
                try
                {
                    dirNewName = UserCenterLogic.DecryptPassword(UserCenterResourse.FileEncryptKey, directoryName);
                }
                catch { dirNewName = directoryName; }
            }
            var row1 = new RowLayoutControl(listView.rowSpace / 2);
            listView.AddChidren(row1);
            var btnName = row1.frameTable.AddLeftCaption(dirNewName, 800);
            btnName.IsMoreLines = true;
            if (addLine == true)
            {
                row1.frameTable.AddBottomLine();
            }
            row1.frameTable.AddRightArrow();
            row1.frameTable.ButtonClickEvent += (sender, e) =>
            {
                //初始化中部信息
                this.decryptPassword = false;
                this.InitMiddleFrame(System.IO.Path.Combine(directory, directoryName));
            };
        }
        private void AddFileRowControl(VerticalListControl listView, string fileName, string directory, bool addLine)
        {
            string fileNewName = fileName;
            if (decryptPassword == true && fileName.StartsWith("Device_") == false)
            {
                try
                {
                    fileNewName = UserCenterLogic.DecryptPassword(UserCenterResourse.FileEncryptKey, fileName);
                }
                catch { fileNewName = fileName; }
            }
            var row1 = new RowLayoutControl(listView.rowSpace / 2);
            listView.AddChidren(row1);
            var btnName = row1.frameTable.AddLeftCaption(fileNewName, 800);
            btnName.IsMoreLines = true;
            if (addLine == true)
            {
                row1.frameTable.AddBottomLine();
            }
            row1.frameTable.AddRightArrow();
            var btnUpLoad = row1.AddEditorControl();
            btnUpLoad.Text = "上传";
            btnUpLoad.ButtonClickEvent += (sender, e) =>
            {
                this.ShowMassage(ShowMsgType.Confirm, "是否上传该文件(测试)?", () =>
                {
                    HdlThreadLogic.Current.RunThread(() =>
                    {
                        string tagrtFile = System.IO.Path.Combine(directory, fileName);
                        HdlBackupLogic.Current.UpLoadByteDataToOptionBackup(fileName, HdlFileLogic.Current.ReadFileByteContent(tagrtFile));
                    });
                });
            };
            var btnDelete = row1.AddDeleteControl();
            btnDelete.ButtonClickEvent += (sender, e) =>
            {
                this.ShowMassage(ShowMsgType.Confirm, "是否清除该缓存文件", () =>
                {
                    var myFile = System.IO.Path.Combine(directory, fileName);
                    try
                    {
                        System.IO.File.Delete(myFile);
                        row1.RemoveFromParent();
                    }
                    catch (Exception ex)
                    {
                        this.ShowMassage(ShowMsgType.Error, "清除缓存文件异常");
                        HdlLogLogic.Current.WriteLog(ex, "清除缓存文件异常");
                    }
                });
            };
            row1.frameTable.ButtonClickEvent += (sender, e) =>
            {
                var form = new HideOptionFileContentForm();
                form.AddForm(System.IO.Path.Combine(directory, fileName));
            };
        }
        #endregion
        #region ■ 一般方法___________________________
        #endregion
    }
}