Skip to content

Commit 84c95ae

Browse files
authored
Merge pull request #194 from 3colorr/v1.4.0
V1.4.0
2 parents 05b6ed7 + d233266 commit 84c95ae

File tree

12 files changed

+473
-35
lines changed

12 files changed

+473
-35
lines changed

Mizuame.xcodeproj/project.pbxproj

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -519,7 +519,7 @@
519519
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
520520
GCC_WARN_UNUSED_FUNCTION = YES;
521521
GCC_WARN_UNUSED_VARIABLE = YES;
522-
INFOPLIST_KEY_NSHumanReadableCopyright = 1.3.2;
522+
INFOPLIST_KEY_NSHumanReadableCopyright = 1.4.0;
523523
MACOSX_DEPLOYMENT_TARGET = 15.0;
524524
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
525525
MTL_FAST_MATH = YES;
@@ -579,7 +579,7 @@
579579
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
580580
GCC_WARN_UNUSED_FUNCTION = YES;
581581
GCC_WARN_UNUSED_VARIABLE = YES;
582-
INFOPLIST_KEY_NSHumanReadableCopyright = 1.3.2;
582+
INFOPLIST_KEY_NSHumanReadableCopyright = 1.4.0;
583583
MACOSX_DEPLOYMENT_TARGET = 15.0;
584584
MTL_ENABLE_DEBUG_INFO = NO;
585585
MTL_FAST_MATH = YES;
@@ -599,7 +599,7 @@
599599
CODE_SIGN_ENTITLEMENTS = Mizuame/Mizuame.entitlements;
600600
CODE_SIGN_STYLE = Automatic;
601601
COMBINE_HIDPI_IMAGES = YES;
602-
CURRENT_PROJECT_VERSION = 1.3.2;
602+
CURRENT_PROJECT_VERSION = 1.4.0;
603603
DEAD_CODE_STRIPPING = YES;
604604
DEVELOPMENT_ASSET_PATHS = "\"Mizuame/Preview Content\"";
605605
DEVELOPMENT_TEAM = 4897P87J67;
@@ -615,7 +615,7 @@
615615
"@executable_path/../Frameworks",
616616
);
617617
MACOSX_DEPLOYMENT_TARGET = 13.3;
618-
MARKETING_VERSION = 1.3.2;
618+
MARKETING_VERSION = 1.4.0;
619619
PRODUCT_BUNDLE_IDENTIFIER = com.3colorr.Mizuame;
620620
PRODUCT_NAME = "$(TARGET_NAME)";
621621
SWIFT_EMIT_LOC_STRINGS = YES;
@@ -634,7 +634,7 @@
634634
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
635635
CODE_SIGN_STYLE = Automatic;
636636
COMBINE_HIDPI_IMAGES = YES;
637-
CURRENT_PROJECT_VERSION = 1.3.2;
637+
CURRENT_PROJECT_VERSION = 1.4.0;
638638
DEAD_CODE_STRIPPING = YES;
639639
DEVELOPMENT_ASSET_PATHS = "\"Mizuame/Preview Content\"";
640640
DEVELOPMENT_TEAM = 4897P87J67;
@@ -650,7 +650,7 @@
650650
"@executable_path/../Frameworks",
651651
);
652652
MACOSX_DEPLOYMENT_TARGET = 13.3;
653-
MARKETING_VERSION = 1.3.2;
653+
MARKETING_VERSION = 1.4.0;
654654
PRODUCT_BUNDLE_IDENTIFIER = com.gmail.3colorr.mizuame;
655655
PRODUCT_NAME = "$(TARGET_NAME)";
656656
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -669,6 +669,7 @@
669669
DEAD_CODE_STRIPPING = YES;
670670
DEVELOPMENT_TEAM = 4897P87J67;
671671
GENERATE_INFOPLIST_FILE = YES;
672+
INFOPLIST_KEY_NSHumanReadableCopyright = 1.4.0;
672673
MACOSX_DEPLOYMENT_TARGET = 13.3;
673674
MARKETING_VERSION = 1.0;
674675
PRODUCT_BUNDLE_IDENTIFIER = com.3colorr.MizuameTests;
@@ -689,6 +690,7 @@
689690
DEAD_CODE_STRIPPING = YES;
690691
DEVELOPMENT_TEAM = 4897P87J67;
691692
GENERATE_INFOPLIST_FILE = YES;
693+
INFOPLIST_KEY_NSHumanReadableCopyright = 1.4.0;
692694
MACOSX_DEPLOYMENT_TARGET = 13.3;
693695
MARKETING_VERSION = 1.0;
694696
PRODUCT_BUNDLE_IDENTIFIER = com.3colorr.MizuameTests;

Mizuame/ContentView.swift

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -303,20 +303,18 @@ struct ContentView: View {
303303
}
304304
}
305305

306-
if isPinNote {
307-
Image(systemName: "pin")
308-
.foregroundColor(Color.red)
309-
.onTapGesture {
310-
togglePinningNote()
311-
}
312-
} else {
313-
Image(systemName: "pin.slash")
314-
.foregroundColor(Color(bodyForegroundTheme))
315-
.onTapGesture {
316-
togglePinningNote()
317-
}
318-
}
319-
306+
//
307+
// Pin
308+
//
309+
Button(action: {
310+
togglePinningNote()
311+
}, label: {
312+
Image(systemName: isPinNote ? "pin" : "pin.slash")
313+
.foregroundColor(isPinNote ? Color.red : Color(bodyForegroundTheme))
314+
})
315+
.buttonStyle(SettingsLinkStyle())
316+
.keyboardShortcut("p", modifiers: [.command, .option])
317+
320318
if !showMarkdownPreview {
321319
Image(systemName: "eraser")
322320
.foregroundColor(Color(bodyForegroundTheme))

Mizuame/DataModel/MarkdownModel.swift

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ enum MarkdownTextViewType {
2222
case list2
2323
case list3
2424
case list4
25+
case ordered1
26+
case ordered2
27+
case ordered3
28+
case ordered4
2529
}
2630

2731
struct MarkdownTextView: Identifiable {
@@ -30,11 +34,13 @@ struct MarkdownTextView: Identifiable {
3034
var attributedText: AttributedString
3135
var viewType: MarkdownTextViewType
3236
var fontSize: CGFloat
37+
var orderedListNumber: Int
3338

3439
init(viewType: MarkdownTextViewType, text: Substring) {
3540
self.viewType = viewType
3641
self.text = text
3742
self.fontSize = 0
43+
self.orderedListNumber = -1
3844

3945
do {
4046
attributedText = try AttributedString(markdown: String(text))
@@ -66,4 +72,29 @@ struct MarkdownModel: Identifiable {
6672
markdownTextViews[0].viewType = newViewType
6773
return true
6874
}
75+
76+
mutating func setOrderedList(number: Int) -> Bool {
77+
guard markdownTextViews.count != 0 else {
78+
return false
79+
}
80+
81+
markdownTextViews[0].orderedListNumber = number
82+
return true
83+
}
84+
85+
func orderedListNumber() -> Int {
86+
guard markdownTextViews.count != 0 else {
87+
return -1
88+
}
89+
90+
return markdownTextViews[0].orderedListNumber
91+
}
92+
93+
func viewTypeOfFirstMarkdownTextView() -> MarkdownTextViewType {
94+
guard markdownTextViews.count != 0 else {
95+
return .ordered1
96+
}
97+
98+
return markdownTextViews[0].viewType
99+
}
69100
}

Mizuame/MarkdownStyling.swift

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,34 @@ extension View {
109109
.padding(EdgeInsets(top: 0, leading: 70, bottom: 0, trailing: 8))
110110
Text(elem.attributedText)
111111
.font(.system(size: elem.fontSize))
112+
113+
case .ordered1:
114+
Text("\(elem.orderedListNumber + 1).")
115+
.font(.system(size: elem.fontSize))
116+
.padding(EdgeInsets(top: 0, leading: 10, bottom: 0, trailing: 5))
117+
Text(elem.attributedText)
118+
.font(.system(size: elem.fontSize))
119+
120+
case .ordered2:
121+
Text("\(elem.orderedListNumber + 1).")
122+
.font(.system(size: elem.fontSize))
123+
.padding(EdgeInsets(top: 0, leading: 25, bottom: 0, trailing: 5))
124+
Text(elem.attributedText)
125+
.font(.system(size: elem.fontSize))
126+
127+
case .ordered3:
128+
Text("\(elem.orderedListNumber + 1).")
129+
.font(.system(size: elem.fontSize))
130+
.padding(EdgeInsets(top: 0, leading: 40, bottom: 0, trailing: 5))
131+
Text(elem.attributedText)
132+
.font(.system(size: elem.fontSize))
133+
134+
case .ordered4:
135+
Text("\(elem.orderedListNumber + 1).")
136+
.font(.system(size: elem.fontSize))
137+
.padding(EdgeInsets(top: 0, leading: 55, bottom: 0, trailing: 5))
138+
Text(elem.attributedText)
139+
.font(.system(size: elem.fontSize))
112140
}
113141
}
114142
}

Mizuame/NoteParser.swift

Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,11 @@ extension String {
9595
/// - List 1
9696
/// - List 2
9797
/// - List 3
98+
/// - List 4
99+
/// 1. Ordered List 1
100+
/// 1. Ordered List 2
101+
/// 1. Ordered List 3
102+
/// 1. Ordered List 4
98103
/// `Code block` -> Please check this function: findRangeOfCode( )
99104
/// (1+2= 3 ) -> Please check this function: findRangeOfFormula( )
100105
///
@@ -121,6 +126,16 @@ extension String {
121126
prefixEndIndex = line.index(after: listPrefixIndex)
122127
}
123128
}
129+
130+
// An ordered list syntax: "1. " (We want to get the index of last space)
131+
if let orderedListPrefixStartIndex = line.firstIndex(of: "1") {
132+
133+
let orderedListPrefixEndIndex = line.index(after: orderedListPrefixStartIndex)
134+
135+
if orderedListPrefixStartIndex != line.index(before: line.endIndex) && line[orderedListPrefixEndIndex] == "." {
136+
prefixEndIndex = line.index(after: orderedListPrefixEndIndex)
137+
}
138+
}
124139
}
125140

126141
switch line[line.startIndex...prefixEndIndex] {
@@ -234,6 +249,136 @@ extension String {
234249
_ = model.setFirstMarkdownViewType(to: .list4)
235250
markdown.append(model)
236251

252+
case "1. ":
253+
let stringLine = String(line[line.index(after: prefixEndIndex)..<line.endIndex])
254+
let viewModel = createMarkdownViewFrom(line: stringLine,
255+
codeBlockRanges: stringLine.findRangeOfCode(),
256+
formulaRanges: stringLine.findRangeOfFormula())
257+
258+
var model = MarkdownModel(content: viewModel)
259+
model.setFontSizeOfWholeLine(is: CGFloat(fontSize))
260+
_ = model.setFirstMarkdownViewType(to: .ordered1)
261+
262+
if markdown.count == 0 {
263+
_ = model.setOrderedList(number: 0)
264+
265+
} else {
266+
for elem in markdown.reversed() {
267+
if elem.viewTypeOfFirstMarkdownTextView() != .ordered1 &&
268+
elem.viewTypeOfFirstMarkdownTextView() != .ordered2 &&
269+
elem.viewTypeOfFirstMarkdownTextView() != .ordered3 &&
270+
elem.viewTypeOfFirstMarkdownTextView() != .ordered4 {
271+
272+
// Here, we expect the line the user typed to be the first one with ordered1 view type.
273+
_ = model.setOrderedList(number: 0)
274+
break
275+
276+
} else if elem.viewTypeOfFirstMarkdownTextView() == .ordered1 {
277+
// Here, we expect the line above to have a view type of 'ordered1'.
278+
_ = model.setOrderedList(number: elem.orderedListNumber() + 1)
279+
break
280+
}
281+
}
282+
}
283+
284+
markdown.append(model)
285+
286+
case " 1. ":
287+
let stringLine = String(line[line.index(after: prefixEndIndex)..<line.endIndex])
288+
let viewModel = createMarkdownViewFrom(line: stringLine,
289+
codeBlockRanges: stringLine.findRangeOfCode(),
290+
formulaRanges: stringLine.findRangeOfFormula())
291+
292+
var model = MarkdownModel(content: viewModel)
293+
model.setFontSizeOfWholeLine(is: CGFloat(fontSize))
294+
_ = model.setFirstMarkdownViewType(to: .ordered2)
295+
296+
if markdown.count == 0 {
297+
_ = model.setOrderedList(number: 0)
298+
299+
} else {
300+
for elem in markdown.reversed() {
301+
if elem.viewTypeOfFirstMarkdownTextView() != .ordered2 &&
302+
elem.viewTypeOfFirstMarkdownTextView() != .ordered3 &&
303+
elem.viewTypeOfFirstMarkdownTextView() != .ordered4 {
304+
305+
// Here, we expect the line the user typed to be the first one with ordered2 view type.
306+
_ = model.setOrderedList(number: 0)
307+
break
308+
309+
} else if elem.viewTypeOfFirstMarkdownTextView() == .ordered2 {
310+
// Here, we expect the line above to have a view type of 'ordered2'.
311+
_ = model.setOrderedList(number: elem.orderedListNumber() + 1)
312+
break
313+
}
314+
}
315+
}
316+
317+
markdown.append(model)
318+
319+
case " 1. ":
320+
let stringLine = String(line[line.index(after: prefixEndIndex)..<line.endIndex])
321+
let viewModel = createMarkdownViewFrom(line: stringLine,
322+
codeBlockRanges: stringLine.findRangeOfCode(),
323+
formulaRanges: stringLine.findRangeOfFormula())
324+
325+
var model = MarkdownModel(content: viewModel)
326+
model.setFontSizeOfWholeLine(is: CGFloat(fontSize))
327+
_ = model.setFirstMarkdownViewType(to: .ordered3)
328+
329+
if markdown.count == 0 {
330+
_ = model.setOrderedList(number: 0)
331+
332+
} else {
333+
for elem in markdown.reversed() {
334+
if elem.viewTypeOfFirstMarkdownTextView() != .ordered3 &&
335+
elem.viewTypeOfFirstMarkdownTextView() != .ordered4 {
336+
337+
// Here, we expect the line the user typed to be the first one with ordered3 view type.
338+
_ = model.setOrderedList(number: 0)
339+
break
340+
341+
} else if elem.viewTypeOfFirstMarkdownTextView() == .ordered3 {
342+
// Here, we expect the line above to have a view type of 'ordered3'.
343+
_ = model.setOrderedList(number: elem.orderedListNumber() + 1)
344+
break
345+
}
346+
}
347+
}
348+
349+
markdown.append(model)
350+
351+
case " 1. ":
352+
let stringLine = String(line[line.index(after: prefixEndIndex)..<line.endIndex])
353+
let viewModel = createMarkdownViewFrom(line: stringLine,
354+
codeBlockRanges: stringLine.findRangeOfCode(),
355+
formulaRanges: stringLine.findRangeOfFormula())
356+
357+
var model = MarkdownModel(content: viewModel)
358+
model.setFontSizeOfWholeLine(is: CGFloat(fontSize))
359+
_ = model.setFirstMarkdownViewType(to: .ordered4)
360+
361+
if markdown.count == 0 {
362+
_ = model.setOrderedList(number: 0)
363+
364+
} else {
365+
for elem in markdown.reversed() {
366+
if elem.viewTypeOfFirstMarkdownTextView() != .ordered4 {
367+
368+
// Here, we expect the line the user typed to be the first one with ordered4 view type.
369+
_ = model.setOrderedList(number: 0)
370+
break
371+
372+
} else if elem.viewTypeOfFirstMarkdownTextView() == .ordered4 {
373+
// Here, we expect the line above to have a view type of 'ordered4'.
374+
_ = model.setOrderedList(number: elem.orderedListNumber() + 1)
375+
break
376+
}
377+
}
378+
}
379+
380+
markdown.append(model)
381+
237382
default:
238383
let stringLine = String(line)
239384
let viewModel = createMarkdownViewFrom(line: stringLine,
@@ -564,4 +709,5 @@ extension String {
564709

565710
return resultSplitedTextList
566711
}
712+
567713
}

Mizuame/Settings/SettingKeys.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ struct SettingKeys {
125125
let keyMarkdownAction: String = "stickyNoteMarkdownAction"
126126
let initialMarkdownAction: Bool = false
127127
let keyShowMarkdownPreview: String = "stickyNoteShowMarkdownPreview"
128-
let initialShowMarkdownPreview: Bool = true
128+
let initialShowMarkdownPreview: Bool = false
129129

130130
struct KeyboardShortcuts {
131131
let keyKeyboardShortcutAction: String = "stickyNoteKeyboardShortcutAction"

0 commit comments

Comments
 (0)