public void RemoveFromFavorites(WebView webView, NameValueCollection parameters) { var chordParams = new ChordParams(parameters); var tokens = parameters["positions"].Split(','); var positions = tokens.Select(i => int.Parse(i)).ToArray(); var id = $"{chordParams.Root}{chordParams.ChordType}"; Chord chord; if (!Chord.TryParse(id, _currentSettings.conv, out chord)) { return; } if (!Favorites.Chords.ContainsKey(chord)) { return; } try { var layout = new GuitarChordLayout(chord, positions); Favorites.Chords[chord].Remove(layout); Favorites.Save(); var js = string.Format("setFavorite('.chord-layout[data-positions=\"{0}\"]', '{1}');", parameters["positions"], false); webView.LoadUrl("javascript:" + js); } catch (Exception e) { System.Diagnostics.Debug.WriteLine($"Cannot save favorites\n{e.Message}"); } }
public GuitarChordLayoutDecorator(GuitarChordLayout layout, NamingConvention namingConvention = NamingConvention.English) { _layout = layout; RenderingFret = Fret - 1; if (Fret <= 4 && IntPositions.All(i => i <= 4)) { RenderingFret = 0; } _namingConvention = namingConvention; }
public GuitarChordLayoutDecorator[] GenerateLayouts(bool allowBarre, bool allowSpecial, bool allowPartial, int maxFret) { return(GuitarChordLayout.Generate(_chord, allowBarre, allowSpecial, allowPartial, maxFret) .OrderBy(i => i.GuitarChordType) .Select(i => new GuitarChordLayoutDecorator(i, _namingConvention)) .OrderBy(i => i.RenderingFret) .ThenBy(i => i.Complete ? 0 : 1) .ThenBy(i => (i.Notes[0] == _chord.Root ? 0 : 1)) .ToArray()); }