Merge remote-tracking branch 'origin/release0123' into wjc
| | |
| | | 39=Individual |
| | | 40=Log-in failed, incorrect account number or password |
| | | 41=Fail to send the verification code |
| | | 42=Network error |
| | | 42=Disconnected from gateway |
| | | 43=Fail to sign up, please try again. |
| | | 44=Confirm resetting |
| | | 45=The account number does not exist, please make sure it is registered. |
| | |
| | | 541=Monitoring |
| | | 542=Wandering alarm |
| | | 543=Get more |
| | | 544=Angle |
| | | |
| | | |
| | | 1000=Room Humidity |
| | |
| | | 39=个人 |
| | | 40=登录失败,账号或密码错误。 |
| | | 41=验证码发送失败。 |
| | | 42=网络异常 |
| | | 42=与网关断开了连接 |
| | | 43=注册失败,请重试。 |
| | | 44=确认重置 |
| | | 45=账号不存在,请确认账号是否注册。 |
| | |
| | | 541=监控中 |
| | | 542=徘徊报警 |
| | | 543=获取更多 |
| | | 544=角度 |
| | | |
| | | 1000=室内湿度 |
| | | 1001=童锁 |
| | |
| | | 39=Индивидуальный |
| | | 40=Неуспешная авторизация, неверна учетная запись или пароль |
| | | 41=Не удалось отправить проверочный код |
| | | 42=Ошибка сети |
| | | 42=Disconnected from gateway |
| | | 43=Не удалось зарегистрироваться |
| | | 44=Подтвердите сброс |
| | | 45=Учетная запись не существует, проверьте что она зарегистрирована |
| | |
| | | 541=Monitoring |
| | | 542=Wandering alarm |
| | | 543=Get more |
| | | 544=Angle |
| | | |
| | | |
| | | 1000=Влажность в Помещении |
| | |
| | | 39=Individual |
| | | 40=Inicio de sesión fallido, número de cuenta o contraseña incorrectos |
| | | 41=Error al enviar el codigo de verificación |
| | | 42=Error de red |
| | | 42=Disconnected from gateway |
| | | 43=Error en el registo, inténtelo de nuevo |
| | | 44=Confirmar reinicio |
| | | 45=El numero de cuenta no existe, por favor asegúrese de estar registrado |
| | |
| | | 541=Monitoring |
| | | 542=Wandering alarm |
| | | 543=Get more |
| | | 544=Angle |
| | | |
| | | 1000=Humedad de ambiente |
| | | 1001=V-chip |
| | |
| | | <AndroidAsset Include="Assets\Phone\FunctionIcon\Panel\PanelHelpNormalBgIcon.png" /> |
| | | <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\screenpanel.png" /> |
| | | <AndroidAsset Include="Assets\Phone\FunctionIcon\Panel\PanelEnviBg.png" /> |
| | | <AndroidAsset Include="Assets\Phone\FunctionIcon\FloorHeating\EconomicIcon.png" /> |
| | | <AndroidAsset Include="Assets\Phone\FunctionIcon\FloorHeating\EconomicIconGray.png" /> |
| | | <AndroidAsset Include="Assets\Phone\MusicIcon\order.png" /> |
| | | <AndroidAsset Include="Assets\Phone\MusicIcon\single_cycle.png" /> |
| | | <AndroidAsset Include="Assets\Phone\Public\ThumbImage2.png" /> |
| | | </ItemGroup> |
| | | <ItemGroup> |
| | | <AndroidResource Include="Resources\values\colors.xml" /> |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.5.6" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202205241"> |
| | | <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.5.9" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202206291"> |
| | | <uses-sdk android:minSdkVersion="26" android:targetSdkVersion="29" /> |
| | | <!--友盟--> |
| | | <!--<uses-sdk android:minSdkVersion="8"></uses-sdk>--> |
| | |
| | | <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> |
| | | <uses-permission android:name="android.permission.READ_LOGS" /> |
| | | <!-- 极光推送结束 --> |
| | | <application android:allowBackup="true" android:debuggable="false" android:icon="@drawable/Icon" android:networkSecurityConfig="@xml/network_security_config" android:largeHeap="true" android:label="On Pro"> |
| | | <application android:allowBackup="true" android:debuggable="false" android:icon="@drawable/Icon" android:requestLegacyExternalStorage="true" android:networkSecurityConfig="@xml/network_security_config" android:largeHeap="true" android:label="On Pro"> |
| | | <!--/扫描二维码activity--> |
| | | <!--<activity |
| | | android:name="com.journeyapps.barcodescanner.CaptureActivity" |
| | |
| | | { |
| | | base.OnCreate(savedInstanceState); |
| | | |
| | | |
| | | |
| | | //Intent i = new Intent(this, typeof(BaseActivity));//Intent intent=new Intent( 起始组件对象 , 目标 Service.class); |
| | | //StartActivityForResult(i, 1); |
| | | //OverridePendingTransition(0, 0); |
| | |
| | | BaseActivity.KeepScreenON = false; |
| | | //隐藏虚拟按键 |
| | | BaseActivity.IsHideVirualButtons = true; |
| | | |
| | | |
| | | |
| | | //实现安卓返回按键 |
| | | BaseActivity.BackKeyAction = () => |
| | | { |
| | |
| | | Language.CurrentLanguage = "Chinese"; |
| | | Locale locale1 = Locale.Default; |
| | | var localeList = Resources.Configuration.Locale; |
| | | Console.WriteLine("999999999999999999999999999999999999999999999"+ localeList.Language); |
| | | if (localeList.Language == "zh") |
| | | { |
| | | Language.CurrentLanguage = "Chinese"; |
| | |
| | | else if(localeList.Language == "es") |
| | | { |
| | | Language.CurrentLanguage = "Spanish"; |
| | | } |
| | | else if (localeList.Language == "ru") |
| | | { |
| | | Language.CurrentLanguage = "russian"; |
| | | } |
| | | else |
| | | { |
| | |
| | | }; |
| | | BaseActivity.RefreshUIAction = (activity) => |
| | | { |
| | | Language.CurrentLanguage = "Chinese"; |
| | | Locale locale1 = Locale.Default; |
| | | var localeList = Resources.Configuration.Locale; |
| | | Console.WriteLine("999999999999999999999999999999999999999999999" + localeList.Language); |
| | | if (localeList.Language == "zh") |
| | | { |
| | | Language.CurrentLanguage = "Chinese"; |
| | | } |
| | | else if (localeList.Language == "es") |
| | | { |
| | | Language.CurrentLanguage = "Spanish"; |
| | | } |
| | | else if (localeList.Language == "ru") |
| | | { |
| | | Language.CurrentLanguage = "russian"; |
| | | } |
| | | else |
| | | { |
| | | Language.CurrentLanguage = "English"; |
| | | } |
| | | MainPage.Show(); |
| | | checkSomeInfo(); |
| | | }; |
| | |
| | | <BundleResource Include="Resources\Phone\FunctionIcon\Panel\PanelEnviBg.png" /> |
| | | <BundleResource Include="Resources\Phone\MusicIcon\order.png" /> |
| | | <BundleResource Include="Resources\Phone\MusicIcon\single_cycle.png" /> |
| | | <BundleResource Include="Resources\Phone\Public\ThumbImage2.png" /> |
| | | </ItemGroup> |
| | | <ItemGroup> |
| | | <ITunesArtwork Include="iTunesArtwork" /> |
| | |
| | | <key>UIStatusBarStyle</key> |
| | | <string>UIStatusBarStyleLightContent</string> |
| | | <key>CFBundleShortVersionString</key> |
| | | <string>1.5.502205201</string> |
| | | <string>1.5.502206271</string> |
| | | <key>CFBundleVersion</key> |
| | | <string>1.5.505201</string> |
| | | <string>1.5.506271</string> |
| | | <key>NSLocationWhenInUseUsageDescription</key> |
| | | <string>Use geographic location to provide services such as weather</string> |
| | | <key>NSAppleMusicUsageDescription</key> |
| | |
| | | 39=Individual |
| | | 40=Log-in failed, incorrect account number or password |
| | | 41=Fail to send the verification code |
| | | 42=Network error |
| | | 42=Disconnected from gateway |
| | | 43=Fail to sign up, please try again. |
| | | 44=Confirm resetting |
| | | 45=The account number does not exist, please make sure it is registered. |
| | |
| | | 541=Monitoring |
| | | 542=Wandering alarm |
| | | 543=Get more |
| | | 544=Angle |
| | | |
| | | |
| | | 1000=Room Humidity |
| | |
| | | 5015=Bluetooth |
| | | 5016=Line input |
| | | 5017=Revise the name |
| | | 5018=Single loop |
| | | 5018=Single loop |
| | | 5019=Random play |
| | | 5020=List |
| | | 5021=Has shifted to |
| | |
| | | 5047="QQ music" has not installed in your cell phone, please proceed in App center. |
| | | 5048= Progressive cycle |
| | | 5049=Single play |
| | | |
| | | |
| | | 6000=normal |
| | | 6001=Device status |
| | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | 9000=Please sign in with new cell phone number. |
| | | 9001=Please sign in with new email address. |
| | |
| | | 39=个人 |
| | | 40=登录失败,账号或密码错误。 |
| | | 41=验证码发送失败。 |
| | | 42=网络异常 |
| | | 42=与网关断开了连接 |
| | | 43=注册失败,请重试。 |
| | | 44=确认重置 |
| | | 45=账号不存在,请确认账号是否注册。 |
| | |
| | | 541=监控中 |
| | | 542=徘徊报警 |
| | | 543=获取更多 |
| | | 544=角度 |
| | | |
| | | 1000=室内湿度 |
| | | 1001=童锁 |
| | |
| | | 5046=调节音量 |
| | | 5047=你手机暂未安装"QQ音乐"{\r\n}请前往手机商场安装 |
| | | 5048=循序循环 |
| | | 5049=单曲循环 |
| | | 5049=单曲播放 |
| | | |
| | | |
| | | 6000=正常 |
| | |
| | | 39=Индивидуальный |
| | | 40=Неуспешная авторизация, неверна учетная запись или пароль |
| | | 41=Не удалось отправить проверочный код |
| | | 42=Ошибка сети |
| | | 42=Disconnected from gateway |
| | | 43=Не удалось зарегистрироваться |
| | | 44=Подтвердите сброс |
| | | 45=Учетная запись не существует, проверьте что она зарегистрирована |
| | |
| | | 541=Monitoring |
| | | 542=Wandering alarm |
| | | 543=Get more |
| | | 544=Angle |
| | | |
| | | |
| | | 1000=Влажность в Помещении |
| | |
| | | 39=Individual |
| | | 40=Inicio de sesión fallido, número de cuenta o contraseña incorrectos |
| | | 41=Error al enviar el codigo de verificación |
| | | 42=Error de red |
| | | 42=Disconnected from gateway |
| | | 43=Error en el registo, inténtelo de nuevo |
| | | 44=Confirmar reinicio |
| | | 45=El numero de cuenta no existe, por favor asegúrese de estar registrado |
| | |
| | | 541=Monitoring |
| | | 542=Wandering alarm |
| | | 543=Get more |
| | | 544=Angle |
| | | |
| | | 1000=Humedad de ambiente |
| | | 1001=V-chip |
| | |
| | | { |
| | | public static class StringId |
| | | { |
| | | |
| | | /// <summary> |
| | | /// 角度 |
| | | /// </summary> |
| | | public const int Angle = 544; |
| | | /// <summary> |
| | | /// 获取更多 |
| | | /// </summary> |
| | |
| | | } |
| | | if (DB_ResidenceData.Instance.GatewayType == 0) |
| | | { |
| | | new Control_Udp().ControlBytesSend(Command.ReadGateway, 255, 255, new byte[] { (byte)new Random().Next(255), (byte)new Random().Next(255) }); |
| | | new Control_Udp().ControlBytesSend(Command.ReadGateway, 255, 255, |
| | | new byte[] { (byte)new Random().Next(255), (byte)new Random().Next(255) }); |
| | | } |
| | | else if (DB_ResidenceData.Instance.GatewayType == 1) |
| | | { |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | var localFunction = allLocalFuntion.Find((obj) => obj.sid == updateTemp.sid); |
| | | if (localFunction == null) |
| | |
| | | |
| | | /// <summary> |
| | | /// 控制bus场景 |
| | | /// todo |
| | | /// </summary> |
| | | public void ControlBusScenes(Scene scene) |
| | | { |
| | |
| | | |
| | | /// <summary> |
| | | /// 数据包处理 |
| | | /// ps:由commonpage转移过来,还需要转移合适的位置管理 |
| | | /// </summary> |
| | | /// <param name="subnetID"></param> |
| | | /// <param name="deviceID"></param> |
| | |
| | | { |
| | | try |
| | | { |
| | | var securityBytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, DB_ResidenceData.Instance.HomeGateway.aesKey); |
| | | var securityBytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, |
| | | DB_ResidenceData.Instance.HomeGateway.aesKey); |
| | | var securityString = Encoding.UTF8.GetString(securityBytes); |
| | | var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<SecurityStatusObj>(securityString); |
| | | MainPage.Log($"安防状态变化:{securityString}"); |
| | |
| | | MainPage.Log($"mqtt 状态更新:{revString}"); |
| | | Control.Ins.UpdataFunctionStatus(revString, null, true); |
| | | //Control.Ins.MsgInfoList.Add($"mqtt 状态更新:{revString}"); |
| | | |
| | | //Control.Ins.MsgInfoList.Add(revString + "\r\n"); |
| | | } |
| | | //一端口数据解析 |
| | |
| | | |
| | | if (!string.IsNullOrEmpty(DB_ResidenceData.Instance.HomeGateway.aesKey)) |
| | | { |
| | | packet.Bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, DB_ResidenceData.Instance.HomeGateway.aesKey); |
| | | packet.Bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, |
| | | DB_ResidenceData.Instance.HomeGateway.aesKey); |
| | | } |
| | | else |
| | | { |
| | |
| | | /// <summary> |
| | | /// 红外宝下的遥控器列表 |
| | | /// </summary> |
| | | public const string API_POST_Ir_List = ":/home-wisdom/app/device/ir/list"; |
| | | public const string API_POST_Ir_List = "/home-wisdom/app/device/ir/list"; |
| | | /// <summary> |
| | | /// 遥控器红外码学习 |
| | | /// </summary> |
| | |
| | | mHDLCallVideoInfo.DeviceSipAccount = mESVideoInfo.deviceSipAccount; |
| | | InitCallInfo(mHDLCallVideoInfo); |
| | | |
| | | |
| | | |
| | | if (isHdlLinphone) |
| | | { |
| | | //当前呼叫来电的住宅和之前注册登录的住宅一致的情况下 |
| | |
| | | var intent = new Intent(Shared.Application.Activity, typeof(Com.Hdl.Hdllinphonesdk.Activity.HDLLinphoneIntercomActivity)); |
| | | if (mHDLCallVideoInfo != null) |
| | | { |
| | | intent.PutExtra(HDLLinphoneKit.KeyTitleName, mHDLCallVideoInfo.DeviceName); |
| | | //intent.PutExtra(HDLLinphoneKit.KeyTitleName, mHDLCallVideoInfo.DeviceName); |
| | | intent.PutExtra(HDLLinphoneKit.KeyTitleName, mHDLCallVideoInfo.CallId); |
| | | } |
| | | Shared.Application.Activity.StartActivity(intent); |
| | | #endif |
| | |
| | | |
| | | #endregion |
| | | |
| | | /// <summary> |
| | | /// 场景筛选时,选择的房间 |
| | | /// </summary> |
| | | public string sceneChooseRoomId = ""; |
| | | |
| | | |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | public byte timeFlag = 0; |
| | | |
| | | public string GetWrokModeIconPath(string value, bool lighting = true) |
| | | { |
| | | var imagePath = "FunctionIcon/AC/HeatingIcon.png"; |
| | | |
| | | switch (value) |
| | | { |
| | | case "heat": |
| | | imagePath = lighting ? "FunctionIcon/AC/HeatingIcon.png" : "FunctionIcon/AC/HeatingIconGray.png"; |
| | | break; |
| | | case "cool": |
| | | imagePath = lighting ? "FunctionIcon/AC/CoolIcon.png" : "FunctionIcon/AC/CoolIconGray.png"; |
| | | break; |
| | | case "economic": |
| | | imagePath = lighting ? "FunctionIcon/FloorHeating/EconomicIcon.png" : "FunctionIcon/FloorHeating/EconomicIconGray.png"; |
| | | break; |
| | | } |
| | | |
| | | return imagePath; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取模式的icon路径 |
| | | /// <param name="lightingIcon">获取的图标类型,默认是点亮</param> |
| | |
| | | switch (key) |
| | | { |
| | | case "pm2.5": |
| | | |
| | | // |
| | | break; |
| | | } |
| | | } |
| | |
| | | |
| | | public string loopId; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// Tag 功能SPK |
| | | /// </summary> |
| | | public static class SPK |
| | | { |
| | | /// <summary> |
| | | /// 门锁 |
| | | /// </summary> |
| | | public const string DoorLock = "security.door"; |
| | | |
| | | /// <summary> |
| | | /// 门锁spk列表 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public static List<string> GetDoorLockSPKList() |
| | | { |
| | | var list = new List<string>(); |
| | |
| | | /// (卷帘) |
| | | /// </summary> |
| | | public const string CurtainRoller = "curtain.roller"; |
| | | /// <summary> |
| | | /// 梦幻帘 |
| | | /// </summary> |
| | | public const string CurtainDream = "curtain.dream"; |
| | | |
| | | /// <summary> |
| | | /// 窗帘spk列表 |
| | |
| | | spkList.Add(CurtainSwitch); |
| | | spkList.Add(CurtainShades); |
| | | spkList.Add(CurtainTrietex); |
| | | spkList.Add(CurtainDream); |
| | | return spkList; |
| | | } |
| | | #endregion |
| | |
| | | public int min = 0; |
| | | |
| | | /// <summary> |
| | | /// 属性的值列表 |
| | | /// </summary> |
| | | public List<string> valueList = new List<string>(); |
| | | /// <summary> |
| | | /// 属性名称显示文本 |
| | | /// 中英文显示 |
| | | /// </summary> |
| | |
| | | case FunctionAttributeKey.FadeTime: |
| | | text = Language.StringByID(StringId.FadeSpeed); |
| | | break; |
| | | case "angle": |
| | | text = Language.StringByID(StringId.Angle); |
| | | break; |
| | | } |
| | | return text; |
| | | } |
| | |
| | | { |
| | | if (function.spk.Replace(".", "").Contains(attrKey.key.Replace(".", ""))) |
| | | { |
| | | if (string.IsNullOrEmpty(attrKey.unit)) |
| | | if (!string.IsNullOrEmpty(attrKey.unit)) |
| | | return attrKey.unit; |
| | | } |
| | | } |
| | |
| | | <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\ContentView\FhContentView.cs" />
|
| | | <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\ContentView\AcContentView.cs" />
|
| | | <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Video\WanderingAlarmPage.cs" />
|
| | | <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Curtain\CurtainDreamPage.cs" />
|
| | | </ItemGroup>
|
| | | <ItemGroup>
|
| | | <Folder Include="$(MSBuildThisFileDirectory)Entity\Device\" />
|
| | |
| | | /// <summary> |
| | | /// 版本号 |
| | | /// </summary> |
| | | public static string VersionString = "1.5.6"; |
| | | public static string VersionString = "1.5.9"; |
| | | ///// <summary> |
| | | ///// 客户端类型 |
| | | ///// </summary> |
| | |
| | | /// </summary> |
| | | public static List<string> SceneSupportFunctionList = new List<string> { |
| | | SPK.LightCCT,SPK.LightDimming,SPK.LightSwitch,SPK.LightRGB, |
| | | SPK.CurtainRoller,SPK.CurtainSwitch,SPK.CurtainTrietex, |
| | | SPK.CurtainRoller,SPK.CurtainSwitch,SPK.CurtainTrietex,SPK.CurtainDream, |
| | | SPK.AcIr,SPK.AcStandard,SPK.HvacAC, |
| | | SPK.FloorHeatStandard,SPK.HvacFloorHeat, |
| | | SPK.AirFreshStandard,SPK.HvacAirFresh, |
| | |
| | | rollingShutterView.LoadPage(btnCollectionIcon, btnName, btnFromFloor); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | break; |
| | | case SPK.CurtainDream: |
| | | var curtainDreamView = new CurtainDreamPage(function); |
| | | MainPage.BasePageView.AddChidren(curtainDreamView); |
| | | curtainDreamView.LoadPage(btnCollectionIcon, btnName, btnFromFloor); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | break; |
| | | case SPK.FloorHeatStandard: |
| | | case SPK.HvacFloorHeat: |
| | | var fhView = new FloorHeatingPage(function); |
| | |
| | | |
| | | |
| | | #if DEBUG |
| | | FunctionList.List.Functions.Add(new Function |
| | | { |
| | | name = "测试梦幻窗帘", |
| | | spk = SPK.CurtainDream, |
| | | sid = "1234577", |
| | | attributes = new List<FunctionAttributes> { |
| | | new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" }, |
| | | new FunctionAttributes(){ key = "percent",curValue= "100",state = "100" }, |
| | | new FunctionAttributes(){ key = "angle",curValue= "0",state = "0" }, |
| | | } |
| | | }); |
| | | |
| | | //FunctionList.List.Functions.Add(new Function |
| | | //{ |
| | |
| | | // }, |
| | | //}); |
| | | |
| | | FunctionList.List.Functions.Add(new Function() |
| | | { |
| | | spk = SPK.SensorPm25, |
| | | name = "测试Pm2.5", |
| | | attributes = new List<FunctionAttributes>() |
| | | { |
| | | new FunctionAttributes(){ key = "pm25",curValue= "70",state = "70" }, |
| | | }, |
| | | attrKeyConfigs = new List<AttrKeyConfig>() |
| | | { |
| | | new AttrKeyConfig (){ |
| | | key = "pm2.5", |
| | | type = "interval" , |
| | | unit = "ug/m²", |
| | | configs = new List<AttrKeyInfo>(){ |
| | | new AttrKeyInfo(){ start = "0",end = "75",color = "0xFFADE764", desc = "良好"}, |
| | | new AttrKeyInfo(){ start = "76",end = "150",color = "0xFFFFD154",desc = "轻/中度污染"}, |
| | | new AttrKeyInfo(){ start = "151",end = "500",color = "0xFFFF9D54",desc = "重度/严重污染"}, |
| | | } |
| | | } |
| | | }, |
| | | }); |
| | | //FunctionList.List.Functions.Add(new Function() |
| | | //{ |
| | | // spk = SPK.SensorPm25, |
| | | // name = "测试Pm2.5", |
| | | // attributes = new List<FunctionAttributes>() |
| | | // { |
| | | // new FunctionAttributes(){ key = "pm25",curValue= "70",state = "70" }, |
| | | // }, |
| | | // attrKeyConfigs = new List<AttrKeyConfig>() |
| | | // { |
| | | // new AttrKeyConfig (){ |
| | | // key = "pm2.5", |
| | | // type = "interval" , |
| | | // unit = "ug/m²", |
| | | // configs = new List<AttrKeyInfo>(){ |
| | | // new AttrKeyInfo(){ start = "0",end = "75",color = "0xFFADE764", desc = "良好"}, |
| | | // new AttrKeyInfo(){ start = "76",end = "150",color = "0xFFFFD154",desc = "轻/中度污染"}, |
| | | // new AttrKeyInfo(){ start = "151",end = "500",color = "0xFFFF9D54",desc = "重度/严重污染"}, |
| | | // } |
| | | // } |
| | | // }, |
| | | //}); |
| | | |
| | | //FunctionList.List.Functions.Add(new Function() |
| | | //{ |
| | |
| | | }; |
| | | view.AddChidren(btnIcon); |
| | | |
| | | |
| | | btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_blue.png"; |
| | | btnIcon.SelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png"; |
| | | |
| | | |
| | | Button btnName; |
| | | btnName = new Button() |
| | |
| | | LoadEvent_FunctionCollection(btnCollection, function); |
| | | if (//SPK.CurtainSpkList().Contains(function.spk)) |
| | | function.spk == SPK.CurtainRoller || function.spk == SPK.CurtainShades || |
| | | function.spk == SPK.CurtainDream || |
| | | function.spk == SPK.CurtainSwitch || function.spk == SPK.CurtainTrietex ) |
| | | { |
| | | btnIcon.UnSelectedImagePath = "FunctionIcon/Curtain/CurtainIcon.png"; |
| | |
| | | }; |
| | | dimmerControlBar.OnProgressChangedEvent = (sender, e) => { |
| | | dimmerControlBar.ProgressBarColor = CSS.CSS_Color.AuxiliaryColor1; |
| | | //light.brightness = e; |
| | | //light.trait_on_off.curValue = e > 0 ? "on" : "off"; |
| | | function.SetAttrState(FunctionAttributeKey.Brightness, e); |
| | | function.trait_on_off.curValue = e > 0 ? "on" : "off"; |
| | | |
| | | //if (e == 0 || e == 100) |
| | | //{ |
| | | // //Control.Send(CommandType_A.write, light); |
| | | // System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | // d.Add("brightness", light.brightness.ToString()); |
| | | // Control.Ins.SendWriteCommand(light, d); |
| | | //} |
| | | //else |
| | | //{ |
| | | // var tm = (DateTime.Now - light.refreshTime).TotalMilliseconds; |
| | | // Console.WriteLine("skip time "+tm); |
| | | // if (300 < tm) |
| | | // { |
| | | // light.refreshTime = DateTime.Now; |
| | | // new System.Threading.Thread(() => |
| | | // { |
| | | // System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | // d.Add("brightness", light.brightness.ToString()); |
| | | // Control.Ins.SendWriteCommand(light, d); |
| | | // }) |
| | | // { IsBackground = true }.Start(); |
| | | // } |
| | | //} |
| | | if (e == 0 || e == 100) |
| | | { |
| | | //Control.Send(CommandType_A.write, light); |
| | | System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | d.Add("brightness", e.ToString()); |
| | | Control.Ins.SendWriteCommand(function, d); |
| | | } |
| | | else |
| | | { |
| | | var tm = (DateTime.Now - function.refreshTime).TotalMilliseconds; |
| | | Console.WriteLine("skip time " + tm); |
| | | if (500 < tm) |
| | | { |
| | | function.refreshTime = DateTime.Now; |
| | | new System.Threading.Thread(() => |
| | | { |
| | | System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | d.Add("brightness", e.ToString()); |
| | | Control.Ins.SendWriteCommand(function, d); |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | } |
| | | } |
| | | }; |
| | | } |
| | | |
| | |
| | | functionTypeList.Add(SPK.HvacCac); |
| | | functionTypeList.Add(SPK.SensorHelp); |
| | | functionTypeList.Add(SPK.DoorLock); |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | public void LoadPage(Action backRefresh) |
| | | { |
| | | //DB_ResidenceData.Instance.sceneChooseRoomId |
| | | new TopViewDiv(bodyView, Language.StringByID(StringId.EditScene)).LoadTopView(backRefresh); |
| | | initPage(); |
| | | } |
| | |
| | | scene.functions.Remove(scenefunction); |
| | | continue; |
| | | } |
| | | //将spk实体里面的min max值放入场景功能实体里,要不然数据会丢失 2022-06-21 16:06:45 |
| | | foreach (var tt in scenefunction.status) { |
| | | tt.min = scenefunction.localFunction.GetAttribute(tt.key).min; |
| | | tt.max = scenefunction.localFunction.GetAttribute(tt.key).max; |
| | | tt.valueList = scenefunction.localFunction.GetAttribute(tt.key).value; |
| | | } |
| | | |
| | | i++; |
| | | var row = new RowLayout() |
| | | { |
| | |
| | | { |
| | | unallocatedList.Add(function); |
| | | } |
| | | |
| | | } |
| | | if (string.IsNullOrEmpty(DB_ResidenceData.Instance.sceneChooseRoomId)) |
| | | { |
| | | LoadFunctionListRow(null); |
| | | } |
| | | else |
| | | { |
| | | var selectedRoom = Room.CurrentSpatial.RoomList.Find((obj) => obj.uid == DB_ResidenceData.Instance.sceneChooseRoomId); |
| | | if (selectedRoom == null) |
| | | { |
| | | LoadFunctionListRow(null); |
| | | } |
| | | else |
| | | { |
| | | |
| | | var listAllFun = new List<Function>(); |
| | | var listFun = new List<Function>(); |
| | | listAllFun.AddRange(unallocatedList); |
| | | listAllFun.AddRange(allocatedList); |
| | | |
| | | btnFloor.Text = selectedRoom.floorRoomName; |
| | | foreach (var funtion in listAllFun) |
| | | { |
| | | if (funtion.roomIds.Contains(selectedRoom.roomId)) |
| | | { |
| | | listFun.Add(funtion); |
| | | } |
| | | } |
| | | LoadFunctionListRow(listFun); |
| | | } |
| | | } |
| | | |
| | | LoadFunctionListRow(null); |
| | | |
| | | LoadEventList(); |
| | | } |
| | |
| | | form.ShowDeviceFunctionView(btnFloor, listAllFun, (selectId, listFun) =>
|
| | | {
|
| | | nowSelectId = selectId;
|
| | | DB_ResidenceData.Instance.sceneChooseRoomId = selectId;
|
| | | //重新刷新设备列表
|
| | | this.LoadFunctionListRow(listFun);
|
| | | }, nowSelectId);
|
| | |
| | | case FunctionAttributeKey.RGB: |
| | | LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.RGB)); |
| | | break; |
| | | case "angle"://角度 |
| | | LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == "angle")); |
| | | break; |
| | | } |
| | | } |
| | | |
| | |
| | | case FunctionAttributeKey.FadeTime: |
| | | |
| | | break; |
| | | case "angle": |
| | | //呈现的弹窗 |
| | | |
| | | break; |
| | | case "cct": |
| | | LoadEditDialog_CCT(sceneStatus, btnFunctionText); |
| | | break; |
| | |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | } |
| | | catch { } |
| | | catch (Exception ex) { |
| | | MainPage.Log(ex.Message); |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | /// </summary> |
| | | Button btnMode; |
| | | /// <summary> |
| | | /// 工作模式按钮 |
| | | /// </summary> |
| | | Button btnWrokMode; |
| | | |
| | | /// <summary> |
| | | /// 开关按钮 |
| | | /// </summary> |
| | | Button btnSwitch; |
| | |
| | | }; |
| | | FrameWhiteCentet1.AddChidren(btnPlus); |
| | | |
| | | if (device.GetAttribute("mode_work") != null) |
| | | { |
| | | btnWrokMode = new Button() |
| | | { |
| | | X = Application.GetRealWidth(60), |
| | | Y = Application.GetRealHeight(334), |
| | | Width = Application.GetRealWidth(30), |
| | | Height = Application.GetRealWidth(30), |
| | | UnSelectedImagePath = fhTemp.GetWrokModeIconPath(device.GetAttrState("mode_work")), |
| | | }; |
| | | FrameWhiteCentet1.AddChidren(btnWrokMode); |
| | | if (device.GetAttribute("mode_work").value.Count > 1) |
| | | { |
| | | btnMode.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | LoadDiv_ChangeModeView(); |
| | | }; |
| | | } |
| | | } |
| | | if (device.GetAttribute(FunctionAttributeKey.Mode) != null) |
| | | { |
| | | btnMode = new Button() |
| | |
| | | LoadEvent_AcStatesChange(); |
| | | |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 加载修改模式区域 |
| | | /// </summary> |
| | | void LoadDiv_ChangeWorkModeView() |
| | | { |
| | | Dialog dialog = new Dialog(); |
| | | |
| | | FrameLayout dialogView = new FrameLayout() |
| | | { |
| | | BackgroundColor = CSS_Color.DialogTransparentColor1, |
| | | }; |
| | | dialog.AddChidren(dialogView); |
| | | |
| | | FrameLayout modeChangeView; |
| | | modeChangeView = new FrameLayout() |
| | | { |
| | | X = Application.GetRealWidth(30), |
| | | Y = Application.GetRealHeight(128), |
| | | Width = Application.GetRealWidth(160), |
| | | Height = Application.GetRealHeight(287), |
| | | BackgroundImagePath = "FunctionIcon/AC/DivBg1.png", |
| | | }; |
| | | dialogView.AddChidren(modeChangeView); |
| | | |
| | | Button btnTitle; |
| | | btnTitle = new Button() |
| | | { |
| | | X = Application.GetRealWidth(8 + 16), |
| | | Y = Application.GetRealHeight(8), |
| | | Width = Application.GetRealWidth(112), |
| | | Height = Application.GetRealHeight(44), |
| | | TextID = StringId.ChooseMode, |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS_FontSize.EmphasisFontSize_Secondary, |
| | | }; |
| | | modeChangeView.AddChidren(btnTitle); |
| | | |
| | | Button btnLine = new Button() |
| | | { |
| | | X = btnTitle.X, |
| | | Y = btnTitle.Bottom, |
| | | Width = Application.GetRealWidth(112), |
| | | Height = Application.GetRealHeight(1), |
| | | BackgroundColor = CSS_Color.BackgroundColor, |
| | | }; |
| | | modeChangeView.AddChidren(btnLine); |
| | | |
| | | var modeList = device.GetAttribute(FunctionAttributeKey.WorkMode).value; |
| | | foreach (var m in modeList) |
| | | { |
| | | Button btnModeIcon = new Button() |
| | | { |
| | | X = btnTitle.X, |
| | | Y = Application.GetRealHeight(44 * (modeList.IndexOf(m) + 1) + 10 + 8), |
| | | Width = Application.GetRealWidth(24), |
| | | Height = Application.GetRealWidth(24), |
| | | IsSelected = device.GetAttrState(FunctionAttributeKey.WorkMode) == m, |
| | | }; |
| | | modeChangeView.AddChidren(btnModeIcon); |
| | | |
| | | Button btnModeText = new Button() |
| | | { |
| | | X = Application.GetRealWidth(12) + btnModeIcon.Right, |
| | | Y = Application.GetRealHeight(44 * (modeList.IndexOf(m) + 1) + 8), |
| | | Height = Application.GetRealHeight(44), |
| | | Width = Application.GetRealWidth(90), |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | SelectedTextColor = CSS_Color.MainColor, |
| | | IsSelected = device.GetAttrState(FunctionAttributeKey.Mode) == m, |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | | }; |
| | | modeChangeView.AddChidren(btnModeText); |
| | | |
| | | btnModeIcon.UnSelectedImagePath = fhTemp.GetModeIconPath(m, false); |
| | | btnModeIcon.SelectedImagePath = fhTemp.GetModeIconPath(m); |
| | | btnModeText.Text = fhTemp.GetModeAttrText(m); |
| | | |
| | | if (modeList.IndexOf(m) < modeList.Count - 1) |
| | | { |
| | | modeChangeView.AddChidren(new Button() |
| | | { |
| | | X = btnTitle.X, |
| | | Y = btnModeText.Bottom, |
| | | Width = Application.GetRealWidth(112), |
| | | Height = Application.GetRealHeight(1), |
| | | BackgroundColor = CSS_Color.BackgroundColor, |
| | | }); |
| | | } |
| | | EventHandler<MouseEventArgs> eventHandler = (sender, e) => |
| | | { |
| | | dialog.Close(); |
| | | }; |
| | | EventHandler<MouseEventArgs> eventHandler1 = (sender, e) => |
| | | { |
| | | //if (!device.online) |
| | | //{ |
| | | // new Tip() |
| | | // { |
| | | // CloseTime = 1, |
| | | // Text = Language.StringByID(StringId.DeviceOfflineCannotOption), |
| | | // Direction = AMPopTipDirection.None, |
| | | // }.Show(MainPage.BaseView); |
| | | //} |
| | | btnModeIcon.IsSelected = btnModeText.IsSelected = true; |
| | | device.SetAttrState(FunctionAttributeKey.WorkMode, m); |
| | | btnMode.UnSelectedImagePath = fhTemp.GetWrokModeIconPath(m); |
| | | System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | btnMode.UnSelectedImagePath = btnModeIcon.UnSelectedImagePath; |
| | | d.Add(FunctionAttributeKey.WorkMode, m); |
| | | Control.Ins.SendWriteCommand(device, d); |
| | | dialog.Close(); |
| | | |
| | | }; |
| | | btnModeIcon.MouseUpEventHandler = eventHandler1; |
| | | btnModeText.MouseUpEventHandler = eventHandler1; |
| | | dialogView.MouseUpEventHandler = eventHandler; |
| | | |
| | | } |
| | | |
| | | dialogView.MouseUpEventHandler = (sender, e) => { |
| | | dialog.Close(); |
| | | }; |
| | | dialog.Show(); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 加载修改模式区域 |
| | |
| | | arcBar.IsClickable = false; |
| | | arcBar.IsOffline = true; |
| | | } |
| | | |
| | | if(btnWrokMode!=null){ |
| | | var dd = device.GetAttrState("mode_work"); |
| | | if (dd != "0") |
| | | { |
| | | btnWrokMode.UnSelectedImagePath = fhTemp.GetWrokModeIconPath(dd); |
| | | } |
| | | } |
| | | |
| | | }); |
| | | } |
| | | |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using HDL_ON.Common; |
| | | using HDL_ON.DAL.Server; |
| | | using Shared; |
| | | |
| | | namespace HDL_ON.UI |
| | |
| | | function.roomIds.Remove(room.roomId); |
| | | //room.RemoveRoomFunction(function); |
| | | } |
| | | function.UpdataRoomIds(); |
| | | //function.UpdataRoomIds(); |
| | | |
| | | new System.Threading.Thread(() => |
| | | { |
| | | try |
| | | { |
| | | var pack = ApiUtlis.Ins.HttpRequest.UpdataDevcieBindRoomInfo(function); |
| | | //直接保存本地, |
| | | function.SaveFunctionFile(); |
| | | if (pack.Code == StateCode.SUCCESS) |
| | | { |
| | | if (UI.RoomPage.bodyView != null) |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | UI.RoomPage.bodyView.ReLoadPage(); |
| | | }); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | IMessageCommon.Current.ShowErrorInfoAlter(pack.Code); |
| | | } |
| | | } |
| | | catch (Exception ex){ |
| | | MainPage.Log("房间绑定设备异常" + ex.Message); |
| | | } |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | |
| | | |
| | | if (function.roomIds.Count == Entity.SpatialInfo.CurrentSpatial.RoomList.Count) |
| | | { |
| | | btnChooseAll.IsSelected = true; |
New file |
| | |
| | | using System; |
| | | using HDL_ON.Entity; |
| | | using Shared; |
| | | using HDL_ON.Entity; |
| | | using HDL_ON.UI.CSS; |
| | | using System.Collections.Generic; |
| | | using HDL_ON.DriverLayer; |
| | | |
| | | namespace HDL_ON.UI |
| | | { |
| | | public class CurtainDreamPage : FrameLayout |
| | | { |
| | | |
| | | #region 控件集合 |
| | | static CurtainDreamPage bodyView; |
| | | /// <summary> |
| | | /// 功能名称按钮 |
| | | /// </summary> |
| | | Button btnFunctionName; |
| | | /// <summary> |
| | | /// 房间楼层信息按钮 |
| | | /// </summary> |
| | | Button btnFromFoorAndRoom; |
| | | /// <summary> |
| | | /// 收藏按钮 |
| | | /// </summary> |
| | | Button btnCollection; |
| | | /// <summary> |
| | | /// 窗帘动态控件 |
| | | /// </summary> |
| | | CurtainSeekBarOn curtainSeekBar; |
| | | /// <summary> |
| | | /// 进度值 |
| | | /// </summary> |
| | | Button btnProgress; |
| | | |
| | | |
| | | /// <summary> |
| | | /// 窗帘关闭按钮 |
| | | /// </summary> |
| | | Button btnCurtainClose; |
| | | /// <summary> |
| | | /// 窗帘停止按钮 |
| | | /// </summary> |
| | | Button btnCurtainStop; |
| | | /// <summary> |
| | | /// 窗帘打开按钮 |
| | | /// </summary> |
| | | Button btnCurtainOpen; |
| | | #endregion |
| | | |
| | | #region 区域变量 |
| | | Entity.Curtain curtainTemp = new Entity.Curtain(); |
| | | |
| | | Function function; |
| | | Button btnCollection_Out; |
| | | Button btnFunctionName_Out; |
| | | Button btnFromFloor_Out; |
| | | /// <summary> |
| | | /// 刷新显示信息 |
| | | /// </summary> |
| | | Action actionRefresh; |
| | | #endregion |
| | | /// <summary> |
| | | /// 正在控制 |
| | | /// </summary> |
| | | bool onControl = false; |
| | | |
| | | public CurtainDreamPage(Function func) |
| | | { |
| | | bodyView = this; |
| | | function = func; |
| | | } |
| | | |
| | | public void LoadPage(Button btnCollectionIcon, Button btnFunctionNameOut, Button btnFromFloorOut) |
| | | { |
| | | bodyView.BackgroundColor = CSS_Color.BackgroundColor; |
| | | btnCollection_Out = btnCollectionIcon; |
| | | btnFunctionName_Out = btnFunctionNameOut; |
| | | btnFromFloor_Out = btnFromFloorOut; |
| | | |
| | | |
| | | FrameLayout controlView = new FrameLayout() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Y = Application.GetRealHeight(88), |
| | | Width = Application.GetRealWidth(327), |
| | | Height = Application.GetRealHeight(526), |
| | | BackgroundImagePath = "Public/Fragmentbg.png", |
| | | }; |
| | | bodyView.AddChidren(controlView); |
| | | |
| | | btnFunctionName = new Button() |
| | | { |
| | | X = Application.GetRealWidth(16), |
| | | Y = Application.GetRealHeight(14), |
| | | Width = Application.GetRealWidth(270), |
| | | Height = Application.GetRealHeight(37), |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextSize = CSS_FontSize.EmphasisFontSize_FirstLevel, |
| | | Text = function.name, |
| | | }; |
| | | controlView.AddChidren(btnFunctionName); |
| | | |
| | | btnFromFoorAndRoom = new Button() |
| | | { |
| | | X = Application.GetRealWidth(16), |
| | | Y = btnFunctionName.Bottom, |
| | | Width = Application.GetRealWidth(270), |
| | | Height = Application.GetRealHeight(21), |
| | | TextColor = CSS_Color.PromptingColor1, |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextSize = CSS_FontSize.PromptFontSize_FirstLevel, |
| | | Text = function.GetRoomListName() |
| | | }; |
| | | controlView.AddChidren(btnFromFoorAndRoom); |
| | | |
| | | btnCollection = new Button() |
| | | { |
| | | X = Application.GetRealWidth(273), |
| | | Y = Application.GetRealHeight(14), |
| | | Width = Application.GetMinRealAverage(40), |
| | | Height = Application.GetMinRealAverage(40), |
| | | SelectedImagePath = "Collection/CollectionIcon.png", |
| | | UnSelectedImagePath = "Collection/CollectionGrayIcon.png", |
| | | IsSelected = function.collect |
| | | }; |
| | | controlView.AddChidren(btnCollection); |
| | | //2020-12-16 如果是成员隐藏收藏功能 |
| | | //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare) |
| | | //{ |
| | | // controlView.AddChidren(btnCollection); |
| | | //} |
| | | |
| | | |
| | | btnProgress = new Button() |
| | | { |
| | | Y = Application.GetRealHeight(80), |
| | | Height = Application.GetRealHeight(50), |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | | TextColor = CSS_Color.PromptingColor1, |
| | | Text = curtainTemp.GetPercent(function).ToString() + "%", |
| | | }; |
| | | controlView.AddChidren(btnProgress); |
| | | |
| | | |
| | | curtainSeekBar = new CurtainSeekBarOn() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Y = Application.GetRealHeight(130), |
| | | Width = Application.GetRealWidth(250), |
| | | Height = Application.GetRealWidth(177), |
| | | Progress = curtainTemp.GetPercent(function), |
| | | ProgressTextColor = 0x00000000, |
| | | //IsInvertedProgress = true, |
| | | }; |
| | | controlView.AddChidren(curtainSeekBar); |
| | | |
| | | |
| | | int angleValut = Convert.ToInt32(function.GetAttrState("angle")); |
| | | var angleView = new FrameLayout() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Y = Application.GetRealHeight(300),//414,设计数据 |
| | | Width = Application.GetRealWidth(250), |
| | | Height = Application.GetRealWidth(30), |
| | | BackgroundColor = 0x00ff0000 |
| | | }; |
| | | controlView.AddChidren(angleView); |
| | | |
| | | List<Button> buttons = new List<Button>(); |
| | | for (int i = 0; i < 18; i++) |
| | | { |
| | | var btn = new Button() |
| | | { |
| | | X = Application.GetRealWidth(12 * i + 4), |
| | | Y = Application.GetRealHeight(5), |
| | | Width = Application.GetRealWidth(4), |
| | | Height = Application.GetRealHeight(20), |
| | | BackgroundColor = 0xFFDFE1E6, |
| | | }; |
| | | btn.SetRotation(angleValut); |
| | | angleView.AddChidren(btn); |
| | | buttons.Add(btn); |
| | | }; |
| | | |
| | | var btnAngle = new Button() |
| | | { |
| | | TextAlignment = TextAlignment.CenterRight, |
| | | TextSize = CSS_FontSize.PromptFontSize_FirstLevel, |
| | | TextColor = CSS_Color.PromptingColor1, |
| | | Text = function.GetAttrState("angle") + "°" |
| | | }; |
| | | angleView.AddChidren(btnAngle); |
| | | |
| | | var angleBar = new DiyImageSeekBar() |
| | | { |
| | | Width = Application.GetRealWidth(220), |
| | | Height = Application.GetRealHeight(30), |
| | | SeekBarViewHeight = Application.GetRealHeight(0), |
| | | ThumbImagePath = "Public/ThumbImage2.png", |
| | | ThumbImageHeight = Application.GetRealHeight(20), |
| | | ProgressBarColor = 0x00000000, |
| | | ProgressTextColor = 0x00000000, |
| | | ProgressTextSize = 0, |
| | | MaxValue = 180, |
| | | Progress = 90, |
| | | ProgressChangeDelayTime = 0 |
| | | }; |
| | | angleView.AddChidren(angleBar); |
| | | angleBar.OnProgressChangedEvent = (sender, e) => |
| | | { |
| | | float angle = (e - 90); |
| | | btnAngle.Text = angle + "°"; |
| | | foreach (var btn in buttons) |
| | | { |
| | | btn.SetRotation(angle); Console.WriteLine(angle); |
| | | } |
| | | //if (100 < (DateTime.Now - function.refreshTime).TotalMilliseconds) |
| | | //{ |
| | | // function.refreshTime = DateTime.Now; |
| | | // foreach (var btn in buttons) |
| | | // { |
| | | // new System.Threading.Thread(() => |
| | | // { |
| | | // Application.RunOnMainThread(() => |
| | | // { |
| | | // btn.SetRotation(angle); Console.WriteLine(angle); |
| | | // }); |
| | | // }); |
| | | // } |
| | | //} |
| | | }; |
| | | angleBar.OnStopTrackingTouchEvent = (sende, e) => |
| | | { |
| | | function.refreshTime = DateTime.Now; |
| | | new System.Threading.Thread(() => |
| | | { |
| | | Dictionary<string, string> dic = new Dictionary<string, string>(); |
| | | dic.Add("angle", e.ToString()); |
| | | Control.Ins.SendWriteCommand(function, dic); |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | }; |
| | | |
| | | |
| | | btnCurtainClose = new Button() |
| | | { |
| | | X = Application.GetRealWidth(84), |
| | | Y = Application.GetRealHeight(466), |
| | | Width = Application.GetMinRealAverage(32), |
| | | Height = Application.GetMinRealAverage(32), |
| | | UnSelectedImagePath = "FunctionIcon/Curtain/CurtainCloseIcon.png", |
| | | SelectedImagePath = "FunctionIcon/Curtain/CurtainCloseOnIcon.png", |
| | | }; |
| | | controlView.AddChidren(btnCurtainClose); |
| | | |
| | | btnCurtainStop = new Button() |
| | | { |
| | | X = Application.GetRealWidth(148), |
| | | Y = Application.GetRealHeight(466), |
| | | Width = Application.GetMinRealAverage(32), |
| | | Height = Application.GetMinRealAverage(32), |
| | | UnSelectedImagePath = "FunctionIcon/Curtain/CurtainStopIcon.png", |
| | | SelectedImagePath = "FunctionIcon/Curtain/CurtainStopOnIcon.png", |
| | | }; |
| | | controlView.AddChidren(btnCurtainStop); |
| | | |
| | | btnCurtainOpen = new Button() |
| | | { |
| | | X = Application.GetRealWidth(212), |
| | | Y = Application.GetRealHeight(466), |
| | | Width = Application.GetMinRealAverage(32), |
| | | Height = Application.GetMinRealAverage(32), |
| | | UnSelectedImagePath = "FunctionIcon/Curtain/CurtainOpenIcon.png", |
| | | SelectedImagePath = "FunctionIcon/Curtain/CurtainOpenOnIcon.png", |
| | | }; |
| | | controlView.AddChidren(btnCurtainOpen); |
| | | |
| | | LoadEventList(); |
| | | new TopViewDiv(bodyView, Language.StringByID(StringId.Curtain)).LoadTopView_FunctionTop(function, actionRefresh); |
| | | new System.Threading.Thread(() => |
| | | { |
| | | Control.Ins.SendReadCommand(function); |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 更新窗帘 |
| | | /// </summary> |
| | | /// <param name="updateTemp"></param> |
| | | public static void UpdataState(Function updateTemp) |
| | | { |
| | | Application.RunOnMainThread((Action)(() => |
| | | { |
| | | if (bodyView == null) |
| | | return; |
| | | if (bodyView.onControl) |
| | | return; |
| | | if (updateTemp.spk == bodyView.function.spk && updateTemp.sid == bodyView.function.sid) |
| | | { |
| | | try |
| | | { |
| | | if (!bodyView.onCurtainAnimation) |
| | | { |
| | | bodyView.CurtainAnimation(Convert.ToInt32(updateTemp.GetAttrState(FunctionAttributeKey.Percent))); |
| | | } |
| | | } |
| | | catch { } |
| | | } |
| | | })); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 正在执行窗帘动画 |
| | | /// </summary> |
| | | bool onCurtainAnimation = false; |
| | | /// <summary> |
| | | /// 窗帘动画 |
| | | /// </summary> |
| | | /// <param name="progress"></param> |
| | | void CurtainAnimation(int progress) |
| | | { |
| | | onCurtainAnimation = true; |
| | | //运行方向 打开(加进度):关闭(减进度) |
| | | bool runningDirection = progress > curtainSeekBar.Progress; |
| | | int curBarProgress = curtainSeekBar.Progress; |
| | | btnProgress.Text = progress + "%"; |
| | | new System.Threading.Thread(() => |
| | | { |
| | | try |
| | | { |
| | | while (progress != curBarProgress && onCurtainAnimation) |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | if (runningDirection) |
| | | { |
| | | if (curtainSeekBar.Progress + 5 > progress) |
| | | { |
| | | curtainSeekBar.Progress = progress; |
| | | } |
| | | else |
| | | { |
| | | curtainSeekBar.Progress = curtainSeekBar.Progress + 5; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | if (curtainSeekBar.Progress - 5 < progress) |
| | | { |
| | | curtainSeekBar.Progress = progress; |
| | | } |
| | | else |
| | | { |
| | | curtainSeekBar.Progress = curtainSeekBar.Progress - 5; |
| | | } |
| | | } |
| | | curBarProgress = curtainSeekBar.Progress; |
| | | }); |
| | | System.Threading.Thread.Sleep(100); |
| | | } |
| | | } |
| | | catch { } |
| | | finally |
| | | { |
| | | new System.Threading.Thread(() => |
| | | { |
| | | System.Threading.Thread.Sleep(3000); |
| | | onCurtainAnimation = false; |
| | | }) |
| | | { IsBackground = true, Priority = System.Threading.ThreadPriority.Lowest }.Start(); |
| | | } |
| | | }).Start(); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 加载事件列表 |
| | | /// </summary> |
| | | void LoadEventList() |
| | | { |
| | | LoadEvent_ControlEvent(); |
| | | LoadCollectionEvent(); |
| | | |
| | | //回退刷新信息事件 |
| | | actionRefresh = () => |
| | | { |
| | | btnFunctionName.Text = btnFunctionName_Out.Text = function.name; |
| | | btnFromFloor_Out.Text = btnFromFoorAndRoom.Text = function.GetRoomListName(); |
| | | //function.SaveFunctionData(true); |
| | | }; |
| | | } |
| | | /// <summary> |
| | | /// 收藏功能按钮事件 |
| | | /// </summary> |
| | | void LoadCollectionEvent() |
| | | { |
| | | btnCollection.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | btnCollection.IsSelected = function.collect = btnCollection_Out.IsSelected = !btnCollection.IsSelected; |
| | | function.CollectFunction(); |
| | | }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 加载窗帘控制事件 |
| | | /// </summary> |
| | | void LoadEvent_ControlEvent() |
| | | { |
| | | btnCurtainClose.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | //if (!function.online) |
| | | //{ |
| | | // new Tip() |
| | | // { |
| | | // CloseTime = 1, |
| | | // Text = Language.StringByID(StringId.DeviceOfflineCannotOption), |
| | | // Direction = AMPopTipDirection.None, |
| | | // }.Show(MainPage.BaseView); |
| | | // return; |
| | | //} |
| | | new System.Threading.Thread(() => |
| | | { |
| | | System.Threading.Thread.Sleep(2000); |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | btnCurtainClose.IsSelected = false; |
| | | }); |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | function.trait_on_off.curValue = "off"; |
| | | function.SetAttrState(FunctionAttributeKey.Percent, 0); |
| | | System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.OnOff, function.trait_on_off.curValue.ToString()); |
| | | DriverLayer.Control.Ins.SendWriteCommand(function, d); |
| | | CurtainAnimation(0); |
| | | }; |
| | | |
| | | btnCurtainStop.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | //if (!function.online) |
| | | //{ |
| | | // new Tip() |
| | | // { |
| | | // CloseTime = 1, |
| | | // Text = Language.StringByID(StringId.DeviceOfflineCannotOption), |
| | | // Direction = AMPopTipDirection.None, |
| | | // }.Show(MainPage.BaseView); |
| | | // return; |
| | | //} |
| | | onCurtainAnimation = false; |
| | | new System.Threading.Thread(() => |
| | | { |
| | | System.Threading.Thread.Sleep(2000); |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | btnCurtainStop.IsSelected = false; |
| | | }); |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | function.trait_on_off.curValue = "stop"; |
| | | System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.OnOff, function.trait_on_off.curValue.ToString()); |
| | | DriverLayer.Control.Ins.SendWriteCommand(function, d); |
| | | }; |
| | | |
| | | btnCurtainOpen.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | //if (!function.online) |
| | | //{ |
| | | // new Tip() |
| | | // { |
| | | // CloseTime = 1, |
| | | // Text = Language.StringByID(StringId.DeviceOfflineCannotOption), |
| | | // Direction = AMPopTipDirection.None, |
| | | // }.Show(MainPage.BaseView); |
| | | // return; |
| | | //} |
| | | new System.Threading.Thread(() => |
| | | { |
| | | System.Threading.Thread.Sleep(2000); |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | btnCurtainOpen.IsSelected = false; |
| | | }); |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | function.trait_on_off.curValue = "on"; |
| | | function.SetAttrState(FunctionAttributeKey.Percent, 100); |
| | | System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.OnOff, function.trait_on_off.curValue.ToString()); |
| | | DriverLayer.Control.Ins.SendWriteCommand(function, d); |
| | | CurtainAnimation(100); |
| | | }; |
| | | |
| | | //if (function.online) |
| | | { |
| | | btnCurtainStop.MouseDownEventHandler = (sender, e) => |
| | | { |
| | | btnCurtainStop.IsSelected = true; |
| | | btnCurtainClose.IsSelected = false; |
| | | btnCurtainOpen.IsSelected = false; |
| | | }; |
| | | btnCurtainOpen.MouseDownEventHandler = (sender, e) => |
| | | { |
| | | btnCurtainOpen.IsSelected = true; |
| | | btnCurtainClose.IsSelected = false; |
| | | btnCurtainStop.IsSelected = false; |
| | | }; |
| | | btnCurtainClose.MouseDownEventHandler = (sender, e) => |
| | | { |
| | | btnCurtainClose.IsSelected = true; |
| | | btnCurtainOpen.IsSelected = false; |
| | | btnCurtainStop.IsSelected = false; |
| | | }; |
| | | |
| | | curtainSeekBar.OnProgressChangedEvent = (sender, e) => |
| | | { |
| | | btnProgress.Text = curtainSeekBar.Progress + "%"; |
| | | }; |
| | | curtainSeekBar.OnStopTrackingTouchEvent = (sender, e) => |
| | | { |
| | | btnProgress.Text = curtainSeekBar.Progress + "%"; |
| | | //controlBar.Progress = curtainSeekBar.Progress; |
| | | new System.Threading.Thread(() => |
| | | { |
| | | function.SetAttrState(FunctionAttributeKey.Percent, e); |
| | | function.refreshTime = DateTime.Now; |
| | | System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.Percent, e.ToString()); |
| | | DriverLayer.Control.Ins.SendWriteCommand(function, d); |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | }; |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | |
| | | public FloorHeatingPage(Function func) |
| | | { |
| | | bodyView = this; |
| | | var tempAttr = func.GetAttribute(FunctionAttributeKey.SetTemp); |
| | | if (tempAttr != null) |
| | | { |
| | | if(tempAttr.min == 0 && tempAttr.max == 0) |
| | | { |
| | | tempAttr.min = 16; |
| | | tempAttr.max = 30; |
| | | } |
| | | } |
| | | function = func; |
| | | } |
| | | |
| | |
| | | {
|
| | | DriverLayer.Control.Ins.SendReadCommand(function);
|
| | | })
|
| | | { IsBackground = true }.Start(); |
| | | |
| | | new System.Threading.Thread(() => { |
| | | while (true) |
| | | { |
| | | System.Threading.Thread.Sleep(1000); |
| | | if (curDimmerStatus) |
| | | { |
| | | continue; |
| | | } |
| | | if (onDimmerBar) |
| | | { |
| | | continue; |
| | | } |
| | | else |
| | | { |
| | | DriverLayer.Control.Ins.SendReadCommand(function); |
| | | curDimmerStatus = true; |
| | | } |
| | | } |
| | | }) |
| | | { IsBackground = true }.Start();
|
| | | }
|
| | |
|
| | |
| | | {
|
| | | bodyView.dimmerBar.Progress = Convert.ToInt32(updataTemp.GetAttrState(FunctionAttributeKey.Brightness));
|
| | | } |
| | | bodyView.btnBrightnessText.Text = updataTemp.GetAttrState(FunctionAttributeKey.Brightness) + "%"; |
| | | bodyView.btnBrightnessText.Y = ((100 - Convert.ToInt32(updataTemp.GetAttrState(FunctionAttributeKey.Brightness))) * Application.GetRealHeight(222 - 16) / 100) + Application.GetRealWidth(80);
|
| | | if (updataTemp.GetAttrState(FunctionAttributeKey.Brightness) != "0") |
| | | { |
| | | bodyView.btnBrightnessText.Text = updataTemp.GetAttrState(FunctionAttributeKey.Brightness) + "%"; |
| | | bodyView.btnBrightnessText.Y = ((100 - Convert.ToInt32(updataTemp.GetAttrState(FunctionAttributeKey.Brightness))) * Application.GetRealHeight(222 - 16) / 100) + Application.GetRealWidth(80); |
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | |
| | | };
|
| | | }
|
| | |
|
| | | bool curDimmerStatus = false;
|
| | | /// <summary>
|
| | | /// 灯光调光事件
|
| | | /// </summary>
|
| | |
| | | // }.Show(MainPage.BaseView); |
| | | // return; |
| | | //}
|
| | | onDimmerBar = false;
|
| | | //onDimmerBar = false;
|
| | | curDimmerStatus = false; |
| | | function.SetAttrState(FunctionAttributeKey.Brightness, dimmerBar.Progress);
|
| | | System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
|
| | | d.Add(FunctionAttributeKey.Brightness, dimmerBar.Progress.ToString()); |
| | |
| | | { |
| | | dimmerBar.OnStartTrackingTouchEvent = (sender, e) => |
| | | { |
| | | onDimmerBar = true; |
| | | curDimmerStatus = onDimmerBar = true; |
| | | }; |
| | | dimmerBar.OnProgressChangedEvent = (sender, e) => |
| | | { |
| | | dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1); |
| | | //function.fadeTime = 0; |
| | | //if (!btnSwitch.IsSelected) |
| | | //{ |
| | | // dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1); |
| | | //} |
| | | //btnSwitch.IsSelected = e > 0 ? true : false; |
| | | //function.brightness = e; |
| | | //function.trait_on_off.curValue = e > 0 ? "on" : "off"; |
| | | //dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1); |
| | | if (!btnSwitch.IsSelected) |
| | | { |
| | | dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1); |
| | | } |
| | | btnSwitch.IsSelected = e > 0 ? true : false; |
| | | function.trait_on_off.curValue = e > 0 ? "on" : "off"; |
| | | |
| | | //if (e == 0 || e == 100) |
| | | //{ |
| | | // System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | // d.Add(FunctionAttributeKey.Brightness, function.brightness.ToString()); |
| | | // Control.Ins.SendWriteCommand(function, d); |
| | | //} |
| | | //else |
| | | //{ |
| | | // if (200 < (DateTime.Now - function.refreshTime).TotalMilliseconds) |
| | | // { |
| | | // function.refreshTime = DateTime.Now; |
| | | // new System.Threading.Thread(() => |
| | | // { |
| | | // System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | // d.Add(FunctionAttributeKey.Brightness, function.brightness.ToString()); |
| | | // Control.Ins.SendWriteCommand(function, d); |
| | | // }) |
| | | // { IsBackground = true }.Start(); |
| | | // } |
| | | //} |
| | | if (e == 0 || e == 100) |
| | | { |
| | | System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.Brightness, e.ToString()); |
| | | Control.Ins.SendWriteCommand(function, d); |
| | | } |
| | | else |
| | | { |
| | | if (350 < (DateTime.Now - function.refreshTime).TotalMilliseconds) |
| | | { |
| | | function.refreshTime = DateTime.Now; |
| | | new System.Threading.Thread(() => |
| | | { |
| | | System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.Brightness, e.ToString()); |
| | | Control.Ins.SendWriteCommand(function, d); |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | } |
| | | } |
| | | |
| | | //btnBrightnessText.Y = ((100 - dimmerBar.Progress) * Application.GetRealHeight(222 - 16 - 16) / 100) + Application.GetRealWidth(40); |
| | | //btnBrightnessText.Text = function.brightness + "%"; |
| | | |
| | | btnBrightnessText.Y = ((100 - dimmerBar.Progress) * Application.GetRealHeight(222 - 16) / 100) + Application.GetRealWidth(80); |
| | | btnBrightnessText.Y = ((100 - dimmerBar.Progress) * Application.GetRealHeight(222 - 16) / 100) + Application.GetRealWidth(80); |
| | | btnBrightnessText.Text = dimmerBar.Progress + "%"; |
| | | }; |
| | | |
| | |
| | | DriverLayer.Control.Ins.SendReadCommand(function); |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | |
| | | |
| | | new System.Threading.Thread(() => { |
| | | while (true) |
| | | { |
| | | System.Threading.Thread.Sleep(2000); |
| | | if (curDimmerStatus) |
| | | { |
| | | continue; |
| | | } |
| | | if (onDimmerBar) |
| | | { |
| | | onDimmerBar = false; |
| | | continue; |
| | | } |
| | | else |
| | | { |
| | | DriverLayer.Control.Ins.SendReadCommand(function); |
| | | curDimmerStatus = true; |
| | | } |
| | | } |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | if (updataTemp.spk == bodyView.function.spk && updataTemp.sid == bodyView.function.sid) |
| | | { |
| | | bodyView.btnBrightnessText.Text = updataTemp.GetAttrState(FunctionAttributeKey.Brightness) + "%"; |
| | | bodyView.btnBrightnessText.Y = ((100 - Convert.ToInt32( updataTemp.GetAttrState(FunctionAttributeKey.Brightness))) * Application.GetRealHeight(288 - 16 - 16) / 100) + Application.GetRealWidth(40); |
| | | if (updataTemp.trait_on_off.curValue.ToString() == "on") |
| | | { |
| | | bodyView.dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1); |
| | | if (!bodyView.onDimmerBar) |
| | | { |
| | | bodyView.dimmerBar.Progress = Convert.ToInt32(updataTemp.GetAttrState(FunctionAttributeKey.Brightness)); |
| | | bodyView.btnBrightnessText.Y = ((100 - Convert.ToInt32(updataTemp.GetAttrState(FunctionAttributeKey.Brightness))) * Application.GetRealHeight(288 - 16 - 16) / 100) + Application.GetRealWidth(40); |
| | | } |
| | | } |
| | | else |
| | |
| | | }; |
| | | } |
| | | |
| | | bool curDimmerStatus = false; |
| | | |
| | | /// <summary> |
| | | /// 灯光调光事件 |
| | | /// </summary> |
| | |
| | | { |
| | | dimmerBar.OnStartTrackingTouchEvent = (sender, e) => |
| | | { |
| | | onDimmerBar = true; |
| | | curDimmerStatus = onDimmerBar = true; |
| | | dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1); |
| | | }; |
| | | dimmerBar.OnStopTrackingTouchEvent = (sender, e) => |
| | | { |
| | | onDimmerBar = false; |
| | | |
| | | curDimmerStatus = false; |
| | | function.SetAttrState(FunctionAttributeKey.Brightness, dimmerBar.Progress); |
| | | System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.Brightness, dimmerBar.Progress.ToString()); |
| | | if(dimmerBar.Progress > 0) |
| | | { |
| | | d.Add(FunctionAttributeKey.OnOff, "on"); |
| | | } |
| | | //if(dimmerBar.Progress > 0) |
| | | //{ |
| | | // d.Add(FunctionAttributeKey.OnOff, "on"); |
| | | //} |
| | | Control.Ins.SendWriteCommand(function, d); |
| | | btnBrightnessText.Text = dimmerBar.Progress + "%"; |
| | | }; |
| | |
| | | dimmerBar.OnProgressChangedEvent = (sender, e) => |
| | | { |
| | | |
| | | //function.fadeTime = 0; |
| | | //if (!btnSwitch.IsSelected) |
| | | //{ |
| | | // dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1); |
| | | //} |
| | | //btnSwitch.IsSelected = e > 0 ? true : false; |
| | | //function.brightness = e; |
| | | //function.trait_on_off.curValue = e > 0 ? "on" : "off"; |
| | | //if (e == 0 || e == 100) |
| | | //{ |
| | | // //Control.Send(CommandType_A.write, this.function); |
| | | // System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | // d.Add(FunctionAttributeKey.Brightness, function.brightness.ToString()); |
| | | // Control.Ins.SendWriteCommand(function, d); |
| | | //} |
| | | //else |
| | | //{ |
| | | // if (200 < (DateTime.Now - function.refreshTime).TotalMilliseconds) |
| | | // { |
| | | // function.refreshTime = DateTime.Now; |
| | | // new System.Threading.Thread(() => |
| | | // { |
| | | // System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | // d.Add(FunctionAttributeKey.Brightness, function.brightness.ToString()); |
| | | // Control.Ins.SendWriteCommand(function, d); |
| | | // }) |
| | | // { IsBackground = true }.Start(); |
| | | // } |
| | | //} |
| | | btnBrightnessText.Y = ((100 - dimmerBar.Progress) * Application.GetRealHeight(288 - 16 - 16) / 100) + Application.GetRealWidth(40); |
| | | if (!btnSwitch.IsSelected) |
| | | { |
| | | dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1); |
| | | } |
| | | btnSwitch.IsSelected = e > 0 ? true : false; |
| | | function.SetAttrState(FunctionAttributeKey.Brightness, e); |
| | | function.trait_on_off.curValue = e > 0 ? "on" : "off"; |
| | | if (e == 0 || e == 100) |
| | | { |
| | | //Control.Send(CommandType_A.write, this.function); |
| | | System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.Brightness, e.ToString()); |
| | | Control.Ins.SendWriteCommand(function, d); |
| | | } |
| | | else |
| | | { |
| | | if (350 < (DateTime.Now - function.refreshTime).TotalMilliseconds) |
| | | { |
| | | function.refreshTime = DateTime.Now; |
| | | new System.Threading.Thread(() => |
| | | { |
| | | System.Collections.Generic.Dictionary<string, string> dic = new System.Collections.Generic.Dictionary<string, string>(); |
| | | dic.Add(FunctionAttributeKey.Brightness, e.ToString()); |
| | | Control.Ins.SendWriteCommand(function, dic); |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | } |
| | | } |
| | | btnBrightnessText.Y = ((100 - dimmerBar.Progress) * Application.GetRealHeight(288 - 16 - 16) / 100) + Application.GetRealWidth(40); |
| | | btnBrightnessText.Text = dimmerBar.Progress + "%"; |
| | | }; |
| | | } |
| | |
| | | DriverLayer.Control.Ins.SendReadCommand(function); |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | |
| | | |
| | | |
| | | new System.Threading.Thread(() => { |
| | | while (true) |
| | | { |
| | | System.Threading.Thread.Sleep(1000); |
| | | if (curDimmerStatus) |
| | | { |
| | | continue; |
| | | } |
| | | if (onDimmerBar) |
| | | { |
| | | continue; |
| | | } |
| | | else |
| | | { |
| | | DriverLayer.Control.Ins.SendReadCommand(function); |
| | | curDimmerStatus = true; |
| | | } |
| | | } |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | }; |
| | | } |
| | | |
| | | bool curDimmerStatus = false; |
| | | /// <summary> |
| | | /// 灯光调光事件 |
| | | /// </summary> |
| | |
| | | // }.Show(MainPage.BaseView); |
| | | // return; |
| | | //} |
| | | new System.Threading.Thread(() => |
| | | { |
| | | System.Threading.Thread.Sleep(200); |
| | | onDimmerBar = false; |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | curDimmerStatus = false; |
| | | function.SetAttrState(FunctionAttributeKey.Brightness, dimmerBar.Progress); |
| | | System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.Brightness, dimmerBar.Progress.ToString()); |
| | |
| | | { |
| | | dimmerBar.OnStartTrackingTouchEvent = (sender, e) => |
| | | { |
| | | onDimmerBar = true; |
| | | curDimmerStatus = onDimmerBar = true; |
| | | }; |
| | | dimmerBar.OnProgressChangedEvent = (sender, e) => |
| | | { |
| | | //function.fadeTime = 0; |
| | | //if (!btnSwitch.IsSelected) |
| | | //{ |
| | | // dimmerBar.ProgressBarColor = CSS.CSS_Color.AuxiliaryColor1; |
| | | //} |
| | | //btnSwitch.IsSelected = e > 0 ? true : false; |
| | | //function.brightness = e; |
| | | //function.trait_on_off.curValue = e > 0 ? "on" : "off"; |
| | | if (!btnSwitch.IsSelected) |
| | | { |
| | | dimmerBar.ProgressBarColor = CSS.CSS_Color.AuxiliaryColor1; |
| | | } |
| | | btnSwitch.IsSelected = e > 0 ? true : false; |
| | | function.trait_on_off.curValue = e > 0 ? "on" : "off"; |
| | | |
| | | //if (e == 0 || e == 100) |
| | | //{ |
| | | // System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | // d.Add(FunctionAttributeKey.Brightness, function.brightness.ToString()); |
| | | // Control.Ins.SendWriteCommand(function, d); |
| | | //} |
| | | //else |
| | | //{ |
| | | // if (200 < (DateTime.Now - function.refreshTime).TotalMilliseconds) |
| | | // { |
| | | // function.refreshTime = DateTime.Now; |
| | | // new System.Threading.Thread(() => |
| | | // { |
| | | // //Control.Send(CommandType_A.write, function); |
| | | // System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | // d.Add(FunctionAttributeKey.Brightness, function.brightness.ToString()); |
| | | // Control.Ins.SendWriteCommand(function, d); |
| | | // }) |
| | | // { IsBackground = true }.Start(); |
| | | // } |
| | | // else |
| | | // { |
| | | // MainPage.Log("skip dimmer control!!"); |
| | | // } |
| | | //} |
| | | if (e == 0 || e == 100) |
| | | { |
| | | System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.Brightness, e.ToString()); |
| | | Control.Ins.SendWriteCommand(function, d); |
| | | } |
| | | else |
| | | { |
| | | if (350 < (DateTime.Now - function.refreshTime).TotalMilliseconds) |
| | | { |
| | | function.refreshTime = DateTime.Now; |
| | | new System.Threading.Thread(() => |
| | | { |
| | | //Control.Send(CommandType_A.write, function); |
| | | System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.Brightness, e.ToString()); |
| | | Control.Ins.SendWriteCommand(function, d); |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | } |
| | | else |
| | | { |
| | | MainPage.Log("skip dimmer control!!"); |
| | | } |
| | | } |
| | | }; |
| | | } |
| | | } |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using HDL_ON.Entity; |
| | | using Shared; |
| | | |
| | |
| | | new System.Threading.Thread(() => |
| | | { |
| | | function.trait_on_off.curValue = btnSwitchIcon.IsSelected ? "on" : "off"; |
| | | System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | Dictionary<string, string> d = new Dictionary<string, string>(); |
| | | d.Add("on_off", function.trait_on_off.curValue.ToString()); |
| | | DriverLayer.Control.Ins.SendWriteCommand(function, d); |
| | | }) |
| | |
| | | /// 固定域名,正式环境 |
| | | /// 公共域名就近解析 |
| | | /// </summary> |
| | | //public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com"; |
| | | public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";//mmmm |
| | | public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com"; |
| | | //public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";//mmmm |
| | | /// <summary> |
| | | /// RegionMark |
| | | /// </summary> |