1
0
mirror of https://github.com/clementine-player/Clementine synced 2024-12-17 20:09:50 +01:00

Recognise iPods correctly when using GIO.

This commit is contained in:
David Sansome 2011-04-12 17:27:01 +00:00
parent 2c6791f6d7
commit eddc47cc64
3 changed files with 20 additions and 9 deletions

View File

@ -54,12 +54,6 @@ void DeviceLister::ThreadStarted() {
namespace {
bool IsIpod(const QString& path) {
return QFile::exists(path + "/iTunes_Control") ||
QFile::exists(path + "/iPod_Control") ||
QFile::exists(path + "/iTunes/iTunes_Control");
}
#ifdef HAVE_LIBGPOD
QString GetIpodColour(Itdb_IpodModel model) {
@ -164,7 +158,7 @@ QString GetIpodModel(Itdb_IpodModel model) {
}
QUrl DeviceLister::MakeUrlFromLocalPath(const QString& path) {
QUrl DeviceLister::MakeUrlFromLocalPath(const QString& path) const {
if (IsIpod(path)) {
QUrl ret;
ret.setScheme("ipod");
@ -175,6 +169,12 @@ QUrl DeviceLister::MakeUrlFromLocalPath(const QString& path) {
return QUrl::fromLocalFile(path);
}
bool DeviceLister::IsIpod(const QString& path) const {
return QFile::exists(path + "/iTunes_Control") ||
QFile::exists(path + "/iPod_Control") ||
QFile::exists(path + "/iTunes/iTunes_Control");
}
QStringList DeviceLister::GuessIconForPath(const QString& path) {
QStringList ret;

View File

@ -73,7 +73,8 @@ signals:
protected:
virtual void Init() = 0;
QUrl MakeUrlFromLocalPath(const QString& path);
QUrl MakeUrlFromLocalPath(const QString& path) const;
bool IsIpod(const QString& path) const;
QStringList GuessIconForPath(const QString& path);
QStringList GuessIconForModel(const QString& vendor, const QString& model);

View File

@ -171,8 +171,18 @@ QList<QUrl> GioLister::MakeDeviceUrls(const QString& id) {
// gphoto2 gives invalid hostnames with []:, characters in
uri.replace(QRegExp("//\\[usb:(\\d+),(\\d+)\\]"), "//usb-\\1-\\2");
QUrl url(uri);
QList<QUrl> ret;
ret << uri;
// Special case for file:// GIO URIs - we have to check whether they point
// to an ipod.
if (url.isValid() && url.scheme() == "file") {
ret << MakeUrlFromLocalPath(url.path());
} else {
ret << url;
}
ret << MakeUrlFromLocalPath(mount_point);
return ret;
}