Only want local files from Mopidy for library and folders

This commit is contained in:
craig.p.drummond
2014-02-04 19:10:18 +00:00
parent 50a3186997
commit d59fa8d83f
3 changed files with 12 additions and 11 deletions

View File

@@ -1234,7 +1234,7 @@ void MPDConnection::loadLibrary()
MusicLibraryItemRoot *root=0;
if (response.ok) {
root = new MusicLibraryItemRoot;
MPDParseUtils::parseLibraryItems(response.data, details.dir, ver, root);
MPDParseUtils::parseLibraryItems(response.data, details.dir, ver, mopidy, root);
} else { // MPD >=0.18 can fail listallinfo for large DBs, so get info dir by dir...
root = new MusicLibraryItemRoot;
if (!listDirInfo("/", root)) {
@@ -1255,7 +1255,7 @@ void MPDConnection::loadFolders()
emit updatingFileList();
Response response=sendCommand("listall");
if (response.ok) {
emit dirViewUpdated(MPDParseUtils::parseDirViewItems(response.data), dbUpdate);
emit dirViewUpdated(MPDParseUtils::parseDirViewItems(response.data, mopidy), dbUpdate);
}
emit updatedFileList();
}
@@ -1482,7 +1482,7 @@ bool MPDConnection::listDirInfo(const QString &dir, MusicLibraryItemRoot *root)
Response response=sendCommand(topLevel ? "lsinfo" : ("lsinfo "+encodeName(dir)));
if (response.ok) {
QSet<QString> childDirs;
MPDParseUtils::parseLibraryItems(response.data, details.dir, ver, root, !topLevel, &childDirs);
MPDParseUtils::parseLibraryItems(response.data, details.dir, ver, mopidy, root, !topLevel, &childDirs);
foreach (const QString &child, childDirs) {
if (!listDirInfo(child, root)) {
return false;

View File

@@ -432,7 +432,8 @@ void MPDParseUtils::setGroupMultiple(bool g)
}
void MPDParseUtils::parseLibraryItems(const QByteArray &data, const QString &mpdDir, long mpdVersion,
MusicLibraryItemRoot *rootItem, bool parsePlaylists, QSet<QString> *childDirs)
bool isMopidy, MusicLibraryItemRoot *rootItem, bool parsePlaylists,
QSet<QString> *childDirs)
{
bool canSplitCue=mpdVersion>=MPD_MAKE_VERSION(0,17,0);
QByteArray currentItem;
@@ -452,7 +453,7 @@ void MPDParseUtils::parseLibraryItems(const QByteArray &data, const QString &mpd
if (i == amountOfLines - 1 || lines.at(i + 1).startsWith("file:") || lines.at(i + 1).startsWith("playlist:")) {
Song currentSong = parseSong(currentItem, Library);
currentItem.clear();
if (currentSong.file.isEmpty()) {
if (currentSong.file.isEmpty() || (isMopidy && !currentSong.file.startsWith(Song::constMopidyLocal))) {
continue;
}
@@ -639,7 +640,7 @@ void MPDParseUtils::parseLibraryItems(const QByteArray &data, const QString &mpd
}
}
DirViewItemRoot * MPDParseUtils::parseDirViewItems(const QByteArray &data)
DirViewItemRoot * MPDParseUtils::parseDirViewItems(const QByteArray &data, bool isMopidy)
{
QList<QByteArray> lines = data.split('\n');
DirViewItemRoot *rootItem = new DirViewItemRoot;
@@ -656,10 +657,9 @@ DirViewItemRoot * MPDParseUtils::parseDirViewItems(const QByteArray &data)
} else if (line.startsWith("playlist: ")) {
path=line.remove(0, 10);
}
if (!path.isEmpty()) {
qWarning() << path << isMopidy << path.startsWith(Song::constMopidyLocal);
if (!path.isEmpty() && (!isMopidy || path.startsWith(Song::constMopidyLocal))) {
QString mopidyPath;
bool isMopidy=path.startsWith(Song::constMopidyLocal);
if (isMopidy) {
mopidyPath=path;
path=Song::decodePath(path);

View File

@@ -69,8 +69,9 @@ namespace MPDParseUtils
extern bool groupMultiple();
extern void setGroupMultiple(bool g);
extern void parseLibraryItems(const QByteArray &data, const QString &mpdDir, long mpdVersion,
MusicLibraryItemRoot *rootItem, bool parsePlaylists=true, QSet<QString> *childDirs=0);
extern DirViewItemRoot * parseDirViewItems(const QByteArray &data);
bool isMopidy, MusicLibraryItemRoot *rootItem, bool parsePlaylists=true,
QSet<QString> *childDirs=0);
extern DirViewItemRoot * parseDirViewItems(const QByteArray &data, bool isMopidy);
extern QList<Output> parseOuputs(const QByteArray &data);
extern QString addStreamName(const QString &url, const QString &name);
extern QString getStreamName(const QString &url);