Make the device view prettier

This commit is contained in:
David Sansome 2010-07-04 11:34:25 +00:00
parent 8c26c61b0b
commit 88474551d5
33 changed files with 395 additions and 19 deletions

View File

@ -71,5 +71,6 @@ protected:
private slots:
void ThreadStarted();
};
Q_DECLARE_METATYPE(DeviceLister*);
#endif // DEVICELISTER_H

View File

@ -22,7 +22,10 @@
#include "ui/iconloader.h"
#include <QIcon>
#include <QPainter>
const int DeviceManager::kDeviceIconSize = 32;
const int DeviceManager::kDeviceIconOverlaySize = 16;
DeviceManager::DeviceInfo::DeviceInfo()
: database_id_(-1),
@ -54,17 +57,19 @@ void DeviceManager::DeviceInfo::InitFromDb(const DeviceDatabaseBackend::Device &
void DeviceManager::DeviceInfo::LoadIcon(const QString &filename) {
// Try to load the icon with that exact name first
icon_ = IconLoader::Load(filename);
icon_name_ = filename;
icon_ = IconLoader::Load(icon_name_);
// If that failed than try to guess if it's a phone or ipod. Fall back on
// a usb memory stick icon.
if (icon_.isNull()) {
if (filename.contains("phone"))
icon_ = IconLoader::Load("phone");
icon_name_ = "phone";
else if (filename.contains("ipod") || filename.contains("apple"))
icon_ = IconLoader::Load("multimedia-player-ipod-standard-monochrome");
icon_name_ = "multimedia-player-ipod-standard-monochrome";
else
icon_ = IconLoader::Load("drive-removable-media-usb-pendrive");
icon_name_ = "drive-removable-media-usb-pendrive";
icon_ = IconLoader::Load(icon_name_);
}
}
@ -73,7 +78,8 @@ DeviceManager::DeviceManager(BackgroundThread<Database>* database,
TaskManager* task_manager, QObject *parent)
: QAbstractListModel(parent),
database_(database),
task_manager_(task_manager)
task_manager_(task_manager),
not_connected_overlay_(IconLoader::Load("edit-delete"))
{
// Create the backend in the database thread
backend_ = database_->CreateInThread<DeviceDatabaseBackend>();
@ -107,20 +113,42 @@ QVariant DeviceManager::data(const QModelIndex& index, int role) const {
const DeviceInfo& info = devices_[index.row()];
switch (role) {
case Qt::DisplayRole: {
QString text = info.friendly_name_.isEmpty() ? info.unique_id_ : info.friendly_name_;
if (info.size_)
text = text + QString(" (%1)").arg(Utilities::PrettySize(info.size_));
return text;
}
case Qt::DisplayRole: {
QString text = info.friendly_name_.isEmpty() ? info.unique_id_ : info.friendly_name_;
if (info.size_)
text = text + QString(" (%1)").arg(Utilities::PrettySize(info.size_));
return text;
}
case Qt::DecorationRole: {
bool connected = info.lister_;
return info.icon_.pixmap(22, connected ? QIcon::Normal : QIcon::Disabled);
}
case Qt::DecorationRole: {
QPixmap pixmap = info.icon_.pixmap(kDeviceIconSize);
default:
return QVariant();
if (!info.lister_) {
// Disconnected but remembered
QPainter p(&pixmap);
p.drawPixmap(kDeviceIconSize - kDeviceIconOverlaySize,
kDeviceIconSize - kDeviceIconOverlaySize,
not_connected_overlay_.pixmap(kDeviceIconOverlaySize));
}
return pixmap;
}
case Role_Lister:
return QVariant::fromValue(info.lister_);
case Role_UniqueId:
return info.unique_id_;
case Role_State:
if (info.device_)
return State_Connected;
if (info.lister_)
return State_NotConnected;
return State_Remembered;
default:
return QVariant();
}
}

View File

@ -19,6 +19,7 @@
#include "devicedatabasebackend.h"
#include "core/backgroundthread.h"
#include "library/librarymodel.h"
#include <QAbstractListModel>
#include <QIcon>
@ -38,6 +39,21 @@ public:
QObject* parent = 0);
~DeviceManager();
enum Role {
Role_State = LibraryModel::LastRole,
Role_UniqueId,
Role_Lister,
};
enum State {
State_Remembered,
State_NotConnected,
State_Connected,
};
static const int kDeviceIconSize;
static const int kDeviceIconOverlaySize;
BackgroundThread<Database>* database() const { return database_; }
TaskManager* task_manager() const { return task_manager_; }
@ -83,6 +99,8 @@ private:
QString unique_id_;
QString friendly_name_;
quint64 size_;
QString icon_name_;
QIcon icon_;
};
@ -96,6 +114,8 @@ private:
DeviceDatabaseBackend* backend_;
TaskManager* task_manager_;
QIcon not_connected_overlay_;
QList<DeviceLister*> listers_;
QList<DeviceInfo> devices_;
};

View File

@ -18,16 +18,85 @@
#include "devicemanager.h"
#include "deviceview.h"
#include "core/mergedproxymodel.h"
#include "library/libraryview.h"
#include "library/librarymodel.h"
#include "ui/iconloader.h"
#include <QContextMenuEvent>
#include <QMenu>
#include <QPainter>
#include <QSortFilterProxyModel>
#include <boost/shared_ptr.hpp>
const int DeviceItemDelegate::kIconPadding = 6;
DeviceItemDelegate::DeviceItemDelegate(QObject *parent)
: LibraryItemDelegate(parent)
{
}
void DeviceItemDelegate::paint(QPainter* p, const QStyleOptionViewItem& opt, const QModelIndex& index) const {
// Is it a device or a library item?
if (index.data(DeviceManager::Role_State).isNull()) {
LibraryItemDelegate::paint(p, opt, index);
return;
}
// Draw the background
QStyledItemDelegate::paint(p, opt, QModelIndex());
p->save();
// Font for the status line
QFont status_font(opt.font);
status_font.setItalic(true);
status_font.setPointSize(status_font.pointSize() - 2);
const int text_height = QFontMetrics(opt.font).height() +
QFontMetrics(status_font).height();
QRect line1(opt.rect);
QRect line2(opt.rect);
line1.setTop(line1.top() + (opt.rect.height() - text_height) / 2);
line2.setTop(line1.top() + QFontMetrics(opt.font).height());
line1.setLeft(line1.left() + DeviceManager::kDeviceIconSize + kIconPadding);
line2.setLeft(line2.left() + DeviceManager::kDeviceIconSize + kIconPadding);
// Change the color for selected items
if (opt.state & QStyle::State_Selected) {
p->setPen(opt.palette.color(QPalette::HighlightedText));
}
// Draw the icon
p->drawPixmap(opt.rect.topLeft(), index.data(Qt::DecorationRole).value<QPixmap>());
// Draw the first line (device name)
p->drawText(line1, Qt::AlignLeft | Qt::AlignTop, index.data().toString());
// Draw the second line (status)
p->setFont(status_font);
DeviceManager::State state =
static_cast<DeviceManager::State>(index.data(DeviceManager::Role_State).toInt());
switch (state) {
case DeviceManager::State_Remembered:
p->drawText(line2, Qt::AlignLeft | Qt::AlignTop, tr("Not connected"));
break;
case DeviceManager::State_NotConnected:
p->drawText(line2, Qt::AlignLeft | Qt::AlignTop, tr("Double click to open"));
break;
case DeviceManager::State_Connected:
p->drawText(line2, Qt::AlignLeft | Qt::AlignTop, tr("Connected"));
break;
}
p->restore();
}
DeviceView::DeviceView(QWidget* parent)
: AutoExpandingTreeView(parent),
manager_(NULL),
@ -40,7 +109,7 @@ DeviceView::DeviceView(QWidget* parent)
disconnect_action_ = menu_->addAction(
IconLoader::Load("list-remove"), tr("Disconnect device"), this, SLOT(Disconnect()));
setItemDelegate(new LibraryItemDelegate(this));
setItemDelegate(new DeviceItemDelegate(this));
SetExpandOnReset(false);
}
@ -92,6 +161,8 @@ void DeviceView::Connect() {
QModelIndex sort_idx = sort_model_->mapFromSource(device_idx);
boost::shared_ptr<ConnectedDevice> device = manager_->Connect(device_idx.row());
if (!device)
return;
QSortFilterProxyModel* sort_model = new QSortFilterProxyModel(device->model());
sort_model->setSourceModel(device->model());

View File

@ -17,6 +17,7 @@
#ifndef DEVICEVIEW_H
#define DEVICEVIEW_H
#include "library/libraryview.h"
#include "widgets/autoexpandingtreeview.h"
class QAction;
@ -26,6 +27,16 @@ class QSortFilterProxyModel;
class DeviceManager;
class MergedProxyModel;
class DeviceItemDelegate : public LibraryItemDelegate {
public:
DeviceItemDelegate(QObject* parent);
static const int kIconPadding;
void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const;
};
class DeviceView : public AutoExpandingTreeView {
Q_OBJECT

View File

@ -47,6 +47,8 @@ class LibraryModel : public SimpleTreeModel<LibraryItem> {
Role_SortText,
Role_Key,
Role_Artist,
LastRole
};
// These values get saved in QSettings - don't change them

View File

@ -351,6 +351,9 @@ msgstr ""
msgid "Connect device"
msgstr ""
msgid "Connected"
msgstr ""
msgid "Copy to library..."
msgstr ""
@ -494,6 +497,9 @@ msgstr ""
msgid "Don't stop!"
msgstr ""
msgid "Double click to open"
msgstr ""
msgid "Double-clicking a song clears the playlist first"
msgstr ""
@ -945,6 +951,9 @@ msgstr ""
msgid "None"
msgstr "لا شيء"
msgid "Not connected"
msgstr ""
msgid "Not enough content"
msgstr "لا يوجد محتوى كافي"

View File

@ -352,6 +352,9 @@ msgstr "Nastavit knihovnu..."
msgid "Connect device"
msgstr ""
msgid "Connected"
msgstr ""
msgid "Copy to library..."
msgstr "Zkopírovat do knihovny..."
@ -495,6 +498,9 @@ msgstr "Nemíchat"
msgid "Don't stop!"
msgstr ""
msgid "Double click to open"
msgstr ""
msgid "Double-clicking a song clears the playlist first"
msgstr ""
@ -949,6 +955,9 @@ msgstr ""
msgid "None"
msgstr "Žádný"
msgid "Not connected"
msgstr ""
msgid "Not enough content"
msgstr "Nedostatek obsahu"

View File

@ -352,6 +352,9 @@ msgstr "Indstil bibliotek..."
msgid "Connect device"
msgstr ""
msgid "Connected"
msgstr ""
msgid "Copy to library..."
msgstr "Kopiér til bibliotek..."
@ -495,6 +498,9 @@ msgstr "Bland ikke"
msgid "Don't stop!"
msgstr ""
msgid "Double click to open"
msgstr ""
msgid "Double-clicking a song clears the playlist first"
msgstr ""
@ -950,6 +956,9 @@ msgstr ""
msgid "None"
msgstr "Ingen"
msgid "Not connected"
msgstr ""
msgid "Not enough content"
msgstr "Ikke nok indhold"

View File

@ -351,6 +351,9 @@ msgstr "Musiksammlung einrichten..."
msgid "Connect device"
msgstr ""
msgid "Connected"
msgstr ""
msgid "Copy to library..."
msgstr "In die Musiksammlung kopieren..."
@ -496,6 +499,9 @@ msgstr "Kein Zufall"
msgid "Don't stop!"
msgstr "Nicht anhalten!"
msgid "Double click to open"
msgstr ""
msgid "Double-clicking a song clears the playlist first"
msgstr "Stück doppelklicken um Wiedergabeliste zu ersetzen"
@ -953,6 +959,9 @@ msgstr ""
msgid "None"
msgstr "Nichts"
msgid "Not connected"
msgstr ""
msgid "Not enough content"
msgstr "Nicht genügend Inhalt"

View File

@ -359,6 +359,9 @@ msgstr "Παραμετροποίηση της βιβλιοθήκης"
msgid "Connect device"
msgstr ""
msgid "Connected"
msgstr ""
msgid "Copy to library..."
msgstr "Αντιγραφή στην βιβλιοθήκη..."
@ -504,6 +507,9 @@ msgstr "Χωρίς ανακάτεμα"
msgid "Don't stop!"
msgstr "Μην σταματάς!"
msgid "Double click to open"
msgstr ""
msgid "Double-clicking a song clears the playlist first"
msgstr "Διπλό κλικ σε ένα τραγούδι θα καθαρίσει πρώτα την λίστα αναπαραγωγής"
@ -960,6 +966,9 @@ msgstr ""
msgid "None"
msgstr "Κανένα"
msgid "Not connected"
msgstr ""
msgid "Not enough content"
msgstr "Δεν υπάρχει αρκετό περιεχόμενο"

View File

@ -351,6 +351,9 @@ msgstr "Configure library..."
msgid "Connect device"
msgstr ""
msgid "Connected"
msgstr ""
msgid "Copy to library..."
msgstr "Copy to library..."
@ -496,6 +499,9 @@ msgstr "Don't shuffle"
msgid "Don't stop!"
msgstr ""
msgid "Double click to open"
msgstr ""
msgid "Double-clicking a song clears the playlist first"
msgstr "Double-clicking a song clears the playlist first"
@ -950,6 +956,9 @@ msgstr ""
msgid "None"
msgstr "None"
msgid "Not connected"
msgstr ""
msgid "Not enough content"
msgstr "Not enough content"

View File

@ -351,6 +351,9 @@ msgstr "Configure library..."
msgid "Connect device"
msgstr ""
msgid "Connected"
msgstr ""
msgid "Copy to library..."
msgstr "Copy to library..."
@ -494,6 +497,9 @@ msgstr "Don't shuffle"
msgid "Don't stop!"
msgstr ""
msgid "Double click to open"
msgstr ""
msgid "Double-clicking a song clears the playlist first"
msgstr ""
@ -947,6 +953,9 @@ msgstr ""
msgid "None"
msgstr "None"
msgid "Not connected"
msgstr ""
msgid "Not enough content"
msgstr "Not enough content"

View File

@ -353,6 +353,9 @@ msgstr "Configurar colección..."
msgid "Connect device"
msgstr ""
msgid "Connected"
msgstr ""
msgid "Copy to library..."
msgstr "Copiar a la colección..."
@ -498,6 +501,9 @@ msgstr "No Mezclar"
msgid "Don't stop!"
msgstr ""
msgid "Double click to open"
msgstr ""
msgid "Double-clicking a song clears the playlist first"
msgstr ""
"Hacer doble clic sobre una canción limpia la lista de reproducción primero"
@ -958,6 +964,9 @@ msgstr ""
msgid "None"
msgstr "Ninguno"
msgid "Not connected"
msgstr ""
msgid "Not enough content"
msgstr "No hay suficiente contenido"

View File

@ -351,6 +351,9 @@ msgstr "Kirjaston asetukset..."
msgid "Connect device"
msgstr ""
msgid "Connected"
msgstr ""
msgid "Copy to library..."
msgstr "Kopioi kirjastoon"
@ -494,6 +497,9 @@ msgstr ""
msgid "Don't stop!"
msgstr "Älä lopeta!"
msgid "Double click to open"
msgstr ""
msgid "Double-clicking a song clears the playlist first"
msgstr ""
@ -947,6 +953,9 @@ msgstr ""
msgid "None"
msgstr ""
msgid "Not connected"
msgstr ""
msgid "Not enough content"
msgstr ""

View File

@ -352,6 +352,9 @@ msgstr "Configurer votre bibliothèque..."
msgid "Connect device"
msgstr ""
msgid "Connected"
msgstr ""
msgid "Copy to library..."
msgstr "Copier dans la bilbiothèque..."
@ -495,6 +498,9 @@ msgstr "Ne pas mélanger"
msgid "Don't stop!"
msgstr ""
msgid "Double click to open"
msgstr ""
msgid "Double-clicking a song clears the playlist first"
msgstr ""
@ -953,6 +959,9 @@ msgstr ""
msgid "None"
msgstr "Aucun"
msgid "Not connected"
msgstr ""
msgid "Not enough content"
msgstr "Pas assez de contenu"

View File

@ -351,6 +351,9 @@ msgstr "Configurar a biblioteca..."
msgid "Connect device"
msgstr ""
msgid "Connected"
msgstr ""
msgid "Copy to library..."
msgstr "Copiar para a biblioteca"
@ -494,6 +497,9 @@ msgstr ""
msgid "Don't stop!"
msgstr ""
msgid "Double click to open"
msgstr ""
msgid "Double-clicking a song clears the playlist first"
msgstr ""
@ -947,6 +953,9 @@ msgstr ""
msgid "None"
msgstr ""
msgid "Not connected"
msgstr ""
msgid "Not enough content"
msgstr "Conteúdo insuficiente"

View File

@ -352,6 +352,9 @@ msgstr "Configura raccolta..."
msgid "Connect device"
msgstr ""
msgid "Connected"
msgstr ""
msgid "Copy to library..."
msgstr "Copia nella raccolta..."
@ -497,6 +500,9 @@ msgstr "Non mescolare"
msgid "Don't stop!"
msgstr "Non fermare!"
msgid "Double click to open"
msgstr ""
msgid "Double-clicking a song clears the playlist first"
msgstr "Il doppio clic su un brano svuota la scaletta"
@ -956,6 +962,9 @@ msgstr ""
msgid "None"
msgstr "Nessuna"
msgid "Not connected"
msgstr ""
msgid "Not enough content"
msgstr "Contenuti non sufficienti"

View File

@ -351,6 +351,9 @@ msgstr ""
msgid "Connect device"
msgstr ""
msgid "Connected"
msgstr ""
msgid "Copy to library..."
msgstr ""
@ -494,6 +497,9 @@ msgstr ""
msgid "Don't stop!"
msgstr ""
msgid "Double click to open"
msgstr ""
msgid "Double-clicking a song clears the playlist first"
msgstr ""
@ -947,6 +953,9 @@ msgstr ""
msgid "None"
msgstr ""
msgid "Not connected"
msgstr ""
msgid "Not enough content"
msgstr ""

View File

@ -351,6 +351,9 @@ msgstr "Sett opp bibliotek..."
msgid "Connect device"
msgstr ""
msgid "Connected"
msgstr ""
msgid "Copy to library..."
msgstr "Kopier til bibliotek..."
@ -494,6 +497,9 @@ msgstr "Ikke stokk"
msgid "Don't stop!"
msgstr ""
msgid "Double click to open"
msgstr ""
msgid "Double-clicking a song clears the playlist first"
msgstr ""
@ -948,6 +954,9 @@ msgstr ""
msgid "None"
msgstr "Ingen"
msgid "Not connected"
msgstr ""
msgid "Not enough content"
msgstr "Ikke nok innhold"

View File

@ -351,6 +351,9 @@ msgstr ""
msgid "Connect device"
msgstr ""
msgid "Connected"
msgstr ""
msgid "Copy to library..."
msgstr ""
@ -494,6 +497,9 @@ msgstr ""
msgid "Don't stop!"
msgstr ""
msgid "Double click to open"
msgstr ""
msgid "Double-clicking a song clears the playlist first"
msgstr ""
@ -945,6 +951,9 @@ msgstr ""
msgid "None"
msgstr "Pas cap"
msgid "Not connected"
msgstr ""
msgid "Not enough content"
msgstr ""

View File

@ -352,6 +352,9 @@ msgstr "Konfiguruj bibliotekę..."
msgid "Connect device"
msgstr ""
msgid "Connected"
msgstr ""
msgid "Copy to library..."
msgstr "Skopiuj do biblioteki..."
@ -495,6 +498,9 @@ msgstr "Nie losuj"
msgid "Don't stop!"
msgstr ""
msgid "Double click to open"
msgstr ""
msgid "Double-clicking a song clears the playlist first"
msgstr ""
@ -947,6 +953,9 @@ msgstr ""
msgid "None"
msgstr "Brak"
msgid "Not connected"
msgstr ""
msgid "Not enough content"
msgstr ""

View File

@ -356,6 +356,9 @@ msgstr "Configurar biblioteca..."
msgid "Connect device"
msgstr ""
msgid "Connected"
msgstr ""
msgid "Copy to library..."
msgstr "Copiar para a biblioteca..."
@ -501,6 +504,9 @@ msgstr "Não baralhar"
msgid "Don't stop!"
msgstr "Não parar!"
msgid "Double click to open"
msgstr ""
msgid "Double-clicking a song clears the playlist first"
msgstr "Duplo clique na canção apaga a lista de reprodução"
@ -957,6 +963,9 @@ msgstr ""
msgid "None"
msgstr "Nenhum"
msgid "Not connected"
msgstr ""
msgid "Not enough content"
msgstr "Conteúdo insuficiente"

View File

@ -354,6 +354,9 @@ msgstr "Configurar biblioteca"
msgid "Connect device"
msgstr ""
msgid "Connected"
msgstr ""
msgid "Copy to library..."
msgstr "Copiar para biblioteca..."
@ -499,6 +502,9 @@ msgstr "Não misturar"
msgid "Don't stop!"
msgstr "Não parar!"
msgid "Double click to open"
msgstr ""
msgid "Double-clicking a song clears the playlist first"
msgstr "Duplo clique em música limpa a lista de reprodução primeiro"
@ -957,6 +963,9 @@ msgstr ""
msgid "None"
msgstr "Nenhum"
msgid "Not connected"
msgstr ""
msgid "Not enough content"
msgstr "Conteúdo insuficiente"

View File

@ -351,6 +351,9 @@ msgstr "Configurează biblioteca..."
msgid "Connect device"
msgstr ""
msgid "Connected"
msgstr ""
msgid "Copy to library..."
msgstr "Copiază în bibliotecă..."
@ -494,6 +497,9 @@ msgstr "Nu amesteca"
msgid "Don't stop!"
msgstr ""
msgid "Double click to open"
msgstr ""
msgid "Double-clicking a song clears the playlist first"
msgstr ""
@ -946,6 +952,9 @@ msgstr ""
msgid "None"
msgstr ""
msgid "Not connected"
msgstr ""
msgid "Not enough content"
msgstr "Nu este destul conținut"

View File

@ -350,6 +350,9 @@ msgstr "Настроить коллекцию..."
msgid "Connect device"
msgstr ""
msgid "Connected"
msgstr ""
msgid "Copy to library..."
msgstr "Копировать в коллекцию..."
@ -495,6 +498,9 @@ msgstr "Не перемешивать"
msgid "Don't stop!"
msgstr ""
msgid "Double click to open"
msgstr ""
msgid "Double-clicking a song clears the playlist first"
msgstr "Двойной щелчок мышью на композиции стирает список воспроизведения"
@ -951,6 +957,9 @@ msgstr ""
msgid "None"
msgstr "Нет"
msgid "Not connected"
msgstr ""
msgid "Not enough content"
msgstr "Не достаточно содержания"

View File

@ -356,6 +356,9 @@ msgstr "Nastaviť zbierku..."
msgid "Connect device"
msgstr ""
msgid "Connected"
msgstr ""
msgid "Copy to library..."
msgstr "Skopírovať do zbierky..."
@ -501,6 +504,9 @@ msgstr "Nezamiešavať"
msgid "Don't stop!"
msgstr "Neprestávať!"
msgid "Double click to open"
msgstr ""
msgid "Double-clicking a song clears the playlist first"
msgstr "Dvojklik na pieseň najprv vymaže playlist"
@ -956,6 +962,9 @@ msgstr ""
msgid "None"
msgstr "Nijako"
msgid "Not connected"
msgstr ""
msgid "Not enough content"
msgstr "Nedostatok obsahu"

View File

@ -351,6 +351,9 @@ msgstr "Ställ in bibliotek..."
msgid "Connect device"
msgstr ""
msgid "Connected"
msgstr ""
msgid "Copy to library..."
msgstr "Kopiera till bibliotek..."
@ -496,6 +499,9 @@ msgstr "Slumpa inte"
msgid "Don't stop!"
msgstr ""
msgid "Double click to open"
msgstr ""
msgid "Double-clicking a song clears the playlist first"
msgstr "Dubbelklick på en sång rensar spellistan först"
@ -950,6 +956,9 @@ msgstr "Inga träffar hittades. Tom sökrutan för att visa hela spellistan igen
msgid "None"
msgstr "Inga"
msgid "Not connected"
msgstr ""
msgid "Not enough content"
msgstr "Inte tillräckligt med innehåll"

View File

@ -351,6 +351,9 @@ msgstr "Kütüphaneyi düzenle..."
msgid "Connect device"
msgstr ""
msgid "Connected"
msgstr ""
msgid "Copy to library..."
msgstr ""
@ -494,6 +497,9 @@ msgstr ""
msgid "Don't stop!"
msgstr ""
msgid "Double click to open"
msgstr ""
msgid "Double-clicking a song clears the playlist first"
msgstr ""
@ -947,6 +953,9 @@ msgstr ""
msgid "None"
msgstr "Hiçbiri"
msgid "Not connected"
msgstr ""
msgid "Not enough content"
msgstr ""

View File

@ -342,6 +342,9 @@ msgstr ""
msgid "Connect device"
msgstr ""
msgid "Connected"
msgstr ""
msgid "Copy to library..."
msgstr ""
@ -485,6 +488,9 @@ msgstr ""
msgid "Don't stop!"
msgstr ""
msgid "Double click to open"
msgstr ""
msgid "Double-clicking a song clears the playlist first"
msgstr ""
@ -936,6 +942,9 @@ msgstr ""
msgid "None"
msgstr ""
msgid "Not connected"
msgstr ""
msgid "Not enough content"
msgstr ""

View File

@ -355,6 +355,9 @@ msgstr "Налаштувати фонотеку"
msgid "Connect device"
msgstr ""
msgid "Connected"
msgstr ""
msgid "Copy to library..."
msgstr "Скопіювати до фонотеки..."
@ -500,6 +503,9 @@ msgstr "Не перемішувати"
msgid "Don't stop!"
msgstr "Не зупиняти!"
msgid "Double click to open"
msgstr ""
msgid "Double-clicking a song clears the playlist first"
msgstr "Подвійнне клацання на композиції спочатку очищає список відтворення"
@ -956,6 +962,9 @@ msgstr ""
msgid "None"
msgstr "Немає"
msgid "Not connected"
msgstr ""
msgid "Not enough content"
msgstr "Не достатньо вмісту"

View File

@ -351,6 +351,9 @@ msgstr "配置乐库..."
msgid "Connect device"
msgstr ""
msgid "Connected"
msgstr ""
msgid "Copy to library..."
msgstr ""
@ -494,6 +497,9 @@ msgstr ""
msgid "Don't stop!"
msgstr ""
msgid "Double click to open"
msgstr ""
msgid "Double-clicking a song clears the playlist first"
msgstr ""
@ -945,6 +951,9 @@ msgstr ""
msgid "None"
msgstr "无"
msgid "Not connected"
msgstr ""
msgid "Not enough content"
msgstr ""

View File

@ -351,6 +351,9 @@ msgstr ""
msgid "Connect device"
msgstr ""
msgid "Connected"
msgstr ""
msgid "Copy to library..."
msgstr ""
@ -494,6 +497,9 @@ msgstr ""
msgid "Don't stop!"
msgstr ""
msgid "Double click to open"
msgstr ""
msgid "Double-clicking a song clears the playlist first"
msgstr ""
@ -945,6 +951,9 @@ msgstr ""
msgid "None"
msgstr ""
msgid "Not connected"
msgstr ""
msgid "Not enough content"
msgstr ""