Skip to content

Commit

Permalink
implement ISortable for CVideoInfoTag, CMusicInfoTag and CPictureInfoTag
Browse files Browse the repository at this point in the history
  • Loading branch information
Montellese committed Jun 9, 2012
1 parent b92f35a commit b2ca489
Show file tree
Hide file tree
Showing 6 changed files with 84 additions and 3 deletions.
19 changes: 19 additions & 0 deletions xbmc/music/tags/MusicInfoTag.cpp
Expand Up @@ -449,6 +449,25 @@ void CMusicInfoTag::Serialize(CVariant& value)
value["artistid"] = m_iArtistId;
value["albumid"] = m_iAlbumId;
}

void CMusicInfoTag::ToSortable(SortItem& sortable)
{
sortable[FieldTitle] = m_strTitle;
sortable[FieldArtist] = m_artist;
sortable[FieldAlbum] = m_strAlbum;
sortable[FieldAlbumArtist] = FieldAlbumArtist;
sortable[FieldGenre] = m_genre;
sortable[FieldTime] = m_iDuration;
sortable[FieldTrackNumber] = m_iTrack;
sortable[FieldYear] = m_dwReleaseDate.wYear;
sortable[FieldComment] = m_strComment;
sortable[FieldRating] = (float)m_rating;
sortable[FieldPlaycount] = m_iTimesPlayed;
sortable[FieldLastPlayed] = m_lastPlayed.IsValid() ? m_lastPlayed.GetAsDBDateTime() : StringUtils::EmptyString;
sortable[FieldListeners] = m_listeners;
sortable[FieldId] = (int64_t)m_iDbId;
}

void CMusicInfoTag::Archive(CArchive& ar)
{
if (ar.IsStoring())
Expand Down
4 changes: 3 additions & 1 deletion xbmc/music/tags/MusicInfoTag.h
Expand Up @@ -26,12 +26,13 @@ class CAlbum;

#include "utils/Archive.h"
#include "utils/ISerializable.h"
#include "utils/ISortable.h"
#include "XBDateTime.h"

namespace MUSIC_INFO
{

class CMusicInfoTag : public IArchivable, public ISerializable
class CMusicInfoTag : public IArchivable, public ISerializable, public ISortable
{
public:
CMusicInfoTag(void);
Expand Down Expand Up @@ -121,6 +122,7 @@ class CMusicInfoTag : public IArchivable, public ISerializable

virtual void Archive(CArchive& ar);
virtual void Serialize(CVariant& ar);
virtual void ToSortable(SortItem& sortable);

void Clear();
protected:
Expand Down
5 changes: 5 additions & 0 deletions xbmc/pictures/PictureInfoTag.cpp
Expand Up @@ -249,6 +249,11 @@ void CPictureInfoTag::Serialize(CVariant& value)
value["transmissionreference"] = CStdString(m_iptcInfo.TransmissionReference);
}

void CPictureInfoTag::ToSortable(SortItem& sortable)
{

}

void CPictureInfoTag::GetStringFromArchive(CArchive &ar, char *string, size_t length)
{
CStdString temp;
Expand Down
4 changes: 3 additions & 1 deletion xbmc/pictures/PictureInfoTag.h
Expand Up @@ -21,6 +21,7 @@
*/

#include "utils/ISerializable.h"
#include "utils/ISortable.h"
#include "utils/Archive.h"
#include "DllLibExif.h"

Expand Down Expand Up @@ -81,13 +82,14 @@
#define SLIDE_IPTC_COUNTRY_CODE 979
#define SLIDE_IPTC_REF_SERVICE 980

class CPictureInfoTag : public IArchivable, public ISerializable
class CPictureInfoTag : public IArchivable, public ISerializable, public ISortable
{
public:
CPictureInfoTag() { Reset(); };
void Reset();
virtual void Archive(CArchive& ar);
virtual void Serialize(CVariant& value);
virtual void ToSortable(SortItem& sortable);
const CPictureInfoTag& operator=(const CPictureInfoTag& item);
const CStdString GetInfo(int info) const;

Expand Down
51 changes: 51 additions & 0 deletions xbmc/video/VideoInfoTag.cpp
Expand Up @@ -478,6 +478,57 @@ void CVideoInfoTag::Serialize(CVariant& value)
value["type"] = m_type;
}

void CVideoInfoTag::ToSortable(SortItem& sortable)
{
sortable[FieldDirector] = m_director;
sortable[FieldWriter] = m_writingCredits;
sortable[FieldGenre] = m_genre;
sortable[FieldCountry] = m_country;
sortable[FieldTagline] = m_strTagLine;
sortable[FieldPlotOutline] = m_strPlotOutline;
sortable[FieldPlot] = m_strPlot;
sortable[FieldTitle] = m_strTitle;
sortable[FieldVotes] = m_strVotes;
sortable[FieldStudio] = m_studio;
sortable[FieldTrailer] = m_strTrailer;
sortable[FieldSet] = m_set;
sortable[FieldTime] = m_strRuntime;
sortable[FieldFilename] = m_strFile;
sortable[FieldMPAA] = m_strMPAARating;
sortable[FieldPath] = m_strFileNameAndPath;
sortable[FieldSortTitle] = m_strSortTitle;
sortable[FieldTvShowStatus] = m_strStatus;
sortable[FieldProductionCode] = m_strProductionCode;
sortable[FieldAirDate] = m_firstAired.IsValid() ? m_firstAired.GetAsDBDate() : (m_premiered.IsValid() ? m_premiered.GetAsDBDate() : StringUtils::EmptyString);
sortable[FieldTvShowTitle] = m_strShowTitle;
sortable[FieldAlbum] = m_strAlbum;
sortable[FieldArtist] = m_artist;
sortable[FieldPlaycount] = m_playCount;
sortable[FieldLastPlayed] = m_lastPlayed.IsValid() ? m_lastPlayed.GetAsDBDateTime() : StringUtils::EmptyString;
sortable[FieldTop250] = m_iTop250;
sortable[FieldYear] = m_iYear;
sortable[FieldSeason] = m_iSeason;
sortable[FieldEpisodeNumber] = m_iEpisode;
sortable[FieldRating] = m_fRating;
sortable[FieldId] = m_iDbId;
sortable[FieldTrackNumber] = m_iTrack;

sortable[FieldTime] = m_streamDetails.GetVideoDuration();
sortable[FieldVideoResolution] = m_streamDetails.GetVideoHeight();
sortable[FieldVideoAspectRatio] = m_streamDetails.GetVideoAspect();
sortable[FieldVideoCodec] = m_streamDetails.GetVideoCodec();

sortable[FieldAudioChannels] = m_streamDetails.GetAudioChannels();
sortable[FieldAudioCodec] = m_streamDetails.GetAudioCodec();
sortable[FieldAudioLanguage] = m_streamDetails.GetAudioLanguage();

sortable[FieldSubtitleLanguage] = m_streamDetails.GetSubtitleLanguage();

sortable[FieldInProgress] = m_resumePoint.timeInSeconds > 0 && m_resumePoint.totalTimeInSeconds > 0;
sortable[FieldDateAdded] = m_dateAdded.IsValid() ? m_dateAdded.GetAsDBDateTime() : StringUtils::EmptyString;
sortable[FieldMediaType] = DatabaseUtils::MediaTypeFromString(m_type);
}

const CStdString CVideoInfoTag::GetCast(bool bIncludeRole /*= false*/) const
{
CStdString strLabel;
Expand Down
4 changes: 3 additions & 1 deletion xbmc/video/VideoInfoTag.h
Expand Up @@ -25,6 +25,7 @@
#include "XBDateTime.h"
#include "utils/ScraperUrl.h"
#include "utils/Fanart.h"
#include "utils/ISortable.h"
#include "utils/StreamDetails.h"
#include "video/Bookmark.h"
#include "XBDateTime.h"
Expand All @@ -41,7 +42,7 @@ struct SActorInfo
CStdString thumb;
};

class CVideoInfoTag : public IArchivable, public ISerializable
class CVideoInfoTag : public IArchivable, public ISerializable, public ISortable
{
public:
CVideoInfoTag() { Reset(); };
Expand All @@ -65,6 +66,7 @@ class CVideoInfoTag : public IArchivable, public ISerializable
bool Save(TiXmlNode *node, const CStdString &tag, bool savePathInfo = true, const TiXmlElement *additionalNode = NULL);
virtual void Archive(CArchive& ar);
virtual void Serialize(CVariant& value);
virtual void ToSortable(SortItem& sortable);
const CStdString GetCast(bool bIncludeRole = false) const;
bool HasStreamDetails() const;
bool IsEmpty() const;
Expand Down

0 comments on commit b2ca489

Please sign in to comment.