aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Ui/skinned/textscroller.cpp
blob: b87d77431547688be2634580acec028c81b8112f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
/***************************************************************************
 *   Copyright (C) 2006-2012 by Ilya Kotov                                 *
 *   forkotov02@hotmail.ru                                                 *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
 ***************************************************************************/
#include <QPainter>
#include <QTimer>
#include <QSettings>
#include <QAction>
#include <QMenu>
#include <QMouseEvent>
#include <QSettings>
#include <QApplication>
#include <qmmp/qmmp.h>
#include <qmmp/soundcore.h>
#include <qmmpui/metadataformatter.h>
#include "skin.h"
#include "actionmanager.h"
#include "textscroller.h"

#define SCROLL_SEP "   *** "
#define TITLE_FORMAT "%p%if(%p&%t, - ,)%t%if(%p,,%if(%t,,%f))%if(%l, - %l,)"

TextScroller::TextScroller (QWidget *parent) : QWidget (parent)
{
    m_pressed = false;
    m_press_pos = 0;
    m_metrics = 0;
    m_defautText = QString("Qmmp ") + Qmmp::strVersion();
    m_core = SoundCore::instance();
    m_skin = Skin::instance();
    m_ratio = m_skin->ratio();

    m_timer = new QTimer (this);
    m_timer->setInterval(50);
    m_timer->start();

    m_menu = new QMenu(this);
    m_scrollAction = m_menu->addAction(tr("Autoscroll Songname"), this, SLOT(updateText()));
    m_transparencyAction = m_menu->addAction(tr("Transparent Background"), this, SLOT(updateText()));
    m_scrollAction->setCheckable(true);
    m_transparencyAction->setCheckable(true);
    connect(m_scrollAction, SIGNAL(toggled(bool)), SLOT(updateText()));
    connect(m_timer, SIGNAL (timeout()), SLOT (addOffset()));
    connect(m_skin, SIGNAL(skinChanged()), SLOT(updateSkin()));
    connect(m_core, SIGNAL(stateChanged(Qmmp::State)), SLOT(processState(Qmmp::State)));
    connect(m_core, SIGNAL(metaDataChanged()), SLOT(processMetaData()));
    updateSkin();
}

TextScroller::~TextScroller()
{
    QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
    settings.setValue("Skinned/autoscroll", m_scrollAction->isChecked());
    settings.setValue("Skinned/scroller_transparency", m_transparencyAction->isChecked());
    if(m_metrics)
        delete m_metrics;
}

void TextScroller::setText(const QString &text)
{
    m_sliderText = text;
    updateText();
}

void TextScroller::clear()
{
    setText(QString());
}

void TextScroller::addOffset()
{
    if(!m_scroll)
    {
        m_timer->stop();
        return;
    }
    m_x1--;
    m_x2--;
    if(m_x1 < - m_pixmap.width())
        m_x1 = m_pixmap.width();
    if(m_x2 < - m_pixmap.width())
        m_x2 = m_pixmap.width();
    update();
}

void TextScroller::updateSkin()
{
    m_color.setNamedColor(m_skin->getPLValue("mbfg"));
    setCursor(m_skin->getCursor(Skin::CUR_SONGNAME));
    QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
    m_bitmap = settings.value("Skinned/bitmap_font", false).toBool();
    m_ratio = m_skin->ratio();
    QString fontname = settings.value("Skinned/mw_font", QApplication::font().toString()).toString();
    m_font.fromString(fontname);
    if (m_metrics)
        delete m_metrics;
    else
    {
        m_scrollAction->setChecked(settings.value("Skinned/autoscroll", true).toBool());
        m_transparencyAction->setChecked(settings.value("Skinned/scroller_transparency", true).toBool());
    }
    m_metrics = new QFontMetrics(m_font);
    updateText();
}

void TextScroller::setProgress(int progress)
{
    m_bufferText = tr("Buffering: %1%").arg(progress);
    updateText();
}

void TextScroller::hideEvent (QHideEvent *)
{
    m_timer->stop();
}

void TextScroller::showEvent (QShowEvent *)
{
    if (m_scroll)
        m_timer->start();
}

inline void drawBitmapText(int x, int y, const QString &text, QPainter *paint, Skin *skin)
{
    QString lowertext = text.toLower();
    int chwidth, ypix;
    {
        QPixmap samplechar = skin->getLetter('a');
        chwidth = samplechar.width();
        ypix = y - samplechar.height();
    }
    for (int i = 0; i < lowertext.size(); i++)
    {
        QPixmap pixchar = skin->getLetter(lowertext[i]);
        paint->drawPixmap(x, ypix, pixchar);
        x += chwidth;
    }
}

void TextScroller::paintEvent (QPaintEvent *)
{
    QPainter paint(this);
    if(m_scroll)
    {
        paint.drawPixmap(m_x1,0, m_pixmap);
        paint.drawPixmap(m_x2,0, m_pixmap);
    }
    else
        paint.drawPixmap(4,0, m_pixmap);
}

void TextScroller::mousePressEvent (QMouseEvent *e)
{
    if (e->button() == Qt::RightButton)
        m_menu->exec(e->globalPos());
    else if (e->button() == Qt::LeftButton && m_scroll)
    {
        m_timer->stop();
        m_press_pos = e->x() - m_x1;
        m_pressed = true;
    }
    else
        QWidget::mousePressEvent(e);
}

void TextScroller::mouseReleaseEvent (QMouseEvent *e)
{
   if(e->button() == Qt::RightButton)
        m_menu->exec(e->globalPos());
    else if (e->button() == Qt::LeftButton && m_scroll)
        m_timer->start();
    else
        QWidget::mouseReleaseEvent(e);
   m_pressed = false;
}

void TextScroller::mouseMoveEvent (QMouseEvent *e)
{
    if (m_pressed)
    {
        int bound = m_pixmap.width();
        m_x1 = (e->x() - m_press_pos) % bound;
        if (m_x1 > 0)
            m_x1 -= bound;
        m_x2 = m_x1 + m_pixmap.width();
        update();
    }
    else
        QWidget::mouseMoveEvent(e);
}

void TextScroller::processState(Qmmp::State state)
{
    switch(state)
    {
    case Qmmp::Buffering:
    {
        connect(m_core, SIGNAL(bufferingProgress(int)), SLOT(setProgress(int)));
        break;
    }
    case Qmmp::Playing:
    {
        disconnect(m_core, SIGNAL(bufferingProgress(int)), this, 0);
        m_bufferText.clear();
        updateText();
        break;
    }
    case Qmmp::Paused:
    {
        break;
    }
    case Qmmp::Stopped:
    {
        m_bufferText.clear();
        m_titleText.clear();
        updateText();
        break;
    }
    default:
        break;
    }
}

void TextScroller::processMetaData()
{
    MetaDataFormatter formater(TITLE_FORMAT);
    if(m_core->state() == Qmmp::Playing)
    {
        m_titleText = formater.parse(m_core->metaData(), m_core->totalTime()/1000);
        updateText();
    }
}

void TextScroller::preparePixmap(const QString &text, bool scrollable)
{
    m_scroll = scrollable;
    bool bitmap = m_bitmap && (text.toLatin1() == text.toLocal8Bit()); //use bitmap font if possible
    if(scrollable)
    {
         int textWidth = m_bitmap ? QString(text + SCROLL_SEP).size() * 5
                                  : m_metrics->width(text + SCROLL_SEP);
         int count = 150*m_ratio / textWidth + 1;
         int width = count * textWidth;
         QString fullText;
         for(int i = 0; i < count; ++i)
         {
             fullText.append(text + SCROLL_SEP);
         }
         m_pixmap = QPixmap(width,15*m_ratio);
         if(m_transparencyAction->isChecked())
             m_pixmap.fill(Qt::transparent);
         else
             m_pixmap.fill(QString(Skin::instance()->getPLValue("normalbg")));
         QPainter painter(&m_pixmap);
         painter.setPen(m_color);
         painter.setFont(m_font);
         if(bitmap)
             drawBitmapText (0,12, fullText, &painter, m_skin);
         else
             painter.drawText (0,12, fullText);
         m_x1 = 0;
         m_x2 = m_pixmap.width();
    }
    else
    {
        m_pixmap = QPixmap(150*m_ratio,15*m_ratio);
        if(m_transparencyAction->isChecked())
            m_pixmap.fill(Qt::transparent);
        else
            m_pixmap.fill(QString(Skin::instance()->getPLValue("normalbg")));
        QPainter painter(&m_pixmap);
        painter.setPen(m_color);
        painter.setFont(m_font);
        if(bitmap)
            drawBitmapText (0,12, text, &painter, m_skin);
        else
            painter.drawText (0,12, text);
    }
}

void TextScroller::updateText() //draw text according priority
{
    if(!m_sliderText.isEmpty())
    {
        preparePixmap(m_sliderText);
        m_timer->stop();
    }
    else if(!m_bufferText.isEmpty())
    {
        preparePixmap(m_bufferText);
        m_timer->stop();
    }
    else if (!m_titleText.isEmpty())
    {
        preparePixmap(m_titleText, m_scrollAction->isChecked());
        m_timer->start();
    }
    else if(!m_defautText.isEmpty())
    {
        preparePixmap(m_defautText);
        m_timer->stop();
    }
    else
    {
        m_timer->stop();
        m_pixmap = QPixmap (150*m_ratio,15*m_ratio);
        m_pixmap.fill(Qt::transparent);
        m_scroll = false;
    }
    update();
}
class='lines'>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="de">
<context>
    <name>ActionManager</name>
    <message>
        <location filename="../actionmanager.cpp" line="39"/>
        <source>&amp;Play</source>
        <translation>&amp;Wiedergabe</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="39"/>
        <source>X</source>
        <translation>X</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="40"/>
        <source>&amp;Pause</source>
        <translation>&amp;Pause</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="40"/>
        <source>C</source>
        <translation>C</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="41"/>
        <source>&amp;Stop</source>
        <translation>&amp;Stopp</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="41"/>
        <source>V</source>
        <translation>V</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="42"/>
        <source>&amp;Previous</source>
        <translation>&amp;Vorheriger Titel</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="42"/>
        <source>Z</source>
        <translation>Z</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="43"/>
        <source>&amp;Next</source>
        <translation>&amp;Nächster Titel</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="43"/>
        <source>B</source>
        <translation>B</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="44"/>
        <source>&amp;Play/Pause</source>
        <translation>Wieder&amp;gabe/Pause</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="44"/>
        <source>Space</source>
        <translation>Leertaste</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="45"/>
        <source>&amp;Jump to Track</source>
        <translation>Zu Titel spr&amp;ingen</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="45"/>
        <source>J</source>
        <translation>J</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="46"/>
        <source>&amp;Repeat Playlist</source>
        <translation>W&amp;iedergabeliste wiederholen</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="46"/>
        <source>R</source>
        <translation>R</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="47"/>
        <source>&amp;Repeat Track</source>
        <translation>Tite&amp;l wiederholen</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="47"/>
        <source>Ctrl+R</source>
        <translation>Strg+R</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="48"/>
        <source>&amp;Shuffle</source>
        <translation>&amp;Zufallswiedergabe</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="48"/>
        <source>S</source>
        <translation>S</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="49"/>
        <source>&amp;No Playlist Advance</source>
        <translation>Kei&amp;n voranschreiten in der Wiedergabeliste</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="49"/>
        <source>Ctrl+N</source>
        <translation>Strg+N</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="50"/>
        <source>&amp;Stop After Selected</source>
        <translation>Wiedergabe nach dem ausgewählten Titel &amp;stoppen</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="50"/>
        <source>Ctrl+S</source>
        <translation>Strg+S</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="51"/>
        <source>&amp;Transit between playlists</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="52"/>
        <source>&amp;Clear Queue</source>
        <translation>Wartes&amp;chlange löschen</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="52"/>
        <source>Alt+Q</source>
        <translation>Alt+Q</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="54"/>
        <source>Show Playlist</source>
        <translation>Wiedergabeliste anzeigen</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="54"/>
        <source>Alt+E</source>
        <translation>Alt+E</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="55"/>
        <source>Show Equalizer</source>
        <translation>Equalizer anzeigen</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="55"/>
        <source>Alt+G</source>
        <translation>Alt+G</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="56"/>
        <source>Always on Top</source>
        <translation>Immer im Vordergrund</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="57"/>
        <source>Put on All Workspaces</source>
        <translation>Auf allen Arbeitsflächen anzeigen</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="58"/>
        <source>Double Size</source>
        <translation>Doppelte Größe</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="58"/>
        <source>Meta+D</source>
        <translation>Meta+D</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="59"/>
        <source>Anti-aliasing</source>
        <translation>Kantenglättung</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="61"/>
        <source>Volume &amp;+</source>
        <translation>Lautstärke &amp;+</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="61"/>
        <source>0</source>
        <translation>0</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="62"/>
        <source>Volume &amp;-</source>
        <translation>Lautstärke &amp;-</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="62"/>
        <source>9</source>
        <translation>9</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="63"/>
        <source>&amp;Mute</source>
        <translation>Stu&amp;mm</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="63"/>
        <source>M</source>
        <translation>M</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="65"/>
        <source>&amp;Add File</source>
        <translation>&amp;Datei hinzufügen</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="65"/>
        <source>F</source>
        <translation>F</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="66"/>
        <source>&amp;Add Directory</source>
        <translation>&amp;Verzeichnis hinzufügen</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="66"/>
        <source>D</source>
        <translation>D</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="67"/>
        <source>&amp;Add Url</source>
        <translation>&amp;URL hinzufügen</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="67"/>
        <source>U</source>
        <translation>U</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="68"/>
        <source>&amp;Remove Selected</source>
        <translation>&amp;Ausgewählte entfernen</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="68"/>
        <source>Del</source>
        <translation>Entf</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="69"/>
        <source>&amp;Remove All</source>
        <translation>Alle &amp;entfernen</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="70"/>
        <source>&amp;Remove Unselected</source>
        <translation>&amp;Nicht ausgewählte entfernen</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="71"/>
        <source>Remove unavailable files</source>
        <translation>Nichtverfügbare Dateien entfernen</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="72"/>
        <source>Remove duplicates</source>
        <translation>Duplikate entfernen</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="73"/>
        <source>Refresh</source>
        <translation>Aktualisieren</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="74"/>
        <source>&amp;Queue Toggle</source>
        <translation>Zur &amp;Warteschlange hinzufügen/Aus der Warteschlange entfernen</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="74"/>
        <source>Q</source>
        <translation>Q</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="75"/>
        <source>Invert Selection</source>
        <translation>Auswahl umkehren</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="76"/>
        <source>&amp;Select None</source>
        <translation>&amp;Auswahl aufheben</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="77"/>
        <source>&amp;Select All</source>
        <translation>Alle aus&amp;wählen</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="77"/>
        <source>Ctrl+A</source>
        <translation>Strg+A</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="78"/>
        <source>&amp;View Track Details</source>
        <translation>&amp;Titeldetails anzeigen</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="78"/>
        <source>Alt+I</source>
        <translation>Alt+I</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="79"/>
        <source>&amp;New List</source>
        <translation>&amp;Neue Wiedergabeliste</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="79"/>
        <source>Ctrl+T</source>
        <translation>Strg+T</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="80"/>
        <source>&amp;Delete List</source>
        <translation>Wie&amp;dergabeliste löschen</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="80"/>
        <source>Ctrl+W</source>
        <translation>Strg+W</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="81"/>
        <source>&amp;Load List</source>
        <translation>Wiedergabeliste &amp;laden</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="81"/>
        <source>O</source>
        <translation>O</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="82"/>
        <source>&amp;Save List</source>
        <translation>Wiedergabeliste &amp;speichern</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="82"/>
        <source>Shift+S</source>
        <translation>Umschalt+S</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="83"/>
        <source>&amp;Rename List</source>
        <translation>Liste &amp;umbenennen</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="83"/>
        <source>F2</source>
        <translation>F2</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="84"/>
        <source>&amp;Select Next Playlist</source>
        <translation>Näch&amp;ste Wiedergabeliste auswählen</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="84"/>
        <source>Ctrl+PgDown</source>
        <translation>Strg+Bild ab</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="85"/>
        <source>&amp;Select Previous Playlist</source>
        <translation>Vorherige Wiedergabeli&amp;ste auswählen</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="85"/>
        <source>Ctrl+PgUp</source>
        <translation>Strg+Bild auf</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="86"/>
        <source>&amp;Show Playlists</source>
        <translation>Wiedergabeli&amp;sten anzeigen</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="86"/>
        <source>P</source>
        <translation>P</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="87"/>
        <source>&amp;Group Tracks</source>
        <translation>Titel &amp;gruppieren</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="87"/>
        <source>Ctrl+G</source>
        <translation>Strg+G</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="88"/>
        <source>Ctrl+H</source>
        <translation>Strg+H</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="88"/>
        <source>&amp;Show Column Headers</source>
        <translation>&amp;Spaltenüberschriften anzeigen</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="89"/>
        <source>Show &amp;Tab Bar</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="89"/>
        <source>Alt+T</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="91"/>
        <source>&amp;Settings</source>
        <translation>Ein&amp;stellungen</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="91"/>
        <source>Ctrl+P</source>
        <translation>Strg+P</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="92"/>
        <source>&amp;About</source>
        <translation>Ü&amp;ber</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="93"/>
        <source>&amp;About Qt</source>
        <translation>Übe&amp;r Qt</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="94"/>
        <source>&amp;Exit</source>
        <translation>Be&amp;enden</translation>
    </message>
    <message>
        <location filename="../actionmanager.cpp" line="94"/>
        <source>Ctrl+Q</source>
        <translation>Strg+Q</translation>
    </message>
</context>
<context>
    <name>ColorWidget</name>
    <message>
        <location filename="../colorwidget.cpp" line="47"/>
        <source>Select Color</source>
        <translation>Farbe auswählen</translation>
    </message>
</context>
<context>
    <name>EqWidget</name>
    <message>
        <location filename="../eqwidget.cpp" line="47"/>
        <source>Equalizer</source>
        <translation>Equalizer</translation>
    </message>
    <message>
        <location filename="../eqwidget.cpp" line="172"/>
        <location filename="../eqwidget.cpp" line="189"/>
        <source>preset</source>
        <translation>Voreinstellung</translation>
    </message>
    <message>
        <location filename="../eqwidget.cpp" line="273"/>
        <source>&amp;Load/Delete</source>
        <translation>&amp;Laden/Löschen</translation>
    </message>
    <message>
        <location filename="../eqwidget.cpp" line="275"/>
        <source>&amp;Save Preset</source>
        <translation>&amp;Voreinstellung speichern</translation>
    </message>
    <message>
        <location filename="../eqwidget.cpp" line="277"/>
        <source>&amp;Save Auto-load Preset</source>
        <translation>&amp;Automatische Voreinstellungen speichern</translation>
    </message>
    <message>
        <location filename="../eqwidget.cpp" line="279"/>
        <source>&amp;Import</source>
        <translation>&amp;Importieren</translation>
    </message>
    <message>
        <location filename="../eqwidget.cpp" line="282"/>
        <source>&amp;Clear</source>
        <translation>&amp;Zurücksetzen</translation>
    </message>
    <message>
        <location filename="../eqwidget.cpp" line="311"/>
        <source>Saving Preset</source>
        <translation>Voreinstellung speichern</translation>
    </message>
    <message>
        <location filename="../eqwidget.cpp" line="312"/>
        <source>Preset name:</source>
        <translation>Name der Voreinstellung:</translation>
    </message>
    <message>
        <location filename="../eqwidget.cpp" line="313"/>
        <source>preset #</source>
        <translation>Voreinstellung #</translation>
    </message>
    <message>
        <location filename="../eqwidget.cpp" line="404"/>
        <source>Import Preset</source>
        <translation>Voreinstellung importieren</translation>
    </message>
</context>
<context>
    <name>HotkeyEditor</name>
    <message>
        <location filename="../forms/hotkeyeditor.ui" line="43"/>
        <source>Reset</source>
        <translation>Zurücksetzen</translation>
    </message>
    <message>
        <location filename="../forms/hotkeyeditor.ui" line="57"/>
        <source>Action</source>
        <translation>Aktion</translation>
    </message>
    <message>
        <location filename="../forms/hotkeyeditor.ui" line="62"/>
        <source>Shortcut</source>
        <translation>Kurzbefehl</translation>
    </message>
    <message>
        <location filename="../forms/hotkeyeditor.ui" line="33"/>
        <source>Change shortcut...</source>
        <translation>Kurzbefehl ändern …</translation>
    </message>
    <message>
        <location filename="../hotkeyeditor.cpp" line="57"/>
        <source>Playback</source>
        <translation>Wiedergabe</translation>
    </message>
    <message>
        <location filename="../hotkeyeditor.cpp" line="63"/>
        <source>View</source>
        <translation>Ansicht</translation>
    </message>
    <message>
        <location filename="../hotkeyeditor.cpp" line="69"/>
        <source>Volume</source>
        <translation>Lautstärke</translation>
    </message>
    <message>
        <location filename="../hotkeyeditor.cpp" line="75"/>
        <source>Playlist</source>
        <translation>Wiedergabeliste</translation>
    </message>
    <message>
        <location filename="../hotkeyeditor.cpp" line="81"/>
        <source>Misc</source>
        <translation>Verschiedenes</translation>
    </message>
    <message>
        <location filename="../hotkeyeditor.cpp" line="93"/>
        <source>Reset Shortcuts</source>
        <translation>Kurzbefehle zurücksetzen</translation>
    </message>
    <message>
        <location filename="../hotkeyeditor.cpp" line="94"/>
        <source>Do you want to restore default shortcuts?</source>
        <translation>Möchten Sie die Standardkurzbefehle wiederherstellen?</translation>
    </message>
</context>
<context>
    <name>MainDisplay</name>
    <message>
        <location filename="../display.cpp" line="59"/>
        <source>Previous</source>
        <translation>Vorheriger Titel</translation>
    </message>
    <message>
        <location filename="../display.cpp" line="63"/>
        <source>Play</source>
        <translation>Wiedergabe</translation>
    </message>
    <message>
        <location filename="../display.cpp" line="66"/>
        <source>Pause</source>
        <translation>Pause</translation>
    </message>
    <message>
        <location filename="../display.cpp" line="69"/>
        <source>Stop</source>
        <translation>Stopp</translation>
    </message>
    <message>
        <location filename="../display.cpp" line="72"/>
        <source>Next</source>
        <translation>Nächster Titel</translation>
    </message>
    <message>
        <location filename="../display.cpp" line="75"/>
        <source>Play files</source>
        <translation>Dateien wiedergeben</translation>
    </message>
    <message>
        <location filename="../display.cpp" line="82"/>
        <source>Equalizer</source>
        <translation>Equalizer</translation>
    </message>
    <message>
        <location filename="../display.cpp" line="85"/>
        <source>Playlist</source>
        <translation>Wiedergabeliste</translation>
    </message>
    <message>
        <location filename="../display.cpp" line="90"/>
        <source>Repeat playlist</source>
        <translation>Wiedergabeliste wiederholen</translation>
    </message>
    <message>
        <location filename="../display.cpp" line="93"/>
        <source>Shuffle</source>
        <translation>Zufallswiedergabe</translation>
    </message>
    <message>
        <location filename="../display.cpp" line="103"/>
        <source>Volume</source>
        <translation>Lautstärke</translation>
    </message>
    <message>
        <location filename="../display.cpp" line="109"/>
        <source>Balance</source>
        <translation>Balance</translation>
    </message>
    <message>
        <location filename="../display.cpp" line="295"/>
        <source>Volume: %1%</source>
        <translation>Lautstärke: %1 %</translation>
    </message>
    <message>
        <location filename="../display.cpp" line="299"/>
        <source>Balance: %1% right</source>
        <translation>Balance: %1 % rechts</translation>
    </message>
    <message>
        <location filename="../display.cpp" line="301"/>
        <source>Balance: %1% left</source>
        <translation>Balance: %1 % links</translation>
    </message>
    <message>
        <location filename="../display.cpp" line="303"/>
        <source>Balance: center</source>
        <translation>Balance: Mitte</translation>
    </message>
    <message>
        <location filename="../display.cpp" line="309"/>
        <source>Seek to: %1</source>
        <translation>Springen zu: %1</translation>
    </message>
</context>
<context>
    <name>MainVisual</name>
    <message>
        <location filename="../mainvisual.cpp" line="213"/>
        <source>Visualization Mode</source>
        <translation>Visualisierungsmodus</translation>
    </message>
    <message>
        <location filename="../mainvisual.cpp" line="216"/>
        <source>Analyzer</source>
        <translation>Analysator</translation>
    </message>
    <message>
        <location filename="../mainvisual.cpp" line="217"/>
        <source>Scope</source>
        <translation>Oszilloskop</translation>
    </message>
    <message>
        <location filename="../mainvisual.cpp" line="218"/>
        <source>Off</source>
        <translation>Aus</translation>
    </message>
    <message>
        <location filename="../mainvisual.cpp" line="225"/>
        <source>Analyzer Mode</source>
        <translation>Analysator-Modus</translation>
    </message>
    <message>
        <location filename="../mainvisual.cpp" line="228"/>
        <source>Normal</source>
        <translation>Normal</translation>
    </message>
    <message>
        <location filename="../mainvisual.cpp" line="229"/>
        <source>Fire</source>
        <translation>Feuer</translation>
    </message>
    <message>
        <location filename="../mainvisual.cpp" line="230"/>
        <source>Vertical Lines</source>
        <translation>Vertikale Linien</translation>
    </message>
    <message>
        <location filename="../mainvisual.cpp" line="231"/>
        <source>Lines</source>
        <translation>Linien</translation>
    </message>
    <message>
        <location filename="../mainvisual.cpp" line="232"/>
        <source>Bars</source>
        <translation>Balken</translation>
    </message>
    <message>
        <location filename="../mainvisual.cpp" line="245"/>
        <source>Peaks</source>
        <translation>Spitzenwerte</translation>
    </message>
    <message>
        <location filename="../mainvisual.cpp" line="249"/>
        <source>Refresh Rate</source>
        <translation>Wiederholfrequenz</translation>
    </message>
    <message>
        <location filename="../mainvisual.cpp" line="252"/>
        <source>50 fps</source>
        <translation>50 fps</translation>
    </message>
    <message>
        <location filename="../mainvisual.cpp" line="253"/>
        <source>25 fps</source>
        <translation>25 fps</translation>
    </message>
    <message>
        <location filename="../mainvisual.cpp" line="254"/>
        <source>10 fps</source>
        <translation>10 fps</translation>
    </message>
    <message>
        <location filename="../mainvisual.cpp" line="255"/>
        <source>5 fps</source>
        <translation>5 fps</translation>
    </message>
    <message>
        <location filename="../mainvisual.cpp" line="262"/>
        <source>Analyzer Falloff</source>
        <translation>Analysator-Abfall</translation>
    </message>
    <message>
        <location filename="../mainvisual.cpp" line="265"/>
        <location filename="../mainvisual.cpp" line="279"/>
        <source>Slowest</source>
        <translation>Langsamste</translation>
    </message>
    <message>
        <location filename="../mainvisual.cpp" line="266"/>
        <location filename="../mainvisual.cpp" line="280"/>
        <source>Slow</source>
        <translation>Langsam</translation>
    </message>
    <message>
        <location filename="../mainvisual.cpp" line="267"/>
        <location filename="../mainvisual.cpp" line="281"/>
        <source>Medium</source>
        <translation>Mittel</translation>
    </message>
    <message>
        <location filename="../mainvisual.cpp" line="268"/>
        <location filename="../mainvisual.cpp" line="282"/>
        <source>Fast</source>
        <translation>Schnell</translation>
    </message>
    <message>
        <location filename="../mainvisual.cpp" line="269"/>
        <location filename="../mainvisual.cpp" line="283"/>
        <source>Fastest</source>
        <translation>Schnellste</translation>
    </message>
    <message>
        <location filename="../mainvisual.cpp" line="276"/>
        <source>Peaks Falloff</source>
        <translation>Abfallen der Spitzenwerte</translation>
    </message>
    <message>
        <location filename="../mainvisual.cpp" line="289"/>
        <source>Background</source>
        <translation>Hintergrund</translation>
    </message>
    <message>
        <location filename="../mainvisual.cpp" line="290"/>
        <source>Transparent</source>
        <translation>Transparent</translation>
    </message>
</context>
<context>
    <name>MainWindow</name>
    <message>
        <location filename="../mainwindow.cpp" line="359"/>
        <source>Appearance</source>
        <translation>Erscheinungsbild</translation>
    </message>
    <message>
        <location filename="../mainwindow.cpp" line="360"/>
        <source>Shortcuts</source>
        <translation>Kurzbefehle</translation>
    </message>
    <message>
        <location filename="../mainwindow.cpp" line="430"/>
        <source>View</source>
        <translation>Ansicht</translation>
    </message>
    <message>
        <location filename="../mainwindow.cpp" line="439"/>
        <source>Playlist</source>
        <translation>Wiedergabeliste</translation>
    </message>
    <message>
        <location filename="../mainwindow.cpp" line="466"/>
        <source>Audio</source>
        <translation>Audio</translation>
    </message>
    <message>
        <location filename="../mainwindow.cpp" line="474"/>
        <source>Tools</source>
        <translation>Werkzeuge</translation>
    </message>
    <message>
        <location filename="../mainwindow.cpp" line="556"/>
        <source>Qmmp</source>
        <translation>Qmmp</translation>
    </message>
</context>
<context>
    <name>PlayList</name>
    <message>
        <location filename="../playlist.cpp" line="56"/>
        <source>Playlist</source>
        <translation>Wiedergabeliste</translation>
    </message>
    <message>
        <location filename="../playlist.cpp" line="199"/>
        <source>&amp;Copy Selection To</source>
        <translation>Auswahl kopieren na&amp;ch</translation>
    </message>
    <message>
        <location filename="../playlist.cpp" line="230"/>
        <source>Sort List</source>
        <translation>Wiedergabeliste sortieren</translation>
    </message>
    <message>
        <location filename="../playlist.cpp" line="233"/>
        <location filename="../playlist.cpp" line="273"/>
        <source>By Title</source>
        <translation>Nach Titel</translation>
    </message>
    <message>
        <location filename="../playlist.cpp" line="236"/>
        <location filename="../playlist.cpp" line="276"/>
        <source>By Album</source>
        <translation>Nach Album</translation>
    </message>
    <message>
        <location filename="../playlist.cpp" line="257"/>
        <location filename="../playlist.cpp" line="297"/>
        <source>By Disc Number</source>
        <translation>Nach CD-Nummer</translation>
    </message>
    <message>
        <location filename="../playlist.cpp" line="239"/>
        <location filename="../playlist.cpp" line="279"/>
        <source>By Artist</source>
        <translation>Nach Interpret</translation>
    </message>
    <message>
        <location filename="../playlist.cpp" line="242"/>
        <location filename="../playlist.cpp" line="282"/>
        <source>By Album Artist</source>
        <translation>Nach Albuminterpret</translation>
    </message>
    <message>
        <location filename="../playlist.cpp" line="245"/>
        <location filename="../playlist.cpp" line="285"/>
        <source>By Filename</source>
        <translation>Nach Dateinamen</translation>
    </message>
    <message>
        <location filename="../playlist.cpp" line="248"/>
        <location filename="../playlist.cpp" line="288"/>
        <source>By Path + Filename</source>
        <translation>Nach Pfad + Dateinamen</translation>
    </message>
    <message>
        <location filename="../playlist.cpp" line="251"/>
        <location filename="../playlist.cpp" line="291"/>
        <source>By Date</source>
        <translation>Nach Datum</translation>
    </message>
    <message>
        <location filename="../playlist.cpp" line="254"/>
        <location filename="../playlist.cpp" line="294"/>
        <source>By Track Number</source>
        <translation>Nach Titelnummer</translation>
    </message>
    <message>
        <location filename="../playlist.cpp" line="260"/>
        <location filename="../playlist.cpp" line="300"/>
        <source>By File Creation Date</source>
        <translation>Nach Dateierstellungsdatum</translation>
    </message>
    <message>
        <location filename="../playlist.cpp" line="263"/>
        <location filename="../playlist.cpp" line="303"/>
        <source>By File Modification Date</source>
        <translation>Nach Dateiänderungsdatum</translation>
    </message>
    <message>
        <location filename="../playlist.cpp" line="266"/>
        <source>By Group</source>
        <translation>Nach Gruppe</translation>
    </message>
    <message>
        <location filename="../playlist.cpp" line="271"/>
        <source>Sort Selection</source>
        <translation>Auswahl sortieren</translation>
    </message>
    <message>
        <location filename="../playlist.cpp" line="308"/>
        <source>Randomize List</source>
        <translation>Wiedergabeliste mischen</translation>
    </message>
    <message>
        <location filename="../playlist.cpp" line="310"/>
        <source>Reverse List</source>
        <translation>Wiedergabeliste umkehren</translation>
    </message>
    <message>
        <location filename="../playlist.cpp" line="317"/>
        <source>Actions</source>
        <translation>Aktionen</translation>
    </message>
    <message>
        <location filename="../playlist.cpp" line="592"/>
        <source>Rename Playlist</source>
        <translation>Wiedergabeliste umbenennen</translation>
    </message>
    <message>
        <location filename="../playlist.cpp" line="592"/>
        <source>Playlist name:</source>
        <translation>Wiedergabelistenname:</translation>
    </message>
    <message>
        <location filename="../playlist.cpp" line="613"/>
        <source>&amp;New PlayList</source>
        <translation>&amp;Neue Wiedergabeliste</translation>
    </message>
</context>
<context>
    <name>PlayListBrowser</name>
    <message>
        <location filename="../forms/playlistbrowser.ui" line="14"/>
        <source>Playlist Browser</source>
        <translation>Wiedergabelisten durchsuchen</translation>
    </message>
    <message>
        <location filename="../forms/playlistbrowser.ui" line="31"/>
        <source>Filter:</source>
        <translation>Filter:</translation>
    </message>
    <message>
        <location filename="../forms/playlistbrowser.ui" line="43"/>
        <source>New</source>
        <translation>Neu</translation>
    </message>
    <message>
        <location filename="../forms/playlistbrowser.ui" line="50"/>
        <location filename="../playlistbrowser.cpp" line="43"/>
        <source>Delete</source>
        <translation>Löschen</translation>
    </message>
    <message>
        <location filename="../forms/playlistbrowser.ui" line="57"/>
        <location filename="../forms/playlistbrowser.ui" line="67"/>
        <source>...</source>
        <translation></translation>
    </message>
    <message>
        <location filename="../playlistbrowser.cpp" line="42"/>
        <source>Rename</source>
        <translation>Umbenennen</translation>
    </message>
</context>
<context>
    <name>PlayListHeader</name>
    <message>
        <location filename="../playlistheader.cpp" line="81"/>
        <source>Add Column</source>
        <translation>Spalte hinzufügen</translation>
    </message>
    <message>
        <location filename="../playlistheader.cpp" line="82"/>
        <source>Edit Column</source>
        <translation>Spalte bearbeiten</translation>
    </message>
    <message>
        <location filename="../playlistheader.cpp" line="83"/>
        <source>Show Queue/Protocol</source>
        <translation>Warteschlange/Protokoll anzeigen</translation>
    </message>
    <message>
        <location filename="../playlistheader.cpp" line="85"/>
        <source>Auto-resize</source>
        <translation>Automatische Größenanpassung</translation>
    </message>
    <message>
        <location filename="../playlistheader.cpp" line="88"/>
        <source>Alignment</source>
        <translation>Ausrichtung</translation>
    </message>
    <message>
        <location filename="../playlistheader.cpp" line="89"/>
        <source>Left</source>
        <comment>alignment</comment>
        <translation>Links</translation>
    </message>
    <message>
        <location filename="../playlistheader.cpp" line="90"/>
        <source>Right</source>
        <comment>alignment</comment>
        <translation>Rechts</translation>
    </message>
    <message>
        <location filename="../playlistheader.cpp" line="91"/>
        <source>Center</source>
        <comment>alignment</comment>
        <translation>Mitte</translation>
    </message>
    <message>
        <location filename="../playlistheader.cpp" line="101"/>
        <source>Remove Column</source>
        <translation>Spalte entfernen</translation>
    </message>
</context>
<context>
    <name>PopupSettings</name>
    <message>
        <location filename="../forms/popupsettings.ui" line="14"/>
        <source>Popup Information Settings</source>
        <translation>Einstellungen Aufklapp-Informationen</translation>
    </message>
    <message>
        <location filename="../forms/popupsettings.ui" line="29"/>
        <source>Template</source>
        <translation>Vorlage</translation>
    </message>
    <message>
        <location filename="../forms/popupsettings.ui" line="58"/>
        <source>Reset</source>
        <translation>Zurücksetzen</translation>
    </message>
    <message>
        <location filename="../forms/popupsettings.ui" line="65"/>
        <source>Insert</source>
        <translation>Einfügen</translation>
    </message>
    <message>
        <location filename="../forms/popupsettings.ui" line="75"/>
        <source>Show cover</source>
        <translation>Cover anzeigen</translation>
    </message>
    <message>
        <location filename="../forms/popupsettings.ui" line="89"/>
        <source>Cover size:</source>
        <translation>Cover-Größe:</translation>
    </message>
    <message>
        <location filename="../forms/popupsettings.ui" line="115"/>
        <source>Transparency:</source>
        <translation>Transparenz:</translation>
    </message>
    <message>
        <location filename="../forms/popupsettings.ui" line="145"/>
        <source>Delay:</source>
        <translation>Verzögerung:</translation>
    </message>
    <message>
        <location filename="../forms/popupsettings.ui" line="178"/>
        <source>ms</source>
        <translation>ms</translation>
    </message>
</context>
<context>
    <name>PresetEditor</name>
    <message>
        <location filename="../forms/preseteditor.ui" line="14"/>
        <source>Preset Editor</source>
        <translation>Voreinstellungseditor</translation>
    </message>
    <message>
        <location filename="../forms/preseteditor.ui" line="36"/>
        <source>Preset</source>
        <translation>Voreinstellung</translation>
    </message>
    <message>
        <location filename="../forms/preseteditor.ui" line="52"/>
        <source>Auto-preset</source>
        <translation>Automatische Voreinstellung</translation>
    </message>
    <message>
        <location filename="../forms/preseteditor.ui" line="77"/>
        <source>Load</source>
        <translation>Laden</translation>
    </message>
    <message>
        <location filename="../forms/preseteditor.ui" line="84"/>
        <source>Delete</source>
        <translation>Löschen</translation>
    </message>
</context>
<context>
    <name>ShortcutDialog</name>
    <message>
        <location filename="../forms/shortcutdialog.ui" line="14"/>
        <source>Change Shortcut</source>
        <translation>Kurzbefehl ändern</translation>
    </message>
    <message>
        <location filename="../forms/shortcutdialog.ui" line="29"/>
        <source>Press the key combination you want to assign</source>
        <translation>Drücken Sie die Tastenkombination, die Sie zuweisen möchten</translation>
    </message>
    <message>
        <location filename="../forms/shortcutdialog.ui" line="52"/>
        <source>Clear</source>
        <translation>Löschen</translation>
    </message>
</context>
<context>
    <name>SkinnedFactory</name>
    <message>
        <location filename="../skinnedfactory.cpp" line="35"/>
        <source>Skinned User Interface</source>
        <translation>Designte Benutzeroberfläche</translation>
    </message>
    <message>
        <location filename="../skinnedfactory.cpp" line="61"/>
        <source>About Qmmp Skinned User Interface</source>
        <translation>Über Qmmp Designte Benutzeroberfläche</translation>
    </message>
    <message>
        <location filename="../skinnedfactory.cpp" line="62"/>
        <source>Qmmp Skinned User Interface</source>
        <translation>Qmmp Qmmp Designte Benutzeroberfläche</translation>
    </message>
    <message>
        <location filename="../skinnedfactory.cpp" line="63"/>
        <source>Simple user interface with Winamp-2.x/XMMS skins support</source>
        <translation>Einfache Benutzeroberfläche mit Unterstützung für Designs von Winamp 2.x und XMMS</translation>
    </message>
    <message>
        <location filename="../skinnedfactory.cpp" line="64"/>
        <source>Written by:</source>
        <translation>Geschrieben von:</translation>
    </message>
    <message>
        <location filename="../skinnedfactory.cpp" line="65"/>
        <source>Vladimir Kuznetsov &lt;vovanec@gmail.com&gt;</source>
        <translation>Vladimir Kuznetsov &lt;vovanec@gmail.com&gt;</translation>
    </message>
    <message>
        <location filename="../skinnedfactory.cpp" line="66"/>
        <source>Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
        <translation>Ilya Kotov &lt;forkotov02@ya.ru&gt;</translation>
    </message>
    <message>
        <location filename="../skinnedfactory.cpp" line="67"/>
        <source>Artwork:</source>
        <translation>Grafik:</translation>
    </message>
    <message>
        <location filename="../skinnedfactory.cpp" line="68"/>
        <source>Andrey Adreev &lt;andreev00@gmail.com&gt;</source>
        <translation>Andrey Adreev &lt;andreev00@gmail.com&gt;</translation>
    </message>
    <message>
        <location filename="../skinnedfactory.cpp" line="69"/>
        <source>sixsixfive &lt;http://sixsixfive.deviantart.com/&gt;</source>
        <translation type="unfinished"></translation>
    </message>
</context>
<context>
    <name>SkinnedSettings</name>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="24"/>
        <source>Skins</source>
        <translation>Designs</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="55"/>
        <source>Add...</source>
        <translation>Hinzufügen...</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="72"/>
        <source>Refresh</source>
        <translation>Aktualisieren</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="103"/>
        <source>Main Window</source>
        <translation>Hauptfenster</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="109"/>
        <source>Hide on close</source>
        <translation>Beim Schließen in den Systemabschnitt der Kontrollleiste minimieren</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="116"/>
        <source>Start hidden</source>
        <translation>Minimiert starten</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="123"/>
        <source>Use skin cursors</source>
        <translation>Design-Mauszeiger verwenden</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="261"/>
        <source>Single Column Mode</source>
        <translation>Einzelspaltenmodus</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="308"/>
        <source>Show splitters</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="315"/>
        <source>Alternate splitter color</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="421"/>
        <source>Colors</source>
        <translation>Farben</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="427"/>
        <source>Playlist Colors</source>
        <translation>Wiedergabelistenfarben</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="433"/>
        <source>Use skin colors</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="526"/>
        <source>Background #2:</source>
        <translation>Hintergrund #2:</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="590"/>
        <source>Highlighted background:</source>
        <translation>Hervorgehobener Hintergrund:</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="494"/>
        <source>Normal text:</source>
        <translation>Normaler Text:</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="657"/>
        <source>Splitter:</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="558"/>
        <source>Current text:</source>
        <translation>Aktueller Text:</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="622"/>
        <source>Highlighted text:</source>
        <translation>Hervorgehobener Text:</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="765"/>
        <source>Current track background:</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="867"/>
        <source>Override current track background</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="730"/>
        <source>Group background:</source>
        <translation>Gruppenhintergrund:</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="860"/>
        <source>Override group background</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="698"/>
        <source>Group text:</source>
        <translation>Gruppentext:</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="449"/>
        <source>Background #1:</source>
        <translation>Hintergrund #1:</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="825"/>
        <source>Load skin colors</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="894"/>
        <source>Fonts</source>
        <translation>Schriftarten</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="948"/>
        <source>Playlist:</source>
        <translation>Wiedergabeliste:</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="984"/>
        <source>Column headers:</source>
        <translation>Spaltenüberschriften:</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="906"/>
        <source>Player:</source>
        <translation>Abspieler:</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="928"/>
        <location filename="../forms/skinnedsettings.ui" line="970"/>
        <location filename="../forms/skinnedsettings.ui" line="997"/>
        <source>???</source>
        <translation>???</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="142"/>
        <location filename="../forms/skinnedsettings.ui" line="935"/>
        <location filename="../forms/skinnedsettings.ui" line="977"/>
        <location filename="../forms/skinnedsettings.ui" line="1004"/>
        <source>...</source>
        <translation></translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="1026"/>
        <source>Reset fonts</source>
        <translation>Schriftarten zurücksetzen</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="1035"/>
        <source>Use bitmap font if available</source>
        <translation>Bitmap-Schriftart verwenden, falls verfügbar</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="132"/>
        <source>Window title format:</source>
        <translation>Fenstertitelformat:</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="97"/>
        <source>General</source>
        <translation>Allgemein</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="154"/>
        <source>Transparency</source>
        <translation>Transparenz</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="160"/>
        <source>Main window</source>
        <translation>Hauptfenster</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="183"/>
        <location filename="../forms/skinnedsettings.ui" line="207"/>
        <location filename="../forms/skinnedsettings.ui" line="231"/>
        <source>0</source>
        <translation>0</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="190"/>
        <source>Equalizer</source>
        <translation>Equalizer</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="214"/>
        <source>Playlist</source>
        <translation>Wiedergabeliste</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="255"/>
        <source>Song Display</source>
        <translation>Liedanzeige</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="294"/>
        <source>Show protocol</source>
        <translation>Protokoll anzeigen</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="274"/>
        <source>Show song lengths</source>
        <translation>Liedlängen anzeigen</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="267"/>
        <source>Show song numbers</source>
        <translation>Liednummern anzeigen</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="284"/>
        <source>Align song numbers</source>
        <translation>Liednummern ausrichten</translation>
    </message>
    <message>
        <location filename="../forms/skinnedsettings.ui" line="301"/>