Browse Source

Implement ML IMedia isPresent field in MediaWrapper

pipelines/135724
Nicolas Pomepuy 6 years ago
parent
commit
4454ec4ea6
  1. 29
      application/resources/src/main/res/drawable/ic_network_media_off.xml
  2. 2
      application/vlc-android/src/org/videolan/vlc/util/DummyMediaWrapperProvider.kt
  3. 2
      medialibrary/jni/medialibrary.cpp
  4. 4
      medialibrary/jni/utils.cpp
  5. 6
      medialibrary/src/org/videolan/medialibrary/MLServiceLocator.java
  6. 17
      medialibrary/src/org/videolan/medialibrary/interfaces/media/MediaWrapper.java
  7. 4
      medialibrary/src/org/videolan/medialibrary/media/MediaWrapperImpl.java
  8. 12
      medialibrary/src/org/videolan/medialibrary/stubs/StubDataSource.java
  9. 4
      medialibrary/src/org/videolan/medialibrary/stubs/StubMediaWrapper.java

29
application/resources/src/main/res/drawable/ic_network_media_off.xml

@ -0,0 +1,29 @@
<!--
~ *************************************************************************
~ ic_baseline_cloud_off_24.xml
~ **************************************************************************
~ Copyright © 2021 VLC authors and VideoLAN
~ Author: Nicolas POMEPUY
~ 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.
~ ***************************************************************************
~
~
-->
<vector android:height="12dp" android:tint="#FFFFFF"
android:viewportHeight="24" android:viewportWidth="24"
android:width="12dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M19.35,10.04C18.67,6.59 15.64,4 12,4c-1.48,0 -2.85,0.43 -4.01,1.17l1.46,1.46C10.21,6.23 11.08,6 12,6c3.04,0 5.5,2.46 5.5,5.5v0.5H19c1.66,0 3,1.34 3,3 0,1.13 -0.64,2.11 -1.56,2.62l1.45,1.45C23.16,18.16 24,16.68 24,15c0,-2.64 -2.05,-4.78 -4.65,-4.96zM3,5.27l2.75,2.74C2.56,8.15 0,10.77 0,14c0,3.31 2.69,6 6,6h11.73l2,2L21,20.73 4.27,4 3,5.27zM7.73,10l8,8H6c-2.21,0 -4,-1.79 -4,-4s1.79,-4 4,-4h1.73z"/>
</vector>

2
application/vlc-android/src/org/videolan/vlc/util/DummyMediaWrapperProvider.kt

@ -33,6 +33,6 @@ object DummyMediaWrapperProvider {
return MLServiceLocator.getAbstractMediaWrapper(id, "dummy://Mrl", 0L, 18820L, MediaWrapper.TYPE_VIDEO,
"", "", "", "",
"", "", 416, 304, "", 0, -2,
0, 0, 1509466228L, 0L, true, 1970)
0, 0, 1509466228L, 0L, true, 1970, true)
}
}

2
medialibrary/jni/medialibrary.cpp

@ -2441,7 +2441,7 @@ jint JNI_OnLoad(JavaVM *vm, void *reserved)
GET_ID(GetMethodID,
ml_fields.MediaWrapper.initID,
ml_fields.MediaWrapper.clazz,
"<init>", "(JLjava/lang/String;JJILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;IIIIJJZI)V");
"<init>", "(JLjava/lang/String;JJILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;IIIIJJZIZ)V");
GET_CLASS(ml_fields.HistoryItem.clazz,
"org/videolan/medialibrary/media/HistoryItem", true);

4
medialibrary/jni/utils.cpp

@ -27,6 +27,8 @@ mediaToMediaWrapper(JNIEnv* env, fields *fields, medialibrary::MediaPtr const& m
medialibrary::AlbumTrackPtr p_albumTrack = mediaPtr->albumTrack();
jstring artist = NULL, genre = NULL, album = NULL, albumArtist = NULL, mrl = NULL, title = NULL, thumbnail = NULL, filename = NULL;
jint trackNumber = 0, discNumber = 0;
const bool isPresent = mediaPtr->isPresent();
if (p_albumTrack)
{
medialibrary::ArtistPtr artistPtr = p_albumTrack->artist();
@ -72,7 +74,7 @@ mediaToMediaWrapper(JNIEnv* env, fields *fields, medialibrary::MediaPtr const& m
title, filename, artist, genre, album,
albumArtist, width, height, thumbnail,
audioTrack, spuTrack, trackNumber, discNumber, (jlong) files.at(0)->lastModificationDate(),
seen, hasThumbnail, mediaPtr->releaseDate());
seen, hasThumbnail, mediaPtr->releaseDate(), isPresent);
if (artist != NULL)
env->DeleteLocalRef(artist);
if (genre != NULL)

6
medialibrary/src/org/videolan/medialibrary/MLServiceLocator.java

@ -65,15 +65,15 @@ public class MLServiceLocator {
String albumArtist, int width, int height,
String artworkURL, int audio, int spu,
int trackNumber, int discNumber, long lastModified,
long seen, boolean isThumbnailGenerated, int releaseDate) {
long seen, boolean isThumbnailGenerated, int releaseDate, boolean isPresent) {
if (sMode == LocatorMode.VLC_ANDROID) {
return new MediaWrapperImpl(id, mrl, time, length, type, title,
filename, artist, genre, album, albumArtist, width, height, artworkURL,
audio, spu, trackNumber, discNumber, lastModified, seen, isThumbnailGenerated, releaseDate);
audio, spu, trackNumber, discNumber, lastModified, seen, isThumbnailGenerated, releaseDate, isPresent);
} else {
return new StubMediaWrapper(id, mrl, time, length, type, title,
filename, artist, genre, album, albumArtist, width, height, artworkURL,
audio, spu, trackNumber, discNumber, lastModified, seen, isThumbnailGenerated, releaseDate);
audio, spu, trackNumber, discNumber, lastModified, seen, isThumbnailGenerated, releaseDate, isPresent);
}
}

17
medialibrary/src/org/videolan/medialibrary/interfaces/media/MediaWrapper.java

@ -106,6 +106,7 @@ public abstract class MediaWrapper extends MediaLibraryItem implements Parcelabl
protected String mTrackID;
protected String mArtworkURL;
protected boolean mThumbnailGenerated;
private boolean mIsPresent = true;
protected final Uri mUri;
protected String mFilename;
@ -148,7 +149,7 @@ public abstract class MediaWrapper extends MediaLibraryItem implements Parcelabl
public MediaWrapper(long id, String mrl, long time, long length, int type, String title,
String filename, String artist, String genre, String album, String albumArtist,
int width, int height, String artworkURL, int audio, int spu, int trackNumber,
int discNumber, long lastModified, long seen, boolean isThumbnailGenerated, int releaseDate) {
int discNumber, long lastModified, long seen, boolean isThumbnailGenerated, int releaseDate, boolean isPresent) {
super();
if (TextUtils.isEmpty(mrl)) throw new IllegalArgumentException("uri was empty");
@ -156,9 +157,10 @@ public abstract class MediaWrapper extends MediaLibraryItem implements Parcelabl
mId = id;
mFilename = filename;
mReleaseYear = releaseDate;
mIsPresent = isPresent;
init(time, length, type, null, title, artist, genre, album, albumArtist, width, height,
artworkURL != null ? VLCUtil.UriFromMrl(artworkURL).getPath() : null, audio, spu,
trackNumber, discNumber, lastModified, seen, null);
trackNumber, discNumber, lastModified, seen, isPresent, null);
final StringBuilder sb = new StringBuilder();
if (type == TYPE_AUDIO) {
boolean hasArtistMeta = !TextUtils.isEmpty(artist);
@ -305,7 +307,7 @@ public abstract class MediaWrapper extends MediaLibraryItem implements Parcelabl
private void init(long time, long length, int type,
Bitmap picture, String title, String artist, String genre, String album, String albumArtist,
int width, int height, String artworkURL, int audio, int spu, int trackNumber, int discNumber, long lastModified,
long seen, IMedia.Slave[] slaves) {
long seen, boolean isPresent, IMedia.Slave[] slaves) {
mFilename = null;
mTime = time;
mDisplayTime = time;
@ -328,6 +330,7 @@ public abstract class MediaWrapper extends MediaLibraryItem implements Parcelabl
mLastModified = lastModified;
mSeen = seen;
mSlaves = slaves;
mIsPresent = isPresent;
}
public MediaWrapper(Uri uri, long time, long length, int type,
@ -335,7 +338,7 @@ public abstract class MediaWrapper extends MediaLibraryItem implements Parcelabl
int width, int height, String artworkURL, int audio, int spu, int trackNumber, int discNumber, long lastModified, long seen) {
mUri = uri;
init(time, length, type, picture, title, artist, genre, album, albumArtist,
width, height, artworkURL, audio, spu, trackNumber, discNumber, lastModified, seen, null);
width, height, artworkURL, audio, spu, trackNumber, discNumber, lastModified, seen, true, null);
}
@Override
@ -662,6 +665,10 @@ public abstract class MediaWrapper extends MediaLibraryItem implements Parcelabl
mFlags &= ~flags;
}
public boolean isPresent() {
return mIsPresent;
}
@Nullable
public IMedia.Slave[] getSlaves() {
return mSlaves;
@ -693,6 +700,7 @@ public abstract class MediaWrapper extends MediaLibraryItem implements Parcelabl
in.readInt(),
in.readLong(),
in.readLong(),
in.readBoolean(),
in.createTypedArray(PSlave.CREATOR));
}
@ -718,6 +726,7 @@ public abstract class MediaWrapper extends MediaLibraryItem implements Parcelabl
dest.writeInt(getDiscNumber());
dest.writeLong(getLastModified());
dest.writeLong(getSeen());
dest.writeBoolean(isPresent());
if (mSlaves != null) {
PSlave[] pslaves = new PSlave[mSlaves.length];

4
medialibrary/src/org/videolan/medialibrary/media/MediaWrapperImpl.java

@ -42,11 +42,11 @@ public class MediaWrapperImpl extends MediaWrapper {
public MediaWrapperImpl(long id, String mrl, long time, long length, int type, String title,
String filename, String artist, String genre, String album, String albumArtist,
int width, int height, String artworkURL, int audio, int spu, int trackNumber,
int discNumber, long lastModified, long seen, boolean isThumbnailGenerated, int releaseDate) {
int discNumber, long lastModified, long seen, boolean isThumbnailGenerated, int releaseDate, boolean isPresent) {
super(id, mrl, time, length, type, title, filename, artist,
genre, album, albumArtist, width, height, artworkURL,
audio, spu, trackNumber, discNumber, lastModified,
seen, isThumbnailGenerated, releaseDate);
seen, isThumbnailGenerated, releaseDate, isPresent);
}
public MediaWrapperImpl(Uri uri, long time, long length, int type,

12
medialibrary/src/org/videolan/medialibrary/stubs/StubDataSource.java

@ -97,7 +97,7 @@ public class StubDataSource {
media = MLServiceLocator.getAbstractMediaWrapper(getUUID(), mrl, 0L, 18820L, MediaWrapper.TYPE_VIDEO,
fileName, fileName, "", "",
"", "", 416, 304, "", 0, -2,
0, 0, 1509466228L, 0L, true, 1970);
0, 0, 1509466228L, 0L, true, 1970, true);
addVideo(media);
}
}
@ -115,7 +115,7 @@ public class StubDataSource {
"Shine On CD2", "Peter Frampton",
0, 0, baseMrl + folder + ".jpg",
0, -2, 1, 0,
1547452796L, 0L, true, 1965);
1547452796L, 0L, true, 1965, true);
addAudio(media, "", 1965, 400, mrl);
}
}
@ -372,7 +372,8 @@ public class StubDataSource {
jsonObject.getLong("last_modified"),
0L,
true,
jsonObject.getInt("release_date")
jsonObject.getInt("release_date"),
true
);
if (type == MediaWrapper.TYPE_VIDEO) {
addVideo(media);
@ -528,7 +529,8 @@ public class StubDataSource {
media.getLastModified(),
0L,
true,
releaseYear
releaseYear,
true
);
mAudioMediaWrappers.add(newMedia);
}
@ -541,7 +543,7 @@ public class StubDataSource {
public MediaWrapper addMediaWrapper(String mrl, String title, int type) {
MediaWrapper media = MLServiceLocator.getAbstractMediaWrapper(getUUID(), mrl, 0L, 280224L, type,
title, title, "Artisto", "Jazz", "XYZ CD1", "", 0, 0, baseMrl + title, -2,
1, 1, 0, 1547452796L, 0L, true, 0);
1, 1, 0, 1547452796L, 0L, true, 0, true);
if (type == MediaWrapper.TYPE_ALL) type = media.getType();
if (type == MediaWrapper.TYPE_VIDEO) addVideo(media);
else if (type == MediaWrapper.TYPE_AUDIO) addAudio(media, "", 2018, 12313, mrl);

4
medialibrary/src/org/videolan/medialibrary/stubs/StubMediaWrapper.java

@ -16,11 +16,11 @@ public class StubMediaWrapper extends MediaWrapper {
public StubMediaWrapper(long id, String mrl, long time, long length, int type, String title,
String filename, String artist, String genre, String album, String albumArtist,
int width, int height, String artworkURL, int audio, int spu, int trackNumber,
int discNumber, long lastModified, long seen, boolean isThumbnailGenerated, int releaseDate) {
int discNumber, long lastModified, long seen, boolean isThumbnailGenerated, int releaseDate, boolean isPresent) {
super(id, mrl, time, length, type, title, filename, artist,
genre, album, albumArtist, width, height, artworkURL,
audio, spu, trackNumber, discNumber, lastModified,
seen, isThumbnailGenerated, releaseDate);
seen, isThumbnailGenerated, releaseDate, isPresent);
final StringBuilder sb = new StringBuilder();
if (type == TYPE_AUDIO) {
boolean hasArtistMeta = !artist.equals(Artist.SpecialRes.VARIOUS_ARTISTS) &&

Loading…
Cancel
Save