using System;
|
using System.Collections.Generic;
|
|
namespace Shared.SimpleControl.Phone
|
{
|
public class UserDeviceToScene : FrameLayout
|
{
|
VerticalScrolViewLayout bodyScrolView;
|
|
FrameLayout LongPressFrameLayout = new FrameLayout ();
|
static UserDeviceToScene curView;
|
Button beforeClickButton = null;
|
/// <summary>
|
/// 构造函数
|
/// </summary>
|
public UserDeviceToScene ()
|
{
|
BackgroundColor = SkinStyle.Current.MainColor;
|
curView = this;
|
}
|
|
public static bool hasModify = false;
|
public static void Refresh ()
|
{
|
if (curView == null)
|
return;
|
if (hasModify) {
|
curView.ShowAllScene ();
|
hasModify = false;
|
}
|
}
|
|
|
/// <summary>
|
/// 显示房间的所有场景
|
/// </summary>
|
public void ShowAllScene ()
|
{
|
this.RemoveAll ();
|
#region 标题
|
var topView = new FrameLayout () {
|
Y = Application.GetRealHeight (36),
|
Height = Application.GetRealHeight (90),
|
};
|
AddChidren (topView);
|
|
var title = new Button () {
|
TextAlignment = TextAlignment.Center,
|
Text = Language.StringByID (R.MyInternationalizationString.Scenes),
|
TextSize = 19,
|
TextColor = SkinStyle.Current.TextColor1,
|
};
|
topView.AddChidren (title);
|
|
var logo = new Button () {
|
Width = Application.GetRealWidth (154),
|
Height = Application.GetRealHeight (90),
|
X = Application.GetRealWidth (486),
|
UnSelectedImagePath = MainPage.LogoString,
|
};
|
topView.AddChidren (logo);
|
var back = new Button () {
|
Height = Application.GetRealHeight (90),
|
Width = Application.GetRealWidth (85),
|
UnSelectedImagePath = "Item/Back.png",
|
SelectedImagePath = "Item/BackSelected.png",
|
};
|
topView.AddChidren (back);
|
back.MouseUpEventHandler += (sender, e) => {
|
(Parent as PageLayout).PageIndex -= 1;
|
curView = null;
|
};
|
#endregion
|
|
#region titelView
|
var roomTitleView = new FrameLayout () {
|
Height = Application.GetRealHeight (110),
|
BackgroundColor = SkinStyle.Current.TitileView,
|
Y = topView.Bottom,
|
};
|
AddChidren (roomTitleView);
|
|
var btnRoomArea = new Button () {
|
Width = Application.GetRealWidth (320),
|
TextSize = 16,
|
SelectedTextColor = SkinStyle.Current.SelectedColor,
|
TextColor = SkinStyle.Current.TextColor1,
|
TextID = R.MyInternationalizationString.RoomArea,
|
IsSelected = !UserConfig.Instance.SceneOfGloba
|
};
|
roomTitleView.AddChidren (btnRoomArea);
|
var btnGloba = new Button () {
|
Width = Application.GetRealWidth (320),
|
X = btnRoomArea.Right,
|
TextSize = 16,
|
SelectedTextColor = SkinStyle.Current.SelectedColor,
|
TextColor = SkinStyle.Current.TextColor1,
|
TextID = R.MyInternationalizationString.GlobaScene,
|
IsSelected = UserConfig.Instance.SceneOfGloba
|
};
|
roomTitleView.AddChidren (btnGloba);
|
var btnLine = new Button () {
|
Width = 1,
|
Height = Application.GetRealHeight (110) - 1,
|
BackgroundColor = SkinStyle.Current.White20Transparent,
|
X = btnRoomArea.Right,
|
Y = 1,
|
};
|
roomTitleView.AddChidren (btnLine);
|
|
btnRoomArea.MouseUpEventHandler += (sender, e) => {
|
btnRoomArea.IsSelected = true;
|
btnGloba.IsSelected = false;
|
UserConfig.Instance.SceneOfGloba = false;
|
UserConfig.Instance.SaveUserConfig ();
|
InitView (UserConfig.Instance.SceneOfGloba);
|
};
|
btnGloba.MouseUpEventHandler += (sender, e) => {
|
btnGloba.IsSelected = true;
|
btnRoomArea.IsSelected = false;
|
UserConfig.Instance.SceneOfGloba = true;
|
UserConfig.Instance.SaveUserConfig ();
|
InitView (UserConfig.Instance.SceneOfGloba);
|
};
|
#endregion
|
|
var bodyView = new FrameLayout () {
|
Width = LayoutParams.MatchParent,
|
Height = Application.GetRealHeight (Application.DesignHeight) - roomTitleView.Bottom,
|
Y = roomTitleView.Bottom,
|
BackgroundColor = SkinStyle.Current.ViewColor
|
};
|
AddChidren (bodyView);
|
bodyScrolView = new VerticalScrolViewLayout ();
|
bodyView.AddChidren (bodyScrolView);
|
|
InitView (UserConfig.Instance.SceneOfGloba);
|
}
|
Button lastSceneButton = null;
|
void InitView (bool isGolba)
|
{
|
bodyScrolView.RemoveAll ();
|
if (isGolba) {
|
var sceneFilePaths = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (Scene.GlobalSceneFilePath)));
|
if (sceneFilePaths == null) {
|
sceneFilePaths = new List<string> ();//存路径
|
IO.FileUtils.WriteFileByBytes (Scene.GlobalSceneFilePath, System.Text.Encoding.UTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (sceneFilePaths)));
|
}
|
sceneFilePaths.Add ("");
|
|
FrameLayout scenesRowView = null;
|
|
for (int index = 0; index < sceneFilePaths.Count; index++) {
|
var sceneFilePath = sceneFilePaths [index];
|
var scene = Scene.GetSceneByFilePath (sceneFilePath);
|
if (scene == null) {
|
scene = new Scene ();
|
}
|
|
if (index % 2 == 0) {
|
scenesRowView = new FrameLayout () {
|
Height = Application.GetRealWidth (250),
|
};
|
bodyScrolView.AddChidren (scenesRowView);
|
}
|
|
var sceneView = new FrameLayout () {
|
Width = Application.GetRealWidth (320),
|
BackgroundImagePath = scene.BackgroundImagePath,
|
};
|
scenesRowView.AddChidren (sceneView);
|
|
if (index % 2 == 1) {
|
sceneView.X = Application.GetRealWidth (320);
|
}
|
|
if (index == sceneFilePaths.Count - 1) {
|
sceneView.BackgroundImagePath = "Item/SceneAdd.png";
|
sceneView.MouseUpEventHandler += (sender, e) => {
|
new ScenePhoneMethod ().AddOrUpdataSceneBaseMassage (Scene.GlobalSceneFilePath, null, (newGlobaFile) => {
|
InitView (isGolba);
|
});
|
};
|
} else {
|
Button btnSceneName = new Button () {
|
Height = Application.GetRealWidth (40),
|
Y = Application.GetRealWidth (210),
|
BackgroundColor = SkinStyle.Current.Black50Transparent,
|
};
|
sceneView.AddChidren (btnSceneName);
|
var btnBGC = new Button () {
|
UnSelectedImagePath = "Item/sss.png",
|
SelectedImagePath = "Item/SceneSettingBackground.png",
|
TextAlignment = TextAlignment.BottomCenter,
|
Text = scene.Name,
|
TextColor = SkinStyle.Current.TextColor1,
|
TextSize = 15,
|
IsSelected = UserConfig.Instance.CurScene == sceneFilePath ? true : false
|
};
|
sceneView.AddChidren (btnBGC);
|
if(UserConfig.Instance.CurScene == sceneFilePath) {
|
beforeClickButton = btnBGC;
|
}
|
|
btnBGC.MouseLongEventHandler += (sender, e) => {
|
//if (string.IsNullOrEmpty (scene.Name))
|
// return;
|
LongPressFrameLayout = new FrameLayout () {
|
BackgroundColor = SkinStyle.Current.SceneTransparentBackColor,
|
};
|
sceneView.AddChidren (LongPressFrameLayout);
|
LongPressFrameLayout.MouseUpEventHandler += (sender2, e2) => {
|
LongPressFrameLayout.RemoveFromParent ();
|
};
|
|
var btnEditor = new Button () {
|
Width = Application.GetRealWidth (70),
|
Height = Application.GetMinRealAverage (76),
|
UnSelectedImagePath = "Item/UserSceneEditIcon.png",
|
X = Application.GetRealWidth (220),
|
Y = Application.GetRealHeight (13),
|
};
|
//if (!scene.busScene) {
|
LongPressFrameLayout.AddChidren (btnEditor);
|
//}
|
btnEditor.MouseUpEventHandler += (sender1, e1) => {
|
var userAddSceneDeviceView = new UserAddSceneDevice (Scene.GlobalSceneFilePath, sceneFilePath);
|
UserMiddle.DevicePageView.AddChidren (userAddSceneDeviceView);
|
userAddSceneDeviceView.ShowScene ((newSceneFilePath) => {
|
sceneFilePath = newSceneFilePath;
|
scene = Scene.GetSceneByFilePath (sceneFilePath);
|
sceneView.BackgroundImagePath = scene.BackgroundImagePath;
|
UserDeviceToScene.hasModify = true;
|
Refresh ();
|
});
|
UserMiddle.DevicePageView.PageIndex = UserMiddle.DevicePageView.ChildrenCount - 1;
|
LongPressFrameLayout.RemoveFromParent ();
|
};
|
|
var btnDel = new Button () {
|
Width = Application.GetRealWidth (70),
|
Height = Application.GetRealHeight (76),
|
UnSelectedImagePath = "Item/UserSceneDelIcon.png",
|
X = Application.GetRealWidth (40),
|
Y = Application.GetRealHeight (20),
|
};
|
LongPressFrameLayout.AddChidren (btnDel);
|
|
btnDel.MouseUpEventHandler += (senderDel, eDel) => {
|
IO.FileUtils.DeleteFile (sceneFilePath);
|
sceneFilePaths.Remove (sceneFilePath);
|
sceneFilePaths.Remove ("");
|
IO.FileUtils.WriteFileByBytes (Scene.GlobalSceneFilePath, System.Text.Encoding.UTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (sceneFilePaths)));
|
InitView (isGolba);
|
};
|
};
|
|
btnBGC.MouseUpEventHandler += (sender, e) => {
|
if (beforeClickButton != null) {
|
beforeClickButton.IsSelected = false;
|
}
|
beforeClickButton = btnBGC;
|
btnBGC.IsSelected = true;
|
new ScenePhoneMethod ().ControlScene (sceneFilePath);
|
UserConfig.Instance.CurScene = sceneFilePath;
|
UserConfig.Instance.SaveUserConfig ();
|
|
};
|
}
|
}
|
} else {
|
VerticalScrolViewLayout roomListView = new VerticalScrolViewLayout () {
|
Height = bodyScrolView.Height - Application.GetRealHeight (90),
|
};
|
bodyScrolView.AddChidren (roomListView);
|
FrameLayout bottomView = new FrameLayout () {
|
Height = Application.GetRealHeight (90),
|
};
|
bodyScrolView.AddChidren (bottomView);
|
Button btnHideNullRoom = new Button () {
|
Width = LayoutParams.MatchParent,
|
Height = LayoutParams.MatchParent,
|
TextID = UserConfig.Instance.HideInvalidRoomScene == true ? R.MyInternationalizationString.ShowAllRoomList : R.MyInternationalizationString.HideNullRoomScene,
|
TextAlignment = TextAlignment.Center,
|
IsSelected = UserConfig.Instance.HideInvalidRoomScene,
|
TextColor = SkinStyle.Current.TextColor1,
|
SelectedTextColor = SkinStyle.Current.TextColor1,
|
BackgroundColor = SkinStyle.Current.MainColor,
|
SelectedBackgroundColor = SkinStyle.Current.MainColor,
|
};
|
bottomView.AddChidren (btnHideNullRoom);
|
btnHideNullRoom.MouseUpEventHandler += (sender, e) => {
|
btnHideNullRoom.IsSelected = !btnHideNullRoom.IsSelected;
|
UserConfig.Instance.HideInvalidRoomScene = btnHideNullRoom.IsSelected;
|
UserConfig.Instance.SaveUserConfig ();
|
InitRoomScene (btnHideNullRoom.IsSelected, roomListView);
|
btnHideNullRoom.TextID = UserConfig.Instance.HideInvalidRoomScene == true ? R.MyInternationalizationString.ShowAllRoomList : R.MyInternationalizationString.HideNullRoomScene;
|
};
|
InitRoomScene (btnHideNullRoom.IsSelected, roomListView);
|
}
|
}
|
|
void InitRoomScene (bool hideNull, VerticalScrolViewLayout roomListView)
|
{
|
roomListView.RemoveAll ();
|
foreach (var room in Room.Lists) {
|
if (string.IsNullOrEmpty(room.Name )) {
|
continue;
|
}
|
if (hideNull && room.SceneFilePathList.Count == 0)
|
continue;
|
var roomView = new FrameLayout () {
|
Height = Application.GetRealHeight (110),
|
BackgroundColor = SkinStyle.Current.ViewColor,
|
Tag = room.Name
|
};
|
roomListView.AddChidren (roomView);
|
var btnPoint = new Button () {
|
Width = Application.GetRealWidth (10),
|
Height = Application.GetRealHeight (10),
|
X = Application.GetRealWidth (30),
|
Gravity = Gravity.CenterVertical,
|
UnSelectedImagePath = "Item/Point.png",
|
SelectedImagePath = "Item/Point.png",
|
};
|
roomView.AddChidren (btnPoint);
|
|
var btnRoomName = new Button () {
|
Text = room.Name,
|
X = btnPoint.Right + Application.GetRealWidth (20),
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = SkinStyle.Current.TextColor1,
|
};
|
roomView.AddChidren (btnRoomName);
|
|
var btnNumber = new EditText () {
|
Width = Application.GetRealWidth (50),
|
Height = Application.GetRealHeight (35),
|
X = Application.GetRealWidth (570),
|
Gravity = Gravity.CenterVertical,
|
UnSelectedImagePath = "Item/LightingCount.png",
|
SelectedImagePath = "Item/LightingCount.png",
|
Enable = false,
|
Text = room.SceneFilePathList.Count.ToString (),
|
TextAlignment = TextAlignment.Center,
|
Tag = room.Name
|
};
|
roomView.AddChidren (btnNumber);
|
|
btnRoomName.MouseUpEventHandler += (sender, e) => {
|
var userScenePage = new UserScenePage ();
|
UserMiddle.DevicePageView.AddChidren (userScenePage);
|
userScenePage.ShowUserScene (room);
|
UserMiddle.DevicePageView.PageIndex = 2;
|
};
|
|
Button btnRoomViewNull = new Button () {
|
Y = roomView.Height - Application.GetRealHeight (3),
|
Height = Application.GetRealHeight (3),
|
BackgroundColor = SkinStyle.Current.TitileView
|
};
|
roomView.AddChidren (btnRoomViewNull);
|
}
|
}
|
}
|
}
|