Skip to content

Commit a175108

Browse files
committed
refactory display about soflans in design mode
1 parent 045af75 commit a175108

14 files changed

Lines changed: 740 additions & 258 deletions

File tree

OngekiFumenEditor/Base/Collections/IndividualSoflanAreaListMap.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public class IndividualSoflanAreaListMap : PropertyChangedBase, IReadOnlyDiction
4242

4343
private SoflanGroupWrapItemGroup defaultItemGroup = new()
4444
{
45-
DisplayName = "default"
45+
DisplayName = "default",
4646
};
4747

4848
private Dictionary<int, SoflanGroupWrapItem> cachedSoflanGroupWrapItemMap = new();

OngekiFumenEditor/Base/EditorObjects/SoflanGroupWrapItem.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,16 @@ public override bool IsDisplayInPreviewMode
4343
set => Set(ref isDisplayInPreviewMode, value);
4444
}
4545

46+
private bool isDisplaySoflanDesignMode = false;
47+
public bool IsDisplaySoflanDesignMode
48+
{
49+
get => isDisplaySoflanDesignMode;
50+
set => Set(ref isDisplaySoflanDesignMode, value);
51+
}
52+
4653
public override string ToString()
4754
{
48-
return $"SoflanGroupId:{SoflanGroupId}, IsSelected:{IsSelected}, IsDisplayInDesignMode:{IsDisplayInPreviewMode}, IsDisplayInDesignMode:{IsDisplayInPreviewMode}";
55+
return $"SoflanGroupId:{SoflanGroupId}, IsSelected:{IsSelected}, IsDisplayInDesignMode:{IsDisplayInPreviewMode}, IsDisplayInDesignMode:{IsDisplayInPreviewMode}, IsDisplaySoflanDesignMode:{IsDisplaySoflanDesignMode}";
4956
}
5057
}
5158
}

OngekiFumenEditor/Base/OngekiFumen.cs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ public void Setup()
7979
{
8080
MetaInfo = MetaInfo;
8181

82+
#region BpmList
83+
8284
//setup firstBPM from fumen metainfo
8385
var firstBpm = new BPMChange()
8486
{
@@ -89,6 +91,10 @@ public void Setup()
8991
BpmList.Remove(unusedBpm);
9092
BpmList.SetFirstBpm(firstBpm);
9193

94+
#endregion
95+
96+
#region MeterChanges
97+
9298
//setup firstMeter from fumen metainfo
9399
var firstMeter = new MeterChange()
94100
{
@@ -105,6 +111,16 @@ public void Setup()
105111
MeterChanges.Remove(unusedMeter);
106112
MeterChanges.SetFirstMeter(firstMeter);
107113

114+
#endregion
115+
116+
#region IndividualSoflanAreaMap
117+
118+
foreach (var soflanGroup in SoflansMap.Keys)
119+
{
120+
//make sure soflanGroup in IndividualSoflanAreaMap had been create
121+
_ = IndividualSoflanAreaMap[soflanGroup];
122+
}
123+
108124
//setup SoflanGroupWrapItem
109125
var groupName = "default";
110126
var itemGroup = IndividualSoflanAreaMap.SoflanGroupWrapItemGroupRoot.Children.OfType<SoflanGroupWrapItemGroup>().FirstOrDefault(x => x.DisplayName == groupName) ?? new SoflanGroupWrapItemGroup()
@@ -119,6 +135,13 @@ public void Setup()
119135
itemGroup.Add(item);
120136
}
121137
IndividualSoflanAreaMap.SoflanGroupWrapItemGroupRoot.Add(itemGroup);
138+
139+
//setup default soflan group item
140+
var defaultSoflanGroupItem = IndividualSoflanAreaMap.TryGetOrCreateSoflanGroupWrapItem(0, out _);
141+
defaultSoflanGroupItem.IsSelected = true;
142+
defaultSoflanGroupItem.IsDisplaySoflanDesignMode = true;
143+
144+
#endregion
122145
}
123146

124147
public void AddObject(OngekiObjectBase obj)

OngekiFumenEditor/Modules/FumenSoflanGroupListViewer/IFumenSoflanGroupListViewer.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,6 @@ namespace OngekiFumenEditor.Modules.FumenSoflanGroupListViewer
1111
public interface IFumenSoflanGroupListViewer : ITool
1212
{
1313
SoflanGroupWrapItem CurrentSelectedSoflanGroupWrapItem { get; }
14+
SoflanGroupWrapItem CurrentSoflansDisplaySoflanGroupWrapItem { get; }
1415
}
1516
}

OngekiFumenEditor/Modules/FumenSoflanGroupListViewer/ViewModels/FumenSoflanGroupListViewerViewModel.cs

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,13 @@ public SoflanGroupWrapItem CurrentSelectedSoflanGroupWrapItem
117117
}
118118
}
119119

120+
private SoflanGroupWrapItem currentSoflansDisplaySoflanGroupWrapItem;
121+
public SoflanGroupWrapItem CurrentSoflansDisplaySoflanGroupWrapItem
122+
{
123+
get => currentSoflansDisplaySoflanGroupWrapItem;
124+
set => Set(ref currentSoflansDisplaySoflanGroupWrapItem, value);
125+
}
126+
120127
public SoflanGroupWrapItemGroup DisplaySoflanGroupItemGroupRoot
121128
{
122129
get => displaySoflanGroupItemGroupRoot;
@@ -146,6 +153,18 @@ public void OnListLoaded(FrameworkElement list)
146153

147154
Log.LogDebug($"ListViewDragDropManager created.");
148155
}
156+
157+
158+
public void OnItemChecked_IsDisplaySoflanDesignMode(object dataContext)
159+
{
160+
if (dataContext is not SoflanGroupWrapItem item)
161+
return;
162+
if (!item.IsDisplaySoflanDesignMode)
163+
throw new Exception("IsDisplaySoflanDesignMode is false.");
164+
165+
CurrentSoflansDisplaySoflanGroupWrapItem = item;
166+
Log.LogInfo($"CurrentSoflansDisplaySoflanGroupWrapItem changed: {CurrentSoflansDisplaySoflanGroupWrapItem}");
167+
}
149168

150169
public void OnItemChecked(object dataContext)
151170
{
@@ -162,6 +181,7 @@ private void RebuildItemGroupRoot()
162181
{
163182
DisplaySoflanGroupItemGroupRoot = default;
164183
CurrentSelectedSoflanGroupWrapItem = default;
184+
CurrentSoflansDisplaySoflanGroupWrapItem = default;
165185

166186
if (Editor?.Fumen is not OngekiFumen fumen)
167187
return;
@@ -182,7 +202,13 @@ IEnumerable<SoflanGroupDisplayItemListViewBase> visit(SoflanGroupDisplayItemList
182202
}
183203
}
184204

185-
CurrentSelectedSoflanGroupWrapItem = visit(DisplaySoflanGroupItemGroupRoot).OfType<SoflanGroupWrapItem>().FirstOrDefault(x => x.IsSelected);
205+
foreach (var item in visit(DisplaySoflanGroupItemGroupRoot).OfType<SoflanGroupWrapItem>())
206+
{
207+
if (item.IsSelected)
208+
CurrentSelectedSoflanGroupWrapItem = item;
209+
if (item.IsDisplaySoflanDesignMode)
210+
CurrentSoflansDisplaySoflanGroupWrapItem = item;
211+
}
186212
}
187213

188214
public void OnItemDoubleClick(SoflanPoint item)

0 commit comments

Comments
 (0)