示例#1
0
        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());
        }
示例#2
0
 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();
             }
         }
     }
 }
示例#3
0
 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 }));
         }
     }
 }
示例#4
0
        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);
        }
示例#5
0
 protected virtual void OnColumnWidthChanged(object sender, PlaylistColumn playlistColumn)
 {
     this.UpdateColumn(playlistColumn, false);
 }
示例#6
0
 protected virtual void OnColumnPositionChanged(object sender, PlaylistColumn playlistColumn)
 {
     this.UpdateColumn(playlistColumn, true);
 }
示例#7
0
        public async Task Sort(PlaylistColumn playlistColumn)
        {
            var playlist = await this.GetPlaylist().ConfigureAwait(false);

            await this.PlaylistSortingBehaviour.Sort(playlist, playlistColumn).ConfigureAwait(false);
        }