1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-13 17:43:59 +02:00

* Added modification time as a Playlist / Collection column.

This commit is contained in:
Christian Muehlhaeuser
2010-11-16 03:28:08 +01:00
parent c65bbecd63
commit 2fe382b232
8 changed files with 90 additions and 8 deletions

View File

@@ -4,7 +4,6 @@
#include <QObject> #include <QObject>
#include "collection.h" #include "collection.h"
#include "source.h"
#include "tomahawk/typedefs.h" #include "tomahawk/typedefs.h"
namespace Tomahawk namespace Tomahawk
@@ -32,11 +31,12 @@ public:
unsigned int bitrate() const { return m_bitrate; } unsigned int bitrate() const { return m_bitrate; }
unsigned int size() const { return m_size; } unsigned int size() const { return m_size; }
unsigned int albumpos() const { return m_albumpos; } unsigned int albumpos() const { return m_albumpos; }
unsigned int modificationTime() const { return m_modtime; }
// for debug output: // for debug output:
QString toString() const QString toString() const
{ {
return QString( "Result(%1 %2\t%3 - %4 %5" ).arg( id() ).arg( score() ).arg( artist() ).arg( track() ).arg( url() ); return QString( "Result(%1 %2\t%3 - %4 %5" ).arg( id() ).arg( score() ).arg( artist() ).arg( track() ).arg( url() );
} }
signals: signals:
@@ -53,10 +53,12 @@ private:
QString m_track; QString m_track;
QString m_url; QString m_url;
QString m_mimetype; QString m_mimetype;
unsigned int m_duration; unsigned int m_duration;
unsigned int m_bitrate; unsigned int m_bitrate;
unsigned int m_size; unsigned int m_size;
unsigned int m_albumpos; unsigned int m_albumpos;
unsigned int m_modtime;
}; };
}; //ns }; //ns

View File

@@ -48,7 +48,7 @@ DatabaseCommand_AllTracks::exec( DatabaseImpl* dbi )
t["size"] = query.value( 4 ).toInt(); t["size"] = query.value( 4 ).toInt();
t["duration"] = query.value( 5 ).toInt(); t["duration"] = query.value( 5 ).toInt();
t["bitrate"] = query.value( 6 ).toInt(); t["bitrate"] = query.value( 6 ).toInt();
t["lastmodified"] = query.value( 9 ).toInt(); t["mtime"] = query.value( 9 ).toInt();
t["mimetype"] = query.value( 10 ).toString(); t["mimetype"] = query.value( 10 ).toString();
t["albumpos"] = query.value( 11 ).toUInt(); t["albumpos"] = query.value( 11 ).toUInt();
tl.append( t ); tl.append( t );

View File

@@ -40,6 +40,7 @@ CollectionProxyModel::lessThan( const QModelIndex& left, const QModelIndex& righ
QString track2 = q2->track(); QString track2 = q2->track();
unsigned int albumpos1 = 0, albumpos2 = 0; unsigned int albumpos1 = 0, albumpos2 = 0;
unsigned int bitrate1 = 0, bitrate2 = 0; unsigned int bitrate1 = 0, bitrate2 = 0;
unsigned int mtime1 = 0, mtime2 = 0;
if ( q1->numResults() ) if ( q1->numResults() )
{ {
@@ -49,6 +50,7 @@ CollectionProxyModel::lessThan( const QModelIndex& left, const QModelIndex& righ
track1 = r->track(); track1 = r->track();
albumpos1 = r->albumpos(); albumpos1 = r->albumpos();
bitrate1 = r->bitrate(); bitrate1 = r->bitrate();
mtime1 = r->modificationTime();
} }
if ( q2->numResults() ) if ( q2->numResults() )
{ {
@@ -58,6 +60,7 @@ CollectionProxyModel::lessThan( const QModelIndex& left, const QModelIndex& righ
track2 = r->track(); track2 = r->track();
albumpos2 = r->albumpos(); albumpos2 = r->albumpos();
bitrate2 = r->bitrate(); bitrate2 = r->bitrate();
mtime2 = r->modificationTime();
} }
if ( left.column() == 0 ) // sort by artist if ( left.column() == 0 ) // sort by artist
@@ -92,6 +95,10 @@ CollectionProxyModel::lessThan( const QModelIndex& left, const QModelIndex& righ
{ {
return bitrate1 < bitrate2; return bitrate1 < bitrate2;
} }
else if ( left.column() == 5 ) // sort by mtime
{
return mtime1 < mtime2;
}
return QString::localeAwareCompare( sourceModel()->data( left ).toString(), return QString::localeAwareCompare( sourceModel()->data( left ).toString(),
sourceModel()->data( right ).toString() ) < 0; sourceModel()->data( right ).toString() ) < 0;

View File

@@ -55,7 +55,7 @@ TrackModel::rowCount( const QModelIndex& parent ) const
int int
TrackModel::columnCount( const QModelIndex& parent ) const TrackModel::columnCount( const QModelIndex& parent ) const
{ {
return 6; return 7;
} }
@@ -160,6 +160,10 @@ TrackModel::data( const QModelIndex& index, int role ) const
break; break;
case 5: case 5:
return TomahawkUtils::ageToString( QDateTime::fromTime_t( query->results().first()->modificationTime() ) );
break;
case 6:
return query->results().first()->collection()->source()->friendlyName(); return query->results().first()->collection()->source()->friendlyName();
break; break;
} }
@@ -173,7 +177,7 @@ QVariant
TrackModel::headerData( int section, Qt::Orientation orientation, int role ) const TrackModel::headerData( int section, Qt::Orientation orientation, int role ) const
{ {
QStringList headers; QStringList headers;
headers << tr( "Artist" ) << tr( "Track" ) << tr( "Album" ) << tr( "Duration" ) << tr( "Bitrate" ) << tr( "Origin" ); headers << tr( "Artist" ) << tr( "Track" ) << tr( "Album" ) << tr( "Duration" ) << tr( "Bitrate" ) << tr( "Last Modified" ) << tr( "Origin" );
if ( orientation == Qt::Horizontal && role == Qt::DisplayRole && section >= 0 ) if ( orientation == Qt::Horizontal && role == Qt::DisplayRole && section >= 0 )
{ {
return headers.at( section ); return headers.at( section );

View File

@@ -83,9 +83,9 @@ TrackView::restoreColumnsState()
TomahawkSettings* s = APP->settings(); TomahawkSettings* s = APP->settings();
QList<QVariant> list = s->playlistColumnSizes(); QList<QVariant> list = s->playlistColumnSizes();
if ( list.count() != 6 ) // FIXME: const if ( list.count() != 7 ) // FIXME: const
{ {
m_columnWeights << 0.22 << 0.29 << 0.19 << 0.08 << 0.08 << 0.14; m_columnWeights << 0.19 << 0.25 << 0.18 << 0.07 << 0.07 << 0.10 << 0.14;
} }
else else
{ {

View File

@@ -19,6 +19,7 @@ Result::Result( const QVariant& v, const collection_ptr& collection )
m_bitrate = m.value( "bitrate" ).toUInt(); m_bitrate = m.value( "bitrate" ).toUInt();
m_size = m.value( "size" ).toUInt(); m_size = m.value( "size" ).toUInt();
m_albumpos = m.value( "albumpos" ).toUInt(); m_albumpos = m.value( "albumpos" ).toUInt();
m_modtime = m.value( "mtime" ).toUInt();
if ( !m_collection.isNull() ) if ( !m_collection.isNull() )
connect( m_collection->source().data(), SIGNAL( offline() ), SIGNAL( becomingUnavailable() ), Qt::QueuedConnection ); connect( m_collection->source().data(), SIGNAL( offline() ), SIGNAL( becomingUnavailable() ), Qt::QueuedConnection );

View File

@@ -1,7 +1,9 @@
#include "tomahawkutils.h" #include "tomahawkutils.h"
#include <QCoreApplication> #include <QCoreApplication>
#include <QDateTime>
#include <QDebug> #include <QDebug>
#include <QDir>
#ifdef WIN32 #ifdef WIN32
#include <windows.h> #include <windows.h>
@@ -126,4 +128,67 @@ timeToString( int seconds )
.arg( secs < 10 ? "0" + QString::number( secs ) : QString::number( secs ) ); .arg( secs < 10 ? "0" + QString::number( secs ) : QString::number( secs ) );
} }
QString
ageToString( const QDateTime& time )
{
QDateTime now = QDateTime::currentDateTime();
int mins = time.secsTo( now ) / 60;
int hours = mins / 60;
int days = time.daysTo( now );
int weeks = days / 7;
int months = days / 30.42;
int years = months / 12;
if ( years )
{
if ( years > 1 )
return QString( "%1 years ago" ).arg( years );
else
return QString( "%1 year ago" ).arg( years );
}
if ( months )
{
if ( months > 1 )
return QString( "%1 months ago" ).arg( months );
else
return QString( "%1 month ago" ).arg( months );
}
if ( weeks )
{
if ( weeks > 1 )
return QString( "%1 weeks ago" ).arg( weeks );
else
return QString( "%1 week ago" ).arg( weeks );
}
if ( days )
{
if ( days > 1 )
return QString( "%1 days ago" ).arg( days );
else
return QString( "%1 day ago" ).arg( days );
}
if ( hours )
{
if ( hours > 1 )
return QString( "%1 hours ago" ).arg( hours );
else
return QString( "%1 hour ago" ).arg( hours );
}
if ( mins )
{
if ( mins > 1 )
return QString( "%1 minutes ago" ).arg( mins );
else
return QString( "%1 minute ago" ).arg( mins );
}
return QString();
}
} // ns } // ns

View File

@@ -1,7 +1,9 @@
#ifndef TOMAHAWKUTILS_H #ifndef TOMAHAWKUTILS_H
#define TOMAHAWKUTILS_H #define TOMAHAWKUTILS_H
#include <QDir> class QDir;
class QDateTime;
class QString;
namespace TomahawkUtils namespace TomahawkUtils
{ {
@@ -9,6 +11,7 @@ namespace TomahawkUtils
QDir appDataDir(); QDir appDataDir();
QString timeToString( int seconds ); QString timeToString( int seconds );
QString ageToString( const QDateTime& time );
} }
#endif // TOMAHAWKUTILS_H #endif // TOMAHAWKUTILS_H