New file |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | |
| | | namespace Shared.Phone.UserCenter.SmartSound.Forms |
| | | { |
| | | public class SmartSoundContentForDevice : EditorCommonForm |
| | | { |
| | | /// <summary> |
| | | /// 当前选中的房间 |
| | | /// </summary> |
| | | private SmartSound.Room CurrentRoom = null; |
| | | |
| | | private FrameLayout ContentLayout = null; |
| | | |
| | | private VerticalListControl listView = null; |
| | | |
| | | /// <summary> |
| | | /// 没有数据的时候,提示用 |
| | | /// </summary> |
| | | private FrameLayout TipLayout = null; |
| | | |
| | | private List<string> TabList = new List<string>() |
| | | { |
| | | Language.StringByID(R.MyInternationalizationString.uLight), |
| | | Language.StringByID(R.MyInternationalizationString.uDeviceBelongId100), |
| | | Language.StringByID(R.MyInternationalizationString.AC) |
| | | }; |
| | | |
| | | private int CurrentSelectIndex = 0; |
| | | |
| | | private int imageWith = 683; |
| | | private int imageHeight = 392; |
| | | |
| | | /// <summary> |
| | | /// 选择房间中的设备 |
| | | /// </summary> |
| | | /// <param name="_room"> 当前房间</param> |
| | | public SmartSoundContentForDevice(SmartSound.Room _room) |
| | | { |
| | | this.CurrentRoom = _room; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 画面显示(底层会固定调用此方法,借以完成画面创建) |
| | | /// </summary> |
| | | public void ShowForm() |
| | | { |
| | | //设置标题信息 |
| | | base.SetTitleText(CurrentRoom.RoomName); |
| | | //初始化中部控件 |
| | | this.InitMiddleFrame(); |
| | | } |
| | | |
| | | private void InitMiddleFrame() |
| | | { |
| | | //1.场景、功能导航条 |
| | | var switchContr = new SceneFunctionSwitchControl();
|
| | | this.bodyFrameLayout.AddChidren(switchContr);
|
| | | switchContr.Gravity = Gravity.CenterVertical;
|
| | | switchContr.Width = Application.GetRealWidth(650);
|
| | | switchContr.Y = Application.GetRealHeight(40); |
| | | |
| | | ContentLayout = new FrameLayout(); |
| | | this.bodyFrameLayout.AddChidren(ContentLayout); |
| | | ContentLayout.Height = this.bodyFrameLayout.Height - switchContr.Height - Application.GetRealHeight(40); |
| | | ContentLayout.Y = switchContr.Height + Application.GetRealHeight(40); |
| | | |
| | | var listTitle = new List<string>();
|
| | | listTitle.Add(Language.StringByID(R.MyInternationalizationString.uScence));
|
| | | listTitle.Add(Language.StringByID(R.MyInternationalizationString.uFunction)); |
| | | |
| | | //设置初始值 |
| | | switchContr.SetDefultIndex(0);
|
| | | |
| | | //选择事件
|
| | | switchContr.SelectTabEvent += (selectIndex) =>
|
| | | { |
| | | //刷新bodyView |
| | | if (selectIndex == 0) |
| | | {
|
| | | LoadSceneView();
|
| | | } |
| | | else |
| | | {
|
| | | LoadFunction();
|
| | | } |
| | | }; |
| | | |
| | | //开始初始化 |
| | | switchContr.InitControl(listTitle); |
| | | |
| | | //添加确认按钮 |
| | | BottomClickButton bottomClickButton = new BottomClickButton(); |
| | | this.bodyFrameLayout.AddChidren(bottomClickButton); |
| | | bottomClickButton.Text = "确认"; |
| | | bottomClickButton.ButtonClickEvent += (sender, e) => |
| | | { |
| | | //保存数据 |
| | | base.CloseForm(); |
| | | };
|
| | | } |
| | | |
| | | /// <summary> |
| | | /// 加载场景界面 |
| | | /// </summary> |
| | | private void LoadSceneView() |
| | | { |
| | | try |
| | | { |
| | | //3.设备列表 ListView |
| | | ContentLayout.RemoveAll(); |
| | | |
| | | var tipLayout = new FrameLayout(); |
| | | ContentLayout.AddChidren(tipLayout); |
| | | tipLayout.Visible = false; |
| | | ShowNoFunctionTip(tipLayout); |
| | | |
| | | listView = new VerticalListControl(); |
| | | ContentLayout.AddChidren(listView); |
| | | listView.Y = Application.GetRealHeight(40); |
| | | listView.RemoveAll(); |
| | | |
| | | for (int i = 0; i < CurrentRoom.SceneList.Count; i++) |
| | | { |
| | | SmartSound.Scene scene = CurrentRoom.SceneList[i]; |
| | | var roomRowLayout = new SceneRowLayout(this, scene); |
| | | listView.AddChidren(roomRowLayout); |
| | | roomRowLayout.InitControl(); |
| | | } |
| | | |
| | | if (listView.ChildrenCount == 0) |
| | | { |
| | | tipLayout.Visible = true; |
| | | } |
| | | else |
| | | { |
| | | tipLayout.Visible = false; |
| | | }
|
| | |
|
| | | if (listView.ChildrenCount > 5) |
| | | { |
| | | TextView textView = new TextView(); |
| | | textView.Height = Application.GetRealHeight(127 * 3); |
| | | listView.AddChidren(textView); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | string eoor = ex.Message; |
| | | } |
| | | } |
| | | |
| | | private void LoadFunction() |
| | | { |
| | | try |
| | | { |
| | | //2.功能类型选择(灯光、遮阳、空调) |
| | | //3.设备列表 ListView |
| | | this.ContentLayout.RemoveAll(); |
| | | |
| | | FrameLayout tab_layout = new FrameLayout(); |
| | | ContentLayout.AddChidren(tab_layout); |
| | | tab_layout.Height = Application.GetRealHeight(170); |
| | | tab_layout.Y = 0; |
| | | |
| | | //添加 ListView 提示 |
| | | TipLayout = new FrameLayout(); |
| | | ContentLayout.AddChidren(TipLayout); |
| | | TipLayout.Visible = false; |
| | | TipLayout.Y= tab_layout.Height; |
| | | ShowNoFunctionTip(TipLayout); |
| | | |
| | | //添加 ListView |
| | | listView = new VerticalListControl(); |
| | | ContentLayout.AddChidren(listView); |
| | | listView.Y= tab_layout.Height; |
| | | listView.Height=ContentLayout.Height- tab_layout.Height; |
| | | |
| | | Buttons.Clear(); |
| | | |
| | | //添加功能项 |
| | | for (int i = 0; i < TabList.Count; i++) |
| | | { |
| | | Button button = new Button(); |
| | | tab_layout.AddChidren(button); |
| | | button.Width = Application.GetRealWidth(250); |
| | | button.Text = TabList[i]; |
| | | button.X = ControlCommonResourse.XXLeft/2 + i * button.Width; |
| | | button.AddTag("Index", i); |
| | | Buttons.Add(button); |
| | | |
| | | button.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | Button btn = sender as Button; |
| | | CurrentSelectIndex = (int)btn.GetTagByKey("Index"); |
| | | RefreshButtonState(); |
| | | RefreshFunctionListView(); |
| | | }; |
| | | } |
| | | |
| | | RefreshButtonState(); |
| | | RefreshFunctionListView(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | string error = ex.Message; |
| | | } |
| | | } |
| | | |
| | | private void RefreshFunctionListView() |
| | | { |
| | | try |
| | | { |
| | | listView.RemoveAll(); |
| | | |
| | | switch (CurrentSelectIndex) |
| | | { |
| | | case 0: // 灯光 |
| | | { |
| | | for (int i = 0; i < CurrentRoom.DeviceList.Count; i++) |
| | | { |
| | | SmartSound.Device device = CurrentRoom.DeviceList[i]; |
| | | // 灯光 |
| | | if (device.DeviceType == 1 || device.DeviceType == 2 || device.DeviceType == 3) |
| | | { |
| | | var deviceRowLayout = new DeviceRowLayout(this, device); |
| | | listView.AddChidren(deviceRowLayout); |
| | | deviceRowLayout.InitControl(); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case 1: // 窗帘 |
| | | { |
| | | for (int i = 0; i < CurrentRoom.DeviceList.Count; i++) |
| | | { |
| | | SmartSound.Device device = CurrentRoom.DeviceList[i]; |
| | | // |
| | | if (device.DeviceType == 4 || device.DeviceType == 5 || device.DeviceType == 6) |
| | | { |
| | | var deviceRowLayout = new DeviceRowLayout(this, device); |
| | | listView.AddChidren(deviceRowLayout); |
| | | deviceRowLayout.InitControl(); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case 2: // 空调 |
| | | { |
| | | for (int i = 0; i < CurrentRoom.DeviceList.Count; i++) |
| | | { |
| | | SmartSound.Device device = CurrentRoom.DeviceList[i]; |
| | | // |
| | | if (device.DeviceType == 7) |
| | | { |
| | | var deviceRowLayout = new DeviceRowLayout(this, device); |
| | | listView.AddChidren(deviceRowLayout); |
| | | deviceRowLayout.InitControl(); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | |
| | | if (listView.ChildrenCount > 5) |
| | | { |
| | | TextView textView = new TextView(); |
| | | textView.Height = Application.GetRealHeight(127 * 3); |
| | | listView.AddChidren(textView); |
| | | } |
| | | |
| | | if (listView.ChildrenCount == 0) |
| | | { |
| | | TipLayout.Visible = true; |
| | | } |
| | | else |
| | | { |
| | | TipLayout.Visible = false; |
| | | } |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | string error = e.Message; |
| | | } |
| | | } |
| | | |
| | | /// <summary>
|
| | | /// 提示没有功能
|
| | | /// </summary>
|
| | | private void ShowNoFunctionTip(FrameLayout layout,string tip="没有数据哦")
|
| | | {
|
| | | var noFunction = new Button()
|
| | | {
|
| | | Y = Application.GetRealHeight(320),
|
| | | Width = Application.GetMinRealAverage(757),
|
| | | Height = Application.GetMinRealAverage(435),
|
| | | UnSelectedImagePath = "Item/NoFunction.png",
|
| | | Gravity = Gravity.CenterHorizontal
|
| | | };
|
| | | layout.AddChidren(noFunction);
|
| | |
|
| | | var noFunctionTip = new Button()
|
| | | {
|
| | | Y = noFunction.Bottom + Application.GetRealHeight(32),
|
| | | Height = Application.GetRealHeight(200),
|
| | | Width = Application.GetRealWidth(700),
|
| | | Gravity = Gravity.CenterHorizontal,
|
| | | Text = tip,
|
| | | TextColor = UserCenterColor.Current.TextGrayColor1, |
| | | TextAlignment = TextAlignment.Center,
|
| | | IsMoreLines = true
|
| | | };
|
| | | layout.AddChidren(noFunctionTip);
|
| | | } |
| | | |
| | | //为了方便更新状态,存起来 |
| | | private List<Button> Buttons = new List<Button>(); |
| | | private void RefreshButtonState() |
| | | { |
| | | try |
| | | { |
| | | for (int i = 0; i < Buttons.Count; i++) |
| | | { |
| | | Button btn = Buttons[i]; |
| | | if (i == CurrentSelectIndex) |
| | | { |
| | | btn.SelectedImagePath = "Item/RoomIconBackgroundSelected.png"; |
| | | btn.UnSelectedImagePath = "Item/RoomIconBackgroundSelected.png"; |
| | | btn.TextColor = UserCenterColor.Current.White; |
| | | } |
| | | else |
| | | { |
| | | btn.SelectedImagePath = "Item/RoomIconBackground.png"; |
| | | btn.UnSelectedImagePath = "Item/RoomIconBackground.png"; |
| | | btn.TextColor=UserCenterColor.Current.TextGrayColor1; |
| | | } |
| | | } |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | string error = e.Message; |
| | | } |
| | | } |
| | | |
| | | #region ■ 自定义场景选择控件_____________________
|
| | | |
| | | /// <summary>
|
| | | /// 房间列表行
|
| | | /// </summary>
|
| | | private class SceneRowLayout : FrameRowControl
|
| | | { |
| | | private SmartSoundContentForDevice smartSoundControlForDevice = null; |
| | | |
| | | private SmartSound.Scene scene = null; |
| | | /// <summary>
|
| | | /// 房间名称
|
| | | /// </summary>
|
| | | private NormalViewControl btnName = null;
|
| | |
|
| | | private MostRightIconControl Right_icon = null; |
| | | |
| | | |
| | | /// <summary>
|
| | | /// 房间列表行
|
| | | /// </summary>
|
| | | public SceneRowLayout(SmartSoundContentForDevice _smartSoundControlForDevice, SmartSound.Scene _scene)
|
| | | {
|
| | | this.smartSoundControlForDevice = _smartSoundControlForDevice;
|
| | | this.scene = _scene;
|
| | | this.UseClickStatu = false; |
| | | this.BackgroundColor = UserCenterColor.Current.White;
|
| | | this.Height = Application.GetRealHeight(170);
|
| | | } |
| | | |
| | | /// <summary>
|
| | | /// 初始化控件
|
| | | /// </summary>
|
| | | public void InitControl()
|
| | | { |
| | | //显示文本 |
| | | btnName = this.AddLeftCaption(string.Empty, 700);
|
| | | btnName.Height = Application.GetRealHeight(60);
|
| | | btnName.TextSize = 14;
|
| | | btnName.Y = Application.GetRealHeight(57);
|
| | | btnName.Text = scene.SceneName; |
| | | Right_icon = this.AddMostRightEmptyIcon(58, 58);
|
| | | Right_icon.Gravity = Gravity.CenterVertical; |
| | | |
| | | this.ButtonClickEvent += (sender, e) =>
|
| | | { |
| | | scene.Checked = !scene.Checked; |
| | | RefreshRightIconState(scene.Checked); |
| | | }; |
| | | |
| | | RefreshRightIconState(scene.Checked); |
| | | AddBottomLine(); |
| | | |
| | | }
|
| | |
|
| | | private void RefreshRightIconState(bool bol = false) |
| | | {
|
| | | try |
| | | { |
| | | if (bol) |
| | | { |
| | | Right_icon.SelectedImagePath = "Item/ItemSelected.png"; |
| | | Right_icon.UnSelectedImagePath = "Item/ItemSelected.png"; |
| | | } |
| | | else |
| | | { |
| | | Right_icon.SelectedImagePath = "Item/ItemUnSelected.png"; |
| | | Right_icon.UnSelectedImagePath = "Item/ItemUnSelected.png"; |
| | | } |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | string error = e.Message; |
| | | } |
| | | }
|
| | |
|
| | | } |
| | | #endregion |
| | | |
| | | #region ■ 自定灯光选择控件_____________________
|
| | | |
| | | /// <summary>
|
| | | /// 房间列表行
|
| | | /// </summary>
|
| | | private class DeviceRowLayout : FrameRowControl
|
| | | { |
| | | private SmartSoundContentForDevice smartSoundControlForDevice = null; |
| | | |
| | | private SmartSound.Device device = null; |
| | | /// <summary>
|
| | | /// 房间名称
|
| | | /// </summary>
|
| | | private NormalViewControl btnName = null;
|
| | |
|
| | | private MostRightIconControl Right_icon = null; |
| | | |
| | | |
| | | /// <summary>
|
| | | /// 房间列表行
|
| | | /// </summary>
|
| | | public DeviceRowLayout(SmartSoundContentForDevice _smartSoundControlForDevice, SmartSound.Device _device)
|
| | | {
|
| | | this.smartSoundControlForDevice = _smartSoundControlForDevice;
|
| | | this.device = _device;
|
| | | this.UseClickStatu = false; |
| | | this.BackgroundColor = UserCenterColor.Current.White;
|
| | | this.Height = Application.GetRealHeight(170);
|
| | | } |
| | | |
| | | /// <summary>
|
| | | /// 初始化控件
|
| | | /// </summary>
|
| | | public void InitControl()
|
| | | { |
| | | //显示文本 |
| | | btnName = this.AddLeftCaption(string.Empty, 700);
|
| | | btnName.Height = Application.GetRealHeight(60);
|
| | | btnName.TextSize = 14;
|
| | | btnName.Y = Application.GetRealHeight(57);
|
| | | btnName.Text = device.DeviceName; |
| | | Right_icon = this.AddMostRightEmptyIcon(58, 58);
|
| | | Right_icon.Gravity = Gravity.CenterVertical; |
| | | |
| | | this.ButtonClickEvent += (sender, e) =>
|
| | | { |
| | | device.Checked = !device.Checked; |
| | | RefreshRightIconState(device.Checked); |
| | | }; |
| | | |
| | | RefreshRightIconState(device.Checked); |
| | | AddBottomLine(); |
| | | |
| | | }
|
| | |
|
| | | private void RefreshRightIconState(bool bol = false) |
| | | {
|
| | | try |
| | | { |
| | | if (bol) |
| | | { |
| | | Right_icon.SelectedImagePath = "Item/ItemSelected.png"; |
| | | Right_icon.UnSelectedImagePath = "Item/ItemSelected.png"; |
| | | } |
| | | else |
| | | { |
| | | Right_icon.SelectedImagePath = "Item/ItemUnSelected.png"; |
| | | Right_icon.UnSelectedImagePath = "Item/ItemUnSelected.png"; |
| | | } |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | string error = e.Message; |
| | | } |
| | | }
|
| | | }
|
| | | #endregion |
| | | } |
| | | } |