using System; using System.Collections.Generic; using Shared.Common; using System.Timers; using System.Globalization; namespace Shared.Phone.Device.Room { public class AddRoom:FrameLayout { #region ◆ 变量____________________________ /// /// The room. /// public static Shared.Common.Room room; /// /// The action. /// public Action action; /// /// 图片来源 0--本地图库 1--拍照 2--系统图库 /// public int IconType = 0; /// /// 新建房间是否保存了 /// public bool NewRoomHadSave; /// /// 传进来的房间路径 /// public string SendedRoomFilePath; /// /// 记录更改房间前的背景图片 /// public static string OldBackgroundImagePath; /// /// 房间背景 /// private Button backGround; /// /// 编辑背景图按钮 /// private Device.CommonForm.SelectedStatuButton editBackgroundPicBtn; /// /// 传过来的房间路径 /// private string oldRoomFilePath; /// /// 房间名 /// private EditText nameET; /// /// 设置内容向右btn /// private Device.CommonForm.SelectedStatuButton settingRightBtn; /// /// 设置内容 /// private Device.CommonForm.SelectedStatuButton settingContent; /// /// 设置内容 /// private FrameLayout settingContentFL; /// /// 完成 /// private Device.CommonForm.CompleteButton confirm; #endregion #region ◆ 构造方法_________________________ /// /// 添加或者修改房间 /// public AddRoom() { BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor; } #endregion #region ◆ 重写移除方法_____________________ /// /// Removes from parent. /// public override void RemoveFromParent() { //if (!NewRoomHadSave && SendedRoomFilePath == "" && room.Name.Trim()!="") //{ // Application.RunOnMainThread(() => // { // var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.SaveTheNewRoomOrNo), Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Save)); // alert.Show(); // alert.ResultEventHandler += (sender, e) => // { // if (!e) // { // Common.Room.Remove(room.FileName); // } // action?.Invoke(); // base.RemoveFromParent(); // }; // }); //} //else //{ //action?.Invoke(); base.RemoveFromParent(); //} } #endregion #region ◆ 显示视图_________________________ /// /// 显示视图 /// /// Room file path. public void Show(string roomFilePath = "") { ShowAddRoom(roomFilePath); //SendedRoomFilePath = roomFilePath; } /// /// 显示 /// /// Room file path. void ShowAddRoom(string roomFilePath = "") { oldRoomFilePath = roomFilePath; #region topview room = new Common.Room { BackgroundImage = "Room/r0.png" }; var topBGView = new FrameLayout() { Height = Application.GetRealHeight(220), BackgroundColor = ZigbeeColor.Current.GXCTopViewBackgroundColor }; AddChidren(topBGView); var topView = new FrameLayout() { Y = Application.GetRealHeight(CommonPage.NavigationTitle_Y), Height = Application.GetRealHeight(220-CommonPage.NavigationTitle_Y), BackgroundColor = ZigbeeColor.Current.GXCTopViewBackgroundColor, }; this.AddChidren(topView); var title = new Button() { TextAlignment = TextAlignment.Center, TextID = R.MyInternationalizationString.AddRoom, TextSize = 20, TextColor = ZigbeeColor.Current.GXCTextBlackColor, Width = Application.GetRealWidth(1080 - 500), Gravity = Gravity.CenterHorizontal }; topView.AddChidren(title); var back = new Device.CommonForm.BackButton() { }; topView.AddChidren(back); back.MouseUpEventHandler += (sender, e) => { this.RemoveFromParent(); action?.Invoke(); }; #endregion #region midFrameLayout-- var midFl = new FrameLayout() { Height = Application.GetRealHeight(1920 - 220), Y = topView.Bottom, BackgroundColor = Shared.Common.ZigbeeColor.Current.GXCBackgroundColor, }; this.AddChidren(midFl); var backGroundFL = new FrameLayout() { Y = Application.GetRealHeight(30), Width = Application.GetRealWidth(1080 - CommonPage.XLeft * 2), Height = Application.GetRealHeight(550), Gravity=Gravity.CenterHorizontal, Radius=CommonPage.BigFormRadius }; midFl.AddChidren(backGroundFL); backGround = new Button() { UnSelectedImagePath = room.BackgroundImage, Radius = CommonPage.BigFormRadius, Width = Application.GetMinRealAverage(1080 - CommonPage.XLeft * 2), Height = Application.GetMinRealAverage(550), }; backGroundFL.AddChidren(backGround); editBackgroundPicBtn = new Device.CommonForm.SelectedStatuButton() { X = backGroundFL.Width- Application.GetRealWidth(100+20), Y = Application.GetRealHeight(20), Width = Application.GetMinRealAverage(100), Height = Application.GetMinRealAverage(100), UnSelectedImagePath = "Room/Edit.png", SelectedImagePath="Room/EditSelected.png", }; backGroundFL.AddChidren(editBackgroundPicBtn); var editNameFL = new FrameLayout() { Y = Application.GetRealHeight(100) + backGroundFL.Bottom, Height = Application.GetRealHeight(200), }; midFl.AddChidren(editNameFL); var nameBtn = new Button() { X = Application.GetRealWidth(50), Width=Application.GetRealWidth(700), TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor, TextID = R.MyInternationalizationString.RoomName, TextAlignment = TextAlignment.CenterLeft, Height = Application.GetRealHeight(90) }; editNameFL.AddChidren(nameBtn); nameET = new EditText() { Y= nameBtn.Bottom, X = Application.GetRealWidth(50), Width = Application.GetRealWidth(900), TextColor = ZigbeeColor.Current.GXCTextBlackColor, TextAlignment = TextAlignment.CenterLeft, Height = Application.GetRealHeight(99), PlaceholderText=Language.StringByID(R.MyInternationalizationString.PleaseInputRoomName), PlaceholderTextColor=ZigbeeColor.Current.GXCPlaceHolderTextColor, TextSize = 20, }; editNameFL.AddChidren(nameET); var nameLine = new Button() { Y = Application.GetRealHeight(200)-1, BackgroundColor = ZigbeeColor.Current.GXCPlaceHolderTextColor, Height = 1 }; editNameFL.AddChidren(nameLine); settingContentFL = new FrameLayout() { Y = Application.GetRealHeight(50) + editNameFL.Bottom, Height = Application.GetRealHeight(200) }; midFl.AddChidren(settingContentFL); settingContent = new Device.CommonForm.SelectedStatuButton() { X = Application.GetRealWidth(50), TextColor = ZigbeeColor.Current.GXCTextBlackColor, TextAlignment = TextAlignment.CenterLeft, TextSize = 20, TextID = R.MyInternationalizationString.SettingContent, Height = Application.GetRealHeight(90), Width = Application.GetRealWidth(500), Gravity = Gravity.CenterVertical }; settingContentFL.AddChidren(settingContent); settingRightBtn = new Device.CommonForm.SelectedStatuButton() { X = settingContentFL.Right - Application.GetRealWidth(120), Height = Application.GetMinRealAverage(100), Width = Application.GetMinRealAverage(100), UnSelectedImagePath = "Item/Next.png", SelectedImagePath="Item/NextSelected.png", Gravity=Gravity.CenterVertical }; settingContentFL.AddChidren(settingRightBtn); var settingLine = new Button() { Y = Application.GetRealHeight(200) - 1, BackgroundColor = ZigbeeColor.Current.GXCPlaceHolderTextColor, Height = 1 }; settingContentFL.AddChidren(settingLine); confirm = new Device.CommonForm.CompleteButton(1700, 700, 127); confirm.SetTitle(R.MyInternationalizationString.Confrim); this.AddChidren(confirm); #endregion //修改房间 if(oldRoomFilePath != "") { room = Shared.Common.Room.GetRoomByFilePath(oldRoomFilePath); //标题改为修改房间 title.TextID = R.MyInternationalizationString.EditRoom; //背景图改为当前房间的背景图 backGround.UnSelectedImagePath = room.BackgroundImage; //房间名称 nameET.Text = room.Name; } if (room.IsSharedRoom || room.IsLove) { nameET.Enable = false; } //绑定事件 BindEvent(); } #endregion #region ◆ 绑定事件_________________________ /// /// 绑定事件 /// private void BindEvent() { //设置背景 editBackgroundPicBtn.MouseUpEventHandler += SelectBackgroundImg; //设置内容 settingRightBtn.MouseUpEventHandler += SettingContent; settingContent.MouseUpEventHandler += SettingContent; settingContentFL.MouseUpEventHandler += SettingContent; //完成 confirm.MouseUpEventHandler += ComfireAdd; } #endregion #region ◆ 设置背景图_______________________ /// /// 选择背景图 /// private void SelectBackgroundImg(object sender,MouseEventArgs mouseEventArgs) { if(room.IsSharedRoom) { RoomCommon.ShowTipRoomIsShared(); return; } int selectRow_Height = 130; var selectFL = new FrameLayout() { BackgroundColor = ZigbeeColor.Current.GXCDailogBackGroundColor }; AddChidren(selectFL); var itemFL = new FrameLayout() { Y = Application.GetRealHeight(CommonPage.AppRealHeight - selectRow_Height * 4 - 20), Height = Application.GetRealHeight(selectRow_Height * 4 + 20) }; selectFL.AddChidren(itemFL); var localPicBtn = new Device.CommonForm.SelectedStatuButton() { Height = Application.GetRealHeight(selectRow_Height) - 1, TextID = R.MyInternationalizationString.LocalPic, TextColor = ZigbeeColor.Current.GXCTextBlackColor, BackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor, SelectedBackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor }; itemFL.AddChidren(localPicBtn); var localPicLine = new Button() { Y = localPicBtn.Bottom, Height = 1, BackgroundColor = ZigbeeColor.Current.GXCLineColor, }; itemFL.AddChidren(localPicLine); var takePhotoBtn = new Device.CommonForm.SelectedStatuButton() { Y = localPicLine.Bottom, Height = Application.GetRealHeight(selectRow_Height) - 1, TextID = R.MyInternationalizationString.TakePhoto, TextColor = ZigbeeColor.Current.GXCTextBlackColor, BackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor, SelectedBackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor }; itemFL.AddChidren(takePhotoBtn); var takePhotoLine = new Button() { Y = takePhotoBtn.Bottom, Height = 1, BackgroundColor = ZigbeeColor.Current.GXCLineColor, }; itemFL.AddChidren(takePhotoLine); var systemPicBtn = new Device.CommonForm.SelectedStatuButton() { Y = takePhotoLine.Bottom, Height = Application.GetRealHeight(selectRow_Height) - 1, TextID = R.MyInternationalizationString.SystemPic, TextColor = ZigbeeColor.Current.GXCTextBlackColor, BackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor, SelectedBackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor }; itemFL.AddChidren(systemPicBtn); var cancelBtn = new Device.CommonForm.SelectedStatuButton() { Y = systemPicBtn.Bottom + Application.GetRealHeight(20), Height = Application.GetRealHeight(selectRow_Height), TextID = R.MyInternationalizationString.Cancel, TextColor = ZigbeeColor.Current.GXCTextBlackColor, BackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor, SelectedBackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor }; itemFL.AddChidren(cancelBtn); itemFL.Animate = Animate.DownToUp; //本地图库 localPicBtn.MouseUpEventHandler += (send, ee) => { selectFL.RemoveFromParent(); var localPic = new AddRoomSelectPicByLocal(); Shared.Phone.UserView.HomePage.Instance.AddChidren(localPic); Shared.Phone.UserView.HomePage.Instance.PageIndex += 1; localPic.Show(); localPic.action = (backImgPath) => { backGround.UnSelectedImagePath = backImgPath; IconType = 0; room.BackgroundImageType = 0; }; }; //拍照 takePhotoBtn.MouseUpEventHandler += (send, ee) => { selectFL.RemoveFromParent(); var tradeTime = DateTime.Now.ToString("yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo); Camera.TakePicture((obj) => { if (obj == null) { return; } if (room.BackgroundImageType == 1 || room.BackgroundImageType == 2) { OldBackgroundImagePath = room.BackgroundImage; System.IO.File.Delete(OldBackgroundImagePath); } backGround.UnSelectedImagePath = $"RoomPicture{tradeTime}.png"; //room.BackgroundImage = $"{Config.Instance.HomeId}/{backGround.UnSelectedImagePath}"; IconType = 1; room.BackgroundImageType = 1; }, $"RoomPicture{tradeTime}.png"); }; //系统图库 systemPicBtn.MouseUpEventHandler += (send, ee) => { selectFL.RemoveFromParent(); var tradeTime = DateTime.Now.ToString("yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo); Camera.SelectPicture((obj) => { if (obj == null) { return; } if (room.BackgroundImageType == 1 || room.BackgroundImageType == 2) { OldBackgroundImagePath = room.BackgroundImage; System.IO.File.Delete(OldBackgroundImagePath); } backGround.UnSelectedImagePath = $"RoomPicture{tradeTime}.png"; //room.BackgroundImage = $"{Config.Instance.HomeId}/{backGround.UnSelectedImagePath}"; IconType = 2; room.BackgroundImageType = 2; }, $"RoomPicture{tradeTime}.png"); }; cancelBtn.MouseUpEventHandler += (send, ee) => { selectFL.RemoveFromParent(); }; selectFL.MouseUpEventHandler += (send, ee) => { selectFL.RemoveFromParent(); }; } #endregion #region ◆ 设置内容_________________________ /// /// 设置内容 /// private void SettingContent(object sender,MouseEventArgs mouseEventArgs) { if (oldRoomFilePath == "") { room.Name = nameET.Text.Trim(); //room.BackgroundImage = backGround.UnSelectedImagePath; var newRoomFilePath = room.FileName; if (nameET.Text.Trim() == "") { CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheRoomNameCannotBeNUll); return; } if (Shared.Common.Room.Lists.Find((obj) => obj.Name == room.Name) != null) { CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.HadSameRoom); return; } if (Global.IsExistsByHomeId(newRoomFilePath)) { CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.HadSameRoom); return; } var result= room.AddRoom(room); if (IconType == 1 || IconType == 2) { room.MoveBackGroundIamageFileToDirectory(backGround.UnSelectedImagePath, room.BackgroundImage); } oldRoomFilePath = room.FileName; //SendedRoomFilePath = room.FileName; } if (room.Name != nameET.Text.Trim()) { if (Shared.Common.Room.Lists.Find((obj) => obj.Name == nameET.Text.Trim()) != null) { CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.HadSameRoom); return; } room.Name = nameET.Text.Trim(); oldRoomFilePath = room.FileName; room.Save(); } var roomContent = new AddRoomContent(); UserView.HomePage.Instance.AddChidren(roomContent); UserView.HomePage.Instance.PageIndex += 1; roomContent.Show(Shared.Common.Room.GetRoomByFilePath(room.FileName)); } #endregion #region ◆ 完成____________________________ /// /// 完成 添加房间 /// private void ComfireAdd(object sender,MouseEventArgs mouseEventArgs) { if (room.IsSharedRoom) { RoomCommon.ShowTipRoomIsShared(); return; } //修改房间 if (oldRoomFilePath != "") { if(nameET.Text.Trim()!=room.Name) { if (Shared.Common.Room.Lists.Find((obj) => obj.Name == nameET.Text.Trim()) != null) { CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.HadSameRoom); return; } } //NewRoomHadSave = true; //删除原来的图片 if (!string.IsNullOrEmpty(OldBackgroundImagePath)) { Shared.Common.Room.DeleteBackGroundIamageFilebyHomeId(OldBackgroundImagePath); } if (IconType == 1 || IconType == 2) { room.MoveBackGroundIamageFileToDirectory(backGround.UnSelectedImagePath, backGround.UnSelectedImagePath); room.BackgroundImage = $"{Config.Instance.Guid}/{Config.Instance.HomeId}/{backGround.UnSelectedImagePath}"; } else { room.BackgroundImage = backGround.UnSelectedImagePath; } room.Name = nameET.Text.Trim(); room.Save(); action?.Invoke(); RemoveFromParent(); } else { try { if (nameET.Text.Trim() == "") { CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheRoomNameCannotBeNUll); return; } room.Name = nameET.Text.Trim(); var newRoomFilePath = room.FileName; if (Global.IsExistsByHomeId(newRoomFilePath)) { CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.HadSameRoom); return; } if (Shared.Common.Room.Lists.Find((obj) => obj.Name== room.Name)!=null) { CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.HadSameRoom); return; } if (IconType == 1 || IconType == 2) { room.MoveBackGroundIamageFileToDirectory(backGround.UnSelectedImagePath, backGround.UnSelectedImagePath); room.BackgroundImage = $"{Config.Instance.Guid}/{Config.Instance.HomeId}/{backGround.UnSelectedImagePath}"; } else { room.BackgroundImage = backGround.UnSelectedImagePath; } var result= room.AddRoom(room); if(result==false) { //提示用户添加失败 CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FAIL); } else { action?.Invoke(); RemoveFromParent(); } } catch(Exception ex) { System.Console.WriteLine("添加房间异常" + ex.Message); } } } #endregion } }