private static string GetField(PlaylistColumn oCol, SpotifyPlaylistTrack oLine) { StringBuilder fieldBuilder = new StringBuilder(); fieldBuilder.Append('\"'); switch (oCol) { case PlaylistColumn.TrackName: fieldBuilder.Append(oLine.track.name); break; case PlaylistColumn.TrackArtists: foreach (SpotifyArtistSimple artist in oLine.track.artists) { fieldBuilder.Append(artist.name); if (oLine.track.artists.Last <SpotifyArtistSimple>() != artist) { fieldBuilder.Append(", "); } } break; case PlaylistColumn.AlbumName: fieldBuilder.Append(oLine.track.album.name); break; case PlaylistColumn.Duration: fieldBuilder.Append(TimeSpan.FromMilliseconds(oLine.track.duration_ms).ToString(@"mm\:ss")); break; case PlaylistColumn.AddedAt: fieldBuilder.Append(oLine.added_at); break; case PlaylistColumn.AddedBy: fieldBuilder.Append(oLine.added_by.display_name ?? oLine.added_by.id); break; case PlaylistColumn.IsLocal: fieldBuilder.Append(oLine.is_local); break; case PlaylistColumn.TrackID: fieldBuilder.Append(oLine.track.id); break; } fieldBuilder.Append('\"'); return(fieldBuilder.ToString()); }
protected virtual void OnColumnChanged(object sender, PlaylistColumn e) { if (this.DatabaseFactory != null) { using (var database = this.DatabaseFactory.Create()) { using (var transaction = database.BeginTransaction(database.PreferredIsolationLevel)) { var set = database.Set <PlaylistColumn>(transaction); set.AddOrUpdate(e); transaction.Commit(); } } } }
protected virtual void UpdateColumn(PlaylistColumn playlistColumn, bool raiseEvent) { if (this.DatabaseFactory != null) { using (var database = this.DatabaseFactory.Create()) { using (var transaction = database.BeginTransaction(database.PreferredIsolationLevel)) { var set = database.Set <PlaylistColumn>(transaction); set.AddOrUpdate(playlistColumn); transaction.Commit(); } } if (raiseEvent) { var task = this.SignalEmitter.Send(new Signal(this, CommonSignals.PlaylistColumnsUpdated, new[] { playlistColumn })); } } }
public async Task Sort(PlaylistColumn playlistColumn) { if (!this.SortingEnabled) { Logger.Write(this, LogLevel.Warn, "Sorting is disabled."); return; } var playlist = await this.GetPlaylist().ConfigureAwait(false); var descending = default(bool); if (object.ReferenceEquals(this.SortColumn, playlistColumn)) { this.SortColumn = null; descending = true; } else { this.SortColumn = playlistColumn; } await this.PlaylistManager.Sort(playlist, playlistColumn, descending).ConfigureAwait(false); }
protected virtual void OnColumnWidthChanged(object sender, PlaylistColumn playlistColumn) { this.UpdateColumn(playlistColumn, false); }
protected virtual void OnColumnPositionChanged(object sender, PlaylistColumn playlistColumn) { this.UpdateColumn(playlistColumn, true); }
public async Task Sort(PlaylistColumn playlistColumn) { var playlist = await this.GetPlaylist().ConfigureAwait(false); await this.PlaylistSortingBehaviour.Sort(playlist, playlistColumn).ConfigureAwait(false); }