陈嘉乐
2021-01-11 1026814d931de92f0da5f15a58870565a94100e0
HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -11,11 +11,13 @@
namespace HDL_ON.UI
{
    public partial class HomePage : FrameLayout
    public partial class HomePage : VerticalRefreshLayout
    {
        #region 控件列表
        static HomePage bodyView;
        //FrameLayout bodyView;
        /// <summary>
        /// 顶部信息区域
        /// </summary>
@@ -92,6 +94,15 @@
        {
            bodyView = this;
            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
            this.VerticalScrollBarEnabled = false;
#if __IOS__
            //自动偏移取消
            if (UIKit.UIDevice.CurrentDevice.CheckSystemVersion(11, 0))
            {
                (this.uiView as UIKit.UIScrollView).ContentInsetAdjustmentBehavior = UIKit.UIScrollViewContentInsetAdjustmentBehavior.Never;
            }
#endif
        }
        public override void RemoveFromParent()
@@ -104,7 +115,17 @@
        {
            try
            {
                this.BeginHeaderRefreshingAction = () =>
                {
                    this.EndHeaderRefreshing();
                    Common.ApiUtlis.Ins.DownloadData();
                    LoadContentView();
                };
                #region topView
                bodyView.RemoveAll();
                topView = new FrameLayout()
                {
                    Height = Application.GetRealHeight(216),
@@ -294,9 +315,12 @@
                #endregion
                #region 功能场景切换
                bodyView.AddChidren(new Button() { Height = Application.GetRealHeight(20), BackgroundColor = 0x00000000 });
                changeView = new FrameLayout()
                {
                    Y = Application.GetRealHeight(20) + topView.Bottom,
                    //Y = Application.GetRealHeight(20) + topView.Bottom,
                    Gravity = Gravity.CenterHorizontal,
                    Width = Application.GetRealWidth(230),
                    Height = Application.GetRealHeight(62),
@@ -343,21 +367,38 @@
                #region ContextView
                contentView = new PageLayout()
                {
                    Y = changeView.Bottom,
                    //Y = changeView.Bottom,
                    Height = Application.GetRealHeight(310 + 30 + 10), //20为超出部分
                    IsShowPoint = false,
                };
                bodyView.AddChidren(contentView);
                functionViews = new List<FrameLayout>();
                LoadContentView();
                if (!Common.ApiUtlis.Ins.DownloadDataComplete)
                #endregion
            }
            catch (Exception ex)
            {
                MainPage.Log($"HomePage LoadPage Error : {ex.Message}");
            }
        }
        /// <summary>
        /// 加载内容区域
        /// </summary>
        void LoadContentView()
        {
            if (!Common.ApiUtlis.Ins.DownloadDataComplete)
            {
                var waitPage = new Loading();
                MainPage.BaseView.AddChidren(waitPage);
                waitPage.Start(Language.StringByID(StringId.PleaseWait));
                new System.Threading.Thread(() =>
                {
                    var waitPage = new Loading();
                    MainPage.BaseView.AddChidren(waitPage);
                    waitPage.Start(Language.StringByID(StringId.PleaseWait));
                    new System.Threading.Thread(() =>
                    try
                    {
                        while (!Common.ApiUtlis.Ins.DownloadDataComplete)
                        {
@@ -365,7 +406,11 @@
                        }
                        Application.RunOnMainThread(() =>
                        {
                            if (contentView == null)
                            {
                                return;
                            }
                            contentView.RemoveAll();
                            deviceFunctionView = new VerticalScrolViewLayout();
                            contentView.AddChidren(deviceFunctionView);
                            LoadDeviceFunctionControlZone();
@@ -383,33 +428,32 @@
                            waitPage.Hide();
                        });
                    })
                    { IsBackground = true }.Start();
                }
                else
                {
                    deviceFunctionView = new VerticalScrolViewLayout();
                    contentView.AddChidren(deviceFunctionView);
                    LoadDeviceFunctionControlZone();
                    sceneFunctionView = new VerticalScrolViewLayout();
                    contentView.AddChidren(sceneFunctionView);
                    LoadSceneFunctionControlZone();
                    contentView.PageIndex = 0;
                    LoadEvent_ChangeShowedFunctionType();
                    // 查询未读消息并显示
                    GetUnreadPushMessages();
                    RegisterGetPushMessageAction();
                }
                #endregion
                    }
                    catch (Exception ex) {
                        MainPage.Log($"刷新主页异常:{ex.Message}");
                    }
                    finally { }
                })
                { IsBackground = true }.Start();
            }
            catch (Exception ex)
            else
            {
                MainPage.Log($"HomePage LoadPage Error : {ex.Message}");
                deviceFunctionView = new VerticalScrolViewLayout();
                contentView.AddChidren(deviceFunctionView);
                LoadDeviceFunctionControlZone();
                sceneFunctionView = new VerticalScrolViewLayout();
                contentView.AddChidren(sceneFunctionView);
                LoadSceneFunctionControlZone();
                contentView.PageIndex = 0;
                LoadEvent_ChangeShowedFunctionType();
                // 查询未读消息并显示
                GetUnreadPushMessages();
                RegisterGetPushMessageAction();
            }
        }
@@ -430,7 +474,7 @@
                foreach (var function in FunctionList.List.GetDeviceFunctionList())
                {
                    //音乐模块有主从关系,需要特殊处理
                    if (function.functionCategory == FunctionCategory.Music)
                    if (function.Spk_Prefix == FunctionCategory.Music)
                    {
                        var music = function as Music.A31MusicModel;
                        if (music.ServerClientType == -1)
@@ -676,7 +720,11 @@
                    Tag = "state",
                    Text = function.lastState
                };
                view.AddChidren(btnState);
                if (function.spk != SPK.LightSwitch)
                {
                    view.AddChidren(btnState);
                }
                Button btnCollection;
                btnCollection = new Button()
@@ -697,7 +745,7 @@
                LoadEvent_FunctionCollection(btnCollection, function);
                if (function.functionCategory == FunctionCategory.Curtain)
                if (function.Spk_Prefix == FunctionCategory.Curtain)
                {
                    btnIcon.UnSelectedImagePath = "FunctionIcon/Curtain/CurtainIcon.png";
                    btnIcon.SelectedImagePath = "FunctionIcon/Curtain/CurtainOnIcon.png";
@@ -728,7 +776,7 @@
                    LoadEvent_ControlCurtain(function as Curtain, btnCurtainClose, btnCurtainOpen);
                }
                else if (function.functionType == FunctionType.TV)
                else if (function.spk == SPK.ElectricTV)
                {
                    btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/TVIcon.png";
                    Button btnPower;
@@ -744,7 +792,7 @@
                    LoadEvent_ControlTV(function as TV, btnPower);
                }
                else if (function.functionCategory == FunctionCategory.Music)
                else if (function.Spk_Prefix == FunctionCategory.Music)
                {
                    btnIcon.UnSelectedImagePath = "FunctionIcon/Music/MusicIcon.png";
                    btnIcon.SelectedImagePath = "FunctionIcon/Music/MusicOnIcon.png";
@@ -767,7 +815,8 @@
                    //Music.SendMethod.ReadStatus(a31player);
                    btnPower.MouseUpEventHandler = (sender, e) => {
                    btnPower.MouseUpEventHandler = (sender, e) =>
                    {
                        if (btnPower.IsSelected)
                        {
                            btnPower.IsSelected = false;
@@ -800,7 +849,7 @@
                    };
                    view.AddChidren(btnSwitch);
                    switch (function.functionCategory)
                    switch (function.Spk_Prefix)
                    {
                        case FunctionCategory.Light:
                            #region 灯光 Light
@@ -809,36 +858,26 @@
                            UpdataFunctionStates(function as Light);
                            #endregion
                            break;
                        case FunctionCategory.Thermostat:
                            switch (function.functionType)
                            {
                                case FunctionType.AC:
                                    #region 空调 AC
                                    btnIcon.UnSelectedImagePath = "FunctionIcon/AC/AcIcon.png";
                                    btnIcon.SelectedImagePath = "FunctionIcon/AC/AcOnIcon.png";
                                    #endregion
                                    break;
                                case FunctionType.FloorHeating:
                                    #region 地热
                                    btnIcon.UnSelectedImagePath = "FunctionIcon/FloorHeating/FloorHeatingIcon.png";
                                    btnIcon.SelectedImagePath = "FunctionIcon/FloorHeating/FloorHeatingOnIcon.png";
                                    #endregion
                                    break;
                            }
                        case FunctionCategory.AC:
                            #region 空调 AC
                            btnIcon.UnSelectedImagePath = "FunctionIcon/AC/AcIcon.png";
                            btnIcon.SelectedImagePath = "FunctionIcon/AC/AcOnIcon.png";
                            #endregion
                            break;
                        case FunctionCategory.SwitchDevice:
                            switch (function.functionType)
                        case FunctionCategory.FloorHeat:
                            #region 地热
                            btnIcon.UnSelectedImagePath = "FunctionIcon/FloorHeating/FloorHeatingIcon.png";
                            btnIcon.SelectedImagePath = "FunctionIcon/FloorHeating/FloorHeatingOnIcon.png";
                            #endregion
                            break;
                        case FunctionCategory.Electric:
                            switch (function.spk)
                            {
                                case FunctionType.Socket:
                                case SPK.ElectricSocket:
                                    btnIcon.UnSelectedImagePath = "FunctionIcon/Socket/SocketIcon.png";
                                    btnIcon.SelectedImagePath = "FunctionIcon/Socket/SocketOnIcon.png";
                                    break;
                            }
                            break;
                        case FunctionCategory.Electrical:
                            switch (function.functionType)
                            {
                                case FunctionType.Fan:
                                case SPK.ElectricFan:
                                    btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/FanIcon.png";
                                    btnIcon.SelectedImagePath = "FunctionIcon/Electrical/FanOnIcon.png";
                                    break;
@@ -850,7 +889,7 @@
                //取消收藏事件
                Action cannelCollect = () => {
                    function.collect = false;
                    if (function.functionCategory == FunctionCategory.Music)//处理音乐主从关系
                    if (function.Spk_Prefix == FunctionCategory.Music)//处理音乐主从关系
                    {
                        if ((function as Music.A31MusicModel).ServerClientType == 1)
                        {
@@ -860,7 +899,7 @@
                    }
                    string msg = function.name + Language.StringByID(StringId.CollectionCancelled);
                    LoadDeviceFunctionControlZone();
                    function.SaveFunctionData(true);
                    function.CollectFunction();
                };
                var skipControlPageEvent = new PublicAssmebly().LoadEvent_SkipFunctionControlPage(function, btnCollection, btnName, btnZone);
@@ -869,7 +908,7 @@
                btnIcon.MouseUpEventHandler = skipControlPageEvent;
                btnState.MouseUpEventHandler = skipControlPageEvent;
                //电视不需要更新状态
                if(function.functionType!= FunctionType.TV)
                if(function.spk!= SPK.ElectricTV)
                {
                    UpdataFunctionStates(function);
                }
@@ -915,7 +954,10 @@
                    Width = Application.GetRealWidth(32),
                    UnSelectedImagePath = "Public/FuncInfoSetIcon_white.png",
                };
                view.AddChidren(btnSettingIcon);
                if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
                {
                    view.AddChidren(btnSettingIcon);
                }
                Button btnName;
                btnName = new Button()