From 0f2e0147e8990e913d16d99bc1b94fb6bc53abd7 Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期四, 03 十二月 2020 15:35:42 +0800
Subject: [PATCH] 2020-12-03-1

---
 HDL_ON/UI/UI1-Login/LoginPageBLL.cs |  489 ++++++++----------------------------------------------
 1 files changed, 73 insertions(+), 416 deletions(-)

diff --git a/HDL_ON/UI/UI1-Login/LoginPageBLL.cs b/HDL_ON/UI/UI1-Login/LoginPageBLL.cs
index 0b8e439..70c7f7b 100644
--- a/HDL_ON/UI/UI1-Login/LoginPageBLL.cs
+++ b/HDL_ON/UI/UI1-Login/LoginPageBLL.cs
@@ -93,36 +93,13 @@
                         if (result.Code != StateCode.SUCCESS)
                         {
                             IMessageCommon.Current.ShowErrorInfoAlter(result.Code);
+                            ShowBtnAccountViewBottomLineError();
                             return;
                         }
                         else
                         {
                             //妫�娴嬪綋鍓嶉厤缃煙鍚嶆槸鍚︿竴鑷达紝涓嶄竴鑷村垯鏇挎崲
                             CheckAndSetUserRequestHost(result);
-                            //
-                            Application.RunOnMainThread(() =>
-                            {
-                                btnGetVerificationCode.IsSelected = false;
-                                btnGetVerificationCode.TextColor = CSS_Color.PromptingColor1;
-                            });
-                            new Thread(() =>
-                            {
-                                while (time > 0)
-                                {
-                                    time--;
-                                    Application.RunOnMainThread(() =>
-                                    {
-                                        btnGetVerificationCode.Text = time.ToString() + "s";
-                                    });
-                                    Thread.Sleep(1000);
-                                }
-                                Application.RunOnMainThread(() =>
-                                {
-                                    btnGetVerificationCode.IsSelected = true;
-                                    btnGetVerificationCode.TextID = StringId.GetVerificationCode;
-                                });
-                            })
-                            { IsBackground = true }.Start();
 
                             //2.1璇锋眰鑾峰彇楠岃瘉鐮�
                             var resultObj = pm.VerificationCodeSend(VerifyType.VERIFY_LOGIN, account, true, phoneZoneCode);
@@ -137,87 +114,38 @@
                                 // 鎻愮ず閿欒
                                 IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code);
                             }
+                            else
+                            {
+                                Application.RunOnMainThread(() =>
+                                {
+                                    btnGetVerificationCode.IsSelected = false;
+                                    btnGetVerificationCode.TextColor = CSS_Color.PromptingColor1;
+                                });
+
+                                new Thread(() =>
+                                {
+                                    while (time > 0)
+                                    {
+                                        time--;
+                                        Application.RunOnMainThread(() =>
+                                        {
+                                            btnGetVerificationCode.Text = time.ToString() + "s";
+                                        });
+                                        Thread.Sleep(1000);
+                                    }
+                                    Application.RunOnMainThread(() =>
+                                    {
+                                        btnGetVerificationCode.IsSelected = true;
+                                        btnGetVerificationCode.TextID = StringId.GetVerificationCode;
+                                    });
+                                })
+                                { IsBackground = true }.Start();
+                            }
                         }
 
                     })
                     { IsBackground = true }.Start();
 
-                    //    btnGetVerificationCode.IsSelected = false ;
-                    //    btnGetVerificationCode.TextColor = CSS_Color.PromptingColor1;
-                    //    int time = 60;
-                    //    new Thread(() =>
-                    //    {
-                    //        while (time > 0)
-                    //        {
-                    //            time--;
-                    //            Application.RunOnMainThread(() =>
-                    //            {
-                    //                btnGetVerificationCode.Text = time.ToString() + "s";
-                    //            });
-                    //            Thread.Sleep(1000);
-                    //        }
-                    //        Application.RunOnMainThread(() =>
-                    //        {
-                    //            btnGetVerificationCode.IsSelected = true;
-                    //            btnGetVerificationCode.TextID = StringId.GetVerificationCode;
-                    //        });
-                    //    })
-                    //    { IsBackground = true }.Start();
-                    //    new Thread(() =>
-                    //    {
-                    //        //鑾峰彇楠岃瘉鐮�
-                    //        var result = pm.GetLoginVerCode(phoneNumber);
-                    //        if (result.StateCode.ToUpper() == StateCode.SUCCESS_CODE)
-                    //        {
-                    //        }
-                    //        //鐧诲綍澶辫触
-                    //        else
-                    //        {
-                    //            string tipStr = "Sever erorr";
-                    //            switch (result.StateCode.ToUpper())
-                    //            {
-                    //                case "USERNAMEORPWDERROR":
-                    //                    tipStr = Language.StringByID(StringId.LoginFailed_AccountOrPasswordError);
-                    //                    Application.RunOnMainThread(() =>
-                    //                    {
-                    //                        btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
-                    //                        btnPasswordViewBottomLine.Height = Application.GetRealHeight(2);
-                    //                    });
-                    //                    break;
-                    //                case "ACCOUNTNOEXISTS":
-                    //                    tipStr = Language.StringByID(StringId.ACCOUNTNOEXISTS);
-                    //                    Application.RunOnMainThread(() =>
-                    //                    {
-                    //                        btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
-                    //                        btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
-                    //                    });
-                    //                    break;
-                    //                case "SENDFAIL":
-                    //                    tipStr = Language.StringByID(StringId.FailedToSendVerificationCode);
-                    //                    Application.RunOnMainThread(() =>
-                    //                    {
-                    //                        btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
-                    //                        btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
-                    //                    });
-                    //                    break;
-                    //                case "Self:Net_Error":
-                    //                    tipStr = Language.StringByID(StringId.NetworkAnomaly);
-                    //                    break;
-                    //            }
-                    //            Application.RunOnMainThread(() =>
-                    //            {
-                    //                //鎻愮ず鍘熷洜
-                    //                var tip = new Tip()
-                    //                {
-                    //                    Text = tipStr,
-                    //                    CloseTime = 1,
-                    //                    Direction = AMPopTipDirection.None
-                    //                };
-                    //                tip.Show(bodyView);
-                    //            });
-                    //        }
-                    //    })
-                    //    { IsBackground = true }.Start();
                 }
             };
         }
@@ -319,8 +247,8 @@
 
                 //if (btnGetVerificationCode.Parent != null)
                 //{
-                    //btnGetVerificationCode.RemoveFromParent();
-                    btnGetVerificationCode.Visible = false;
+                //btnGetVerificationCode.RemoveFromParent();
+                btnGetVerificationCode.Visible = false;
                 //}
                 //闅愯棌瀵嗙爜
                 etPassword.SecureTextEntry = true;
@@ -351,8 +279,8 @@
                     btnPasswordIcon.IsSelected = false;
                     //if (btnGetVerificationCode.Parent != null)
                     //{
-                        //btnGetVerificationCode.RemoveFromParent();
-                        btnGetVerificationCode.Visible = false;
+                    //btnGetVerificationCode.RemoveFromParent();
+                    btnGetVerificationCode.Visible = false;
                     //}
                     //闅愯棌瀵嗙爜
                     etPassword.SecureTextEntry = true;
@@ -568,7 +496,7 @@
                 {
                     btnLogin.IsSelected = false;
                 }
-                if (Regex.IsMatch(account, @"^[1]+\d{10}") )//&& account.Length == 11)
+                if (Regex.IsMatch(account, @"^[1]+\d{10}"))//&& account.Length == 11)
                 {
                     btnGetVerificationCode.IsSelected = true;
                     btnGetVerificationCode.TextColor = CSS_Color.MainBackgroundColor;
@@ -610,6 +538,7 @@
                         if (result.Code != StateCode.SUCCESS)
                         {
                             IMessageCommon.Current.ShowErrorInfoAlter(result.Code);
+                            ShowBtnAccountViewBottomLineError();
                             return;
                         }
                         else
@@ -621,7 +550,7 @@
 
                     //鐧诲綍
                     var loginResult = LoadMethod_Login();
-                    if( !string.IsNullOrEmpty (verAccount))//楠岃瘉鐧诲綍璐﹀彿
+                    if (!string.IsNullOrEmpty(verAccount))//楠岃瘉鐧诲綍璐﹀彿
                     {
                         Application.RunOnMainThread(() =>
                         {
@@ -656,271 +585,6 @@
                                 DB_ResidenceData.residenceData.EixtAccount();
                                 OnAppConfig.Instance.RefreshUserConfig();
                                 DB_ResidenceData.InitRoomFunction();
-                            }
-                            if ( UserInfo.Current.userEmailInfo == "464027401@qq.com")
-                            {
-                                DB_ResidenceData.residenceData.floors.Add(new Floor() { name = "1F", sid = "09888" });
-                                var r111 = new Room() { sid = "0001", name = "Room-1", floorId = "09888", backgroundImage = "Classification/Room/Roombg.png" };
-                                DB_ResidenceData.rooms.Add(r111);
-                                DB_ResidenceData.residenceData.floors.Add(new Floor() { sid = "000022222", name = "1F" });
-                                r111.SaveRoomData();
-                                new AC()
-                                {
-                                    sid = "030101123456780604010001ABCD",
-                                    name = "绌鸿皟",
-                                    function = new List<Trait>() {
-                                                                new Trait { name="on_off", max=1,min = 0, value_key= new List<string> { "on","off"} },
-                                                                new Trait { name="mode", max = 2,min =0,value_key = new List<string>{ "auto", "heat", "cool","dry" } },
-                                                                new Trait { name = "fan",max = 3,min =0,value_key = new List<string>{ "low", "medium", "high" ,"auto"} },
-                                                                new Trait { name = "set_temperature", max = 32,min=16,value_key = new List<string>{"up","down" } },
-                                                            },
-                                    roomIdList = new List<string>() { "0001" },
-                                    lastState = "鍒跺喎 涓 18掳C",
-                                    bus_Data = new BusData
-                                    {
-                                        SubnetID = 42,
-                                        DeviceID = 8,
-                                        LoopID = 1,
-                                    },
-                                }.SaveFunctionData();
-                                new Light()
-                                {
-                                    sid = "030101123456780202020002ABCD",
-                                    name = "璋冨厜鐏�",
-                                    function = new List<Trait>() {
-                                                                new Trait { name="brightness", max=100,min = 0, value_key= new List<string> { "up","down"} },
-                                                            },//"brightness",
-                                    roomIdList = new List<string>() { "0001" },
-                                    lastState = "20%",
-                                    bus_Data = new BusData
-                                    {
-                                        SubnetID = 42,
-                                        DeviceID = 9,
-                                        LoopID = 1,
-                                    },
-
-                                }.SaveFunctionData();
-                                new Curtain()
-                                {
-                                    sid = "030101123456780303010003ABCD",
-                                    name = "绐楀笜妯″潡",
-                                    roomIdList = new List<string>() { "0001" },
-                                    function = new List<Trait>() {
-                                                                new Trait { name="on_off", max=2,min = 0, value_key= new List<string> { "on","off","stop"} },
-                                                            },// "curtain",
-                                    lastState = "寮�",
-                                    bus_Data = new BusData
-                                    {
-                                        SubnetID = 42,
-                                        DeviceID = 7,
-                                        LoopID = 1,
-                                    },
-                                }.SaveFunctionData();
-                                new Curtain()
-                                {
-                                    sid = "030101123456780303030011ABCD",
-                                    name = "寮�鍚堝笜",
-                                    roomIdList = new List<string>() { "0001" },
-                                    function = new List<Trait>() {
-                                                                new Trait { name="on_off", max=100,min = 0, value_key= new List<string> { "on","off","stop"} },
-                                                            },//"curtaintype",
-                                    lastState = "20%",
-                                    bus_Data = new BusData
-                                    {
-                                        SubnetID = 42,
-                                        DeviceID = 7,
-                                        LoopID = 11,
-                                    },
-                                }.SaveFunctionData();
-                                new Curtain()
-                                {
-                                    sid = "030101123456780503040012ABCD",
-                                    name = "鍗峰笜",
-                                    roomIdList = new List<string>() { "0001" },
-                                    function = new List<Trait>() {
-                                                                new Trait { name="on_off", max=2,min = 0, value_key= new List<string> { "on","off","stop"} },
-                                                                new Trait { name="percent", max=100,min = 0, value_key= new List<string> { "percent" } },
-
-                                                            },// "rollingshutter",
-                                    lastState = "20%",
-                                    bus_Data = new BusData
-                                    {
-                                        SubnetID = 42,
-                                        DeviceID = 17,
-                                        LoopID = 1,
-                                    },
-                                }.SaveFunctionData();
-                                new FloorHeating()
-                                {
-                                    sid = "030101123456780404020004ABCD",
-                                    name = "鍦扮儹",
-                                    roomIdList = new List<string>() { "0001" },
-                                    function = new List<Trait>() {
-                                                                new Trait { name="on_off", max=1,min = 0, value_key= new List<string> { "on","off"} },
-                                                                new Trait { name="mode", max = 2,min =0,value_key = new List<string>{ "normal", "day", "night","timer","away" } },
-                                                                new Trait { name = "set_temperature", max = 32,min=5,value_key = new List<string>{"up","down" } },
-                                                            },//
-                                    lastState = "鑷姩 25掳C",
-                                    bus_Data = new BusData
-                                    {
-                                        SubnetID = 111,
-                                        DeviceID = 12,
-                                        LoopID = 1
-                                    }
-                                }.SaveFunctionData();
-                                new Light()
-                                {
-                                    sid = "030101123456780202010005ABCD",
-                                    name = "鍚婄伅",
-                                    function = new List<Trait>() {
-                                                                new Trait { name="on_off", max=100,min = 0, value_key= new List<string> { "on","off"} },
-                                                            },//"on_off",
-                                    roomIdList = new List<string>() { "0001" },
-                                    bus_Data = new BusData
-                                    {
-                                        SubnetID = 42,
-                                        DeviceID = 6,
-                                        LoopID = 1,
-                                    },
-                                }.SaveFunctionData();
-                                new Light()
-                                {
-                                    sid = "030101123456780202040006ABCD",
-                                    name = "RGB鐏�",
-                                    function = new List<Trait>() {
-                                                                new Trait { name="brightness", max=100,min = 0, value_key= new List<string> { "on","off"} },
-                                                                new Trait { name="color", max=100,min = 0, value_key= new List<string> { "255", "255", "255" } },
-                                                            },
-                                    roomIdList = new List<string>() { "0001" },
-                                    bus_Data = new BusData
-                                    {
-                                        SubnetID = 42,
-                                        DeviceID = 4,
-                                        LoopID = 1,
-                                    },
-                                }.SaveFunctionData();
-                                new Fan()
-                                {
-                                    sid = "030101123456781010020006ABCD",
-                                    name = "椋庢墖",
-                                    function = new List<Trait>() {
-                                                            new Trait { name="on_off", max=1,min = 0, value_key= new List<string> { "on","off"} },
-                                                            new Trait { name="percent", max=7,min = 0, value_key= new List<string> { "percent" } },
-                                                        },
-                                    roomIdList = new List<string>() { "0001" },
-                                    bus_Data = new BusData
-                                    {
-                                        SubnetID = 142,
-                                        DeviceID = 4,
-                                        LoopID = 11,
-                                    },
-                                }.SaveFunctionData();
-                                new TV()
-                                {
-                                    sid = "030101123456781010020006ABCD",
-                                    name = "鐢佃",
-                                    function = new List<Trait>() {
-                                                            new Trait { name="on_off", max=1,min = 0, value_key= new List<string> { "on","off"} },
-                                                        },
-                                    roomIdList = new List<string>() { "0001" },
-                                    bus_Data = new BusData
-                                    {
-                                        SubnetID = 142,
-                                        DeviceID = 4,
-                                        LoopID = 111,
-                                    },
-                                }.SaveFunctionData();
-                                new SwitchSocket()
-                                {
-                                    sid = "030101123456780101020006ABCD",
-                                    name = "鎻掑骇",
-                                    function = new List<Trait>() {
-                                                            new Trait { name="on_off", max=1,min = 0, value_key= new List<string> { "on","off"} },
-                                                        },
-                                    roomIdList = new List<string>() { "0001" },
-                                    bus_Data = new BusData
-                                    {
-                                        SubnetID = 42,
-                                        DeviceID = 6,
-                                        LoopID = 1,
-                                    },
-                                }.SaveFunctionData();
-                                new Sensor()
-                                {
-                                    sid = "030101123456781005060006ABCD",
-                                    name = "PM2.5",
-                                    roomIdList = new List<string>() { "0001" },
-                                    function = new List<Trait>() {
-                                                            new Trait { name="values", max=1,min = 0, value_key= new List<string> { "22"} },
-                                                        },
-                                    bus_Data = new BusData
-                                    {
-                                        SubnetID = 111,
-                                        DeviceID = 15,
-                                        LoopID = 1,
-                                    },
-                                }.SaveFunctionData();
-                                new Sensor()
-                                {
-                                    sid = "030101123456781005070006ABCD",
-                                    name = "CO2",
-                                    roomIdList = new List<string>() { "0001" },
-                                    function = new List<Trait>() {
-                                                            new Trait { name="values", max=1,min = 0, value_key= new List<string> { "1352"} },
-                                                        },
-                                    bus_Data = new BusData
-                                    {
-                                        SubnetID = 111,
-                                        DeviceID = 15,
-                                        LoopID = 1,
-                                    },
-                                }.SaveFunctionData();
-                                new Sensor()
-                                {
-                                    sid = "030101123456781005020006ABCD",
-                                    name = "娓╁害",
-                                    roomIdList = new List<string>() { "0001" },
-                                    function = new List<Trait>() {
-                                                            new Trait { name="values", max=1,min = 0, value_key= new List<string> { "28"} },
-                                                        },
-                                    bus_Data = new BusData
-                                    {
-                                        SubnetID = 111,
-                                        DeviceID = 15,
-                                        LoopID = 1,
-                                    },
-                                }.SaveFunctionData();
-                                new Sensor()
-                                {
-                                    sid = "030101123456781005050006ABCD",
-                                    name = "TVOC",
-                                    roomIdList = new List<string>() { "0001" },
-                                    function = new List<Trait>() {
-                                                            new Trait { name="values", max=1,min = 0, value_key= new List<string> { "0.3"} },
-                                                        },
-                                    bus_Data = new BusData
-                                    {
-                                        SubnetID = 111,
-                                        DeviceID = 15,
-                                        LoopID = 1,
-                                    },
-                                }.SaveFunctionData();
-                                new Sensor()
-                                {
-                                    sid = "030101123456781005030006ABCD",
-                                    name = "婀垮害",
-                                    roomIdList = new List<string>() { "0001" },
-                                    function = new List<Trait>() {
-                                                            new Trait { name="values", max=1,min = 0, value_key= new List<string> { "15"} },
-                                                        },
-                                    bus_Data = new BusData
-                                    {
-                                        SubnetID = 111,
-                                        DeviceID = 15,
-                                        LoopID = 1,
-                                    },
-                                }.SaveFunctionData();
-                                DB_ResidenceData.residenceData.SaveResidenceData();
                             }
                             Application.RunOnMainThread(() =>
                             {
@@ -996,7 +660,7 @@
                 UserInfo.Current.LastTime = DateTime.Now;
                 UserInfo.Current.ID = revertData.userId;
                 UserInfo.Current.LoginTokenString = revertData.headerPrefix + revertData.accessToken;
-                UserInfo.Current.refreshToken = revertData.refreshToken;
+                UserInfo.Current.RefreshToken = revertData.refreshToken;
                 UserInfo.Current.userName = revertData.name;
                 UserInfo.Current.SaveUserInfo();
                 MainPage.Log("鐧诲綍鎴愬姛銆�");
@@ -1011,54 +675,30 @@
             //鐧诲綍澶辫触
             else
             {
-                //2020-11-13 寰呬慨鏀�
-                string tipStr = "Sever erorr";
-                switch (loginResult.Code)
-                {
-                    case "ValidCodeAndPhoneNoEqual":
-                        tipStr = Language.StringByID(StringId.VerificationCodeError);
-                        Application.RunOnMainThread(() =>
-                        {
-                            btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
-                            btnPasswordViewBottomLine.Height = Application.GetRealHeight(2);
-                        });
-                        break;
-                    case "USERNAMEORPWDERROR":
-                        tipStr = Language.StringByID(StringId.LoginFailed_AccountOrPasswordError);
-                        Application.RunOnMainThread(() =>
-                        {
-                            btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
-                            btnPasswordViewBottomLine.Height = Application.GetRealHeight(2);
-                        });
-                        break;
-                    case "ACCOUNTNOEXISTS":
-                        tipStr = Language.StringByID(StringId.ACCOUNTNOEXISTS);
-                        Application.RunOnMainThread(() =>
-                        {
-                            btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
-                            btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
-                        });
-                        break;
-                    case "NoRecord":
-                        tipStr = Language.StringByID(StringId.PlsGetTheVerificationCode);
-                        break;
-                    case "Self:Net_Error":
-                        tipStr = Language.StringByID(StringId.NetworkAnomaly);
-                        break;
-                }
                 //璐﹀彿鎴栬�呭瘑鐮侀敊璇�
                 Application.RunOnMainThread(() =>
                 {
-                    waitPage.Hide();
-                    //鎻愮ず鍘熷洜
-                    var tip = new Tip()
+                    if (loginResult.Code == "10008")
                     {
-                        Text = tipStr,
-                        CloseTime = 1,
-                        Direction = AMPopTipDirection.None
-                    };
-                    tip.Show(bodyView);
+                        //鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒
+                        btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
+                        btnPasswordViewBottomLine.Height = Application.GetRealHeight(2);
+                    }
+                    else if (loginResult.Code == "10010")
+                    {
+                        //鐢ㄦ埛涓嶅瓨鍦�
+                        btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
+                        btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
+                    }
+                    else if (loginResult.Code == "14")
+                    {
+                        btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
+                        btnPasswordViewBottomLine.Height = Application.GetRealHeight(2);
+                    }
+                    waitPage.Hide();
                 });
+
+                IMessageCommon.Current.ShowErrorInfoAlter(loginResult.Code);
             }
             return result;
         }
@@ -1073,7 +713,8 @@
             if (responsePack == StateCode.SUCCESS)
             {
                 //2020-11-13 寰呯‘璁わ紝娌℃湁浣忓畢锛屼笉绠楃櫥褰曟垚鍔�
-                if ( UserInfo.Current.regionList != null &&  UserInfo.Current.regionList.Count > 0){
+                if (UserInfo.Current.regionList != null && UserInfo.Current.regionList.Count > 0)
+                {
                     result = true;
                 }
                 //result = true;
@@ -1108,6 +749,9 @@
                 //    });
                 //};
 
+                //鍒ゆ柇鏄惁鍚屾剰浜嗛殣绉佹斂绛�
+                if (CheckPrivacyPolicy() == false) return;
+
                 var registerPage = new RegisterPage();
                 registerPage.Show();
                 registerPage.ShowDialog();
@@ -1141,5 +785,18 @@
 
             };
         }
+
+        /// <summary>
+        /// 鐢ㄦ埛涓嶅瓨鍦�
+        /// </summary>
+        void ShowBtnAccountViewBottomLineError()
+        {
+            Application.RunOnMainThread(() =>
+            {
+                //鐢ㄦ埛涓嶅瓨鍦�
+                btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
+                btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
+            });
+        }
     }
 }
\ No newline at end of file

--
Gitblit v1.8.0