Move the fancy tab widget into src/widgets, remove more dead code, add it to debian copyrights.

This commit is contained in:
David Sansome 2010-10-10 14:04:05 +00:00
parent 683b882461
commit 48da2f996f
44 changed files with 659 additions and 501 deletions

View File

@ -1,485 +0,0 @@
/**************************************************************************
**
** This file is part of Qt Creator
**
** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
**
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** Commercial Usage
**
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Nokia.
**
** GNU Lesser General Public License Usage
**
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** If you are unsure which license is appropriate for your use, please
** contact the sales department at http://qt.nokia.com/contact.
**
**************************************************************************/
#include "stylehelper.h"
#include <QtGui/QPixmapCache>
#include <QtGui/QWidget>
#include <QtCore/QRect>
#include <QtGui/QPainter>
#include <QtGui/QApplication>
#include <QtGui/QPalette>
#include <QtGui/QStyleOption>
#include <QtCore/QObject>
// Clamps float color values within (0, 255)
static int clamp(float x)
{
const int val = x > 255 ? 255 : static_cast<int>(x);
return val < 0 ? 0 : val;
}
// Clamps float color values within (0, 255)
/*
static int range(float x, int min, int max)
{
int val = x > max ? max : x;
return val < min ? min : val;
}
*/
namespace Utils {
QColor StyleHelper::mergedColors(const QColor &colorA, const QColor &colorB, int factor)
{
const int maxFactor = 100;
QColor tmp = colorA;
tmp.setRed((tmp.red() * factor) / maxFactor + (colorB.red() * (maxFactor - factor)) / maxFactor);
tmp.setGreen((tmp.green() * factor) / maxFactor + (colorB.green() * (maxFactor - factor)) / maxFactor);
tmp.setBlue((tmp.blue() * factor) / maxFactor + (colorB.blue() * (maxFactor - factor)) / maxFactor);
return tmp;
}
qreal StyleHelper::sidebarFontSize()
{
#if defined(Q_WS_MAC)
return 10;
#else
return 7.5;
#endif
}
QPalette StyleHelper::sidebarFontPalette(const QPalette &original)
{
QPalette palette = original;
palette.setColor(QPalette::Active, QPalette::Text, panelTextColor());
palette.setColor(QPalette::Active, QPalette::WindowText, panelTextColor());
palette.setColor(QPalette::Inactive, QPalette::Text, panelTextColor().darker());
palette.setColor(QPalette::Inactive, QPalette::WindowText, panelTextColor().darker());
return palette;
}
QColor StyleHelper::panelTextColor(bool lightColored)
{
//qApp->palette().highlightedText().color();
if (!lightColored)
return Qt::white;
else
return Qt::black;
}
// Invalid by default, setBaseColor needs to be called at least once
QColor StyleHelper::m_baseColor;
QColor StyleHelper::m_requestedBaseColor;
QColor StyleHelper::baseColor(bool lightColored)
{
if (!lightColored)
return m_baseColor;
else
return m_baseColor.lighter(230);
}
QColor StyleHelper::highlightColor(bool lightColored)
{
QColor result = baseColor(lightColored);
if (!lightColored)
result.setHsv(result.hue(),
clamp(result.saturation()),
clamp(result.value() * 1.16));
else
result.setHsv(result.hue(),
clamp(result.saturation()),
clamp(result.value() * 1.06));
return result;
}
QColor StyleHelper::shadowColor(bool lightColored)
{
QColor result = baseColor(lightColored);
result.setHsv(result.hue(),
clamp(result.saturation() * 1.1),
clamp(result.value() * 0.70));
return result;
}
QColor StyleHelper::borderColor(bool lightColored)
{
QColor result = baseColor(lightColored);
result.setHsv(result.hue(),
result.saturation(),
result.value() / 2);
return result;
}
// We try to ensure that the actual color used are within
// reasonalbe bounds while generating the actual baseColor
// from the users request.
void StyleHelper::setBaseColor(const QColor &newcolor)
{
m_requestedBaseColor = newcolor;
QColor color;
color.setHsv(newcolor.hue(),
newcolor.saturation() * 0.7,
64 + newcolor.value() / 3);
if (color.isValid() && color != m_baseColor) {
m_baseColor = color;
foreach (QWidget *w, QApplication::topLevelWidgets())
w->update();
}
}
static void verticalGradientHelper(QPainter *p, const QRect &spanRect, const QRect &rect, bool lightColored)
{
QColor highlight = StyleHelper::highlightColor(lightColored);
QColor shadow = StyleHelper::shadowColor(lightColored);
QLinearGradient grad(spanRect.topRight(), spanRect.topLeft());
grad.setColorAt(0, highlight.lighter(117));
grad.setColorAt(1, shadow.darker(109));
p->fillRect(rect, grad);
QColor light(255, 255, 255, 80);
p->setPen(light);
p->drawLine(rect.topRight() - QPoint(1, 0), rect.bottomRight() - QPoint(1, 0));
QColor dark(0, 0, 0, 90);
p->setPen(dark);
p->drawLine(rect.topLeft(), rect.bottomLeft());
}
void StyleHelper::verticalGradient(QPainter *painter, const QRect &spanRect, const QRect &clipRect, bool lightColored)
{
if (StyleHelper::usePixmapCache()) {
QString key;
QColor keyColor = baseColor(lightColored);
key.sprintf("mh_vertical %d %d %d %d %d",
spanRect.width(), spanRect.height(), clipRect.width(),
clipRect.height(), keyColor.rgb());;
QPixmap pixmap;
if (!QPixmapCache::find(key, pixmap)) {
pixmap = QPixmap(clipRect.size());
QPainter p(&pixmap);
QRect rect(0, 0, clipRect.width(), clipRect.height());
verticalGradientHelper(&p, spanRect, rect, lightColored);
p.end();
QPixmapCache::insert(key, pixmap);
}
painter->drawPixmap(clipRect.topLeft(), pixmap);
} else {
verticalGradientHelper(painter, spanRect, clipRect, lightColored);
}
}
static void horizontalGradientHelper(QPainter *p, const QRect &spanRect, const
QRect &rect, bool lightColored)
{
if (lightColored) {
QLinearGradient shadowGradient(rect.topLeft(), rect.bottomLeft());
shadowGradient.setColorAt(0, 0xf0f0f0);
shadowGradient.setColorAt(1, 0xcfcfcf);
p->fillRect(rect, shadowGradient);
return;
}
QColor base = StyleHelper::baseColor(lightColored);
QColor highlight = StyleHelper::highlightColor(lightColored);
QColor shadow = StyleHelper::shadowColor(lightColored);
QLinearGradient grad(rect.topLeft(), rect.bottomLeft());
grad.setColorAt(0, highlight.lighter(120));
if (rect.height() == StyleHelper::navigationWidgetHeight()) {
grad.setColorAt(0.4, highlight);
grad.setColorAt(0.401, base);
}
grad.setColorAt(1, shadow);
p->fillRect(rect, grad);
QLinearGradient shadowGradient(spanRect.topLeft(), spanRect.topRight());
shadowGradient.setColorAt(0, QColor(0, 0, 0, 30));
QColor lighterHighlight;
if (!lightColored)
lighterHighlight = highlight.lighter(130);
else
lighterHighlight = highlight.lighter(90);
lighterHighlight.setAlpha(100);
shadowGradient.setColorAt(0.7, lighterHighlight);
shadowGradient.setColorAt(1, QColor(0, 0, 0, 40));
p->fillRect(rect, shadowGradient);
}
void StyleHelper::horizontalGradient(QPainter *painter, const QRect &spanRect, const QRect &clipRect, bool lightColored)
{
if (StyleHelper::usePixmapCache()) {
QString key;
QColor keyColor = baseColor(lightColored);
key.sprintf("mh_horizontal %d %d %d %d %d %d",
spanRect.width(), spanRect.height(), clipRect.width(),
clipRect.height(), keyColor.rgb(), spanRect.x());
QPixmap pixmap;
if (!QPixmapCache::find(key, pixmap)) {
pixmap = QPixmap(clipRect.size());
QPainter p(&pixmap);
QRect rect = QRect(0, 0, clipRect.width(), clipRect.height());
horizontalGradientHelper(&p, spanRect, rect, lightColored);
p.end();
QPixmapCache::insert(key, pixmap);
}
painter->drawPixmap(clipRect.topLeft(), pixmap);
} else {
horizontalGradientHelper(painter, spanRect, clipRect, lightColored);
}
}
static void menuGradientHelper(QPainter *p, const QRect &spanRect, const QRect &rect)
{
QLinearGradient grad(spanRect.topLeft(), spanRect.bottomLeft());
QColor menuColor = StyleHelper::mergedColors(StyleHelper::baseColor(), QColor(244, 244, 244), 25);
grad.setColorAt(0, menuColor.lighter(112));
grad.setColorAt(1, menuColor);
p->fillRect(rect, grad);
}
void StyleHelper::drawArrow(QStyle::PrimitiveElement element, QPainter *painter, const QStyleOption *option)
{
// From windowsstyle but modified to enable AA
if (option->rect.width() <= 1 || option->rect.height() <= 1)
return;
QRect r = option->rect;
int size = qMin(r.height(), r.width());
QPixmap pixmap;
QString pixmapName;
pixmapName.sprintf("arrow-%s-%d-%d-%d-%lld",
"$qt_ia",
uint(option->state), element,
size, option->palette.cacheKey());
if (!QPixmapCache::find(pixmapName, pixmap)) {
int border = size/5;
int sqsize = 2*(size/2);
QImage image(sqsize, sqsize, QImage::Format_ARGB32);
image.fill(Qt::transparent);
QPainter imagePainter(&image);
imagePainter.setRenderHint(QPainter::Antialiasing, true);
imagePainter.translate(0.5, 0.5);
QPolygon a;
switch (element) {
case QStyle::PE_IndicatorArrowUp:
a.setPoints(3, border, sqsize/2, sqsize/2, border, sqsize - border, sqsize/2);
break;
case QStyle::PE_IndicatorArrowDown:
a.setPoints(3, border, sqsize/2, sqsize/2, sqsize - border, sqsize - border, sqsize/2);
break;
case QStyle::PE_IndicatorArrowRight:
a.setPoints(3, sqsize - border, sqsize/2, sqsize/2, border, sqsize/2, sqsize - border);
break;
case QStyle::PE_IndicatorArrowLeft:
a.setPoints(3, border, sqsize/2, sqsize/2, border, sqsize/2, sqsize - border);
break;
default:
break;
}
int bsx = 0;
int bsy = 0;
if (option->state & QStyle::State_Sunken) {
bsx = qApp->style()->pixelMetric(QStyle::PM_ButtonShiftHorizontal);
bsy = qApp->style()->pixelMetric(QStyle::PM_ButtonShiftVertical);
}
QRect bounds = a.boundingRect();
int sx = sqsize / 2 - bounds.center().x() - 1;
int sy = sqsize / 2 - bounds.center().y() - 1;
imagePainter.translate(sx + bsx, sy + bsy);
if (!(option->state & QStyle::State_Enabled)) {
QColor foreGround(150, 150, 150, 150);
imagePainter.setBrush(option->palette.mid().color());
imagePainter.setPen(option->palette.mid().color());
} else {
QColor shadow(0, 0, 0, 100);
imagePainter.translate(0, 1);
imagePainter.setPen(shadow);
imagePainter.setBrush(shadow);
QColor foreGround(255, 255, 255, 210);
imagePainter.drawPolygon(a);
imagePainter.translate(0, -1);
imagePainter.setPen(foreGround);
imagePainter.setBrush(foreGround);
}
imagePainter.drawPolygon(a);
imagePainter.end();
pixmap = QPixmap::fromImage(image);
QPixmapCache::insert(pixmapName, pixmap);
}
int xOffset = r.x() + (r.width() - size)/2;
int yOffset = r.y() + (r.height() - size)/2;
painter->drawPixmap(xOffset, yOffset, pixmap);
}
void StyleHelper::menuGradient(QPainter *painter, const QRect &spanRect, const QRect &clipRect)
{
if (StyleHelper::usePixmapCache()) {
QString key;
key.sprintf("mh_menu %d %d %d %d %d",
spanRect.width(), spanRect.height(), clipRect.width(),
clipRect.height(), StyleHelper::baseColor().rgb());
QPixmap pixmap;
if (!QPixmapCache::find(key, pixmap)) {
pixmap = QPixmap(clipRect.size());
QPainter p(&pixmap);
QRect rect = QRect(0, 0, clipRect.width(), clipRect.height());
menuGradientHelper(&p, spanRect, rect);
p.end();
QPixmapCache::insert(key, pixmap);
}
painter->drawPixmap(clipRect.topLeft(), pixmap);
} else {
menuGradientHelper(painter, spanRect, clipRect);
}
}
// Draws a cached pixmap with shadow
void StyleHelper::drawIconWithShadow(const QIcon &icon, const QRect &rect,
QPainter *p, QIcon::Mode iconMode, int radius, const QColor &color, const QPoint &offset)
{
QPixmap cache;
QString pixmapName = QString("icon %0 %1 %2").arg(icon.cacheKey()).arg(iconMode).arg(rect.height());
if (!QPixmapCache::find(pixmapName, cache)) {
QPixmap px = icon.pixmap(rect.size());
cache = QPixmap(px.size() + QSize(radius * 2, radius * 2));
cache.fill(Qt::transparent);
QPainter cachePainter(&cache);
if (iconMode == QIcon::Disabled) {
QImage im = px.toImage().convertToFormat(QImage::Format_ARGB32);
for (int y=0; y<im.height(); ++y) {
QRgb *scanLine = (QRgb*)im.scanLine(y);
for (int x=0; x<im.width(); ++x) {
QRgb pixel = *scanLine;
char intensity = qGray(pixel);
*scanLine = qRgba(intensity, intensity, intensity, qAlpha(pixel));
++scanLine;
}
}
px = QPixmap::fromImage(im);
}
// Draw shadow
QImage tmp(px.size() + QSize(radius * 2, radius * 2 + 1), QImage::Format_ARGB32_Premultiplied);
tmp.fill(Qt::transparent);
QPainter tmpPainter(&tmp);
tmpPainter.setCompositionMode(QPainter::CompositionMode_Source);
tmpPainter.drawPixmap(QPoint(radius, radius), px);
tmpPainter.end();
// blur the alpha channel
QImage blurred(tmp.size(), QImage::Format_ARGB32_Premultiplied);
blurred.fill(Qt::transparent);
QPainter blurPainter(&blurred);
qt_blurImage(&blurPainter, tmp, radius, false, true);
blurPainter.end();
tmp = blurred;
// blacken the image...
tmpPainter.begin(&tmp);
tmpPainter.setCompositionMode(QPainter::CompositionMode_SourceIn);
tmpPainter.fillRect(tmp.rect(), color);
tmpPainter.end();
tmpPainter.begin(&tmp);
tmpPainter.setCompositionMode(QPainter::CompositionMode_SourceIn);
tmpPainter.fillRect(tmp.rect(), color);
tmpPainter.end();
// draw the blurred drop shadow...
cachePainter.drawImage(QRect(0, 0, cache.rect().width(), cache.rect().height()), tmp);
// Draw the actual pixmap...
cachePainter.drawPixmap(QPoint(radius, radius) + offset, px);
QPixmapCache::insert(pixmapName, cache);
}
QRect targetRect = cache.rect();
targetRect.moveCenter(rect.center());
p->drawPixmap(targetRect.topLeft() - offset, cache);
}
// Draws a CSS-like border image where the defined borders are not stretched
void StyleHelper::drawCornerImage(const QImage &img, QPainter *painter, QRect rect,
int left, int top, int right, int bottom)
{
QSize size = img.size();
if (top > 0) { //top
painter->drawImage(QRect(rect.left() + left, rect.top(), rect.width() -right - left, top), img,
QRect(left, 0, size.width() -right - left, top));
if (left > 0) //top-left
painter->drawImage(QRect(rect.left(), rect.top(), left, top), img,
QRect(0, 0, left, top));
if (right > 0) //top-right
painter->drawImage(QRect(rect.left() + rect.width() - right, rect.top(), right, top), img,
QRect(size.width() - right, 0, right, top));
}
//left
if (left > 0)
painter->drawImage(QRect(rect.left(), rect.top()+top, left, rect.height() - top - bottom), img,
QRect(0, top, left, size.height() - bottom - top));
//center
painter->drawImage(QRect(rect.left() + left, rect.top()+top, rect.width() -right - left,
rect.height() - bottom - top), img,
QRect(left, top, size.width() -right -left,
size.height() - bottom - top));
if (right > 0) //right
painter->drawImage(QRect(rect.left() +rect.width() - right, rect.top()+top, right, rect.height() - top - bottom), img,
QRect(size.width() - right, top, right, size.height() - bottom - top));
if (bottom > 0) { //bottom
painter->drawImage(QRect(rect.left() +left, rect.top() + rect.height() - bottom,
rect.width() - right - left, bottom), img,
QRect(left, size.height() - bottom,
size.width() - right - left, bottom));
if (left > 0) //bottom-left
painter->drawImage(QRect(rect.left(), rect.top() + rect.height() - bottom, left, bottom), img,
QRect(0, size.height() - bottom, left, bottom));
if (right > 0) //bottom-right
painter->drawImage(QRect(rect.left() + rect.width() - right, rect.top() + rect.height() - bottom, right, bottom), img,
QRect(size.width() - right, size.height() - bottom, right, bottom));
}
}
} // namespace Utils

View File

@ -92,7 +92,6 @@ include_directories(${GLIB_INCLUDE_DIRS})
include_directories(${GLIBCONFIG_INCLUDE_DIRS})
include_directories(${LIBXML_INCLUDE_DIRS})
include_directories(${LASTFM_INCLUDE_DIRS})
include_directories("3rdparty/fancytabwidget")
include_directories("3rdparty/qsqlite")
include_directories("3rdparty/universalchardet")
@ -216,7 +215,6 @@ if (WIN32)
add_subdirectory(3rdparty/qtwin)
endif (WIN32)
add_subdirectory(3rdparty/universalchardet)
add_subdirectory(3rdparty/fancytabwidget)
add_subdirectory(3rdparty/libechonest)
add_subdirectory(tests)
add_subdirectory(dist)

5
debian/copyright vendored
View File

@ -34,6 +34,11 @@ Copyright: 2003, Mark Kretschmann <markey@web.de>
2005, Gábor Lehel <illissius@gmail.com>
License: GPL-2+
Files: src/widgets/fancytabwidget.*
src/widgets/stylehelper.*
Copyright: 2010, Nokia Corporation
License: Qt Commercial or LGPL-2.1
Files: src/analyzers/analyzerbase.*
src/analyzers/blockanalyzer.*
src/analyzers/baranalyzer.*

View File

@ -165,6 +165,7 @@ set(SOURCES
widgets/elidedlabel.cpp
widgets/equalizerslider.cpp
widgets/errordialog.cpp
widgets/fancytabwidget.cpp
widgets/fileview.cpp
widgets/fileviewlist.cpp
widgets/freespacebar.cpp
@ -181,6 +182,7 @@ set(SOURCES
widgets/spinbox.cpp
widgets/stickyslider.cpp
widgets/stretchheaderview.cpp
widgets/stylehelper.cpp
widgets/trackslider.cpp
widgets/tracksliderslider.cpp
widgets/widgetfadehelper.cpp
@ -304,6 +306,7 @@ set(HEADERS
widgets/elidedlabel.h
widgets/equalizerslider.h
widgets/errordialog.h
widgets/fancytabwidget.h
widgets/fileview.h
widgets/fileviewlist.h
widgets/freespacebar.h
@ -701,7 +704,6 @@ add_dependencies(clementine_lib pot)
target_link_libraries(clementine_lib
chardet
fancytabwidget
echonest
${GOBJECT_LIBRARIES}
${GLIB_LIBRARIES}

View File

@ -924,6 +924,9 @@ msgstr ""
msgid "Icon"
msgstr ""
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1001,6 +1004,9 @@ msgstr ""
msgid "Large album cover"
msgstr ""
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr ""
@ -1680,6 +1686,9 @@ msgstr "تجاهل اللاحق في قائمة التشغيل"
msgid "Small album cover"
msgstr ""
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr ""
@ -1745,6 +1754,9 @@ msgstr ""
msgid "Supported formats"
msgstr ""
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr ""

View File

@ -925,6 +925,9 @@ msgstr ""
msgid "Icon"
msgstr ""
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1002,6 +1005,9 @@ msgstr ""
msgid "Large album cover"
msgstr ""
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr ""
@ -1681,6 +1687,9 @@ msgstr ""
msgid "Small album cover"
msgstr ""
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr ""
@ -1746,6 +1755,9 @@ msgstr ""
msgid "Supported formats"
msgstr ""
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr ""

View File

@ -949,6 +949,9 @@ msgstr "No tinc cap compte a Magnatune"
msgid "Icon"
msgstr "Icona"
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1027,6 +1030,9 @@ msgstr "Gran Saló"
msgid "Large album cover"
msgstr "Caràtula gran de l'àlbum"
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
@ -1710,6 +1716,9 @@ msgstr "Salta endavant en la llista de reproducció"
msgid "Small album cover"
msgstr "Caràtula petita"
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr "Suau"
@ -1775,6 +1784,9 @@ msgstr ""
msgid "Supported formats"
msgstr "Formats suportats"
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr "Etiqueta"

View File

@ -928,6 +928,9 @@ msgstr "Nemám u Magnatune účet"
msgid "Icon"
msgstr "Ikona"
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1006,6 +1009,9 @@ msgstr "Velký sál"
msgid "Large album cover"
msgstr ""
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
@ -1685,6 +1691,9 @@ msgstr "Přeskočit dopředu v seznamu skladeb"
msgid "Small album cover"
msgstr ""
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr "Měkké"
@ -1750,6 +1759,9 @@ msgstr ""
msgid "Supported formats"
msgstr "Podporované formáty"
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr "Značka"

View File

@ -928,6 +928,9 @@ msgstr ""
msgid "Icon"
msgstr ""
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1007,6 +1010,9 @@ msgstr "Stor sal"
msgid "Large album cover"
msgstr ""
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
@ -1688,6 +1694,9 @@ msgstr "Skip fremad i spillelisten"
msgid "Small album cover"
msgstr ""
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr "Soft"
@ -1753,6 +1762,9 @@ msgstr ""
msgid "Supported formats"
msgstr ""
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr "Mærke"

View File

@ -948,6 +948,9 @@ msgstr "Ich habe kein Magnatune-Konto"
msgid "Icon"
msgstr "Symbol"
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1028,6 +1031,9 @@ msgstr "Großer Raum"
msgid "Large album cover"
msgstr "Großes Albumcover"
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
@ -1711,6 +1717,9 @@ msgstr "Nächstes Stück in der Wiedergabeliste"
msgid "Small album cover"
msgstr "Kleines Albumcover"
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr "Soft"
@ -1776,6 +1785,9 @@ msgstr "Sehr hoch (60 fps)"
msgid "Supported formats"
msgstr "Unterstützte Formate"
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr "Stichwort"

View File

@ -953,6 +953,9 @@ msgstr "Δεν έχω λογαριασμό Magnatune"
msgid "Icon"
msgstr "Εικονίδιο"
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1033,6 +1036,9 @@ msgstr "Μεγάλη αίθουσα"
msgid "Large album cover"
msgstr "Μεγάλο εξώφυλλο άλμπουμ"
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
@ -1714,6 +1720,9 @@ msgstr "Παράλειψη προς τα μπροστά στη λίστα"
msgid "Small album cover"
msgstr "Μικρό εξώφυλλο άλμπουμ"
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr "Απαλή"
@ -1779,6 +1788,9 @@ msgstr "Υπέρ υψηλά (60 fps)"
msgid "Supported formats"
msgstr "Υποστηριζόμενες μορφές"
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr "Ετικέτα"

View File

@ -927,6 +927,9 @@ msgstr ""
msgid "Icon"
msgstr ""
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1005,6 +1008,9 @@ msgstr "Large Hall"
msgid "Large album cover"
msgstr ""
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
@ -1685,6 +1691,9 @@ msgstr "Skip forwards in playlist"
msgid "Small album cover"
msgstr ""
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr "Soft"
@ -1750,6 +1759,9 @@ msgstr ""
msgid "Supported formats"
msgstr ""
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr "Tag"

View File

@ -925,6 +925,9 @@ msgstr ""
msgid "Icon"
msgstr ""
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1003,6 +1006,9 @@ msgstr "Large Hall"
msgid "Large album cover"
msgstr ""
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
@ -1682,6 +1688,9 @@ msgstr "Skip forwards in playlist"
msgid "Small album cover"
msgstr ""
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr "Soft"
@ -1747,6 +1756,9 @@ msgstr ""
msgid "Supported formats"
msgstr ""
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr "Tag"

View File

@ -951,6 +951,9 @@ msgstr "No tengo una cuenta en Magnatune"
msgid "Icon"
msgstr "Ícono"
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1032,6 +1035,9 @@ msgstr "Salón grande"
msgid "Large album cover"
msgstr "Caratula grande del álbum"
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
@ -1715,6 +1721,9 @@ msgstr "Saltar hacia adelante en la lista de reproducción"
msgid "Small album cover"
msgstr "Caratula de álbum pequeña"
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr "Soft"
@ -1780,6 +1789,9 @@ msgstr "Super alta (60 fps)"
msgid "Supported formats"
msgstr "Formatos soportados"
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr "Etiqueta"

View File

@ -925,6 +925,9 @@ msgstr "Minulla ei ole Magnatune-tunnusta"
msgid "Icon"
msgstr ""
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1003,6 +1006,9 @@ msgstr ""
msgid "Large album cover"
msgstr ""
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
@ -1683,6 +1689,9 @@ msgstr ""
msgid "Small album cover"
msgstr ""
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr ""
@ -1748,6 +1757,9 @@ msgstr ""
msgid "Supported formats"
msgstr ""
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr "Tunniste"

View File

@ -956,6 +956,9 @@ msgstr "Je ne possède pas de compte Magnatune"
msgid "Icon"
msgstr "Icône"
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1034,6 +1037,9 @@ msgstr "Large Salle"
msgid "Large album cover"
msgstr "Grande jaquette d'album"
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
@ -1719,6 +1725,9 @@ msgstr "Lire la piste suivante"
msgid "Small album cover"
msgstr "Petite jaquette d'album"
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr "Soft"
@ -1784,6 +1793,9 @@ msgstr "Très haute (60 fps)"
msgid "Supported formats"
msgstr "Formats supportés"
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr "Tag"

View File

@ -929,6 +929,9 @@ msgstr ""
msgid "Icon"
msgstr ""
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1007,6 +1010,9 @@ msgstr "Large Hall"
msgid "Large album cover"
msgstr ""
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr ""
@ -1687,6 +1693,9 @@ msgstr ""
msgid "Small album cover"
msgstr ""
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr "Soft"
@ -1752,6 +1761,9 @@ msgstr ""
msgid "Supported formats"
msgstr ""
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr ""

View File

@ -946,6 +946,9 @@ msgstr "Nincs Magnatune fiókom"
msgid "Icon"
msgstr "Ikon"
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1026,6 +1029,9 @@ msgstr "Nagy terem"
msgid "Large album cover"
msgstr "Nagy albumborító"
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
@ -1709,6 +1715,9 @@ msgstr "Léptetés előre a lejátszási listában"
msgid "Small album cover"
msgstr "Kis albumborító"
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr "Lágy"
@ -1774,6 +1783,9 @@ msgstr "Nagyon gyors (60 fps)"
msgid "Supported formats"
msgstr "Támogatott formátumok"
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr "Címke"

View File

@ -954,6 +954,9 @@ msgstr "Non ho un account Magnatune"
msgid "Icon"
msgstr "Icona"
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1035,6 +1038,9 @@ msgstr "Sala grande"
msgid "Large album cover"
msgstr "Copertina grande"
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
@ -1719,6 +1725,9 @@ msgstr "Salta in avanti nella scaletta"
msgid "Small album cover"
msgstr "Copertine piccole"
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr "Leggere"
@ -1784,6 +1793,9 @@ msgstr "Altissima (60 fps)"
msgid "Supported formats"
msgstr "Formati supportati"
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr "Tag"

View File

@ -924,6 +924,9 @@ msgstr ""
msgid "Icon"
msgstr ""
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1003,6 +1006,9 @@ msgstr ""
msgid "Large album cover"
msgstr ""
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr ""
@ -1682,6 +1688,9 @@ msgstr ""
msgid "Small album cover"
msgstr ""
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr ""
@ -1747,6 +1756,9 @@ msgstr ""
msgid "Supported formats"
msgstr ""
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr ""

View File

@ -925,6 +925,9 @@ msgstr ""
msgid "Icon"
msgstr ""
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1002,6 +1005,9 @@ msgstr ""
msgid "Large album cover"
msgstr ""
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr ""
@ -1681,6 +1687,9 @@ msgstr ""
msgid "Small album cover"
msgstr ""
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr ""
@ -1746,6 +1755,9 @@ msgstr ""
msgid "Supported formats"
msgstr ""
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr ""

View File

@ -926,6 +926,9 @@ msgstr ""
msgid "Icon"
msgstr "Ikon"
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1005,6 +1008,9 @@ msgstr "Storsal"
msgid "Large album cover"
msgstr ""
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
@ -1684,6 +1690,9 @@ msgstr ""
msgid "Small album cover"
msgstr ""
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr "Myk"
@ -1749,6 +1758,9 @@ msgstr ""
msgid "Supported formats"
msgstr ""
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr "Merkelapp"

View File

@ -949,6 +949,9 @@ msgstr "Ik heb geen Magnatune-account"
msgid "Icon"
msgstr "Pictogram"
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1030,6 +1033,9 @@ msgstr "Grote hal"
msgid "Large album cover"
msgstr "Grote albumhoes"
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
@ -1714,6 +1720,9 @@ msgstr "Vooruit in afspeellijst"
msgid "Small album cover"
msgstr "Kleine albumhoes"
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr "Zacht"
@ -1779,6 +1788,9 @@ msgstr "Super hoog (60 fps)"
msgid "Supported formats"
msgstr "Ondersteunde formaten"
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr "Tag"

View File

@ -924,6 +924,9 @@ msgstr ""
msgid "Icon"
msgstr ""
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1001,6 +1004,9 @@ msgstr "Large Hall"
msgid "Large album cover"
msgstr ""
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
@ -1680,6 +1686,9 @@ msgstr ""
msgid "Small album cover"
msgstr ""
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr "Soft"
@ -1745,6 +1754,9 @@ msgstr ""
msgid "Supported formats"
msgstr ""
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr "Etiqueta"

View File

@ -947,6 +947,9 @@ msgstr "Nie posiadam konta w Magnatune"
msgid "Icon"
msgstr "Ikona"
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1027,6 +1030,9 @@ msgstr "Duża hala"
msgid "Large album cover"
msgstr "Duża okładka albumu"
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
@ -1710,6 +1716,9 @@ msgstr "Przeskocz w przód w liście odtwarzania"
msgid "Small album cover"
msgstr "Mała okładka albumu"
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr "Miękki"
@ -1775,6 +1784,9 @@ msgstr "Bardzo wyska jakość (60 fps)"
msgid "Supported formats"
msgstr "Obsługiwane formaty"
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr "Znacznik"

View File

@ -947,6 +947,9 @@ msgstr "Não tenho uma conta Magnatune"
msgid "Icon"
msgstr "Ícone"
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1027,6 +1030,9 @@ msgstr "Sala ampla"
msgid "Large album cover"
msgstr "Capa de álbum grande"
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
@ -1711,6 +1717,9 @@ msgstr "Avançar na lista de reprodução"
msgid "Small album cover"
msgstr "Capa de álbum pequena"
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr "Suave"
@ -1776,6 +1785,9 @@ msgstr "Elevada (60 fps)"
msgid "Supported formats"
msgstr "Formatos suportados"
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr "Etiqueta"

View File

@ -938,6 +938,9 @@ msgstr "Eu não tenho uma conta no Magnatune"
msgid "Icon"
msgstr ""
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1016,6 +1019,9 @@ msgstr "Grande Salão"
msgid "Large album cover"
msgstr "Capa grande de álbum"
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
@ -1699,6 +1705,9 @@ msgstr "Pular para a próxima música da lista"
msgid "Small album cover"
msgstr "Capa pequena de álbum"
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr "Suave"
@ -1764,6 +1773,9 @@ msgstr "Super alto (60 fps)"
msgid "Supported formats"
msgstr ""
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr "Marcador"

View File

@ -924,6 +924,9 @@ msgstr ""
msgid "Icon"
msgstr ""
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1002,6 +1005,9 @@ msgstr ""
msgid "Large album cover"
msgstr ""
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
@ -1681,6 +1687,9 @@ msgstr "Sare în listă înainte"
msgid "Small album cover"
msgstr ""
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr ""
@ -1746,6 +1755,9 @@ msgstr ""
msgid "Supported formats"
msgstr ""
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr ""

View File

@ -940,6 +940,9 @@ msgstr "У меня нет учётной записи Magnatune"
msgid "Icon"
msgstr "Значок"
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1021,6 +1024,9 @@ msgstr "Large Hall"
msgid "Large album cover"
msgstr "Большая обложка альбома"
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
@ -1703,6 +1709,9 @@ msgstr "Переместить вперед в списке воспроизве
msgid "Small album cover"
msgstr "Маленькая обложка альбома"
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr "Soft"
@ -1768,6 +1777,9 @@ msgstr "Очень высокая (60 fps)"
msgid "Supported formats"
msgstr "Поддерживаемые форматы"
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr "Тег"

View File

@ -944,6 +944,9 @@ msgstr "Nemám Magnatune účet"
msgid "Icon"
msgstr "Ikona"
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1024,6 +1027,9 @@ msgstr "Large Hall"
msgid "Large album cover"
msgstr "Veľký obal albumu"
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
@ -1704,6 +1710,9 @@ msgstr "Preskočiť dopredu v playliste"
msgid "Small album cover"
msgstr "Malý obal albumu"
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr "Soft"
@ -1769,6 +1778,9 @@ msgstr "Super vysoký (60 fps)"
msgid "Supported formats"
msgstr "Podporované formáty"
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr "Tag"

View File

@ -943,6 +943,9 @@ msgstr "Nimam računa Magnatune"
msgid "Icon"
msgstr "Ikona"
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1023,6 +1026,9 @@ msgstr "Velika dvorana"
msgid "Large album cover"
msgstr "Velik ovitek albuma"
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
@ -1704,6 +1710,9 @@ msgstr "Skoči naprej po seznamu predvajanja"
msgid "Small album cover"
msgstr "Majhen ovitek albuma"
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr "Soft"
@ -1769,6 +1778,9 @@ msgstr "Zelo visoka (60fps)"
msgid "Supported formats"
msgstr "Podprte vrste"
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr "Oznaka"

View File

@ -928,6 +928,9 @@ msgstr "Немам налог на Мегатјуну"
msgid "Icon"
msgstr "Икона"
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1006,6 +1009,9 @@ msgstr "Велика дворана"
msgid "Large album cover"
msgstr "Велики омот албума"
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr "ЛастФМ"
@ -1686,6 +1692,9 @@ msgstr "Прескочи унапред у листи нумера"
msgid "Small album cover"
msgstr ""
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr ""
@ -1751,6 +1760,9 @@ msgstr ""
msgid "Supported formats"
msgstr ""
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr "Ознака"

View File

@ -933,6 +933,9 @@ msgstr "Jag har inte ett Magnatune-konto"
msgid "Icon"
msgstr "Ikon"
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1011,6 +1014,9 @@ msgstr "Stort rum"
msgid "Large album cover"
msgstr "Stor omslagsbild"
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
@ -1690,6 +1696,9 @@ msgstr "Gå framåt i spellista"
msgid "Small album cover"
msgstr "Liten omslagsbild"
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr "Soft"
@ -1755,6 +1764,9 @@ msgstr "Super hög (60 fps)"
msgid "Supported formats"
msgstr ""
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr "Tagg"

View File

@ -943,6 +943,9 @@ msgstr "Magnatune hesabım yok"
msgid "Icon"
msgstr "Simge"
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1024,6 +1027,9 @@ msgstr "Geniş Salon"
msgid "Large album cover"
msgstr "Geniş albüm kapağı"
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
@ -1707,6 +1713,9 @@ msgstr "Parça listesinde ileri git"
msgid "Small album cover"
msgstr "Küçük albüm kapağı"
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr "Hafif"
@ -1772,6 +1781,9 @@ msgstr "Süper yüksek (60 fps)"
msgid "Supported formats"
msgstr "Desteklenen biçimler"
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr "Etiket"

View File

@ -915,6 +915,9 @@ msgstr ""
msgid "Icon"
msgstr ""
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -992,6 +995,9 @@ msgstr ""
msgid "Large album cover"
msgstr ""
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr ""
@ -1671,6 +1677,9 @@ msgstr ""
msgid "Small album cover"
msgstr ""
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr ""
@ -1736,6 +1745,9 @@ msgstr ""
msgid "Supported formats"
msgstr ""
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr ""

View File

@ -942,6 +942,9 @@ msgstr "У мене немає облікового запису на Magnatune"
msgid "Icon"
msgstr "Значок"
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1023,6 +1026,9 @@ msgstr "Велика зала"
msgid "Large album cover"
msgstr "Велика обкладинка альбому"
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
@ -1704,6 +1710,9 @@ msgstr "Перейти до наступної пісні у списку від
msgid "Small album cover"
msgstr "Маленька обкладинка альбому"
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr "Легка"
@ -1769,6 +1778,9 @@ msgstr "Дуже висока (60 к/с)"
msgid "Supported formats"
msgstr "Підтримувані формати"
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr "Позначка"

View File

@ -924,6 +924,9 @@ msgstr ""
msgid "Icon"
msgstr ""
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1001,6 +1004,9 @@ msgstr ""
msgid "Large album cover"
msgstr ""
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr ""
@ -1680,6 +1686,9 @@ msgstr "在播放列表中前进"
msgid "Small album cover"
msgstr ""
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr ""
@ -1745,6 +1754,9 @@ msgstr ""
msgid "Supported formats"
msgstr ""
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr ""

View File

@ -929,6 +929,9 @@ msgstr "我沒有 Magnatune 帳號"
msgid "Icon"
msgstr ""
msgid "Icons on top"
msgstr ""
msgid ""
"If you continue, this device will work slowly and songs copied to it may not "
"work."
@ -1007,6 +1010,9 @@ msgstr "大館"
msgid "Large album cover"
msgstr "大專輯封面"
msgid "Large sidebar"
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
@ -1686,6 +1692,9 @@ msgstr "跳至播放清單最後頭"
msgid "Small album cover"
msgstr "小專輯封面"
msgid "Small sidebar"
msgstr ""
msgid "Soft"
msgstr ""
@ -1751,6 +1760,9 @@ msgstr "超高 (60 fps)"
msgid "Supported formats"
msgstr ""
msgid "Tabs on top"
msgstr ""
msgid "Tag"
msgstr "標記"

View File

@ -15,7 +15,6 @@
*/
#include "mainwindow.h"
#include "stylehelper.h"
#include "ui_mainwindow.h"
#include "core/commandlineoptions.h"
#include "core/database.h"
@ -75,6 +74,7 @@
#include "widgets/fileview.h"
#include "widgets/multiloadingindicator.h"
#include "widgets/osd.h"
#include "widgets/stylehelper.h"
#include "widgets/trackslider.h"
#ifdef ENABLE_WIIMOTEDEV

View File

@ -775,7 +775,7 @@
<customwidget>
<class>FancyTabWidget</class>
<extends>QWidget</extends>
<header>fancytabwidget.h</header>
<header>widgets/fancytabwidget.h</header>
<container>0</container>
</customwidget>
<customwidget>

241
src/widgets/stylehelper.cpp Normal file
View File

@ -0,0 +1,241 @@
/**************************************************************************
**
** This file is part of Qt Creator
**
** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
**
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** Commercial Usage
**
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Nokia.
**
** GNU Lesser General Public License Usage
**
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** If you are unsure which license is appropriate for your use, please
** contact the sales department at http://qt.nokia.com/contact.
**
**************************************************************************/
#include "stylehelper.h"
#include <QtGui/QPixmapCache>
#include <QtGui/QWidget>
#include <QtCore/QRect>
#include <QtGui/QPainter>
#include <QtGui/QApplication>
#include <QtGui/QPalette>
#include <QtGui/QStyleOption>
#include <QtCore/QObject>
// Clamps float color values within (0, 255)
static int clamp(float x)
{
const int val = x > 255 ? 255 : static_cast<int>(x);
return val < 0 ? 0 : val;
}
namespace Utils {
qreal StyleHelper::sidebarFontSize()
{
#if defined(Q_WS_MAC)
return 10;
#else
return 7.5;
#endif
}
QColor StyleHelper::panelTextColor(bool lightColored)
{
if (!lightColored)
return Qt::white;
else
return Qt::black;
}
// Invalid by default, setBaseColor needs to be called at least once
QColor StyleHelper::m_baseColor;
QColor StyleHelper::m_requestedBaseColor;
QColor StyleHelper::baseColor(bool lightColored)
{
if (!lightColored)
return m_baseColor;
else
return m_baseColor.lighter(230);
}
QColor StyleHelper::highlightColor(bool lightColored)
{
QColor result = baseColor(lightColored);
if (!lightColored)
result.setHsv(result.hue(),
clamp(result.saturation()),
clamp(result.value() * 1.16));
else
result.setHsv(result.hue(),
clamp(result.saturation()),
clamp(result.value() * 1.06));
return result;
}
QColor StyleHelper::shadowColor(bool lightColored)
{
QColor result = baseColor(lightColored);
result.setHsv(result.hue(),
clamp(result.saturation() * 1.1),
clamp(result.value() * 0.70));
return result;
}
QColor StyleHelper::borderColor(bool lightColored)
{
QColor result = baseColor(lightColored);
result.setHsv(result.hue(),
result.saturation(),
result.value() / 2);
return result;
}
// We try to ensure that the actual color used are within
// reasonalbe bounds while generating the actual baseColor
// from the users request.
void StyleHelper::setBaseColor(const QColor &newcolor)
{
m_requestedBaseColor = newcolor;
QColor color;
color.setHsv(newcolor.hue(),
newcolor.saturation() * 0.7,
64 + newcolor.value() / 3);
if (color.isValid() && color != m_baseColor) {
m_baseColor = color;
foreach (QWidget *w, QApplication::topLevelWidgets())
w->update();
}
}
static void verticalGradientHelper(QPainter *p, const QRect &spanRect, const QRect &rect, bool lightColored)
{
QColor highlight = StyleHelper::highlightColor(lightColored);
QColor shadow = StyleHelper::shadowColor(lightColored);
QLinearGradient grad(spanRect.topRight(), spanRect.topLeft());
grad.setColorAt(0, highlight.lighter(117));
grad.setColorAt(1, shadow.darker(109));
p->fillRect(rect, grad);
QColor light(255, 255, 255, 80);
p->setPen(light);
p->drawLine(rect.topRight() - QPoint(1, 0), rect.bottomRight() - QPoint(1, 0));
QColor dark(0, 0, 0, 90);
p->setPen(dark);
p->drawLine(rect.topLeft(), rect.bottomLeft());
}
void StyleHelper::verticalGradient(QPainter *painter, const QRect &spanRect, const QRect &clipRect, bool lightColored)
{
if (StyleHelper::usePixmapCache()) {
QString key;
QColor keyColor = baseColor(lightColored);
key.sprintf("mh_vertical %d %d %d %d %d",
spanRect.width(), spanRect.height(), clipRect.width(),
clipRect.height(), keyColor.rgb());;
QPixmap pixmap;
if (!QPixmapCache::find(key, pixmap)) {
pixmap = QPixmap(clipRect.size());
QPainter p(&pixmap);
QRect rect(0, 0, clipRect.width(), clipRect.height());
verticalGradientHelper(&p, spanRect, rect, lightColored);
p.end();
QPixmapCache::insert(key, pixmap);
}
painter->drawPixmap(clipRect.topLeft(), pixmap);
} else {
verticalGradientHelper(painter, spanRect, clipRect, lightColored);
}
}
// Draws a cached pixmap with shadow
void StyleHelper::drawIconWithShadow(const QIcon &icon, const QRect &rect,
QPainter *p, QIcon::Mode iconMode, int radius, const QColor &color, const QPoint &offset)
{
QPixmap cache;
QString pixmapName = QString("icon %0 %1 %2").arg(icon.cacheKey()).arg(iconMode).arg(rect.height());
if (!QPixmapCache::find(pixmapName, cache)) {
QPixmap px = icon.pixmap(rect.size());
cache = QPixmap(px.size() + QSize(radius * 2, radius * 2));
cache.fill(Qt::transparent);
QPainter cachePainter(&cache);
if (iconMode == QIcon::Disabled) {
QImage im = px.toImage().convertToFormat(QImage::Format_ARGB32);
for (int y=0; y<im.height(); ++y) {
QRgb *scanLine = (QRgb*)im.scanLine(y);
for (int x=0; x<im.width(); ++x) {
QRgb pixel = *scanLine;
char intensity = qGray(pixel);
*scanLine = qRgba(intensity, intensity, intensity, qAlpha(pixel));
++scanLine;
}
}
px = QPixmap::fromImage(im);
}
// Draw shadow
QImage tmp(px.size() + QSize(radius * 2, radius * 2 + 1), QImage::Format_ARGB32_Premultiplied);
tmp.fill(Qt::transparent);
QPainter tmpPainter(&tmp);
tmpPainter.setCompositionMode(QPainter::CompositionMode_Source);
tmpPainter.drawPixmap(QPoint(radius, radius), px);
tmpPainter.end();
// blur the alpha channel
QImage blurred(tmp.size(), QImage::Format_ARGB32_Premultiplied);
blurred.fill(Qt::transparent);
QPainter blurPainter(&blurred);
qt_blurImage(&blurPainter, tmp, radius, false, true);
blurPainter.end();
tmp = blurred;
// blacken the image...
tmpPainter.begin(&tmp);
tmpPainter.setCompositionMode(QPainter::CompositionMode_SourceIn);
tmpPainter.fillRect(tmp.rect(), color);
tmpPainter.end();
tmpPainter.begin(&tmp);
tmpPainter.setCompositionMode(QPainter::CompositionMode_SourceIn);
tmpPainter.fillRect(tmp.rect(), color);
tmpPainter.end();
// draw the blurred drop shadow...
cachePainter.drawImage(QRect(0, 0, cache.rect().width(), cache.rect().height()), tmp);
// Draw the actual pixmap...
cachePainter.drawPixmap(QPoint(radius, radius) + offset, px);
QPixmapCache::insert(pixmapName, cache);
}
QRect targetRect = cache.rect();
targetRect.moveCenter(rect.center());
p->drawPixmap(targetRect.topLeft() - offset, cache);
}
} // namespace Utils

View File

@ -51,9 +51,7 @@ public:
static const unsigned int DEFAULT_BASE_COLOR = 0x666666;
// Height of the project explorer navigation bar
static int navigationWidgetHeight() { return 24; }
static qreal sidebarFontSize();
static QPalette sidebarFontPalette(const QPalette &original);
// This is our color table, all colors derive from baseColor
static QColor requestedBaseColor() { return m_requestedBaseColor; }
@ -62,8 +60,6 @@ public:
static QColor highlightColor(bool lightColored = false);
static QColor shadowColor(bool lightColored = false);
static QColor borderColor(bool lightColored = false);
static QColor buttonTextColor() { return QColor(0x4c4c4c); }
static QColor mergedColors(const QColor &colorA, const QColor &colorB, int factor = 50);
static QColor sidebarHighlight() { return QColor(255, 255, 255, 40); }
static QColor sidebarShadow() { return QColor(0, 0, 0, 40); }
@ -71,20 +67,13 @@ public:
// Sets the base color and makes sure all top level widgets are updated
static void setBaseColor(const QColor &color);
// Draws a shaded anti-aliased arrow
static void drawArrow(QStyle::PrimitiveElement element, QPainter *painter, const QStyleOption *option);
// Gradients used for panels
static void horizontalGradient(QPainter *painter, const QRect &spanRect, const QRect &clipRect, bool lightColored = false);
static void verticalGradient(QPainter *painter, const QRect &spanRect, const QRect &clipRect, bool lightColored = false);
static void menuGradient(QPainter *painter, const QRect &spanRect, const QRect &clipRect);
static bool usePixmapCache() { return true; }
static void drawIconWithShadow(const QIcon &icon, const QRect &rect, QPainter *p, QIcon::Mode iconMode,
int radius = 3, const QColor &color = QColor(0, 0, 0, 130),
const QPoint &offset = QPoint(1, -2));
static void drawCornerImage(const QImage &img, QPainter *painter, QRect rect,
int left = 0, int top = 0, int right = 0, int bottom = 0);
private:
static QColor m_baseColor;