[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: extragear/multimedia/amarok/src/playlist
From: Nikolaj Hald Nielsen <nhnFreespirit () gmail ! com>
Date: 2009-01-11 10:02:33
Message-ID: 1231668153.452071.18795.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 909205 by nhnielsen:
More improvements to the new playist by Thomas Lübking <thomas.luebking@web.de>. Fix \
excessive escaping causing special characters to appear wrong in the playlist. Also \
add a number of new features to the layout handling allowing for more flexible \
playlist items. See the "New Demo" layout for an example.
M +0 -2 PlaylistDefines.h
M +10 -10 PlaylistModel.cpp
M +27 -0 view/listview/DefaultPlaylistLayouts.xml
M +5 -4 view/listview/LayoutManager.cpp
M +11 -4 view/listview/PrettyItemConfig.cpp
M +5 -3 view/listview/PrettyItemConfig.h
M +34 -35 view/listview/PrettyItemDelegate.cpp
--- trunk/extragear/multimedia/amarok/src/playlist/PlaylistDefines.h #909204:909205
@@ -104,6 +104,4 @@
}
-
#endif
-
--- trunk/extragear/multimedia/amarok/src/playlist/PlaylistModel.cpp #909204:909205
@@ -181,20 +181,20 @@
case Album:
{
if ( m_items.at( row )->track()->album() )
- return Qt::escape( m_items.at( row )->track()->album()->name() \
); + return m_items.at( row )->track()->album()->name();
return QString();
}
case AlbumArtist:
{
if ( m_items.at( row )->track()->album() )
if ( m_items.at( row )->track()->album()->albumArtist() )
- return Qt::escape( m_items.at( row \
)->track()->album()->albumArtist()->name() ); + return \
m_items.at( row )->track()->album()->albumArtist()->name(); return QString();
}
case Artist:
{
if ( m_items.at( row )->track()->artist() )
- return Qt::escape( m_items.at( row )->track()->artist()->name() \
); + return m_items.at( row )->track()->artist()->name();
return QString();
}
case Bitrate:
@@ -207,12 +207,12 @@
}
case Comment:
{
- return Qt::escape( m_items.at( row )->track()->comment() );
+ return m_items.at( row )->track()->comment();
}
case Composer:
{
if ( m_items.at( row )->track()->composer() )
- return Qt::escape( m_items.at( row \
)->track()->composer()->name() ); + return m_items.at( row \
)->track()->composer()->name(); return QString();
}
case CoverImage:
@@ -240,7 +240,7 @@
case Genre:
{
if ( m_items.at( row )->track()->genre() )
- return Qt::escape( m_items.at( row )->track()->genre()->name() \
); + return m_items.at( row )->track()->genre()->name();
return QString();
}
case LastPlayed:
@@ -285,7 +285,7 @@
sourceName = sic->sourceName();
delete sic;
}
- return Qt::escape( sourceName );
+ return sourceName;
}
case SourceEmblem:
{
@@ -302,7 +302,7 @@
}
case Title:
{
- return Qt::escape( m_items.at( row )->track()->prettyName() );
+ return m_items.at( row )->track()->prettyName();
}
case TitleWithTrackNum:
{
@@ -315,7 +315,7 @@
} else
trackString = trackName;
- return Qt::escape( trackString );
+ return trackString;
}
case TrackNumber:
{
@@ -328,7 +328,7 @@
case Year:
{
if ( m_items.at( row )->track()->year() )
- return Qt::escape( m_items.at( row )->track()->year()->name() );
+ return m_items.at( row )->track()->year()->name();
return QString();
}
--- trunk/extragear/multimedia/amarok/src/playlist/view/listview/DefaultPlaylistLayouts.xml \
#909204:909205 @@ -130,4 +130,31 @@
</row>
</group_body>
</layout>
+
+ <layout name="New Demo">
+ <single_track show_cover="false">
+ <row>
+ <element value="Artist" suffix=": " />
+ <element value="Title" suffix=" " bold="true"/>
+ <element value="Album" prefix="(" suffix=")" />
+ <element value="Length" bold="false" alignment="right"/>
+ </row>
+ </single_track>
+ <group_head show_cover="false" active_indicator_row="-1">
+ <row>
+ <!-- SIC, for right alignment, we want an inversed order -->
+ <element value="Artist" prefix =" by " alignment="right"/>
+ <element value="Album" bold="true" alignment="right"/>
+ <!-- <element value="Length" alignment="right"/> // \
how to get album length? --> + </row>
+ </group_head>
+ <group_body show_cover="false">
+ <row>
+ <element value="Track number" suffix = ". "/>
+ <element value="Title"/>
+ <element value="Length" alignment="right"/>
+ </row>
+ </group_body>
+ </layout>
+
</playlist_layouts>
\ No newline at end of file
--- trunk/extragear/multimedia/amarok/src/playlist/view/listview/LayoutManager.cpp \
#909204:909205 @@ -152,9 +152,10 @@
debug() << "element!";
- QString valStr = elementNode.toElement().attribute( "value", "Title" );
- int value = columnNames.indexOf( valStr );
- qreal size = elementNode.toElement().attribute( "size", "1.0" \
).toDouble(); + int value = columnNames.indexOf( \
elementNode.toElement().attribute( "value", "Title" ) ); + QString prefix \
= elementNode.toElement().attribute( "prefix", QString() ); + QString \
sufix = elementNode.toElement().attribute( "suffix", QString() ); + qreal \
size = elementNode.toElement().attribute( "size", "0.0" ).toDouble();
bool bold = ( elementNode.toElement().attribute( "bold", "false" \
).compare( "true", Qt::CaseInsensitive ) == 0 );
QString alignmentString = elementNode.toElement().attribute( \
"alignment", "left" ); int alignment;
@@ -167,7 +168,7 @@
else
alignment = Qt::AlignCenter| Qt::AlignVCenter;
- row.addElement( PrettyItemConfigRowElement( value, size, bold, \
alignment, value < 0 ? valStr : QString() ) ); + row.addElement( \
PrettyItemConfigRowElement( value, size, bold, alignment, prefix, sufix ) ); }
config.addRow( row );
--- trunk/extragear/multimedia/amarok/src/playlist/view/listview/PrettyItemConfig.cpp \
#909204:909205 @@ -21,12 +21,14 @@
namespace Playlist {
- PrettyItemConfigRowElement::PrettyItemConfigRowElement( int value, qreal size, \
bool bold, int alignment, const QString &string ) + \
PrettyItemConfigRowElement::PrettyItemConfigRowElement( int value, qreal size, bool \
bold, int alignment, + \
const QString &prefix , const QString &suffix ) : m_value( value )
, m_size( size )
, m_bold( bold )
, m_alignment( alignment )
- , m_string( string )
+ , m_prefix( prefix )
+ , m_suffix( suffix )
{
}
@@ -50,11 +52,16 @@
return m_alignment;
}
-QString PrettyItemConfigRowElement::string() const
+QString PrettyItemConfigRowElement::prefix() const
{
- return m_string;
+ return m_prefix;
}
+QString PrettyItemConfigRowElement::suffix() const
+{
+ return m_suffix;
+}
+
//////////////////////////////////////////////
void PrettyItemConfigRow::addElement( PrettyItemConfigRowElement element )
--- trunk/extragear/multimedia/amarok/src/playlist/view/listview/PrettyItemConfig.h \
#909204:909205 @@ -36,20 +36,22 @@
class PrettyItemConfigRowElement{
public:
- PrettyItemConfigRowElement( int value, qreal size, bool bold, int alignment, \
const QString &string = QString() ); + PrettyItemConfigRowElement( int value, \
qreal size, bool bold, int alignment, + const QString \
&prefix = QString(), const QString &suffix = QString() );
int value() const;
qreal size() const;
bool bold() const;
int alignment() const;
- QString string() const;
+ QString prefix() const;
+ QString suffix() const;
private:
int m_value;
qreal m_size;
bool m_bold;
int m_alignment;
- QString m_string;
+ QString m_prefix, m_suffix;
};
class PrettyItemConfigRow{
--- trunk/extragear/multimedia/amarok/src/playlist/view/listview/PrettyItemDelegate.cpp \
#909204:909205 @@ -263,55 +263,54 @@
"active_overlay" ) );
}
- for ( int j = 0; j < elementCount; j++ ) {
+ QRectF rowBox( itemOffsetX, rowOffsetY, rowWidth-itemOffsetX, rowHeight );
+ for ( int j = 0; j < elementCount; ++j ) {
+
PrettyItemConfigRowElement element = row.element( j );
int value = element.value();
- bool bold = element.bold();
- int alignment = element.alignment();
- QString text;
- if (value < 0)
- text = element.string();
- else
+ QModelIndex textIndex = index.model()->index( index.row(), value );
+ QString text = textIndex.data( Qt::DisplayRole ).toString();
+
+ qreal itemWidth = 0.0;
+ if ( !text.isEmpty() )
{
- QModelIndex textIndex = index.model()->index( index.row(), value );
- text = textIndex.data( Qt::DisplayRole ).toString();
- }
+ text = element.prefix() + text + element.suffix();
+
+ bool bold = element.bold();
+ int alignment = element.alignment();
+
+ QFont font = option.font;
+ font.setBold( bold );
+ painter->setFont( font );
- QFont font = option.font;
- font.setBold( bold );
- painter->setFont( font );
+ QRectF elementBox;
+ if ( element.size() > 0 )
+ {
+ elementBox = rowBox;
+ itemWidth = rowWidth * element.size();
+ elementBox.setWidth(itemWidth);
+ text = QFontMetricsF( font ).elidedText( text, Qt::ElideRight, \
itemWidth ); + painter->drawText( rowBox, alignment, text );
+ rowBox.setLeft( elementBox.right() + PADDING );
+ }
+ else
+ {
+ painter->drawText( rowBox, alignment, text, &elementBox );
+ if (alignment & Qt::AlignRight)
+ rowBox.setRight( elementBox.left() - PADDING );
+ else
+ rowBox.setLeft( elementBox.right() + PADDING );
+ }
- qreal itemWidth;
-
- if (element.size() > 0)
- {
- itemWidth = rowWidth * element.size();
- QRectF textBox( itemOffsetX, rowOffsetY, itemWidth, rowHeight );
- text = QFontMetricsF(font).elidedText( text, Qt::ElideRight, \
itemWidth );
- painter->drawText( textBox, alignment, text );
}
- else
- {
- QRectF textBox( itemOffsetX, rowOffsetY, rowWidth-itemOffsetX, \
rowHeight );
- painter->drawText( textBox, alignment, text, &textBox );
- itemWidth = textBox.width();
- }
- //if not the last item, add a PADDING
- if ( j < elementCount - 1 )
- itemWidth += PADDING;
-
- itemOffsetX += itemWidth;
-
}
-
rowOffsetY += rowHeight;
-
}
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic