Skip to content

Commit d33526b

Browse files
committed
Converted GuitarChordView to Kotlin and Refactored the class
1 parent 23618bf commit d33526b

File tree

8 files changed

+464
-1822
lines changed

8 files changed

+464
-1822
lines changed

library/src/main/java/com/chrynan/guitarchords/chordpro/ChordPro.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ public static GuitarChordView.Chord getChordFromString(String string){
198198
baseFret = string.substring(baseFretStart + MetaTag.BASE_FRET.length(), string.length()).trim();
199199
}
200200
GuitarChordView.Chord chord = new GuitarChordView.Chord();
201-
chord.setTitle(title);
201+
chord.title = title;
202202
int b;
203203
try {
204204
b = (Integer.valueOf(baseFret) < 0) ? 0 : Integer.valueOf(baseFret);

library/src/main/java/com/chrynan/guitarchords/model/Chord.kt

+14
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,18 @@ data class Chord(
1212
val opens: Set<ChordMarker.Open> by lazy { markers.filterIsInstance<ChordMarker.Open>().toSet() }
1313

1414
val mutes: Set<ChordMarker.Muted> by lazy { markers.filterIsInstance<ChordMarker.Muted>().toSet() }
15+
16+
operator fun contains(marker: ChordMarker) = markers.contains(marker)
17+
18+
fun getMarkersOnString(number: Int): List<ChordMarker> {
19+
return markers.filter {
20+
when {
21+
it is ChordMarker.Note && it.string.number == number -> true
22+
it is ChordMarker.Bar && (number in it.startString.number..it.endString.number) -> true
23+
it is ChordMarker.Open && it.stringNumber.number == number -> true
24+
it is ChordMarker.Muted && it.stringNumber.number == number -> true
25+
else -> false
26+
}
27+
}
28+
}
1529
}

library/src/main/java/com/chrynan/guitarchords/model/ChordMarker.kt

+15-6
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,26 @@ sealed class ChordMarker {
55
data class Note(
66
val finger: Finger,
77
val fretNumber: FretNumber,
8-
val stringNumber: StringNumber
8+
val string: ChordString
99
) : ChordMarker()
1010

1111
data class Bar(
1212
val finger: Finger,
1313
val fretNumber: FretNumber,
14-
val startString: StringNumber,
15-
val endString: StringNumber
16-
) : ChordMarker()
14+
val startString: ChordString,
15+
val endString: ChordString
16+
) : ChordMarker() {
17+
18+
val notes: Set<Note> by lazy {
19+
(startString.number..endString.number).map {
20+
Note(finger = finger,
21+
fretNumber = fretNumber,
22+
string = ChordString(number = it))
23+
}.toSet()
24+
}
25+
}
1726

18-
data class Open(val stringNumber: StringNumber) : ChordMarker()
27+
data class Open(val stringNumber: ChordString) : ChordMarker()
1928

20-
data class Muted(val stringNumber: StringNumber) : ChordMarker()
29+
data class Muted(val stringNumber: ChordString) : ChordMarker()
2130
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.chrynan.guitarchords.model
2+
3+
interface ChordParser<T> {
4+
5+
fun parse(item: T): Chord
6+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.chrynan.guitarchords.model
2+
3+
data class ChordString(
4+
val number: Int,
5+
val label: String? = null
6+
)

library/src/main/java/com/chrynan/guitarchords/model/StringNumber.kt

-3
This file was deleted.

0 commit comments

Comments
 (0)