From 592974441a4df95fffd9167c90192da1a390b1c2 Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期二, 06 六月 2023 11:51:12 +0800
Subject: [PATCH] Merge branch 'Dev-Branch'
---
HDL-ON_iOS/ViewController.cs | 2
HDL-ON_Android/Properties/AndroidManifest.xml | 2
HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs | 1
HDL_ON/UI/UI2/1-HomePage/HomePage.cs | 10
HDL-ON_Android/Assets/Language.ini | 16 +
HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs | 57 +++++
HDL-ON_iOS/HDL-ON_iOS.csproj | 27 ++
HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs | 103 +++++++++++
HDL_ON/UI/UI2/UserPage.cs | 10
HDL_ON/Common/ApiUtlis.cs | 3
HDL_ON/Entity/Function/SecurityAlarm.cs | 2
HDL-ON_iOS/AppDelegate.cs | 36 ++--
HDL_ON/DAL/Mqtt/MqttClient.cs | 2
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TimeView.cs | 137 +++++++++++++++
HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs | 2
HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs | 8
HDL-ON_iOS/Info.plist | 4
HDL-ON_iOS/Resources/Language.ini | 16 +
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs | 10
HDL-ON_Android/Resources/Resource.designer.cs | 2
HDL_ON/UI/MainPage.cs | 3
SiriIntents/Server/HttpUtil.cs | 4
HDL_ON/Entity/FunctionList.cs | 1
HDL_ON/Entity/Function/Function.cs | 5
HDL_ON/UI/UI2/3-Intelligence/Automation/Logic.cs | 4
HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs | 8
HDL_ON/UI/UI2/UserPageBLL.cs | 18 --
HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs | 16 +
HDL_ON/Common/R.cs | 13 +
29 files changed, 455 insertions(+), 67 deletions(-)
diff --git a/HDL-ON_Android/Assets/Language.ini b/HDL-ON_Android/Assets/Language.ini
index 5edc896..9b3e021 100644
--- a/HDL-ON_Android/Assets/Language.ini
+++ b/HDL-ON_Android/Assets/Language.ini
@@ -1149,6 +1149,9 @@
7166=Camera
7167=Main switch
7168=PM10
+7169=Time of duration
+7170=Human presence detection
+7171=continue
8501=Video door lock
8502=Electric quantity
@@ -2432,6 +2435,10 @@
7166=鎽勫儚澶�
7167=鎬绘帶寮�鍏�
7168=PM10
+7169=鎸佺画鏃堕棿
+7170=浜轰綋瀛樺湪妫�娴�
+7171=鎸佺画
+
8501=瑙嗛闂ㄩ攣
@@ -3711,6 +3718,9 @@
7166=Camera
7167=Main switch
7168=PM10
+7169=Time of duration
+7170=Human presence detection
+7171=continue
8501=Video door lock
8502=Electric quantity
@@ -4985,6 +4995,9 @@
7166=Camera
7167=Main switch
7168=PM10
+7169=Time of duration
+7170=Human presence detection
+7171=continue
8501=Video door lock
8502=Electric quantity
@@ -6258,6 +6271,9 @@
7166=Camera
7167=Main switch
7168=PM10
+7169=Time of duration
+7170=Human presence detection
+7171=continue
8501=Video door lock
8502=Electric quantity
diff --git a/HDL-ON_Android/Properties/AndroidManifest.xml b/HDL-ON_Android/Properties/AndroidManifest.xml
index bd9897e..3d9ee18 100644
--- a/HDL-ON_Android/Properties/AndroidManifest.xml
+++ b/HDL-ON_Android/Properties/AndroidManifest.xml
@@ -1,5 +1,5 @@
锘�<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.8.0" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202306011">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.8.0" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202306051">
<uses-sdk android:minSdkVersion="26" android:targetSdkVersion="29" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<!--鍙嬬洘-->
diff --git a/HDL-ON_Android/Resources/Resource.designer.cs b/HDL-ON_Android/Resources/Resource.designer.cs
index b127030..acf2224 100644
--- a/HDL-ON_Android/Resources/Resource.designer.cs
+++ b/HDL-ON_Android/Resources/Resource.designer.cs
@@ -14,7 +14,7 @@
{
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "12.2.8.165")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")]
public partial class Resource
{
diff --git a/HDL-ON_iOS/AppDelegate.cs b/HDL-ON_iOS/AppDelegate.cs
index 36f83cb..e2c07be 100644
--- a/HDL-ON_iOS/AppDelegate.cs
+++ b/HDL-ON_iOS/AppDelegate.cs
@@ -199,12 +199,12 @@
public override void DidEnterBackground(UIApplication application)
{
//璁剧疆鍏ㄨ閫氱姸鎬�
- string systemVersion = UIKit.UIDevice.CurrentDevice.SystemVersion;
- string errorVersion = "16.2.0";
- if (systemVersion.CompareTo(errorVersion) < 0)///鍏ㄨ閫氫笉鍏煎ios16浠ヤ笂鐨勭郴缁燂紝涓嶈鍔犺浇杩欎釜鍏�
- {
- Shared.IOS.HDLFVSDK.Video.FVapplicationDidEnterBackground(application);
- }
+ //string systemVersion = UIKit.UIDevice.CurrentDevice.SystemVersion;
+ //string errorVersion = "16.2.0";
+ //if (systemVersion.CompareTo(errorVersion) < 0)///鍏ㄨ閫氫笉鍏煎ios16浠ヤ笂鐨勭郴缁燂紝涓嶈鍔犺浇杩欎釜鍏�
+ //{
+ // Shared.IOS.HDLFVSDK.Video.FVapplicationDidEnterBackground(application);
+ //}
//SharedMethod.SharedMethod.IsBackground = true;
//MainPage.IsEnterBackground = true;
////杩涘叆鍚庡彴mqtt姝e湪杩炴帴閲嶇疆鐘舵��
@@ -231,12 +231,12 @@
public override void OnActivated(UIApplication application)
{
//璁剧疆鍏ㄨ閫氱姸鎬�
- string systemVersion = UIKit.UIDevice.CurrentDevice.SystemVersion;
- string errorVersion = "16.2.0";
- if (systemVersion.CompareTo(errorVersion) < 0)///鍏ㄨ閫氫笉鍏煎ios16浠ヤ笂鐨勭郴缁燂紝涓嶈鍔犺浇杩欎釜鍏�
- {
- Shared.IOS.HDLFVSDK.Video.FVapplicationDidBecomeActive(application);
- }
+ //string systemVersion = UIKit.UIDevice.CurrentDevice.SystemVersion;
+ //string errorVersion = "16.2.0";
+ //if (systemVersion.CompareTo(errorVersion) < 0)///鍏ㄨ閫氫笉鍏煎ios16浠ヤ笂鐨勭郴缁燂紝涓嶈鍔犺浇杩欎釜鍏�
+ //{
+ // Shared.IOS.HDLFVSDK.Video.FVapplicationDidBecomeActive(application);
+ //}
Console.WriteLine("OnActivated");
base.OnActivated(application);
//HDL_ON.DriverLayer.Control.Ins.SearchLoaclGateway();
@@ -294,12 +294,12 @@
{
//璁剧疆鍏ㄨ閫氱姸鎬�
- string systemVersion = UIKit.UIDevice.CurrentDevice.SystemVersion;
- string errorVersion = "16.2.0";
- if (systemVersion.CompareTo(errorVersion) < 0)///鍏ㄨ閫氫笉鍏煎ios16浠ヤ笂鐨勭郴缁燂紝涓嶈鍔犺浇杩欎釜鍏�
- {
- Shared.IOS.HDLFVSDK.Video.FVapplication(application, new NSDictionary());
- }
+ //string systemVersion = UIKit.UIDevice.CurrentDevice.SystemVersion;
+ //string errorVersion = "16.2.0";
+ //if (systemVersion.CompareTo(errorVersion) < 0)///鍏ㄨ閫氫笉鍏煎ios16浠ヤ笂鐨勭郴缁燂紝涓嶈鍔犺浇杩欎釜鍏�
+ //{
+ // Shared.IOS.HDLFVSDK.Video.FVapplication(application, new NSDictionary());
+ //}
Console.WriteLine("111111111111");
SetCurrentLanguage();
//Shared.Application.FontSize = 12;
diff --git a/HDL-ON_iOS/HDL-ON_iOS.csproj b/HDL-ON_iOS/HDL-ON_iOS.csproj
index f55067f..e420bca 100644
--- a/HDL-ON_iOS/HDL-ON_iOS.csproj
+++ b/HDL-ON_iOS/HDL-ON_iOS.csproj
@@ -80,6 +80,8 @@
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="Xamarin.iOS" />
+ <Reference Include="System.Numerics" />
+ <Reference Include="System.Numerics.Vectors" />
<Reference Include="System.Web.Services" />
<Reference Include="Shared.IOS.TBL">
<HintPath>..\DLL\Shared.IOS.TBL.dll</HintPath>
@@ -118,10 +120,16 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json">
- <Version>13.0.3</Version>
+ <Version>13.0.1</Version>
</PackageReference>
<PackageReference Include="MQTTnet">
<Version>3.1.0</Version>
+ </PackageReference>
+ <PackageReference Include="Microsoft.AppCenter.Analytics">
+ <Version>4.4.0</Version>
+ </PackageReference>
+ <PackageReference Include="Microsoft.AppCenter.Crashes">
+ <Version>4.4.0</Version>
</PackageReference>
<PackageReference Include="ZXing.Net.Mobile">
<Version>2.4.1</Version>
@@ -439,6 +447,20 @@
<ImageAsset Include="Assets.xcassets\wifi_bg.imageset\wifi_bg.png" />
<ImageAsset Include="Assets.xcassets\device_bg.imageset\Contents.json" />
<ImageAsset Include="Assets.xcassets\device_bg.imageset\device_bg.png" />
+ <ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\12422688.png" />
+ <ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\8281792.png" />
+ <ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\26881242.png" />
+ <ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\1792828.png" />
+ <ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\11252436.png" />
+ <ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\24361125.png" />
+ <ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\640960.png" />
+ <ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\6401136.png" />
+ <ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\320480.png" />
+ <ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\640960-1.png" />
+ <ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\6401136-1.png" />
+ <ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\12422208.png" />
+ <ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\7501334.png" />
+ <ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\22081242.png" />
<ImageAsset Include="Resources\Assets.xcassets\Contents.json" />
<ImageAsset Include="Resources\Assets.xcassets\launchIcon2.imageset\Contents.json" />
<ImageAsset Include="Resources\Assets.xcassets\launchIcon2.imageset\launchIcon2.png" />
@@ -1566,7 +1588,6 @@
<BundleResource Include="Resources\Phone\FunctionIcon\Icon\securitydoorezviz.png" />
<BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\VideoDoorlockClose1.png" />
<BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\VideoDoorLockOpen1.png" />
- <BundleResource Include="Resources\Phone\LogicIcon\selectlocation.png" />
</ItemGroup>
<ItemGroup>
<ITunesArtwork Include="iTunesArtwork" />
@@ -1588,6 +1609,8 @@
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\58x58-1.png" />
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\40x40-2.png" />
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\80x80-1.png" />
+ <ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\.DS_Store" />
+ <ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\Contents.json" />
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\1024.png" />
</ItemGroup>
<ItemGroup>
diff --git a/HDL-ON_iOS/Info.plist b/HDL-ON_iOS/Info.plist
index 6313305..d45f503 100644
--- a/HDL-ON_iOS/Info.plist
+++ b/HDL-ON_iOS/Info.plist
@@ -11,7 +11,7 @@
<key>CFBundleName</key>
<string>On Pro</string>
<key>CFBundleShortVersionString</key>
- <string>1.7.6</string>
+ <string>1.8.0</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
@@ -36,7 +36,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
- <string>1.7.6</string>
+ <string>1.8.0</string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>weixinULAPI</string>
diff --git a/HDL-ON_iOS/Resources/Language.ini b/HDL-ON_iOS/Resources/Language.ini
index 5edc896..9b3e021 100644
--- a/HDL-ON_iOS/Resources/Language.ini
+++ b/HDL-ON_iOS/Resources/Language.ini
@@ -1149,6 +1149,9 @@
7166=Camera
7167=Main switch
7168=PM10
+7169=Time of duration
+7170=Human presence detection
+7171=continue
8501=Video door lock
8502=Electric quantity
@@ -2432,6 +2435,10 @@
7166=鎽勫儚澶�
7167=鎬绘帶寮�鍏�
7168=PM10
+7169=鎸佺画鏃堕棿
+7170=浜轰綋瀛樺湪妫�娴�
+7171=鎸佺画
+
8501=瑙嗛闂ㄩ攣
@@ -3711,6 +3718,9 @@
7166=Camera
7167=Main switch
7168=PM10
+7169=Time of duration
+7170=Human presence detection
+7171=continue
8501=Video door lock
8502=Electric quantity
@@ -4985,6 +4995,9 @@
7166=Camera
7167=Main switch
7168=PM10
+7169=Time of duration
+7170=Human presence detection
+7171=continue
8501=Video door lock
8502=Electric quantity
@@ -6258,6 +6271,9 @@
7166=Camera
7167=Main switch
7168=PM10
+7169=Time of duration
+7170=Human presence detection
+7171=continue
8501=Video door lock
8502=Electric quantity
diff --git a/HDL-ON_iOS/ViewController.cs b/HDL-ON_iOS/ViewController.cs
index 7b984a0..52dee5d 100644
--- a/HDL-ON_iOS/ViewController.cs
+++ b/HDL-ON_iOS/ViewController.cs
@@ -26,7 +26,7 @@
{
base.ViewDidLoad();
- HDL_ON.MainPage.ShowAsync();
+ HDL_ON.MainPage.Show();
try
{
diff --git a/HDL_ON/Common/ApiUtlis.cs b/HDL_ON/Common/ApiUtlis.cs
index ae98d39..5980873 100644
--- a/HDL_ON/Common/ApiUtlis.cs
+++ b/HDL_ON/Common/ApiUtlis.cs
@@ -78,7 +78,10 @@
public void DownloadData()
{
if (MainPage.InternetStatus == 0 || MainPage.NoLoginMode)
+ {
+ DownloadDataComplete = true;
return;
+ }
endTime1 = DateTime.Now.AddSeconds(25);
complateDevice = complateScene = false;
diff --git a/HDL_ON/Common/R.cs b/HDL_ON/Common/R.cs
index 1d4c2ab..971b2ab 100644
--- a/HDL_ON/Common/R.cs
+++ b/HDL_ON/Common/R.cs
@@ -3238,6 +3238,19 @@
/// PM210
/// </summary>
public const int pm10 = 7168;
+ /// <summary>
+ /// 鎸佺画鏃堕棿
+ /// </summary>
+ public const int chixushijian = 7169;
+ /// <summary>
+ /// 浜轰綋瀛樺湪妫�娴�
+ /// </summary>
+ public const int rentijiance = 7170;
+ /// <summary>
+ /// 鎸佺画
+ /// </summary>
+ public const int chixu = 7171;
+
/// <summary>
/// 瑙嗛闂ㄩ攣
diff --git a/HDL_ON/DAL/Mqtt/MqttClient.cs b/HDL_ON/DAL/Mqtt/MqttClient.cs
index d5cd85e..b6be181 100644
--- a/HDL_ON/DAL/Mqtt/MqttClient.cs
+++ b/HDL_ON/DAL/Mqtt/MqttClient.cs
@@ -683,7 +683,7 @@
}
catch (Exception ex)
{
- Utlis.WriteLine($"error:" + ex.Message);
+ Utlis.WriteLine($"mqtt杩炴帴寮傚父 error:" + ex.Message);
//mqtt杩炴帴寮傚父锛屾竻绌烘湰鍦癿qtt淇℃伅锛屽彲鑳介渶瑕侀噸鏂拌幏鍙栵細wxr
MqttInfoConfig.Current.Refresh();
}
diff --git a/HDL_ON/Entity/Function/Function.cs b/HDL_ON/Entity/Function/Function.cs
index 6e468e9..171de78 100644
--- a/HDL_ON/Entity/Function/Function.cs
+++ b/HDL_ON/Entity/Function/Function.cs
@@ -1681,6 +1681,10 @@
/// </summary>
public const string SensorPir = "sensor.pir";
/// <summary>
+ /// 浜轰綋瀛樺湪浼犳劅鍣�
+ /// </summary>
+ public const string SensorPirHold = "sensor.pir_hold";
+ /// <summary>
/// 锛堥棬绐椾紶鎰熷櫒锛�
/// </summary>
public const string SensorDoorWindow = "sensor.doorwindow";
@@ -1735,6 +1739,7 @@
var spkList = new List<string>();
//spkList.Add(SensorLight);
spkList.Add(SensorPir);
+ spkList.Add(SensorPirHold);
spkList.Add(SensorHelp);
spkList.Add(SensorDoorWindow);
spkList.Add(SensorSmoke);
diff --git a/HDL_ON/Entity/Function/SecurityAlarm.cs b/HDL_ON/Entity/Function/SecurityAlarm.cs
index 4ff0b58..1ddb0b9 100644
--- a/HDL_ON/Entity/Function/SecurityAlarm.cs
+++ b/HDL_ON/Entity/Function/SecurityAlarm.cs
@@ -336,6 +336,7 @@
}
break;
case SPK.SensorPir:
+ case SPK.SensorPirHold:
if (inputValue == "true")
{
text += Language.StringByID(StringId.youren) + " ";
@@ -394,6 +395,7 @@
}
break;
case SPK.SensorPir:
+ case SPK.SensorPirHold:
foreach (var con in condition)
{
if (con.value == "true")
diff --git a/HDL_ON/Entity/FunctionList.cs b/HDL_ON/Entity/FunctionList.cs
index bb14283..cf7a775 100644
--- a/HDL_ON/Entity/FunctionList.cs
+++ b/HDL_ON/Entity/FunctionList.cs
@@ -258,6 +258,7 @@
var spkList = new List<string>()
{
SPK.SensorPir,
+ SPK.SensorPirHold,
SPK.SensorDoorWindow,
SPK.SensorSmoke,
SPK.SensorWater,
diff --git a/HDL_ON/UI/MainPage.cs b/HDL_ON/UI/MainPage.cs
index 4f1d9af..c9bf8be 100644
--- a/HDL_ON/UI/MainPage.cs
+++ b/HDL_ON/UI/MainPage.cs
@@ -454,7 +454,8 @@
addResidencePage.LoadView();
return;
}
- new System.Threading.Thread(async () =>
+
+ new System.Threading.Thread(() =>
{
try
{
diff --git a/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs b/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
index 3c7a086..32da33a 100644
--- a/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
+++ b/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
@@ -166,6 +166,7 @@
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
break;
case SPK.SensorPir:
+ case SPK.SensorPirHold:
var pirPage = new SensorPirPage();
pirPage.ShowColltionButton = false;
pirPage.AddForm(function, btnCollectionIcon, btnName, btnFromFloor);
diff --git a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
index 4f2d2b4..0c52ed6 100644
--- a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
+++ b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -455,7 +455,8 @@
};
btnPm25Values.Width = btnPm25Values.GetTextWidth();
environmentalView.AddChidren(btnPm25Values);
-#endregion
+ #endregion
+
btnSecurityStatus = new Button()
{
@@ -604,9 +605,9 @@
TextAlignment = TextAlignment.Center,
};
changeView.AddChidren(btnChangeScene);
-#endregion
+ #endregion
-#region ContextView
+ #region ContextView
contentView = new PageLayout()
{
//Y = changeView.Bottom,
@@ -619,7 +620,7 @@
LoadContentView();
-#endregion
+ #endregion
}
catch (Exception ex)
{
@@ -633,6 +634,7 @@
/// </summary>
void LoadContentView()
{
+
if (!Common.ApiUtlis.Ins.DownloadDataComplete && !MainPage.NoLoginMode)
{
var waitPage = new Loading();
diff --git a/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs b/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
index 5c82a1c..3bf20a9 100644
--- a/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
+++ b/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
@@ -818,6 +818,10 @@
/// </summary>
void GetUnreadPushMessages()
{
+ if (MainPage.NoLoginMode)
+ {
+ return;
+ }
System.Threading.Tasks.Task.Run(() =>
{
try
@@ -922,6 +926,10 @@
/// </summary>
void RegisterGetPushMessageAction()
{
+ if (MainPage.NoLoginMode)
+ {
+ return;
+ }
Action RegisterGetPushMessageAction = () => {
if (bodyView != null)
{
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
index 0cf91cc..32a9a61 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
@@ -36,6 +36,12 @@
/// 鍙瀵硅涓撶敤
/// </summary>
private string identifier;
+ /// <summary>
+ /// 浜轰綋浼犳劅鍣ㄦ寔缁椂闂翠笓鐢�
+ /// </summary>
+ private string hold_time=string.Empty;
+
+
private static ConditionDeviceFunList m_Current = null;
@@ -184,6 +190,59 @@
if (edit)
{
GetEditState(device, index, view.btnState, null, null, null);
+ }
+ }
+ break;
+ //浜轰綋瀛樺湪浼犳劅鍣�
+ case SPK.SensorPirHold:
+ {
+
+
+ LogicView.FunTypeView view1 = new LogicView.FunTypeView();
+ view1.btnText.TextID = StringId.rentijiance;
+ view1.btnText.Name = Language.StringByID(StringId.rentijiance);
+ fLayout.AddChidren(view1.FLayoutView());
+ view1.btnClick.MouseUpEventHandler += (sender, e) =>
+ {
+ DeviceView(device, view1.btnState, StringId.youren, StringId.wuren);
+
+ };
+
+ LogicView.FunTypeView view2 = new LogicView.FunTypeView();
+ view2.frameLayout.Y = view1.frameLayout.Bottom;
+ view2.btnText.TextID = StringId.chixushijian;
+ fLayout.AddChidren(view2.FLayoutView());
+ view2.btnClick.MouseUpEventHandler += (sender, e) =>
+ {
+ //涓荤晫闈㈡帶浠�
+ FrameLayout fLayout = new FrameLayout
+ {
+ BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
+ };
+ this.AddChidren(fLayout);
+ TimeView(fLayout, device, view2.btnState);
+
+ };
+
+
+ if (edit)
+ {
+ try
+ {
+ Input inputs = Logic.currlogic.input[index];
+ if (!string.IsNullOrEmpty(inputs.hold_time) && int.Parse(inputs.hold_time) > 0)
+ {
+ int time = int.Parse(inputs.hold_time);
+ int h = time / (60 * 60);
+ int m = time % (60 * 60) / 60;
+ int s = (time % (60 * 60) % 60);
+ view2.btnState.Text = inputs.hold_time + "s";
+ view2.btnState.Name = h + ":" + m + ":" + s;
+ this.hold_time = inputs.hold_time;
+ }
+ }
+ catch { }
+ GetEditState(device, index, view1.btnState, view2.btnState, null, null);
}
}
break;
@@ -694,6 +753,11 @@
inputDevice.condition_type = "9";
inputDevice.identifier = this.identifier;
}
+ else if (device.spk == SPK.SensorPirHold)
+ {
+ //浜轰綋瀛樺湪浼犳劅鍣�
+ inputDevice.hold_time = this.hold_time;
+ }
if (edit)
@@ -737,6 +801,7 @@
}
}
+
/// <summary>
/// 璁惧閫夋嫨鏉′欢鐣岄潰
/// </summary>
@@ -779,6 +844,7 @@
}
}
break;
+ case SPK.SensorPirHold:
case SPK.SensorDuiShe:
case SPK.SensorShanLan:
case SPK.SensorPir:
@@ -1191,6 +1257,43 @@
}
/// <summary>
+ /// 鏃堕棿鏂规硶
+ /// </summary>
+ /// <param name="fLayout">鍦ㄥ摢涓晫闈㈡樉绀�</param>
+ /// <param name="edit">锛坱rue=缂栬緫锛沠alse=鏂板缓锛�</param>
+ /// <param name="index">缂栬緫鏉′欢鐨勭储寮�</param>
+ private void TimeView(FrameLayout fLayout,Function device, Button button)
+ {
+
+ LogicView.TimeView timePointView = new LogicView.TimeView();
+ timePointView.FLayoutView(fLayout);
+ timePointView.Time(fLayout, button.Name, (timeValue) =>
+ {
+ try
+ {
+ if (timeValue.Contains(":"))
+ {
+ string[] ary = timeValue.Split(':');
+
+ int h = int.Parse(ary[0]) * 60 * 60;
+ int m = int.Parse(ary[1]) * 60;
+ int s = int.Parse(ary[2]);
+ this.hold_time = (h + m + s).ToString();
+ if (button != null)
+ {
+ button.Text = this.hold_time + "s";
+ button.Name = timeValue;
+ }
+ selectedState = device.spk + "_" + timeValue;
+ }
+ }
+ catch { }
+
+ });
+
+ }
+
+ /// <summary>
/// 鏄剧ず缂栬緫涔嬪墠鐨勮澶囩姸鎬�
/// </summary>
/// <param name="device">缂栬緫璁惧</param>
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
index 7055171..014f3bb 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
@@ -247,7 +247,7 @@
{
inputView.btnState.Text = Language.StringByID(StringId.kaiqi);
}
-
+
}
break;
case SPK.SensorUtrasonic:
@@ -307,12 +307,14 @@
{
string value = this.GetValue(dicList);
inputView.btnState.Text = Language.StringByID(StringId.wuren);
- if (value == "fall") {
+ if (value == "fall")
+ {
inputView.btnState.Text = Language.StringByID(StringId.diedao);
}
}
break;
- case SPK.SensorEnvironment:case SPK.SensorEnvironmentHailin:
+ case SPK.SensorEnvironment:
+ case SPK.SensorEnvironmentHailin:
case SPK.SensorEnvironment2:
case SPK.SensorEnvironment3:
{
@@ -376,7 +378,7 @@
case SPK.SensorTemperature:
{
- string str =this.GetText(dicList, "temperature");
+ string str = this.GetText(dicList, "temperature");
inputView.btnState.Text = str;
}
break;
@@ -451,7 +453,7 @@
}
-
+
}
inputView.btnState.Text = s;
}
@@ -462,7 +464,32 @@
{
inputView.btnState.Text = Language.StringByID(StringId.quyuruqingaojing);
}
-
+
+ }
+ break;
+ case SPK.SensorPirHold:
+ {
+ string value = this.GetKeyValue("people_status", dicList);
+ if (string.IsNullOrEmpty(value))
+ {
+ inputView.btnState.Text = inputCondition.hold_time + "s";
+ break;
+
+ }
+
+ inputView.btnState.Text = Language.StringByID(StringId.wuren);
+ if (value == "true")
+ {
+ inputView.btnState.Text = Language.StringByID(StringId.youren);
+
+ }
+ if (!string.IsNullOrEmpty(inputCondition.hold_time) && int.Parse(inputCondition.hold_time) > 0)
+ {
+
+ inputView.btnState.Text += "鎸佺画" + inputCondition.hold_time + "s";
+ }
+
+
}
break;
}
@@ -1978,6 +2005,7 @@
}
}
break;
+
case SPK.SensorGas:
case SPK.SensorSmoke:
{
@@ -2046,6 +2074,23 @@
}
}
break;
+ case SPK.SensorPirHold:
+ {
+ foreach (var dic in dicList)
+ {
+ string value = dic["value"];
+ if (value == "true")
+ {
+ button1.Text = Language.StringByID(StringId.youren);
+ }
+ else
+ {
+ button1.Text = Language.StringByID(StringId.wuren);
+ }
+ }
+
+ }
+ break;
case SPK.SensorDoorWindow:
{
foreach (var dic in dicList)
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/Logic.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/Logic.cs
index 370900f..e043cf8 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/Logic.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/Logic.cs
@@ -106,6 +106,10 @@
/// condition_type=9鏃朵娇鐢�
/// </summary>
public string identifier = "";
+ /// <summary>
+ /// 浜轰綋绉诲姩浼犳劅鍣紙甯︽寔缁椂闂达級
+ /// </summary>
+ public string hold_time = "";
public List<Dictionary<string, string>> condition = new List<Dictionary<string, string>>();
/// <summary>
/// 鍦扮悊鍥存爮閰嶇疆
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
index 9ed7f66..4cd73dc 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
@@ -356,7 +356,7 @@
{
return "MusicIcon/localMusic.png";
}
- else if (SPK.SensorPm10 == device.spk)
+ else if (SPK.SensorPm10 == device.spk || SPK.SensorPirHold == device.spk)
{
return "LogicIcon/sensor.png";
}
@@ -467,6 +467,8 @@
case SPK.SensorTVOC:
case SPK.SensorHcho:
case SPK.SensorHelp:
+ case SPK.SensorPirHold:
+
{
strPath = "LogicIcon/sensor.png";
}
@@ -562,6 +564,7 @@
|| device.spk == SPK.SensorHcho
|| device.spk == SPK.SensorHelp
|| device.spk == SPK.SensorPm10
+ || device.spk == SPK.SensorPirHold
);
if (sensor != null)
{
@@ -686,6 +689,7 @@
functionTypeList.Add(SPK.SensorHcho);
functionTypeList.Add(SPK.SensorHelp);
functionTypeList.Add(SPK.SensorPm10);
+ functionTypeList.Add(SPK.SensorPirHold);
}
@@ -781,6 +785,7 @@
functionTypeList.Add(SPK.SensorPm10);
functionTypeList.Add(SPK.VideoDoorLock);
functionTypeList.Add(SPK.AcIr);
+ functionTypeList.Add(SPK.SensorPirHold);
}
@@ -842,6 +847,7 @@
deviceTypeList.Add(SPK.SensorPm10);
deviceTypeList.Add(SPK.VideoDoorLock);
deviceTypeList.Add(SPK.AcIr);
+ deviceTypeList.Add(SPK.SensorPirHold);
}
break;
@@ -1186,7 +1192,7 @@
// new Entity.Function { sid = "1234567892", name = "婀垮害浼犳劅鍣�", spk = Entity.SPK.SensorHumidity },
//new Entity.Function { sid = "12345678933456", name = "闂ㄩ攣", spk = Entity.SPK.DoorLock },
// new Entity.Function { sid = "1234567895444", name = "瑙嗛闂ㄩ攣", spk = Entity.SPK.VideoDoorLock },
- new Entity.Function { sid = "12345678968888", name = "pm10", spk = Entity.SPK.LightDimming },
+ new Entity.Function { sid = "12345678968888", name = "浜轰綋瀛樺湪浼犳劅鍣�", spk = Entity.SPK.SensorPirHold },
// new Entity.Function { sid = "1234567897", name = "姣背娉紶鎰熷櫒1", spk = Entity.SPK.SenesorMegahealth2 },
// new Entity.Function { sid = "1234567899", name = "闂ㄧ浼犳劅鍣�", spk = Entity.SPK.SensorDoorWindow },
// new Entity.Function { sid = "12345678991234", name = "HDL鏈烘鎵�", spk = Entity.SPK.MechanicalArm },
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TimeView.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TimeView.cs
index a79324c..b45c5ae 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TimeView.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TimeView.cs
@@ -81,7 +81,7 @@
frameLayout.AddChidren(btnLine);
}
/// <summary>
- /// 閫変腑鏃堕棿鐨勬柟娉�
+ /// 閫変腑鏃堕棿鐨勬柟娉�(鏃讹紝鍒�)
/// </summary>
/// <param name="fLayout">鐖舵帶浠�</param>
/// <param name="currState">涔嬪墠鐘舵�佸��</param>
@@ -156,6 +156,120 @@
string hour = GethStringList()[index1].Split(' ')[0];
string minuet = GetmStringList()[index2].Split(' ')[0];
timepoint = hour + ":" + minuet;
+ };
+ //纭畾鐐瑰嚮浜嬩欢
+ btnConfirm.MouseUpEventHandler += (sender, e3) =>
+ {
+ action(timepoint);
+ //绉婚櫎fLayout鐣岄潰
+ fLayout.RemoveFromParent();
+
+ };
+ }
+ /// <summary>
+ /// 閫変腑鏃堕棿鐨勬柟娉�(鏃讹紝鍒嗭紝绉�)
+ /// </summary>
+ /// <param name="fLayout">鐖舵帶浠�</param>
+ /// <param name="currState">涔嬪墠鐘舵�佸��</param>
+ /// <param name="action">杩斿洖鏃堕棿鍊�</param>
+ public void Time(FrameLayout fLayout, string currState, Action<string> action)
+ {
+ //鍙栨秷鐐瑰嚮浜嬩欢
+ btnCancel.MouseUpEventHandler += (sender, e1) =>
+ {
+ //绉婚櫎fLayout鐣岄潰
+ fLayout.RemoveFromParent();
+ };
+ //鍔犺浇鏁版嵁鐣岄潰鐨勮缃柟娉�(鍒楄〃浜掍笉鑱斿姩)
+ mUIPickerView.setNPicker(GethStringList(), GetmStringList(), GetsStringList());
+ var systemHour = DateTime.Now.Hour; //鑾峰彇灏忔椂
+ var systeMinute = DateTime.Now.Minute;//鑾峰彇鍒嗛挓
+ var systeSecond = DateTime.Now.Second;//鑾峰彇绉�
+
+ int systemHourIndex = 0;
+ int systeMinuteIndex = 0;
+ int systeSecondIndex = 0;
+ for (int i = 0; i < GethIntList().Count; i++)
+ {
+ var currhour = GethIntList()[i];
+ if (systemHour == currhour)
+ {
+ systemHourIndex = i;
+ break;
+ }
+ }
+ for (int i = 0; i < GetmIntList().Count; i++)
+ {
+ var currminute = GetmIntList()[i];
+ if (systeMinute == currminute)
+ {
+ systeMinuteIndex = i;
+ break;
+ }
+ }
+ for (int i = 0; i < GetsIntList().Count; i++)
+ {
+ var currsecond= GetsIntList()[i];
+ if (systeSecond == currsecond)
+ {
+ systeSecondIndex = i;
+ break;
+ }
+ }
+
+ //榛樿鍒濆閫変腑鐘舵��
+ mUIPickerView.setCurrentItems(systemHourIndex, systeMinuteIndex, systeSecondIndex);
+ string currH = "";
+ string currM = "";
+ string currS = "";
+ if (systemHour < 10)
+ {
+ currH = "0" + systemHour.ToString();
+ }
+ else
+ {
+ currH = systemHour.ToString();
+ }
+ if (systeMinute < 10)
+ {
+ currM = "0" + systeMinute.ToString();
+ }
+ else
+ {
+ currM = systeMinute.ToString();
+ }
+ if (systeSecond < 10)
+ {
+ currS = "0" + systeMinute.ToString();
+ }
+ else
+ {
+ currS = systeMinute.ToString();
+ }
+ //瀹氫箟涓�涓眬閮ㄥ彉閲忚褰曢�変腑鏃堕棿
+ string timepoint = currH + ":" + currM + ":" + currS;
+ if (!string.IsNullOrEmpty(currState))
+ {
+ int hIndex = GetValueIndex(currState, 0, 1, GethIntList());
+ int mIndex = GetValueIndex(currState, 1, 0, GetmIntList());
+ int sIndex = GetValueIndex(currState, 2, 0, GetsIntList());
+ //鏇存柊鍒濆鐘舵��
+ mUIPickerView.setCurrentItems(hIndex, mIndex, sIndex);
+ timepoint = currState;
+ }
+
+
+ //閫変腑鏃堕棿鍥炶皟鏂规硶,鏃堕棿鍙樺寲涓�娆″洖璋冧竴娆�
+ mUIPickerView.OnSelectChangeEvent += (index1, index2, index3) =>
+ {
+ try
+ {
+ string hour = GethStringList()[index1].Split(' ')[0];
+ string minuet = GetmStringList()[index2].Split(' ')[0];
+ string second = GetmStringList()[index3].Split(' ')[0];
+ timepoint = hour + ":" + minuet + ":" + second;
+ }
+ catch { }
};
//纭畾鐐瑰嚮浜嬩欢
btnConfirm.MouseUpEventHandler += (sender, e3) =>
@@ -306,7 +420,22 @@
}
return mList;
}
-
+ /// <summary>
+ /// 鑾峰彇60绉掑垪琛�
+ /// </summary>
+ /// <returns></returns>
+ public List<int> GetsIntList()
+ {
+ //鍒濆鍖栧垪琛�
+ var mList = new List<int>();
+ for (int i = 0; i < 60; i++)
+ {
+ //娣诲姞鏁版嵁
+ mList.Add(i);
+ }
+ return mList;
+ }
+
/// <summary>
/// 鑾峰彇鏃堕棿鍊�
/// </summary>
@@ -317,6 +446,10 @@
/// <returns></returns>
public int GetValueIndex(string str, int digit, int startIndex, List<int> list)
{
+ if (string.IsNullOrEmpty(str))
+ {
+ return 0;
+ }
int index = 0;
int value = 0;
if (str.Contains(":"))
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs
index 98e5cd6..84ea1a0 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs
@@ -366,6 +366,7 @@
//2-鍔熻兘鍥炬爣
//3-浜戠鍥炬爣
//4-鍦烘櫙鍥炬爣
+ //5-鍦扮悊鍥存爮
for (int i = 0; i < logic.input.Count; i++)
{
if (logic.input[i] == null)
@@ -407,6 +408,7 @@
}
break;
+
}
if (!iconIntValue.Contains(iconInt))
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
index 8ea607a..7274673 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
@@ -114,6 +114,10 @@
{
var inputTypeJOb = new JObject { };
inputTypeJOb.Add("sid", dictionary.sid);
+ if (!string.IsNullOrEmpty(dictionary.hold_time))
+ {
+ inputTypeJOb.Add("hold_time", dictionary.hold_time);
+ }
inputTypeJOb.Add("condition_type", dictionary.condition_type);
if (dictionary.condition_type=="9") {
inputTypeJOb.Add("identifier", dictionary.identifier);
@@ -241,6 +245,10 @@
{
var inputTypeJOb = new JObject { };
inputTypeJOb.Add("sid", dictionary.sid);
+ if (!string.IsNullOrEmpty(dictionary.hold_time))
+ {
+ inputTypeJOb.Add("hold_time", dictionary.hold_time);
+ }
inputTypeJOb.Add("condition_type", dictionary.condition_type);
if (dictionary.condition_type == "9")
{
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
index b70cf7f..60d72bc 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
@@ -167,6 +167,22 @@
public void LoadView()
{
+ //try
+ //{
+ // if (MainPage.CurPageIndex == 3)
+ // {
+ // Application.RunOnMainThread(() =>
+ // {
+ // this.RemoveFromParent();
+ // return;
+ // });
+ // }
+ //}
+ //catch (Exception ex)
+ //{
+ // MainPage.Log($"鐣岄潰鍒囨崲寮傚父:{ex.Message}");
+ //}
+ MainPage.CurPageIndex = 3;
#region 涓汉淇℃伅
topbg = new FrameLayout()
{
diff --git a/HDL_ON/UI/UI2/UserPage.cs b/HDL_ON/UI/UI2/UserPage.cs
index 78690ae..28e34a8 100644
--- a/HDL_ON/UI/UI2/UserPage.cs
+++ b/HDL_ON/UI/UI2/UserPage.cs
@@ -91,7 +91,7 @@
{
try
{
- bodyView = this;
+ bodyView = this;//1
bodyView.BackgroundColor = CSS_Color.MainBackgroundColor;
ContextView = new FrameLayout()
{
@@ -104,12 +104,10 @@
{
Y = Application.GetRealHeight(607),
Height = Application.GetMinRealAverage(60),
- //BackgroundColor = CSS_Color.BackgroundColor
};
bodyView.AddChidren(navigationView);
if (MainPage.Increase)
{
- //ContextView.Height = Application.GetRealHeight(618 + 20);
navigationView.Y = Application.GetRealHeight(597 + 5);
navigationView.Height = Application.GetRealHeight(70 - 5);
}
@@ -117,9 +115,9 @@
LoadEventList();
- var homePage = new HomePage();
- ContextView.AddChidren(homePage);
- homePage.LoadPage();
+ //var homePage = new HomePage();
+ //ContextView.AddChidren(homePage);
+ //homePage.LoadPage();
if (!MainPage.NoLoginMode)
{
diff --git a/HDL_ON/UI/UI2/UserPageBLL.cs b/HDL_ON/UI/UI2/UserPageBLL.cs
index b7c69dd..2dddfeb 100644
--- a/HDL_ON/UI/UI2/UserPageBLL.cs
+++ b/HDL_ON/UI/UI2/UserPageBLL.cs
@@ -12,26 +12,8 @@
void LoadEventList()
{
LoadEvent_NavigationSelection();
- LoadEvent_RefreshData();
}
- /// <summary>
- /// 鍒锋柊浣忓畢鏁版嵁
- /// </summary>
- void LoadEvent_RefreshData()
- {
- //ContextView.BeginHeaderRefreshingAction = () => {
- // if (CurAnimationEffect == 0)
- // {
- // Common.ApiUtlis.Ins.DownloadData();
- // ContextView.RemoveAll();
- // var homePage = new HomePage();
- // ContextView.AddChidren(homePage);
- // homePage.LoadPage();
- // ContextView.EndHeaderRefreshing();
- // }
- //};
- }
/// <summary>
/// 鍔犺浇瀵艰埅鏍忕偣鍑讳簨浠�
diff --git a/SiriIntents/Server/HttpUtil.cs b/SiriIntents/Server/HttpUtil.cs
index 8d4483c..dc7aca0 100644
--- a/SiriIntents/Server/HttpUtil.cs
+++ b/SiriIntents/Server/HttpUtil.cs
@@ -16,8 +16,8 @@
/// 鍥哄畾鍩熷悕,姝e紡鐜
/// 鍏叡鍩熷悕灏辫繎瑙f瀽
/// </summary>
- public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
- //public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";
+ //public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
+ public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";
const string APP_KEY = "HDL-HOME-APP-TEST";
const string SECRET_KEY = "WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss";
//public const string GlobalRequestHttpsHost = "http://59.41.255.150:7777";//mmmm
--
Gitblit v1.8.0