added experimental vine video support
use jitpack instead of submodule
This commit is contained in:
parent
1852b5305b
commit
6a62ba6382
|
@ -1,12 +1,6 @@
|
||||||
[submodule "libraries/SlidingMenu"]
|
[submodule "libraries/SlidingMenu"]
|
||||||
path = libraries/SlidingMenu
|
path = libraries/SlidingMenu
|
||||||
url = https://github.com/mariotaku/SlidingMenu-Gradle
|
url = https://github.com/mariotaku/SlidingMenu-Gradle
|
||||||
[submodule "libraries/DragSortListView"]
|
|
||||||
path = libraries/DragSortListView
|
|
||||||
url = https://github.com/mariotaku/DragSortListView-Gradle
|
|
||||||
[submodule "libraries/MessageBubbleView"]
|
|
||||||
path = libraries/MessageBubbleView
|
|
||||||
url = https://github.com/mariotaku/MessageBubbleView.git
|
|
||||||
[submodule "libraries/ColorPicker"]
|
[submodule "libraries/ColorPicker"]
|
||||||
path = libraries/ColorPicker
|
path = libraries/ColorPicker
|
||||||
url = https://github.com/uucky/ColorPicker-Android.git
|
url = https://github.com/uucky/ColorPicker-Android.git
|
||||||
|
|
|
@ -10,7 +10,6 @@ buildscript {
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.github.ben-manes:gradle-versions-plugin:0.8'
|
classpath 'com.github.ben-manes:gradle-versions-plugin:0.8'
|
||||||
classpath 'com.android.tools.build:gradle:1.1.3'
|
classpath 'com.android.tools.build:gradle:1.1.3'
|
||||||
classpath 'com.github.xujiaao:aarLinkSources:1.0.0'
|
|
||||||
// NOTE: Do not place your application dependencies here; they belong
|
// NOTE: Do not place your application dependencies here; they belong
|
||||||
// in the individual module build.gradle files
|
// in the individual module build.gradle files
|
||||||
}
|
}
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit 524ca7a432be4c55be3841813fe7326f2fbf08c1
|
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit 10724315c13768d16891c0ff0926daecba39c75c
|
|
|
@ -12,9 +12,7 @@ include ':twidere.component.nyan'
|
||||||
include ':twidere.extension.streaming'
|
include ':twidere.extension.streaming'
|
||||||
include ':twidere.extension.twitlonger'
|
include ':twidere.extension.twitlonger'
|
||||||
include ':twidere.extension.push.xiaomi'
|
include ':twidere.extension.push.xiaomi'
|
||||||
include ':SlidingMenu', ':DragSortListView', ':MessageBubbleView', ':ColorPicker'
|
include ':SlidingMenu', ':ColorPicker'
|
||||||
|
|
||||||
project(':SlidingMenu').projectDir = file('libraries/SlidingMenu/library')
|
project(':SlidingMenu').projectDir = file('libraries/SlidingMenu/library')
|
||||||
project(':DragSortListView').projectDir = file('libraries/DragSortListView/library')
|
|
||||||
project(':MessageBubbleView').projectDir = file('libraries/MessageBubbleView/library')
|
|
||||||
project(':ColorPicker').projectDir = file('libraries/ColorPicker/library')
|
project(':ColorPicker').projectDir = file('libraries/ColorPicker/library')
|
|
@ -23,7 +23,7 @@ apply from: rootProject.file('global.gradle')
|
||||||
android {
|
android {
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion 14
|
minSdkVersion 14
|
||||||
targetSdkVersion 21
|
targetSdkVersion 22
|
||||||
versionCode 1
|
versionCode 1
|
||||||
versionName "1.0"
|
versionName "1.0"
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,11 +4,9 @@ import android.os.Parcel;
|
||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
import org.mariotaku.jsonserializer.JSONParcel;
|
import org.mariotaku.jsonserializer.JSONParcel;
|
||||||
import org.mariotaku.jsonserializer.JSONParcelable;
|
import org.mariotaku.jsonserializer.JSONParcelable;
|
||||||
import org.mariotaku.twidere.TwidereConstants;
|
|
||||||
import org.mariotaku.twidere.util.MediaPreviewUtils;
|
import org.mariotaku.twidere.util.MediaPreviewUtils;
|
||||||
import org.mariotaku.twidere.util.ParseUtils;
|
import org.mariotaku.twidere.util.ParseUtils;
|
||||||
import org.mariotaku.twidere.util.SimpleValueSerializer;
|
import org.mariotaku.twidere.util.SimpleValueSerializer;
|
||||||
|
@ -17,21 +15,24 @@ import org.mariotaku.twidere.util.SimpleValueSerializer.SerializationException;
|
||||||
import org.mariotaku.twidere.util.SimpleValueSerializer.SimpleValueSerializable;
|
import org.mariotaku.twidere.util.SimpleValueSerializer.SimpleValueSerializable;
|
||||||
import org.mariotaku.twidere.util.SimpleValueSerializer.Writer;
|
import org.mariotaku.twidere.util.SimpleValueSerializer.Writer;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import twitter4j.EntitySupport;
|
import twitter4j.EntitySupport;
|
||||||
import twitter4j.ExtendedEntitySupport;
|
import twitter4j.ExtendedEntitySupport;
|
||||||
import twitter4j.MediaEntity;
|
import twitter4j.MediaEntity;
|
||||||
import twitter4j.MediaEntity.Size;
|
import twitter4j.MediaEntity.Size;
|
||||||
|
import twitter4j.MediaEntity.Type;
|
||||||
import twitter4j.URLEntity;
|
import twitter4j.URLEntity;
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public class ParcelableMedia implements Parcelable, JSONParcelable, SimpleValueSerializable {
|
public class ParcelableMedia implements Parcelable, JSONParcelable, SimpleValueSerializable {
|
||||||
|
|
||||||
|
public static final int TYPE_UNKNOWN = 0;
|
||||||
public static final int TYPE_IMAGE = 1;
|
public static final int TYPE_IMAGE = 1;
|
||||||
|
public static final int TYPE_VIDEO = 2;
|
||||||
|
|
||||||
public static final Parcelable.Creator<ParcelableMedia> CREATOR = new Parcelable.Creator<ParcelableMedia>() {
|
public static final Parcelable.Creator<ParcelableMedia> CREATOR = new Parcelable.Creator<ParcelableMedia>() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -77,6 +78,8 @@ public class ParcelableMedia implements Parcelable, JSONParcelable, SimpleValueS
|
||||||
public int start, end, type;
|
public int start, end, type;
|
||||||
public int width, height;
|
public int width, height;
|
||||||
|
|
||||||
|
public VideoInfo video_info;
|
||||||
|
|
||||||
|
|
||||||
public ParcelableMedia() {
|
public ParcelableMedia() {
|
||||||
|
|
||||||
|
@ -97,10 +100,21 @@ public class ParcelableMedia implements Parcelable, JSONParcelable, SimpleValueS
|
||||||
media_url = ParseUtils.parseString(entity.getMediaURL());
|
media_url = ParseUtils.parseString(entity.getMediaURL());
|
||||||
start = entity.getStart();
|
start = entity.getStart();
|
||||||
end = entity.getEnd();
|
end = entity.getEnd();
|
||||||
type = TYPE_IMAGE;
|
type = getTypeInt(entity.getType());
|
||||||
final Size size = entity.getSizes().get(Size.LARGE);
|
final Size size = entity.getSizes().get(Size.LARGE);
|
||||||
width = size != null ? size.getWidth() : 0;
|
width = size != null ? size.getWidth() : 0;
|
||||||
height = size != null ? size.getHeight() : 0;
|
height = size != null ? size.getHeight() : 0;
|
||||||
|
video_info = VideoInfo.fromMediaEntityInfo(entity.getVideoInfo());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int getTypeInt(Type type) {
|
||||||
|
switch (type) {
|
||||||
|
case PHOTO:
|
||||||
|
return TYPE_IMAGE;
|
||||||
|
case VIDEO:
|
||||||
|
return TYPE_VIDEO;
|
||||||
|
}
|
||||||
|
return TYPE_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ParcelableMedia(final Parcel in) {
|
public ParcelableMedia(final Parcel in) {
|
||||||
|
@ -111,6 +125,7 @@ public class ParcelableMedia implements Parcelable, JSONParcelable, SimpleValueS
|
||||||
type = in.readInt();
|
type = in.readInt();
|
||||||
width = in.readInt();
|
width = in.readInt();
|
||||||
height = in.readInt();
|
height = in.readInt();
|
||||||
|
video_info = in.readParcelable(VideoInfo.class.getClassLoader());
|
||||||
}
|
}
|
||||||
|
|
||||||
private ParcelableMedia(@NonNull final String media_url, @Nullable final String page_url,
|
private ParcelableMedia(@NonNull final String media_url, @Nullable final String page_url,
|
||||||
|
@ -237,6 +252,7 @@ public class ParcelableMedia implements Parcelable, JSONParcelable, SimpleValueS
|
||||||
dest.writeInt(type);
|
dest.writeInt(type);
|
||||||
dest.writeInt(width);
|
dest.writeInt(width);
|
||||||
dest.writeInt(height);
|
dest.writeInt(height);
|
||||||
|
dest.writeParcelable(video_info, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ParcelableMedia[] fromEntities(final EntitySupport entities) {
|
public static ParcelableMedia[] fromEntities(final EntitySupport entities) {
|
||||||
|
@ -272,6 +288,133 @@ public class ParcelableMedia implements Parcelable, JSONParcelable, SimpleValueS
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static class VideoInfo implements Parcelable {
|
||||||
|
|
||||||
|
public Variant[] variants;
|
||||||
|
public long[] aspect_ratio;
|
||||||
|
public long duration;
|
||||||
|
|
||||||
|
public VideoInfo(Reader source) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public VideoInfo(MediaEntity.VideoInfo videoInfo) {
|
||||||
|
variants = Variant.fromMediaEntityVariants(videoInfo.getVariants());
|
||||||
|
aspect_ratio = videoInfo.getAspectRatio();
|
||||||
|
duration = videoInfo.getDuration();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static VideoInfo fromMediaEntityInfo(MediaEntity.VideoInfo videoInfo) {
|
||||||
|
if (videoInfo == null) return null;
|
||||||
|
return new VideoInfo(videoInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "VideoInfo{" +
|
||||||
|
"variants=" + Arrays.toString(variants) +
|
||||||
|
", aspect_ratio=" + Arrays.toString(aspect_ratio) +
|
||||||
|
", duration=" + duration +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Variant implements Parcelable {
|
||||||
|
public Variant(MediaEntity.VideoInfo.Variant entityVariant) {
|
||||||
|
content_type = entityVariant.getContentType();
|
||||||
|
url = entityVariant.getUrl();
|
||||||
|
bitrate = entityVariant.getBitrate();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Variant{" +
|
||||||
|
"content_type='" + content_type + '\'' +
|
||||||
|
", url='" + url + '\'' +
|
||||||
|
", bitrate=" + bitrate +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
|
||||||
|
public final String content_type;
|
||||||
|
public final String url;
|
||||||
|
public final long bitrate;
|
||||||
|
|
||||||
|
public Variant(JSONParcel source) {
|
||||||
|
content_type = source.readString("content_type");
|
||||||
|
url = source.readString("url");
|
||||||
|
bitrate = source.readLong("bitrate");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int describeContents() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Variant[] fromMediaEntityVariants(MediaEntity.VideoInfo.Variant[] entityVariants) {
|
||||||
|
if (entityVariants == null) return null;
|
||||||
|
final Variant[] variants = new Variant[entityVariants.length];
|
||||||
|
for (int i = 0, j = entityVariants.length; i < j; i++) {
|
||||||
|
variants[i] = new Variant(entityVariants[i]);
|
||||||
|
}
|
||||||
|
return variants;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeToParcel(Parcel dest, int flags) {
|
||||||
|
dest.writeString(this.content_type);
|
||||||
|
dest.writeString(this.url);
|
||||||
|
dest.writeLong(this.bitrate);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private Variant(Parcel in) {
|
||||||
|
this.content_type = in.readString();
|
||||||
|
this.url = in.readString();
|
||||||
|
this.bitrate = in.readLong();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final Parcelable.Creator<Variant> CREATOR = new Parcelable.Creator<Variant>() {
|
||||||
|
public Variant createFromParcel(Parcel source) {
|
||||||
|
return new Variant(source);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Variant[] newArray(int size) {
|
||||||
|
return new Variant[size];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int describeContents() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeToParcel(Parcel dest, int flags) {
|
||||||
|
dest.writeTypedArray(variants, flags);
|
||||||
|
dest.writeLongArray(aspect_ratio);
|
||||||
|
dest.writeLong(duration);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private VideoInfo(Parcel in) {
|
||||||
|
variants = in.createTypedArray(Variant.CREATOR);
|
||||||
|
aspect_ratio = in.createLongArray();
|
||||||
|
duration = in.readLong();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final Parcelable.Creator<VideoInfo> CREATOR = new Parcelable.Creator<VideoInfo>() {
|
||||||
|
public VideoInfo createFromParcel(Parcel source) {
|
||||||
|
return new VideoInfo(source);
|
||||||
|
}
|
||||||
|
|
||||||
|
public VideoInfo[] newArray(int size) {
|
||||||
|
return new VideoInfo[size];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
public static ParcelableMedia newImage(final String media_url, final String url) {
|
public static ParcelableMedia newImage(final String media_url, final String url) {
|
||||||
return new ParcelableMedia(media_url, url, 0, 0, TYPE_IMAGE);
|
return new ParcelableMedia(media_url, url, 0, 0, TYPE_IMAGE);
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ apply from: rootProject.file('global.gradle')
|
||||||
android {
|
android {
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion 14
|
minSdkVersion 14
|
||||||
targetSdkVersion 21
|
targetSdkVersion 22
|
||||||
versionCode 1
|
versionCode 1
|
||||||
versionName "1.0"
|
versionName "1.0"
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ apply from: rootProject.file('global.gradle')
|
||||||
android {
|
android {
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion 14
|
minSdkVersion 14
|
||||||
targetSdkVersion 21
|
targetSdkVersion 22
|
||||||
versionCode 1
|
versionCode 1
|
||||||
versionName "1.0"
|
versionName "1.0"
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ apply from: rootProject.file('global.gradle')
|
||||||
android {
|
android {
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion 14
|
minSdkVersion 14
|
||||||
targetSdkVersion 21
|
targetSdkVersion 22
|
||||||
versionCode 1
|
versionCode 1
|
||||||
versionName "1.0"
|
versionName "1.0"
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ apply from: rootProject.file('global.gradle')
|
||||||
android {
|
android {
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion 14
|
minSdkVersion 14
|
||||||
targetSdkVersion 21
|
targetSdkVersion 22
|
||||||
versionCode 1
|
versionCode 1
|
||||||
versionName "1.0"
|
versionName "1.0"
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ apply from: rootProject.file('global.gradle')
|
||||||
android {
|
android {
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion 14
|
minSdkVersion 14
|
||||||
targetSdkVersion 21
|
targetSdkVersion 22
|
||||||
versionCode 1
|
versionCode 1
|
||||||
versionName "1.0"
|
versionName "1.0"
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,7 +58,41 @@ public interface MediaEntity extends URLEntity, Serializable {
|
||||||
*
|
*
|
||||||
* @return the media type ("photo").
|
* @return the media type ("photo").
|
||||||
*/
|
*/
|
||||||
String getType();
|
Type getType();
|
||||||
|
|
||||||
|
enum Type {
|
||||||
|
PHOTO, VIDEO, UNKNOWN;
|
||||||
|
|
||||||
|
public static Type parse(String typeString) {
|
||||||
|
if ("photo".equalsIgnoreCase(typeString)) {
|
||||||
|
return PHOTO;
|
||||||
|
} else if ("video".equalsIgnoreCase(typeString)) {
|
||||||
|
return VIDEO;
|
||||||
|
}
|
||||||
|
return UNKNOWN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
VideoInfo getVideoInfo();
|
||||||
|
|
||||||
|
interface VideoInfo extends Serializable {
|
||||||
|
|
||||||
|
Variant[] getVariants();
|
||||||
|
|
||||||
|
long[] getAspectRatio();
|
||||||
|
|
||||||
|
long getDuration();
|
||||||
|
|
||||||
|
interface Variant extends Serializable {
|
||||||
|
|
||||||
|
String getContentType();
|
||||||
|
|
||||||
|
String getUrl();
|
||||||
|
|
||||||
|
long getBitrate();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
interface Size extends Serializable {
|
interface Size extends Serializable {
|
||||||
Integer THUMB = 0;
|
Integer THUMB = 0;
|
||||||
|
|
|
@ -25,6 +25,7 @@ import org.json.JSONObject;
|
||||||
|
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
@ -52,7 +53,12 @@ public class MediaEntityJSONImpl implements MediaEntity {
|
||||||
private URL expandedURL;
|
private URL expandedURL;
|
||||||
private String displayURL;
|
private String displayURL;
|
||||||
private Map<Integer, MediaEntity.Size> sizes;
|
private Map<Integer, MediaEntity.Size> sizes;
|
||||||
private String type;
|
private Type type;
|
||||||
|
private VideoInfoJSONImpl videoInfo;
|
||||||
|
|
||||||
|
public VideoInfo getVideoInfo() {
|
||||||
|
return videoInfo;
|
||||||
|
}
|
||||||
|
|
||||||
public MediaEntityJSONImpl(final JSONObject json) throws TwitterException {
|
public MediaEntityJSONImpl(final JSONObject json) throws TwitterException {
|
||||||
try {
|
try {
|
||||||
|
@ -87,6 +93,9 @@ public class MediaEntityJSONImpl implements MediaEntity {
|
||||||
if (!json.isNull("display_url")) {
|
if (!json.isNull("display_url")) {
|
||||||
displayURL = json.getString("display_url");
|
displayURL = json.getString("display_url");
|
||||||
}
|
}
|
||||||
|
if (!json.isNull("video_info")) {
|
||||||
|
videoInfo = new VideoInfoJSONImpl(json.getJSONObject("video_info"));
|
||||||
|
}
|
||||||
final JSONObject sizes = json.getJSONObject("sizes");
|
final JSONObject sizes = json.getJSONObject("sizes");
|
||||||
this.sizes = new HashMap<Integer, MediaEntity.Size>(4);
|
this.sizes = new HashMap<Integer, MediaEntity.Size>(4);
|
||||||
// thumbworkarounding API side issue
|
// thumbworkarounding API side issue
|
||||||
|
@ -95,7 +104,7 @@ public class MediaEntityJSONImpl implements MediaEntity {
|
||||||
addMediaEntitySizeIfNotNull(this.sizes, sizes, MediaEntity.Size.SMALL, "small");
|
addMediaEntitySizeIfNotNull(this.sizes, sizes, MediaEntity.Size.SMALL, "small");
|
||||||
addMediaEntitySizeIfNotNull(this.sizes, sizes, MediaEntity.Size.THUMB, "thumb");
|
addMediaEntitySizeIfNotNull(this.sizes, sizes, MediaEntity.Size.THUMB, "thumb");
|
||||||
if (!json.isNull("type")) {
|
if (!json.isNull("type")) {
|
||||||
type = json.getString("type");
|
type = Type.parse(json.getString("type"));
|
||||||
}
|
}
|
||||||
} catch (final JSONException jsone) {
|
} catch (final JSONException jsone) {
|
||||||
throw new TwitterException(jsone);
|
throw new TwitterException(jsone);
|
||||||
|
@ -184,7 +193,7 @@ public class MediaEntityJSONImpl implements MediaEntity {
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String getType() {
|
public Type getType() {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -274,4 +283,86 @@ public class MediaEntityJSONImpl implements MediaEntity {
|
||||||
return "Size{" + "width=" + width + ", height=" + height + ", resize=" + resize + '}';
|
return "Size{" + "width=" + width + ", height=" + height + ", resize=" + resize + '}';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static class VideoInfoJSONImpl implements VideoInfo {
|
||||||
|
|
||||||
|
private final VariantJSONImpl[] variants;
|
||||||
|
private final long[] aspectRatio;
|
||||||
|
private final long duration;
|
||||||
|
|
||||||
|
VideoInfoJSONImpl(JSONObject json) throws JSONException {
|
||||||
|
variants = VariantJSONImpl.fromJSONArray(json.getJSONArray("variants"));
|
||||||
|
final JSONArray aspectRatioJson = json.getJSONArray("aspect_ratio");
|
||||||
|
aspectRatio = new long[]{aspectRatioJson.getLong(0), aspectRatioJson.getLong(1)};
|
||||||
|
duration = json.getLong("duration_millis");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Variant[] getVariants() {
|
||||||
|
return variants;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long[] getAspectRatio() {
|
||||||
|
return aspectRatio;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "VideoInfoJSONImpl{" +
|
||||||
|
"variants=" + Arrays.toString(variants) +
|
||||||
|
", aspectRatio=" + Arrays.toString(aspectRatio) +
|
||||||
|
", duration=" + duration +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getDuration() {
|
||||||
|
return duration;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class VariantJSONImpl implements Variant {
|
||||||
|
private final String contentType;
|
||||||
|
private final String url;
|
||||||
|
private final long bitrate;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "VariantJSONImpl{" +
|
||||||
|
"contentType='" + contentType + '\'' +
|
||||||
|
", url='" + url + '\'' +
|
||||||
|
", bitrate=" + bitrate +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
|
||||||
|
public VariantJSONImpl(JSONObject json) throws JSONException {
|
||||||
|
contentType = json.getString("content_type");
|
||||||
|
url = json.getString("url");
|
||||||
|
bitrate = json.optLong("bitrate", -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static VariantJSONImpl[] fromJSONArray(JSONArray json) throws JSONException {
|
||||||
|
final VariantJSONImpl[] variant = new VariantJSONImpl[json.length()];
|
||||||
|
for (int i = 0, j = variant.length; i < j; i++) {
|
||||||
|
variant[i] = new VariantJSONImpl(json.getJSONObject(i));
|
||||||
|
}
|
||||||
|
return variant;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getContentType() {
|
||||||
|
return contentType;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUrl() {
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getBitrate() {
|
||||||
|
return bitrate;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ android {
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "org.mariotaku.twidere.donate.nyanwp"
|
applicationId "org.mariotaku.twidere.donate.nyanwp"
|
||||||
minSdkVersion 20
|
minSdkVersion 20
|
||||||
targetSdkVersion 21
|
targetSdkVersion 22
|
||||||
versionCode 1
|
versionCode 1
|
||||||
versionName "1.0"
|
versionName "1.0"
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ android {
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "org.mariotaku.twidere.donate.nyanwp"
|
applicationId "org.mariotaku.twidere.donate.nyanwp"
|
||||||
minSdkVersion 14
|
minSdkVersion 14
|
||||||
targetSdkVersion 21
|
targetSdkVersion 22
|
||||||
versionCode 3
|
versionCode 3
|
||||||
versionName "1.2"
|
versionName "1.2"
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@ android {
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "org.mariotaku.twidere.extension.push.xiaomi"
|
applicationId "org.mariotaku.twidere.extension.push.xiaomi"
|
||||||
minSdkVersion 14
|
minSdkVersion 14
|
||||||
targetSdkVersion 21
|
targetSdkVersion 22
|
||||||
versionCode 2
|
versionCode 2
|
||||||
versionName "1.0"
|
versionName "1.0"
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ android {
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "org.mariotaku.twidere.extension.streaming"
|
applicationId "org.mariotaku.twidere.extension.streaming"
|
||||||
minSdkVersion 14
|
minSdkVersion 14
|
||||||
targetSdkVersion 21
|
targetSdkVersion 22
|
||||||
versionCode 13
|
versionCode 13
|
||||||
versionName "1.10 (0.3.0-dev)"
|
versionName "1.10 (0.3.0-dev)"
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ android {
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "org.mariotaku.extension.twitlonger"
|
applicationId "org.mariotaku.extension.twitlonger"
|
||||||
minSdkVersion 14
|
minSdkVersion 14
|
||||||
targetSdkVersion 21
|
targetSdkVersion 22
|
||||||
versionCode 6
|
versionCode 6
|
||||||
versionName "1.5"
|
versionName "1.5"
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ apply from: rootProject.file('global.gradle')
|
||||||
android {
|
android {
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion 14
|
minSdkVersion 14
|
||||||
targetSdkVersion 21
|
targetSdkVersion 22
|
||||||
versionCode 1
|
versionCode 1
|
||||||
versionName "1.0"
|
versionName "1.0"
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@ android {
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "org.mariotaku.twidere"
|
applicationId "org.mariotaku.twidere"
|
||||||
minSdkVersion 20
|
minSdkVersion 20
|
||||||
targetSdkVersion 21
|
targetSdkVersion 22
|
||||||
versionCode 1
|
versionCode 1
|
||||||
versionName "1.0"
|
versionName "1.0"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
|
|
||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
apply plugin: 'aar-link-sources'
|
|
||||||
apply from: rootProject.file('global.gradle')
|
apply from: rootProject.file('global.gradle')
|
||||||
apply from: rootProject.file('signing.gradle')
|
apply from: rootProject.file('signing.gradle')
|
||||||
|
|
||||||
|
@ -63,7 +62,6 @@ dependencies {
|
||||||
compile 'com.android.support:recyclerview-v7:22.0.0'
|
compile 'com.android.support:recyclerview-v7:22.0.0'
|
||||||
compile 'com.sothree.slidinguppanel:library:3.0.0'
|
compile 'com.sothree.slidinguppanel:library:3.0.0'
|
||||||
compile 'com.twitter:twitter-text:1.11.1'
|
compile 'com.twitter:twitter-text:1.11.1'
|
||||||
aarLinkSources 'com.twitter:twitter-text:1.11.1:sources@jar'
|
|
||||||
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'
|
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'
|
||||||
compile 'com.google.android.apps.dashclock:dashclock-api:2.0.0'
|
compile 'com.google.android.apps.dashclock:dashclock-api:2.0.0'
|
||||||
compile 'com.squareup:otto:1.3.6'
|
compile 'com.squareup:otto:1.3.6'
|
||||||
|
@ -74,16 +72,15 @@ dependencies {
|
||||||
compile 'com.pnikosis:materialish-progress:1.4'
|
compile 'com.pnikosis:materialish-progress:1.4'
|
||||||
compile 'com.squareup.okhttp:okhttp:2.3.0'
|
compile 'com.squareup.okhttp:okhttp:2.3.0'
|
||||||
compile 'pl.droidsonroids.gif:android-gif-drawable:1.1.2'
|
compile 'pl.droidsonroids.gif:android-gif-drawable:1.1.2'
|
||||||
aarLinkSources 'com.squareup.okhttp:okhttp:2.2.0:sources@jar'
|
compile 'com.github.mariotaku:MessageBubbleView:1.0'
|
||||||
|
compile 'com.github.mariotaku:DragSortListView:0.6.1'
|
||||||
|
compile 'com.github.mariotaku:SlidingMenu:1.3'
|
||||||
googleCompile 'com.google.android.gms:play-services-maps:7.0.0'
|
googleCompile 'com.google.android.gms:play-services-maps:7.0.0'
|
||||||
googleCompile 'com.google.maps.android:android-maps-utils:0.3.4'
|
googleCompile 'com.google.maps.android:android-maps-utils:0.3.4'
|
||||||
fdroidCompile 'org.osmdroid:osmdroid-android:4.3'
|
fdroidCompile 'org.osmdroid:osmdroid-android:4.3'
|
||||||
fdroidCompile 'org.slf4j:slf4j-simple:1.7.10'
|
fdroidCompile 'org.slf4j:slf4j-simple:1.7.10'
|
||||||
compile project(':twidere.component.common')
|
compile project(':twidere.component.common')
|
||||||
compile project(':twidere.component.nyan')
|
compile project(':twidere.component.nyan')
|
||||||
compile project(':SlidingMenu')
|
|
||||||
compile project(':DragSortListView')
|
|
||||||
compile project(':MessageBubbleView')
|
|
||||||
compile project(':ColorPicker')
|
compile project(':ColorPicker')
|
||||||
compile fileTree(dir: 'libs/main', include: ['*.jar'])
|
compile fileTree(dir: 'libs/main', include: ['*.jar'])
|
||||||
googleCompile fileTree(dir: 'libs/google', include: ['*.jar'])
|
googleCompile fileTree(dir: 'libs/google', include: ['*.jar'])
|
||||||
|
|
|
@ -105,7 +105,7 @@ import org.mariotaku.twidere.service.BackgroundOperationService;
|
||||||
import org.mariotaku.twidere.task.TwidereAsyncTask;
|
import org.mariotaku.twidere.task.TwidereAsyncTask;
|
||||||
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
||||||
import org.mariotaku.twidere.util.ContentValuesCreator;
|
import org.mariotaku.twidere.util.ContentValuesCreator;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.MathUtils;
|
import org.mariotaku.twidere.util.MathUtils;
|
||||||
import org.mariotaku.twidere.util.ParseUtils;
|
import org.mariotaku.twidere.util.ParseUtils;
|
||||||
import org.mariotaku.twidere.util.SharedPreferencesWrapper;
|
import org.mariotaku.twidere.util.SharedPreferencesWrapper;
|
||||||
|
@ -114,7 +114,6 @@ import org.mariotaku.twidere.util.TwidereArrayUtils;
|
||||||
import org.mariotaku.twidere.util.TwidereValidator;
|
import org.mariotaku.twidere.util.TwidereValidator;
|
||||||
import org.mariotaku.twidere.util.UserColorNameUtils;
|
import org.mariotaku.twidere.util.UserColorNameUtils;
|
||||||
import org.mariotaku.twidere.util.Utils;
|
import org.mariotaku.twidere.util.Utils;
|
||||||
import org.mariotaku.twidere.util.accessor.ViewAccessor;
|
|
||||||
import org.mariotaku.twidere.view.ActionIconView;
|
import org.mariotaku.twidere.view.ActionIconView;
|
||||||
import org.mariotaku.twidere.view.BadgeView;
|
import org.mariotaku.twidere.view.BadgeView;
|
||||||
import org.mariotaku.twidere.view.ShapedImageView;
|
import org.mariotaku.twidere.view.ShapedImageView;
|
||||||
|
@ -190,7 +189,7 @@ public class ComposeActivity extends ThemedFragmentActivity implements TextWatch
|
||||||
private ShapedImageView mProfileImageView;
|
private ShapedImageView mProfileImageView;
|
||||||
private BadgeView mCountView;
|
private BadgeView mCountView;
|
||||||
private View mAccountSelectorButton;
|
private View mAccountSelectorButton;
|
||||||
private ImageLoaderWrapper mImageLoader;
|
private MediaLoaderWrapper mImageLoader;
|
||||||
private View mLocationContainer;
|
private View mLocationContainer;
|
||||||
private ActionIconView mLocationIcon;
|
private ActionIconView mLocationIcon;
|
||||||
private TextView mLocationText;
|
private TextView mLocationText;
|
||||||
|
@ -1202,7 +1201,7 @@ public class ComposeActivity extends ThemedFragmentActivity implements TextWatch
|
||||||
|
|
||||||
public void showAccount(AccountIconsAdapter adapter, ParcelableAccount account, boolean isSelected) {
|
public void showAccount(AccountIconsAdapter adapter, ParcelableAccount account, boolean isSelected) {
|
||||||
itemView.setAlpha(isSelected ? 1 : 0.33f);
|
itemView.setAlpha(isSelected ? 1 : 0.33f);
|
||||||
final ImageLoaderWrapper loader = adapter.getImageLoader();
|
final MediaLoaderWrapper loader = adapter.getImageLoader();
|
||||||
loader.displayProfileImage(iconView, account.profile_image_url);
|
loader.displayProfileImage(iconView, account.profile_image_url);
|
||||||
iconView.setBorderColor(account.color);
|
iconView.setBorderColor(account.color);
|
||||||
}
|
}
|
||||||
|
@ -1219,7 +1218,7 @@ public class ComposeActivity extends ThemedFragmentActivity implements TextWatch
|
||||||
|
|
||||||
private final ComposeActivity mActivity;
|
private final ComposeActivity mActivity;
|
||||||
private final LayoutInflater mInflater;
|
private final LayoutInflater mInflater;
|
||||||
private final ImageLoaderWrapper mImageLoader;
|
private final MediaLoaderWrapper mImageLoader;
|
||||||
private final LongSparseArray<Boolean> mSelection;
|
private final LongSparseArray<Boolean> mSelection;
|
||||||
|
|
||||||
private ParcelableAccount[] mAccounts;
|
private ParcelableAccount[] mAccounts;
|
||||||
|
@ -1231,7 +1230,7 @@ public class ComposeActivity extends ThemedFragmentActivity implements TextWatch
|
||||||
mSelection = new LongSparseArray<>();
|
mSelection = new LongSparseArray<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ImageLoaderWrapper getImageLoader() {
|
public MediaLoaderWrapper getImageLoader() {
|
||||||
return mImageLoader;
|
return mImageLoader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1481,7 +1480,7 @@ public class ComposeActivity extends ThemedFragmentActivity implements TextWatch
|
||||||
|
|
||||||
private static class MediaPreviewAdapter extends DraggableArrayAdapter<ParcelableMediaUpdate> {
|
private static class MediaPreviewAdapter extends DraggableArrayAdapter<ParcelableMediaUpdate> {
|
||||||
|
|
||||||
private final ImageLoaderWrapper mImageLoader;
|
private final MediaLoaderWrapper mImageLoader;
|
||||||
|
|
||||||
public MediaPreviewAdapter(final Context context) {
|
public MediaPreviewAdapter(final Context context) {
|
||||||
super(context, R.layout.grid_item_media_editor);
|
super(context, R.layout.grid_item_media_editor);
|
||||||
|
|
|
@ -53,7 +53,7 @@ import org.mariotaku.twidere.model.CustomTabConfiguration.ExtraConfiguration;
|
||||||
import org.mariotaku.twidere.model.ParcelableAccount;
|
import org.mariotaku.twidere.model.ParcelableAccount;
|
||||||
import org.mariotaku.twidere.model.ParcelableUser;
|
import org.mariotaku.twidere.model.ParcelableUser;
|
||||||
import org.mariotaku.twidere.model.ParcelableUserList;
|
import org.mariotaku.twidere.model.ParcelableUserList;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.ParseUtils;
|
import org.mariotaku.twidere.util.ParseUtils;
|
||||||
import org.mariotaku.twidere.util.ThemeUtils;
|
import org.mariotaku.twidere.util.ThemeUtils;
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ import static org.mariotaku.twidere.util.UserColorNameUtils.getUserNickname;
|
||||||
|
|
||||||
public class CustomTabEditorActivity extends BaseSupportDialogActivity implements OnClickListener {
|
public class CustomTabEditorActivity extends BaseSupportDialogActivity implements OnClickListener {
|
||||||
|
|
||||||
private ImageLoaderWrapper mImageLoader;
|
private MediaLoaderWrapper mImageLoader;
|
||||||
private SharedPreferences mPreferences;
|
private SharedPreferences mPreferences;
|
||||||
|
|
||||||
private AccountsSpinnerAdapter mAccountsAdapter;
|
private AccountsSpinnerAdapter mAccountsAdapter;
|
||||||
|
|
|
@ -39,6 +39,7 @@ import android.view.View;
|
||||||
import android.view.View.OnClickListener;
|
import android.view.View.OnClickListener;
|
||||||
import android.view.View.OnLayoutChangeListener;
|
import android.view.View.OnLayoutChangeListener;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.webkit.WebView;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
|
|
||||||
import com.diegocarloslima.byakugallery.lib.TileBitmapDrawable;
|
import com.diegocarloslima.byakugallery.lib.TileBitmapDrawable;
|
||||||
|
@ -48,16 +49,20 @@ import org.apache.commons.lang3.ArrayUtils;
|
||||||
import org.mariotaku.twidere.Constants;
|
import org.mariotaku.twidere.Constants;
|
||||||
import org.mariotaku.twidere.R;
|
import org.mariotaku.twidere.R;
|
||||||
import org.mariotaku.twidere.adapter.support.SupportFixedFragmentStatePagerAdapter;
|
import org.mariotaku.twidere.adapter.support.SupportFixedFragmentStatePagerAdapter;
|
||||||
|
import org.mariotaku.twidere.app.TwidereApplication;
|
||||||
import org.mariotaku.twidere.fragment.support.BaseSupportFragment;
|
import org.mariotaku.twidere.fragment.support.BaseSupportFragment;
|
||||||
import org.mariotaku.twidere.fragment.support.ViewStatusDialogFragment;
|
import org.mariotaku.twidere.fragment.support.ViewStatusDialogFragment;
|
||||||
import org.mariotaku.twidere.loader.support.TileImageLoader;
|
import org.mariotaku.twidere.loader.support.TileImageLoader;
|
||||||
import org.mariotaku.twidere.loader.support.TileImageLoader.DownloadListener;
|
import org.mariotaku.twidere.loader.support.TileImageLoader.DownloadListener;
|
||||||
import org.mariotaku.twidere.loader.support.TileImageLoader.Result;
|
import org.mariotaku.twidere.loader.support.TileImageLoader.Result;
|
||||||
import org.mariotaku.twidere.model.ParcelableMedia;
|
import org.mariotaku.twidere.model.ParcelableMedia;
|
||||||
|
import org.mariotaku.twidere.model.ParcelableMedia.VideoInfo.Variant;
|
||||||
import org.mariotaku.twidere.model.ParcelableStatus;
|
import org.mariotaku.twidere.model.ParcelableStatus;
|
||||||
import org.mariotaku.twidere.util.SaveImageTask;
|
import org.mariotaku.twidere.util.SaveImageTask;
|
||||||
import org.mariotaku.twidere.util.ThemeUtils;
|
import org.mariotaku.twidere.util.ThemeUtils;
|
||||||
import org.mariotaku.twidere.util.Utils;
|
import org.mariotaku.twidere.util.Utils;
|
||||||
|
import org.mariotaku.twidere.util.VideoLoader;
|
||||||
|
import org.mariotaku.twidere.util.VideoLoader.VideoLoadingListener;
|
||||||
import org.mariotaku.twidere.view.TouchImageView;
|
import org.mariotaku.twidere.view.TouchImageView;
|
||||||
import org.mariotaku.twidere.view.TouchImageView.ZoomListener;
|
import org.mariotaku.twidere.view.TouchImageView.ZoomListener;
|
||||||
|
|
||||||
|
@ -178,6 +183,106 @@ public final class MediaViewerActivity extends ThemedActionBarActivity implement
|
||||||
return getIntent().hasExtra(EXTRA_STATUS);
|
return getIntent().hasExtra(EXTRA_STATUS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static final class VideoPageFragment extends BaseSupportFragment
|
||||||
|
implements VideoLoadingListener {
|
||||||
|
|
||||||
|
private static final String[] SUPPORTED_VIDEO_TYPES;
|
||||||
|
|
||||||
|
static {
|
||||||
|
SUPPORTED_VIDEO_TYPES = new String[]{"video/mp4"};
|
||||||
|
}
|
||||||
|
|
||||||
|
private WebView mWebView;
|
||||||
|
private VideoLoader mVideoLoader;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||||
|
return inflater.inflate(R.layout.fragment_media_page_video, container, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
|
||||||
|
super.onActivityCreated(savedInstanceState);
|
||||||
|
mVideoLoader = TwidereApplication.getInstance(getActivity()).getVideoLoader();
|
||||||
|
final String url = getBestVideoUrl(getMedia());
|
||||||
|
if (url != null) {
|
||||||
|
// mVideoLoader.loadVideo(url, this);
|
||||||
|
mWebView.loadUrl(url);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getBestVideoUrl(ParcelableMedia media) {
|
||||||
|
if (media == null || media.video_info == null) return null;
|
||||||
|
for (Variant variant : media.video_info.variants) {
|
||||||
|
if (ArrayUtils.contains(SUPPORTED_VIDEO_TYPES, variant.content_type)) {
|
||||||
|
return variant.url;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBaseViewCreated(View view, Bundle savedInstanceState) {
|
||||||
|
super.onBaseViewCreated(view, savedInstanceState);
|
||||||
|
mWebView = (WebView) view.findViewById(R.id.web_view);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onVideoLoadingCancelled(String uri, VideoLoadingListener listener) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
mWebView.onResume();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroyView() {
|
||||||
|
mWebView.destroy();
|
||||||
|
super.onDestroyView();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPause() {
|
||||||
|
mWebView.onPause();
|
||||||
|
super.onPause();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setUserVisibleHint(boolean isVisibleToUser) {
|
||||||
|
super.setUserVisibleHint(isVisibleToUser);
|
||||||
|
// if (mVideoView != null && mVideoView.isPlaying()) {
|
||||||
|
// mVideoView.pause();
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onVideoLoadingComplete(String uri, VideoLoadingListener listener, File file) {
|
||||||
|
mWebView.loadUrl(Uri.fromFile(file).toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onVideoLoadingFailed(String uri, VideoLoadingListener listener, Exception e) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onVideoLoadingProgressUpdate(String uri, VideoLoadingListener listener, int current, int total) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private ParcelableMedia getMedia() {
|
||||||
|
final Bundle args = getArguments();
|
||||||
|
return args.getParcelable(EXTRA_MEDIA);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onVideoLoadingStarted(String uri, VideoLoadingListener listener) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static final class ImagePageFragment extends BaseSupportFragment
|
public static final class ImagePageFragment extends BaseSupportFragment
|
||||||
implements DownloadListener, LoaderCallbacks<Result>, OnLayoutChangeListener, OnClickListener, ZoomListener {
|
implements DownloadListener, LoaderCallbacks<Result>, OnLayoutChangeListener, OnClickListener, ZoomListener {
|
||||||
|
|
||||||
|
@ -205,11 +310,16 @@ public final class MediaViewerActivity extends ThemedActionBarActivity implement
|
||||||
mProgressBar.setVisibility(View.VISIBLE);
|
mProgressBar.setVisibility(View.VISIBLE);
|
||||||
mProgressBar.setIndeterminate(true);
|
mProgressBar.setIndeterminate(true);
|
||||||
invalidateOptionsMenu();
|
invalidateOptionsMenu();
|
||||||
final ParcelableMedia media = args.getParcelable(EXTRA_MEDIA);
|
final ParcelableMedia media = getMedia();
|
||||||
final long accountId = args.getLong(EXTRA_ACCOUNT_ID, -1);
|
final long accountId = args.getLong(EXTRA_ACCOUNT_ID, -1);
|
||||||
return new TileImageLoader(getActivity(), this, accountId, Uri.parse(media.media_url));
|
return new TileImageLoader(getActivity(), this, accountId, Uri.parse(media.media_url));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ParcelableMedia getMedia() {
|
||||||
|
final Bundle args = getArguments();
|
||||||
|
return args.getParcelable(EXTRA_MEDIA);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLoadFinished(final Loader<TileImageLoader.Result> loader, final TileImageLoader.Result data) {
|
public void onLoadFinished(final Loader<TileImageLoader.Result> loader, final TileImageLoader.Result data) {
|
||||||
if (data.hasData()) {
|
if (data.hasData()) {
|
||||||
|
@ -269,7 +379,7 @@ public final class MediaViewerActivity extends ThemedActionBarActivity implement
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||||
return inflater.inflate(R.layout.fragment_media_page, container, false);
|
return inflater.inflate(R.layout.fragment_media_page_image, container, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -347,11 +457,6 @@ public final class MediaViewerActivity extends ThemedActionBarActivity implement
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ParcelableMedia getMedia() {
|
|
||||||
final Bundle args = getArguments();
|
|
||||||
return args.getParcelable(EXTRA_MEDIA);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
|
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
|
||||||
super.onActivityCreated(savedInstanceState);
|
super.onActivityCreated(savedInstanceState);
|
||||||
|
@ -464,11 +569,19 @@ public final class MediaViewerActivity extends ThemedActionBarActivity implement
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Fragment getItem(int position) {
|
public Fragment getItem(int position) {
|
||||||
|
final ParcelableMedia media = mMedia[position];
|
||||||
final Bundle args = new Bundle();
|
final Bundle args = new Bundle();
|
||||||
args.putLong(EXTRA_ACCOUNT_ID, mAccountId);
|
args.putLong(EXTRA_ACCOUNT_ID, mAccountId);
|
||||||
args.putParcelable(EXTRA_MEDIA, mMedia[position]);
|
args.putParcelable(EXTRA_MEDIA, media);
|
||||||
|
switch (media.type) {
|
||||||
|
case ParcelableMedia.TYPE_VIDEO: {
|
||||||
|
return Fragment.instantiate(mActivity, VideoPageFragment.class.getName(), args);
|
||||||
|
}
|
||||||
|
default: {
|
||||||
return Fragment.instantiate(mActivity, ImagePageFragment.class.getName(), args);
|
return Fragment.instantiate(mActivity, ImagePageFragment.class.getName(), args);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void setMedia(long accountId, ParcelableMedia[] media) {
|
public void setMedia(long accountId, ParcelableMedia[] media) {
|
||||||
mAccountId = accountId;
|
mAccountId = accountId;
|
||||||
|
|
|
@ -68,7 +68,7 @@ import org.mariotaku.twidere.model.ParcelableUser.CachedIndices;
|
||||||
import org.mariotaku.twidere.provider.TwidereDataStore.CachedUsers;
|
import org.mariotaku.twidere.provider.TwidereDataStore.CachedUsers;
|
||||||
import org.mariotaku.twidere.provider.TwidereDataStore.SavedSearches;
|
import org.mariotaku.twidere.provider.TwidereDataStore.SavedSearches;
|
||||||
import org.mariotaku.twidere.provider.TwidereDataStore.SearchHistory;
|
import org.mariotaku.twidere.provider.TwidereDataStore.SearchHistory;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.ParseUtils;
|
import org.mariotaku.twidere.util.ParseUtils;
|
||||||
import org.mariotaku.twidere.util.SwipeDismissListViewTouchListener;
|
import org.mariotaku.twidere.util.SwipeDismissListViewTouchListener;
|
||||||
import org.mariotaku.twidere.util.SwipeDismissListViewTouchListener.DismissCallbacks;
|
import org.mariotaku.twidere.util.SwipeDismissListViewTouchListener.DismissCallbacks;
|
||||||
|
@ -436,7 +436,7 @@ public class QuickSearchBarActivity extends ThemedFragmentActivity implements On
|
||||||
public void bindView(SuggestionsAdapter adapter, View view, int position) {
|
public void bindView(SuggestionsAdapter adapter, View view, int position) {
|
||||||
final ParcelableUser user = mUser;
|
final ParcelableUser user = mUser;
|
||||||
final Context context = adapter.getContext();
|
final Context context = adapter.getContext();
|
||||||
final ImageLoaderWrapper loader = adapter.getImageLoader();
|
final MediaLoaderWrapper loader = adapter.getImageLoader();
|
||||||
final ImageView icon = (ImageView) view.findViewById(android.R.id.icon);
|
final ImageView icon = (ImageView) view.findViewById(android.R.id.icon);
|
||||||
final TextView text1 = (TextView) view.findViewById(android.R.id.text1);
|
final TextView text1 = (TextView) view.findViewById(android.R.id.text1);
|
||||||
final TextView text2 = (TextView) view.findViewById(android.R.id.text2);
|
final TextView text2 = (TextView) view.findViewById(android.R.id.text2);
|
||||||
|
@ -480,7 +480,7 @@ public class QuickSearchBarActivity extends ThemedFragmentActivity implements On
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void bindView(SuggestionsAdapter adapter, View view, int position) {
|
public void bindView(SuggestionsAdapter adapter, View view, int position) {
|
||||||
final ImageLoaderWrapper loader = adapter.getImageLoader();
|
final MediaLoaderWrapper loader = adapter.getImageLoader();
|
||||||
final ImageView icon = (ImageView) view.findViewById(android.R.id.icon);
|
final ImageView icon = (ImageView) view.findViewById(android.R.id.icon);
|
||||||
final TextView text1 = (TextView) view.findViewById(android.R.id.text1);
|
final TextView text1 = (TextView) view.findViewById(android.R.id.text1);
|
||||||
final TextView text2 = (TextView) view.findViewById(android.R.id.text2);
|
final TextView text2 = (TextView) view.findViewById(android.R.id.text2);
|
||||||
|
@ -496,7 +496,7 @@ public class QuickSearchBarActivity extends ThemedFragmentActivity implements On
|
||||||
|
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
private final LayoutInflater mInflater;
|
private final LayoutInflater mInflater;
|
||||||
private final ImageLoaderWrapper mImageLoader;
|
private final MediaLoaderWrapper mImageLoader;
|
||||||
private final boolean mNicknameOnly;
|
private final boolean mNicknameOnly;
|
||||||
private List<SuggestionItem> mData;
|
private List<SuggestionItem> mData;
|
||||||
|
|
||||||
|
@ -542,7 +542,7 @@ public class QuickSearchBarActivity extends ThemedFragmentActivity implements On
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ImageLoaderWrapper getImageLoader() {
|
public MediaLoaderWrapper getImageLoader() {
|
||||||
return mImageLoader;
|
return mImageLoader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ import org.mariotaku.twidere.task.TwidereAsyncTask.Status;
|
||||||
import org.mariotaku.twidere.util.AsyncTaskManager;
|
import org.mariotaku.twidere.util.AsyncTaskManager;
|
||||||
import org.mariotaku.twidere.util.AsyncTwitterWrapper.UpdateProfileBannerImageTask;
|
import org.mariotaku.twidere.util.AsyncTwitterWrapper.UpdateProfileBannerImageTask;
|
||||||
import org.mariotaku.twidere.util.AsyncTwitterWrapper.UpdateProfileImageTask;
|
import org.mariotaku.twidere.util.AsyncTwitterWrapper.UpdateProfileImageTask;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.ParseUtils;
|
import org.mariotaku.twidere.util.ParseUtils;
|
||||||
import org.mariotaku.twidere.util.ThemeUtils;
|
import org.mariotaku.twidere.util.ThemeUtils;
|
||||||
import org.mariotaku.twidere.util.TwitterWrapper;
|
import org.mariotaku.twidere.util.TwitterWrapper;
|
||||||
|
@ -79,7 +79,7 @@ public class UserProfileEditorActivity extends BaseActionBarActivity implements
|
||||||
private static final int REQUEST_PICK_LINK_COLOR = 3;
|
private static final int REQUEST_PICK_LINK_COLOR = 3;
|
||||||
private static final int REQUEST_PICK_BACKGROUND_COLOR = 4;
|
private static final int REQUEST_PICK_BACKGROUND_COLOR = 4;
|
||||||
|
|
||||||
private ImageLoaderWrapper mLazyImageLoader;
|
private MediaLoaderWrapper mLazyImageLoader;
|
||||||
private AsyncTaskManager mAsyncTaskManager;
|
private AsyncTaskManager mAsyncTaskManager;
|
||||||
private TwidereAsyncTask<Void, Void, ?> mTask;
|
private TwidereAsyncTask<Void, Void, ?> mTask;
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@ import org.mariotaku.twidere.fragment.support.UserFragment;
|
||||||
import org.mariotaku.twidere.model.ParcelableActivity;
|
import org.mariotaku.twidere.model.ParcelableActivity;
|
||||||
import org.mariotaku.twidere.model.ParcelableStatus;
|
import org.mariotaku.twidere.model.ParcelableStatus;
|
||||||
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.ImageLoadingHandler;
|
import org.mariotaku.twidere.util.ImageLoadingHandler;
|
||||||
import org.mariotaku.twidere.util.SharedPreferencesWrapper;
|
import org.mariotaku.twidere.util.SharedPreferencesWrapper;
|
||||||
import org.mariotaku.twidere.util.ThemeUtils;
|
import org.mariotaku.twidere.util.ThemeUtils;
|
||||||
|
@ -64,7 +64,7 @@ public abstract class AbsActivitiesAdapter<Data> extends Adapter<ViewHolder> imp
|
||||||
|
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
private final LayoutInflater mInflater;
|
private final LayoutInflater mInflater;
|
||||||
private final ImageLoaderWrapper mImageLoader;
|
private final MediaLoaderWrapper mImageLoader;
|
||||||
private final ImageLoadingHandler mLoadingHandler;
|
private final ImageLoadingHandler mLoadingHandler;
|
||||||
private final AsyncTwitterWrapper mTwitterWrapper;
|
private final AsyncTwitterWrapper mTwitterWrapper;
|
||||||
private final int mCardBackgroundColor;
|
private final int mCardBackgroundColor;
|
||||||
|
@ -105,7 +105,7 @@ public abstract class AbsActivitiesAdapter<Data> extends Adapter<ViewHolder> imp
|
||||||
public abstract void setData(Data data);
|
public abstract void setData(Data data);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ImageLoaderWrapper getImageLoader() {
|
public MediaLoaderWrapper getImageLoader() {
|
||||||
return mImageLoader;
|
return mImageLoader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ import org.mariotaku.twidere.app.TwidereApplication;
|
||||||
import org.mariotaku.twidere.fragment.support.UserFragment;
|
import org.mariotaku.twidere.fragment.support.UserFragment;
|
||||||
import org.mariotaku.twidere.model.ParcelableStatus;
|
import org.mariotaku.twidere.model.ParcelableStatus;
|
||||||
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.ImageLoadingHandler;
|
import org.mariotaku.twidere.util.ImageLoadingHandler;
|
||||||
import org.mariotaku.twidere.util.SharedPreferencesWrapper;
|
import org.mariotaku.twidere.util.SharedPreferencesWrapper;
|
||||||
import org.mariotaku.twidere.util.ThemeUtils;
|
import org.mariotaku.twidere.util.ThemeUtils;
|
||||||
|
@ -39,7 +39,7 @@ public abstract class AbsStatusesAdapter<D> extends Adapter<ViewHolder> implemen
|
||||||
|
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
private final LayoutInflater mInflater;
|
private final LayoutInflater mInflater;
|
||||||
private final ImageLoaderWrapper mImageLoader;
|
private final MediaLoaderWrapper mImageLoader;
|
||||||
private final ImageLoadingHandler mLoadingHandler;
|
private final ImageLoadingHandler mLoadingHandler;
|
||||||
private final AsyncTwitterWrapper mTwitterWrapper;
|
private final AsyncTwitterWrapper mTwitterWrapper;
|
||||||
private final int mCardBackgroundColor;
|
private final int mCardBackgroundColor;
|
||||||
|
@ -84,7 +84,7 @@ public abstract class AbsStatusesAdapter<D> extends Adapter<ViewHolder> implemen
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final ImageLoaderWrapper getImageLoader() {
|
public final MediaLoaderWrapper getImageLoader() {
|
||||||
return mImageLoader;
|
return mImageLoader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,12 +35,12 @@ import org.mariotaku.twidere.app.TwidereApplication;
|
||||||
import org.mariotaku.twidere.model.ParcelableAccount;
|
import org.mariotaku.twidere.model.ParcelableAccount;
|
||||||
import org.mariotaku.twidere.model.ParcelableAccount.Indices;
|
import org.mariotaku.twidere.model.ParcelableAccount.Indices;
|
||||||
import org.mariotaku.twidere.provider.TwidereDataStore.Accounts;
|
import org.mariotaku.twidere.provider.TwidereDataStore.Accounts;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.view.holder.AccountViewHolder;
|
import org.mariotaku.twidere.view.holder.AccountViewHolder;
|
||||||
|
|
||||||
public class AccountsAdapter extends SimpleDragSortCursorAdapter implements Constants, IBaseAdapter {
|
public class AccountsAdapter extends SimpleDragSortCursorAdapter implements Constants, IBaseAdapter {
|
||||||
|
|
||||||
private final ImageLoaderWrapper mImageLoader;
|
private final MediaLoaderWrapper mImageLoader;
|
||||||
private final SharedPreferences mPreferences;
|
private final SharedPreferences mPreferences;
|
||||||
|
|
||||||
private boolean mDisplayProfileImage;
|
private boolean mDisplayProfileImage;
|
||||||
|
@ -90,7 +90,7 @@ public class AccountsAdapter extends SimpleDragSortCursorAdapter implements Cons
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ImageLoaderWrapper getImageLoader() {
|
public MediaLoaderWrapper getImageLoader() {
|
||||||
return mImageLoader;
|
return mImageLoader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,13 +29,13 @@ import org.mariotaku.twidere.R;
|
||||||
import org.mariotaku.twidere.app.TwidereApplication;
|
import org.mariotaku.twidere.app.TwidereApplication;
|
||||||
import org.mariotaku.twidere.fragment.support.DirectMessagesConversationFragment;
|
import org.mariotaku.twidere.fragment.support.DirectMessagesConversationFragment;
|
||||||
import org.mariotaku.twidere.model.ParcelableAccount;
|
import org.mariotaku.twidere.model.ParcelableAccount;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
public class AccountsSpinnerAdapter extends ArrayAdapter<ParcelableAccount> {
|
public class AccountsSpinnerAdapter extends ArrayAdapter<ParcelableAccount> {
|
||||||
|
|
||||||
private final ImageLoaderWrapper mImageLoader;
|
private final MediaLoaderWrapper mImageLoader;
|
||||||
private final boolean mDisplayProfileImage;
|
private final boolean mDisplayProfileImage;
|
||||||
|
|
||||||
public AccountsSpinnerAdapter(final Context context) {
|
public AccountsSpinnerAdapter(final Context context) {
|
||||||
|
|
|
@ -25,7 +25,7 @@ import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
|
||||||
|
|
||||||
import org.mariotaku.twidere.adapter.iface.IBaseAdapter;
|
import org.mariotaku.twidere.adapter.iface.IBaseAdapter;
|
||||||
import org.mariotaku.twidere.app.TwidereApplication;
|
import org.mariotaku.twidere.app.TwidereApplication;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.OnLinkClickHandler;
|
import org.mariotaku.twidere.util.OnLinkClickHandler;
|
||||||
import org.mariotaku.twidere.util.TwidereLinkify;
|
import org.mariotaku.twidere.util.TwidereLinkify;
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ public class BaseArrayAdapter<T> extends ArrayAdapter<T> implements IBaseAdapter
|
||||||
private boolean mDisplayProfileImage, mNicknameOnly, mDisplayNameFirst, mShowAccountColor;
|
private boolean mDisplayProfileImage, mNicknameOnly, mDisplayNameFirst, mShowAccountColor;
|
||||||
|
|
||||||
private final SharedPreferences mNicknamePrefs, mColorPrefs;
|
private final SharedPreferences mNicknamePrefs, mColorPrefs;
|
||||||
private final ImageLoaderWrapper mImageLoader;
|
private final MediaLoaderWrapper mImageLoader;
|
||||||
|
|
||||||
public BaseArrayAdapter(final Context context, final int layoutRes) {
|
public BaseArrayAdapter(final Context context, final int layoutRes) {
|
||||||
this(context, layoutRes, null);
|
this(context, layoutRes, null);
|
||||||
|
@ -61,7 +61,7 @@ public class BaseArrayAdapter<T> extends ArrayAdapter<T> implements IBaseAdapter
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ImageLoaderWrapper getImageLoader() {
|
public MediaLoaderWrapper getImageLoader() {
|
||||||
return mImageLoader;
|
return mImageLoader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ import android.support.v4.widget.SimpleCursorAdapter;
|
||||||
|
|
||||||
import org.mariotaku.twidere.adapter.iface.IBaseAdapter;
|
import org.mariotaku.twidere.adapter.iface.IBaseAdapter;
|
||||||
import org.mariotaku.twidere.app.TwidereApplication;
|
import org.mariotaku.twidere.app.TwidereApplication;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.OnLinkClickHandler;
|
import org.mariotaku.twidere.util.OnLinkClickHandler;
|
||||||
import org.mariotaku.twidere.util.TwidereLinkify;
|
import org.mariotaku.twidere.util.TwidereLinkify;
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ public class BaseCursorAdapter extends SimpleCursorAdapter implements IBaseAdapt
|
||||||
private boolean mDisplayProfileImage, mNicknameOnly, mDisplayNameFirst, mShowAccountColor;
|
private boolean mDisplayProfileImage, mNicknameOnly, mDisplayNameFirst, mShowAccountColor;
|
||||||
|
|
||||||
private final SharedPreferences mNicknamePrefs, mColorPrefs;
|
private final SharedPreferences mNicknamePrefs, mColorPrefs;
|
||||||
private final ImageLoaderWrapper mImageLoader;
|
private final MediaLoaderWrapper mImageLoader;
|
||||||
|
|
||||||
public BaseCursorAdapter(final Context context, final int layout, final Cursor c, final String[] from,
|
public BaseCursorAdapter(final Context context, final int layout, final Cursor c, final String[] from,
|
||||||
final int[] to) {
|
final int[] to) {
|
||||||
|
@ -64,7 +64,7 @@ public class BaseCursorAdapter extends SimpleCursorAdapter implements IBaseAdapt
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ImageLoaderWrapper getImageLoader() {
|
public MediaLoaderWrapper getImageLoader() {
|
||||||
return mImageLoader;
|
return mImageLoader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,8 +32,8 @@ import org.mariotaku.twidere.app.TwidereApplication;
|
||||||
import org.mariotaku.twidere.model.DraftItem;
|
import org.mariotaku.twidere.model.DraftItem;
|
||||||
import org.mariotaku.twidere.model.ParcelableMediaUpdate;
|
import org.mariotaku.twidere.model.ParcelableMediaUpdate;
|
||||||
import org.mariotaku.twidere.provider.TwidereDataStore.Drafts;
|
import org.mariotaku.twidere.provider.TwidereDataStore.Drafts;
|
||||||
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.TwidereArrayUtils;
|
import org.mariotaku.twidere.util.TwidereArrayUtils;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
|
||||||
import org.mariotaku.twidere.util.ImageLoadingHandler;
|
import org.mariotaku.twidere.util.ImageLoadingHandler;
|
||||||
import org.mariotaku.twidere.util.Utils;
|
import org.mariotaku.twidere.util.Utils;
|
||||||
import org.mariotaku.twidere.view.holder.DraftViewHolder;
|
import org.mariotaku.twidere.view.holder.DraftViewHolder;
|
||||||
|
@ -42,7 +42,7 @@ import static org.mariotaku.twidere.util.Utils.getAccountColors;
|
||||||
|
|
||||||
public class DraftsAdapter extends SimpleCursorAdapter {
|
public class DraftsAdapter extends SimpleCursorAdapter {
|
||||||
|
|
||||||
private final ImageLoaderWrapper mImageLoader;
|
private final MediaLoaderWrapper mImageLoader;
|
||||||
private final ImageLoadingHandler mImageLoadingHandler;
|
private final ImageLoadingHandler mImageLoadingHandler;
|
||||||
|
|
||||||
private float mTextSize;
|
private float mTextSize;
|
||||||
|
|
|
@ -28,14 +28,14 @@ import android.widget.ImageView;
|
||||||
import org.mariotaku.twidere.Constants;
|
import org.mariotaku.twidere.Constants;
|
||||||
import org.mariotaku.twidere.R;
|
import org.mariotaku.twidere.R;
|
||||||
import org.mariotaku.twidere.app.TwidereApplication;
|
import org.mariotaku.twidere.app.TwidereApplication;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.ImageLoadingHandler;
|
import org.mariotaku.twidere.util.ImageLoadingHandler;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
public class MediaPreviewAdapter extends ArrayAdapter<String> implements Constants {
|
public class MediaPreviewAdapter extends ArrayAdapter<String> implements Constants {
|
||||||
|
|
||||||
private final ImageLoaderWrapper mImageLoader;
|
private final MediaLoaderWrapper mImageLoader;
|
||||||
private final SharedPreferences mPreferences;
|
private final SharedPreferences mPreferences;
|
||||||
private final ImageLoadingHandler mImageLoadingHandler;
|
private final ImageLoadingHandler mImageLoadingHandler;
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ import org.mariotaku.twidere.app.TwidereApplication;
|
||||||
import org.mariotaku.twidere.model.ParcelableDirectMessage;
|
import org.mariotaku.twidere.model.ParcelableDirectMessage;
|
||||||
import org.mariotaku.twidere.model.ParcelableDirectMessage.CursorIndices;
|
import org.mariotaku.twidere.model.ParcelableDirectMessage.CursorIndices;
|
||||||
import org.mariotaku.twidere.util.DirectMessageOnLinkClickHandler;
|
import org.mariotaku.twidere.util.DirectMessageOnLinkClickHandler;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.ImageLoadingHandler;
|
import org.mariotaku.twidere.util.ImageLoadingHandler;
|
||||||
import org.mariotaku.twidere.util.MultiSelectManager;
|
import org.mariotaku.twidere.util.MultiSelectManager;
|
||||||
import org.mariotaku.twidere.util.ThemeUtils;
|
import org.mariotaku.twidere.util.ThemeUtils;
|
||||||
|
@ -59,7 +59,7 @@ public class MessageConversationAdapter extends Adapter<ViewHolder>
|
||||||
|
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
private final LayoutInflater mInflater;
|
private final LayoutInflater mInflater;
|
||||||
private final ImageLoaderWrapper mImageLoader;
|
private final MediaLoaderWrapper mImageLoader;
|
||||||
private final MultiSelectManager mMultiSelectManager;
|
private final MultiSelectManager mMultiSelectManager;
|
||||||
private final ImageLoadingHandler mImageLoadingHandler;
|
private final ImageLoadingHandler mImageLoadingHandler;
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@ public class MessageConversationAdapter extends Adapter<ViewHolder>
|
||||||
return mContext;
|
return mContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ImageLoaderWrapper getImageLoader() {
|
public MediaLoaderWrapper getImageLoader() {
|
||||||
return mImageLoader;
|
return mImageLoader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ import org.mariotaku.twidere.adapter.iface.IContentCardAdapter;
|
||||||
import org.mariotaku.twidere.app.TwidereApplication;
|
import org.mariotaku.twidere.app.TwidereApplication;
|
||||||
import org.mariotaku.twidere.provider.TwidereDataStore.DirectMessages.ConversationEntries;
|
import org.mariotaku.twidere.provider.TwidereDataStore.DirectMessages.ConversationEntries;
|
||||||
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.ImageLoadingHandler;
|
import org.mariotaku.twidere.util.ImageLoadingHandler;
|
||||||
import org.mariotaku.twidere.util.MultiSelectManager;
|
import org.mariotaku.twidere.util.MultiSelectManager;
|
||||||
import org.mariotaku.twidere.util.SharedPreferencesWrapper;
|
import org.mariotaku.twidere.util.SharedPreferencesWrapper;
|
||||||
|
@ -46,7 +46,7 @@ public class MessageEntriesAdapter extends Adapter<ViewHolder> implements Consta
|
||||||
|
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
private final LayoutInflater mInflater;
|
private final LayoutInflater mInflater;
|
||||||
private final ImageLoaderWrapper mImageLoader;
|
private final MediaLoaderWrapper mImageLoader;
|
||||||
private final MultiSelectManager mMultiSelectManager;
|
private final MultiSelectManager mMultiSelectManager;
|
||||||
private final boolean mNicknameOnly;
|
private final boolean mNicknameOnly;
|
||||||
private boolean mLoadMoreIndicatorEnabled;
|
private boolean mLoadMoreIndicatorEnabled;
|
||||||
|
@ -98,7 +98,7 @@ public class MessageEntriesAdapter extends Adapter<ViewHolder> implements Consta
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public ImageLoaderWrapper getImageLoader() {
|
public MediaLoaderWrapper getImageLoader() {
|
||||||
return mImageLoader;
|
return mImageLoader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ import org.mariotaku.twidere.R;
|
||||||
import org.mariotaku.twidere.adapter.iface.IBaseCardAdapter;
|
import org.mariotaku.twidere.adapter.iface.IBaseCardAdapter;
|
||||||
import org.mariotaku.twidere.app.TwidereApplication;
|
import org.mariotaku.twidere.app.TwidereApplication;
|
||||||
import org.mariotaku.twidere.model.ParcelableUserList;
|
import org.mariotaku.twidere.model.ParcelableUserList;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.MultiSelectManager;
|
import org.mariotaku.twidere.util.MultiSelectManager;
|
||||||
import org.mariotaku.twidere.util.UserColorNameUtils;
|
import org.mariotaku.twidere.util.UserColorNameUtils;
|
||||||
import org.mariotaku.twidere.util.Utils;
|
import org.mariotaku.twidere.util.Utils;
|
||||||
|
@ -47,7 +47,7 @@ public class ParcelableUserListsListAdapter extends BaseArrayAdapter<ParcelableU
|
||||||
OnClickListener {
|
OnClickListener {
|
||||||
|
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
private final ImageLoaderWrapper mImageLoader;
|
private final MediaLoaderWrapper mImageLoader;
|
||||||
private final MultiSelectManager mMultiSelectManager;
|
private final MultiSelectManager mMultiSelectManager;
|
||||||
private final Locale mLocale;
|
private final Locale mLocale;
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ import org.mariotaku.twidere.R;
|
||||||
import org.mariotaku.twidere.adapter.iface.IBaseCardAdapter;
|
import org.mariotaku.twidere.adapter.iface.IBaseCardAdapter;
|
||||||
import org.mariotaku.twidere.app.TwidereApplication;
|
import org.mariotaku.twidere.app.TwidereApplication;
|
||||||
import org.mariotaku.twidere.model.ParcelableUser;
|
import org.mariotaku.twidere.model.ParcelableUser;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.MultiSelectManager;
|
import org.mariotaku.twidere.util.MultiSelectManager;
|
||||||
import org.mariotaku.twidere.util.Utils;
|
import org.mariotaku.twidere.util.Utils;
|
||||||
import org.mariotaku.twidere.view.holder.UserViewListHolder;
|
import org.mariotaku.twidere.view.holder.UserViewListHolder;
|
||||||
|
@ -45,7 +45,7 @@ import static org.mariotaku.twidere.util.Utils.getUserTypeIconRes;
|
||||||
|
|
||||||
public class ParcelableUsersAdapter extends BaseArrayAdapter<ParcelableUser> implements IBaseCardAdapter {
|
public class ParcelableUsersAdapter extends BaseArrayAdapter<ParcelableUser> implements IBaseCardAdapter {
|
||||||
|
|
||||||
private final ImageLoaderWrapper mProfileImageLoader;
|
private final MediaLoaderWrapper mProfileImageLoader;
|
||||||
private final MultiSelectManager mMultiSelectManager;
|
private final MultiSelectManager mMultiSelectManager;
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ import org.mariotaku.twidere.R;
|
||||||
import org.mariotaku.twidere.adapter.iface.IBaseAdapter;
|
import org.mariotaku.twidere.adapter.iface.IBaseAdapter;
|
||||||
import org.mariotaku.twidere.app.TwidereApplication;
|
import org.mariotaku.twidere.app.TwidereApplication;
|
||||||
import org.mariotaku.twidere.model.ParcelableUserList;
|
import org.mariotaku.twidere.model.ParcelableUserList;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.UserColorNameUtils;
|
import org.mariotaku.twidere.util.UserColorNameUtils;
|
||||||
import org.mariotaku.twidere.view.holder.TwoLineWithIconViewHolder;
|
import org.mariotaku.twidere.view.holder.TwoLineWithIconViewHolder;
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ import static org.mariotaku.twidere.util.UserColorNameUtils.getDisplayName;
|
||||||
public class SimpleParcelableUserListsAdapter extends BaseArrayAdapter<ParcelableUserList> implements IBaseAdapter {
|
public class SimpleParcelableUserListsAdapter extends BaseArrayAdapter<ParcelableUserList> implements IBaseAdapter {
|
||||||
|
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
private final ImageLoaderWrapper mImageLoader;
|
private final MediaLoaderWrapper mImageLoader;
|
||||||
|
|
||||||
public SimpleParcelableUserListsAdapter(final Context context) {
|
public SimpleParcelableUserListsAdapter(final Context context) {
|
||||||
super(context, R.layout.list_item_two_line);
|
super(context, R.layout.list_item_two_line);
|
||||||
|
|
|
@ -28,7 +28,7 @@ import org.mariotaku.twidere.R;
|
||||||
import org.mariotaku.twidere.adapter.iface.IBaseAdapter;
|
import org.mariotaku.twidere.adapter.iface.IBaseAdapter;
|
||||||
import org.mariotaku.twidere.app.TwidereApplication;
|
import org.mariotaku.twidere.app.TwidereApplication;
|
||||||
import org.mariotaku.twidere.model.ParcelableUser;
|
import org.mariotaku.twidere.model.ParcelableUser;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.view.holder.TwoLineWithIconViewHolder;
|
import org.mariotaku.twidere.view.holder.TwoLineWithIconViewHolder;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -39,7 +39,7 @@ import static org.mariotaku.twidere.util.Utils.getUserTypeIconRes;
|
||||||
|
|
||||||
public class SimpleParcelableUsersAdapter extends BaseArrayAdapter<ParcelableUser> implements IBaseAdapter {
|
public class SimpleParcelableUsersAdapter extends BaseArrayAdapter<ParcelableUser> implements IBaseAdapter {
|
||||||
|
|
||||||
private final ImageLoaderWrapper mImageLoader;
|
private final MediaLoaderWrapper mImageLoader;
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
|
|
||||||
public SimpleParcelableUsersAdapter(final Context context) {
|
public SimpleParcelableUsersAdapter(final Context context) {
|
||||||
|
|
|
@ -42,7 +42,7 @@ import org.mariotaku.twidere.app.TwidereApplication;
|
||||||
import org.mariotaku.twidere.provider.TwidereDataStore.CachedHashtags;
|
import org.mariotaku.twidere.provider.TwidereDataStore.CachedHashtags;
|
||||||
import org.mariotaku.twidere.provider.TwidereDataStore.CachedUsers;
|
import org.mariotaku.twidere.provider.TwidereDataStore.CachedUsers;
|
||||||
import org.mariotaku.twidere.provider.TwidereDataStore.CachedValues;
|
import org.mariotaku.twidere.provider.TwidereDataStore.CachedValues;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.ParseUtils;
|
import org.mariotaku.twidere.util.ParseUtils;
|
||||||
import org.mariotaku.twidere.util.Utils;
|
import org.mariotaku.twidere.util.Utils;
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ public class UserHashtagAutoCompleteAdapter extends SimpleCursorAdapter implemen
|
||||||
|
|
||||||
private final ContentResolver mResolver;
|
private final ContentResolver mResolver;
|
||||||
private final SQLiteDatabase mDatabase;
|
private final SQLiteDatabase mDatabase;
|
||||||
private final ImageLoaderWrapper mProfileImageLoader;
|
private final MediaLoaderWrapper mProfileImageLoader;
|
||||||
private final SharedPreferences mPreferences, mUserNicknamePreferences;
|
private final SharedPreferences mPreferences, mUserNicknamePreferences;
|
||||||
|
|
||||||
private final EditText mEditText;
|
private final EditText mEditText;
|
||||||
|
|
|
@ -22,11 +22,11 @@ package org.mariotaku.twidere.adapter.iface;
|
||||||
import android.widget.ListAdapter;
|
import android.widget.ListAdapter;
|
||||||
|
|
||||||
import org.mariotaku.twidere.Constants;
|
import org.mariotaku.twidere.Constants;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
|
|
||||||
public interface IBaseAdapter extends Constants, ListAdapter {
|
public interface IBaseAdapter extends Constants, ListAdapter {
|
||||||
|
|
||||||
public ImageLoaderWrapper getImageLoader();
|
public MediaLoaderWrapper getImageLoader();
|
||||||
|
|
||||||
public int getLinkHighlightOption();
|
public int getLinkHighlightOption();
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ package org.mariotaku.twidere.adapter.iface;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
||||||
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.ImageLoadingHandler;
|
import org.mariotaku.twidere.util.ImageLoadingHandler;
|
||||||
import org.mariotaku.twidere.view.ShapedImageView.ShapeStyle;
|
import org.mariotaku.twidere.view.ShapedImageView.ShapeStyle;
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ import org.mariotaku.twidere.view.ShapedImageView.ShapeStyle;
|
||||||
* Created by mariotaku on 15/1/3.
|
* Created by mariotaku on 15/1/3.
|
||||||
*/
|
*/
|
||||||
public interface IContentCardAdapter extends IGapSupportedAdapter, ContentCardClickListener {
|
public interface IContentCardAdapter extends IGapSupportedAdapter, ContentCardClickListener {
|
||||||
ImageLoaderWrapper getImageLoader();
|
MediaLoaderWrapper getImageLoader();
|
||||||
|
|
||||||
Context getContext();
|
Context getContext();
|
||||||
|
|
||||||
|
|
|
@ -46,12 +46,13 @@ import org.mariotaku.twidere.activity.MainHondaJOJOActivity;
|
||||||
import org.mariotaku.twidere.service.RefreshService;
|
import org.mariotaku.twidere.service.RefreshService;
|
||||||
import org.mariotaku.twidere.util.AsyncTaskManager;
|
import org.mariotaku.twidere.util.AsyncTaskManager;
|
||||||
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.MessagesManager;
|
import org.mariotaku.twidere.util.MessagesManager;
|
||||||
import org.mariotaku.twidere.util.MultiSelectManager;
|
import org.mariotaku.twidere.util.MultiSelectManager;
|
||||||
import org.mariotaku.twidere.util.StrictModeUtils;
|
import org.mariotaku.twidere.util.StrictModeUtils;
|
||||||
import org.mariotaku.twidere.util.ThemeUtils;
|
import org.mariotaku.twidere.util.ThemeUtils;
|
||||||
import org.mariotaku.twidere.util.Utils;
|
import org.mariotaku.twidere.util.Utils;
|
||||||
|
import org.mariotaku.twidere.util.VideoLoader;
|
||||||
import org.mariotaku.twidere.util.content.TwidereSQLiteOpenHelper;
|
import org.mariotaku.twidere.util.content.TwidereSQLiteOpenHelper;
|
||||||
import org.mariotaku.twidere.util.imageloader.TwidereImageDownloader;
|
import org.mariotaku.twidere.util.imageloader.TwidereImageDownloader;
|
||||||
import org.mariotaku.twidere.util.imageloader.URLFileNameGenerator;
|
import org.mariotaku.twidere.util.imageloader.URLFileNameGenerator;
|
||||||
|
@ -74,7 +75,7 @@ public class TwidereApplication extends MultiDexApplication implements Constants
|
||||||
OnSharedPreferenceChangeListener {
|
OnSharedPreferenceChangeListener {
|
||||||
|
|
||||||
private Handler mHandler;
|
private Handler mHandler;
|
||||||
private ImageLoaderWrapper mImageLoaderWrapper;
|
private MediaLoaderWrapper mMediaLoaderWrapper;
|
||||||
private ImageLoader mImageLoader;
|
private ImageLoader mImageLoader;
|
||||||
private AsyncTaskManager mAsyncTaskManager;
|
private AsyncTaskManager mAsyncTaskManager;
|
||||||
private SharedPreferences mPreferences;
|
private SharedPreferences mPreferences;
|
||||||
|
@ -87,6 +88,7 @@ public class TwidereApplication extends MultiDexApplication implements Constants
|
||||||
private HostAddressResolver mResolver;
|
private HostAddressResolver mResolver;
|
||||||
private SQLiteDatabase mDatabase;
|
private SQLiteDatabase mDatabase;
|
||||||
private Bus mMessageBus;
|
private Bus mMessageBus;
|
||||||
|
private VideoLoader mVideoLoader;
|
||||||
|
|
||||||
public AsyncTaskManager getAsyncTaskManager() {
|
public AsyncTaskManager getAsyncTaskManager() {
|
||||||
if (mAsyncTaskManager != null) return mAsyncTaskManager;
|
if (mAsyncTaskManager != null) return mAsyncTaskManager;
|
||||||
|
@ -137,9 +139,15 @@ public class TwidereApplication extends MultiDexApplication implements Constants
|
||||||
return mImageLoader = loader;
|
return mImageLoader = loader;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ImageLoaderWrapper getImageLoaderWrapper() {
|
public VideoLoader getVideoLoader() {
|
||||||
if (mImageLoaderWrapper != null) return mImageLoaderWrapper;
|
if (mVideoLoader != null) return mVideoLoader;
|
||||||
return mImageLoaderWrapper = new ImageLoaderWrapper(getImageLoader());
|
final VideoLoader loader = new VideoLoader(this);
|
||||||
|
return mVideoLoader = loader;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MediaLoaderWrapper getImageLoaderWrapper() {
|
||||||
|
if (mMediaLoaderWrapper != null) return mMediaLoaderWrapper;
|
||||||
|
return mMediaLoaderWrapper = new MediaLoaderWrapper(getImageLoader(), getVideoLoader());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static TwidereApplication getInstance(final Context context) {
|
public static TwidereApplication getInstance(final Context context) {
|
||||||
|
@ -215,8 +223,8 @@ public class TwidereApplication extends MultiDexApplication implements Constants
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLowMemory() {
|
public void onLowMemory() {
|
||||||
if (mImageLoaderWrapper != null) {
|
if (mMediaLoaderWrapper != null) {
|
||||||
mImageLoaderWrapper.clearMemoryCache();
|
mMediaLoaderWrapper.clearMemoryCache();
|
||||||
}
|
}
|
||||||
super.onLowMemory();
|
super.onLowMemory();
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,7 +91,7 @@ import org.mariotaku.twidere.menu.SupportAccountActionProvider;
|
||||||
import org.mariotaku.twidere.model.ParcelableAccount;
|
import org.mariotaku.twidere.model.ParcelableAccount;
|
||||||
import org.mariotaku.twidere.provider.TwidereDataStore.Accounts;
|
import org.mariotaku.twidere.provider.TwidereDataStore.Accounts;
|
||||||
import org.mariotaku.twidere.util.CompareUtils;
|
import org.mariotaku.twidere.util.CompareUtils;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.ThemeUtils;
|
import org.mariotaku.twidere.util.ThemeUtils;
|
||||||
import org.mariotaku.twidere.util.TransitionUtils;
|
import org.mariotaku.twidere.util.TransitionUtils;
|
||||||
import org.mariotaku.twidere.util.Utils;
|
import org.mariotaku.twidere.util.Utils;
|
||||||
|
@ -133,7 +133,7 @@ public class AccountsDashboardFragment extends BaseSupportListFragment implement
|
||||||
private View mAccountProfileContainer;
|
private View mAccountProfileContainer;
|
||||||
|
|
||||||
private Context mThemedContext;
|
private Context mThemedContext;
|
||||||
private ImageLoaderWrapper mImageLoader;
|
private MediaLoaderWrapper mImageLoader;
|
||||||
private SupportAccountActionProvider mAccountActionProvider;
|
private SupportAccountActionProvider mAccountActionProvider;
|
||||||
private boolean mSwitchAccountAnimationPlaying;
|
private boolean mSwitchAccountAnimationPlaying;
|
||||||
|
|
||||||
|
@ -600,7 +600,7 @@ public class AccountsDashboardFragment extends BaseSupportListFragment implement
|
||||||
private static class AccountSelectorAdapter extends Adapter<AccountProfileImageViewHolder> {
|
private static class AccountSelectorAdapter extends Adapter<AccountProfileImageViewHolder> {
|
||||||
|
|
||||||
private final LayoutInflater mInflater;
|
private final LayoutInflater mInflater;
|
||||||
private final ImageLoaderWrapper mImageLoader;
|
private final MediaLoaderWrapper mImageLoader;
|
||||||
private final AccountsDashboardFragment mFragment;
|
private final AccountsDashboardFragment mFragment;
|
||||||
private ParcelableAccount[] mAccounts;
|
private ParcelableAccount[] mAccounts;
|
||||||
private ParcelableAccount[] mInternalAccounts;
|
private ParcelableAccount[] mInternalAccounts;
|
||||||
|
|
|
@ -86,7 +86,7 @@ import org.mariotaku.twidere.provider.TwidereDataStore.DirectMessages;
|
||||||
import org.mariotaku.twidere.provider.TwidereDataStore.DirectMessages.Conversation;
|
import org.mariotaku.twidere.provider.TwidereDataStore.DirectMessages.Conversation;
|
||||||
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
||||||
import org.mariotaku.twidere.util.ClipboardUtils;
|
import org.mariotaku.twidere.util.ClipboardUtils;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.ParseUtils;
|
import org.mariotaku.twidere.util.ParseUtils;
|
||||||
import org.mariotaku.twidere.util.TwidereValidator;
|
import org.mariotaku.twidere.util.TwidereValidator;
|
||||||
import org.mariotaku.twidere.util.UserColorNameUtils;
|
import org.mariotaku.twidere.util.UserColorNameUtils;
|
||||||
|
@ -145,7 +145,7 @@ public class DirectMessagesConversationFragment extends BaseSupportFragment impl
|
||||||
private ParcelableAccount mAccount;
|
private ParcelableAccount mAccount;
|
||||||
private ParcelableUser mRecipient;
|
private ParcelableUser mRecipient;
|
||||||
|
|
||||||
private ImageLoaderWrapper mImageLoader;
|
private MediaLoaderWrapper mImageLoader;
|
||||||
private IColorLabelView mProfileImageContainer;
|
private IColorLabelView mProfileImageContainer;
|
||||||
|
|
||||||
private LoaderCallbacks<List<ParcelableUser>> mSearchLoadersCallback = new LoaderCallbacks<List<ParcelableUser>>() {
|
private LoaderCallbacks<List<ParcelableUser>> mSearchLoadersCallback = new LoaderCallbacks<List<ParcelableUser>>() {
|
||||||
|
|
|
@ -35,7 +35,7 @@ import org.mariotaku.twidere.R;
|
||||||
import org.mariotaku.twidere.app.TwidereApplication;
|
import org.mariotaku.twidere.app.TwidereApplication;
|
||||||
import org.mariotaku.twidere.model.ParcelableStatus;
|
import org.mariotaku.twidere.model.ParcelableStatus;
|
||||||
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.ImageLoadingHandler;
|
import org.mariotaku.twidere.util.ImageLoadingHandler;
|
||||||
import org.mariotaku.twidere.util.SharedPreferencesWrapper;
|
import org.mariotaku.twidere.util.SharedPreferencesWrapper;
|
||||||
import org.mariotaku.twidere.util.ThemeUtils;
|
import org.mariotaku.twidere.util.ThemeUtils;
|
||||||
|
@ -83,7 +83,7 @@ public class RetweetQuoteDialogFragment extends BaseSupportDialogFragment implem
|
||||||
final Context context = builder.getContext();
|
final Context context = builder.getContext();
|
||||||
final SharedPreferencesWrapper preferences = SharedPreferencesWrapper.getInstance(context,
|
final SharedPreferencesWrapper preferences = SharedPreferencesWrapper.getInstance(context,
|
||||||
SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
|
SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
|
||||||
final ImageLoaderWrapper loader = TwidereApplication.getInstance(context).getImageLoaderWrapper();
|
final MediaLoaderWrapper loader = TwidereApplication.getInstance(context).getImageLoaderWrapper();
|
||||||
final ImageLoadingHandler handler = new ImageLoadingHandler(R.id.media_preview_progress);
|
final ImageLoadingHandler handler = new ImageLoadingHandler(R.id.media_preview_progress);
|
||||||
final AsyncTwitterWrapper twitter = getTwitterWrapper();
|
final AsyncTwitterWrapper twitter = getTwitterWrapper();
|
||||||
final LayoutInflater inflater = LayoutInflater.from(context);
|
final LayoutInflater inflater = LayoutInflater.from(context);
|
||||||
|
|
|
@ -87,7 +87,7 @@ import org.mariotaku.twidere.text.method.StatusContentMovementMethod;
|
||||||
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
||||||
import org.mariotaku.twidere.util.ClipboardUtils;
|
import org.mariotaku.twidere.util.ClipboardUtils;
|
||||||
import org.mariotaku.twidere.util.CompareUtils;
|
import org.mariotaku.twidere.util.CompareUtils;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.ImageLoadingHandler;
|
import org.mariotaku.twidere.util.ImageLoadingHandler;
|
||||||
import org.mariotaku.twidere.util.LinkCreator;
|
import org.mariotaku.twidere.util.LinkCreator;
|
||||||
import org.mariotaku.twidere.util.StatusLinkClickHandler;
|
import org.mariotaku.twidere.util.StatusLinkClickHandler;
|
||||||
|
@ -453,7 +453,7 @@ public class StatusFragment extends BaseSupportFragment
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
private final StatusFragment mFragment;
|
private final StatusFragment mFragment;
|
||||||
private final LayoutInflater mInflater;
|
private final LayoutInflater mInflater;
|
||||||
private final ImageLoaderWrapper mImageLoader;
|
private final MediaLoaderWrapper mImageLoader;
|
||||||
private final ImageLoadingHandler mImageLoadingHandler;
|
private final ImageLoadingHandler mImageLoadingHandler;
|
||||||
|
|
||||||
private final boolean mNameFirst, mNicknameOnly;
|
private final boolean mNameFirst, mNicknameOnly;
|
||||||
|
@ -506,7 +506,7 @@ public class StatusFragment extends BaseSupportFragment
|
||||||
return mFragment;
|
return mFragment;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ImageLoaderWrapper getImageLoader() {
|
public MediaLoaderWrapper getImageLoader() {
|
||||||
return mImageLoader;
|
return mImageLoader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1110,7 +1110,7 @@ public class StatusFragment extends BaseSupportFragment
|
||||||
final StatusFragment fragment = adapter.getFragment();
|
final StatusFragment fragment = adapter.getFragment();
|
||||||
final Context context = adapter.getContext();
|
final Context context = adapter.getContext();
|
||||||
final Resources resources = context.getResources();
|
final Resources resources = context.getResources();
|
||||||
final ImageLoaderWrapper loader = adapter.getImageLoader();
|
final MediaLoaderWrapper loader = adapter.getImageLoader();
|
||||||
final boolean nameFirst = adapter.isNameFirst();
|
final boolean nameFirst = adapter.isNameFirst();
|
||||||
final boolean nicknameOnly = adapter.isNicknameOnly();
|
final boolean nicknameOnly = adapter.isNicknameOnly();
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ import org.mariotaku.twidere.app.TwidereApplication;
|
||||||
import org.mariotaku.twidere.model.ParcelableStatus;
|
import org.mariotaku.twidere.model.ParcelableStatus;
|
||||||
import org.mariotaku.twidere.model.SingleResponse;
|
import org.mariotaku.twidere.model.SingleResponse;
|
||||||
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.ImageLoadingHandler;
|
import org.mariotaku.twidere.util.ImageLoadingHandler;
|
||||||
import org.mariotaku.twidere.util.SharedPreferencesWrapper;
|
import org.mariotaku.twidere.util.SharedPreferencesWrapper;
|
||||||
import org.mariotaku.twidere.util.Utils;
|
import org.mariotaku.twidere.util.Utils;
|
||||||
|
@ -128,7 +128,7 @@ public class StatusTranslateDialogFragment extends BaseSupportDialogFragment imp
|
||||||
if (status == null || translated == null) return;
|
if (status == null || translated == null) return;
|
||||||
final FragmentActivity activity = getActivity();
|
final FragmentActivity activity = getActivity();
|
||||||
final TwidereApplication application = getApplication();
|
final TwidereApplication application = getApplication();
|
||||||
final ImageLoaderWrapper loader = application.getImageLoaderWrapper();
|
final MediaLoaderWrapper loader = application.getImageLoaderWrapper();
|
||||||
final ImageLoadingHandler handler = new ImageLoadingHandler(R.id.media_preview_progress);
|
final ImageLoadingHandler handler = new ImageLoadingHandler(R.id.media_preview_progress);
|
||||||
final AsyncTwitterWrapper twitter = getTwitterWrapper();
|
final AsyncTwitterWrapper twitter = getTwitterWrapper();
|
||||||
final SharedPreferencesWrapper preferences = SharedPreferencesWrapper.getInstance(activity,
|
final SharedPreferencesWrapper preferences = SharedPreferencesWrapper.getInstance(activity,
|
||||||
|
|
|
@ -107,7 +107,7 @@ import org.mariotaku.twidere.provider.TwidereDataStore.Filters;
|
||||||
import org.mariotaku.twidere.text.TextAlphaSpan;
|
import org.mariotaku.twidere.text.TextAlphaSpan;
|
||||||
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
||||||
import org.mariotaku.twidere.util.ContentValuesCreator;
|
import org.mariotaku.twidere.util.ContentValuesCreator;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.LinkCreator;
|
import org.mariotaku.twidere.util.LinkCreator;
|
||||||
import org.mariotaku.twidere.util.MathUtils;
|
import org.mariotaku.twidere.util.MathUtils;
|
||||||
import org.mariotaku.twidere.util.ParseUtils;
|
import org.mariotaku.twidere.util.ParseUtils;
|
||||||
|
@ -174,7 +174,7 @@ public class UserFragment extends BaseSupportFragment implements OnClickListener
|
||||||
private static final int LOADER_ID_USER = 1;
|
private static final int LOADER_ID_USER = 1;
|
||||||
private static final int LOADER_ID_FRIENDSHIP = 2;
|
private static final int LOADER_ID_FRIENDSHIP = 2;
|
||||||
|
|
||||||
private ImageLoaderWrapper mProfileImageLoader;
|
private MediaLoaderWrapper mProfileImageLoader;
|
||||||
|
|
||||||
private ShapedImageView mProfileImageView;
|
private ShapedImageView mProfileImageView;
|
||||||
private ImageView mProfileTypeView;
|
private ImageView mProfileTypeView;
|
||||||
|
|
|
@ -70,7 +70,7 @@ import org.mariotaku.twidere.model.ParcelableUser;
|
||||||
import org.mariotaku.twidere.model.ParcelableUserList;
|
import org.mariotaku.twidere.model.ParcelableUserList;
|
||||||
import org.mariotaku.twidere.model.SingleResponse;
|
import org.mariotaku.twidere.model.SingleResponse;
|
||||||
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.LinkCreator;
|
import org.mariotaku.twidere.util.LinkCreator;
|
||||||
import org.mariotaku.twidere.util.OnLinkClickHandler;
|
import org.mariotaku.twidere.util.OnLinkClickHandler;
|
||||||
import org.mariotaku.twidere.util.ParseUtils;
|
import org.mariotaku.twidere.util.ParseUtils;
|
||||||
|
@ -99,7 +99,7 @@ public class UserListFragment extends BaseSupportFragment implements OnClickList
|
||||||
LoaderCallbacks<SingleResponse<ParcelableUserList>>, DrawerCallback,
|
LoaderCallbacks<SingleResponse<ParcelableUserList>>, DrawerCallback,
|
||||||
SystemWindowsInsetsCallback, SupportFragmentCallback {
|
SystemWindowsInsetsCallback, SupportFragmentCallback {
|
||||||
|
|
||||||
private ImageLoaderWrapper mProfileImageLoader;
|
private MediaLoaderWrapper mProfileImageLoader;
|
||||||
private AsyncTwitterWrapper mTwitterWrapper;
|
private AsyncTwitterWrapper mTwitterWrapper;
|
||||||
|
|
||||||
private ImageView mProfileImageView;
|
private ImageView mProfileImageView;
|
||||||
|
|
|
@ -22,7 +22,7 @@ import org.mariotaku.twidere.app.TwidereApplication;
|
||||||
import org.mariotaku.twidere.loader.support.MediaTimelineLoader;
|
import org.mariotaku.twidere.loader.support.MediaTimelineLoader;
|
||||||
import org.mariotaku.twidere.model.ParcelableMedia;
|
import org.mariotaku.twidere.model.ParcelableMedia;
|
||||||
import org.mariotaku.twidere.model.ParcelableStatus;
|
import org.mariotaku.twidere.model.ParcelableStatus;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.ImageLoadingHandler;
|
import org.mariotaku.twidere.util.ImageLoadingHandler;
|
||||||
import org.mariotaku.twidere.util.SimpleDrawerCallback;
|
import org.mariotaku.twidere.util.SimpleDrawerCallback;
|
||||||
import org.mariotaku.twidere.view.HeaderDrawerLayout.DrawerCallback;
|
import org.mariotaku.twidere.view.HeaderDrawerLayout.DrawerCallback;
|
||||||
|
@ -161,7 +161,7 @@ public class UserMediaTimelineFragment extends BaseSupportFragment
|
||||||
private static class MediaTimelineAdapter extends Adapter<MediaTimelineViewHolder> {
|
private static class MediaTimelineAdapter extends Adapter<MediaTimelineViewHolder> {
|
||||||
|
|
||||||
private final LayoutInflater mInflater;
|
private final LayoutInflater mInflater;
|
||||||
private final ImageLoaderWrapper mImageLoader;
|
private final MediaLoaderWrapper mImageLoader;
|
||||||
private final ImageLoadingHandler mLoadingHandler;
|
private final ImageLoadingHandler mLoadingHandler;
|
||||||
private List<ParcelableStatus> mData;
|
private List<ParcelableStatus> mData;
|
||||||
|
|
||||||
|
@ -208,7 +208,7 @@ public class UserMediaTimelineFragment extends BaseSupportFragment
|
||||||
mediaTextView = (TextView) itemView.findViewById(R.id.media_text);
|
mediaTextView = (TextView) itemView.findViewById(R.id.media_text);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMedia(ImageLoaderWrapper loader, ImageLoadingHandler loadingHandler, ParcelableStatus status) {
|
public void setMedia(MediaLoaderWrapper loader, ImageLoadingHandler loadingHandler, ParcelableStatus status) {
|
||||||
final ParcelableMedia[] media = status.media;
|
final ParcelableMedia[] media = status.media;
|
||||||
if (media == null || media.length < 1) return;
|
if (media == null || media.length < 1) return;
|
||||||
final ParcelableMedia firstMedia = media[0];
|
final ParcelableMedia firstMedia = media[0];
|
||||||
|
|
|
@ -31,7 +31,7 @@ import org.mariotaku.twidere.R;
|
||||||
import org.mariotaku.twidere.app.TwidereApplication;
|
import org.mariotaku.twidere.app.TwidereApplication;
|
||||||
import org.mariotaku.twidere.model.ParcelableStatus;
|
import org.mariotaku.twidere.model.ParcelableStatus;
|
||||||
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.ImageLoadingHandler;
|
import org.mariotaku.twidere.util.ImageLoadingHandler;
|
||||||
import org.mariotaku.twidere.util.SharedPreferencesWrapper;
|
import org.mariotaku.twidere.util.SharedPreferencesWrapper;
|
||||||
import org.mariotaku.twidere.util.Utils;
|
import org.mariotaku.twidere.util.Utils;
|
||||||
|
@ -71,7 +71,7 @@ public class ViewStatusDialogFragment extends BaseSupportDialogFragment {
|
||||||
}
|
}
|
||||||
final TwidereApplication application = getApplication();
|
final TwidereApplication application = getApplication();
|
||||||
final FragmentActivity activity = getActivity();
|
final FragmentActivity activity = getActivity();
|
||||||
final ImageLoaderWrapper loader = application.getImageLoaderWrapper();
|
final MediaLoaderWrapper loader = application.getImageLoaderWrapper();
|
||||||
final ImageLoadingHandler handler = new ImageLoadingHandler(R.id.media_preview_progress);
|
final ImageLoadingHandler handler = new ImageLoadingHandler(R.id.media_preview_progress);
|
||||||
final AsyncTwitterWrapper twitter = getTwitterWrapper();
|
final AsyncTwitterWrapper twitter = getTwitterWrapper();
|
||||||
final SharedPreferencesWrapper preferences = SharedPreferencesWrapper.getInstance(activity,
|
final SharedPreferencesWrapper preferences = SharedPreferencesWrapper.getInstance(activity,
|
||||||
|
|
|
@ -40,7 +40,7 @@ import org.mariotaku.twidere.R;
|
||||||
import org.mariotaku.twidere.adapter.ArrayAdapter;
|
import org.mariotaku.twidere.adapter.ArrayAdapter;
|
||||||
import org.mariotaku.twidere.app.TwidereApplication;
|
import org.mariotaku.twidere.app.TwidereApplication;
|
||||||
import org.mariotaku.twidere.model.ParcelableAccount;
|
import org.mariotaku.twidere.model.ParcelableAccount;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.ThemeUtils;
|
import org.mariotaku.twidere.util.ThemeUtils;
|
||||||
import org.mariotaku.twidere.util.ThemedViewFactory;
|
import org.mariotaku.twidere.util.ThemedViewFactory;
|
||||||
import org.mariotaku.twidere.util.Utils;
|
import org.mariotaku.twidere.util.Utils;
|
||||||
|
@ -146,7 +146,7 @@ public class AccountSelectorPopupWindow {
|
||||||
|
|
||||||
private static class AccountsGridAdapter extends ArrayAdapter<ParcelableAccount> {
|
private static class AccountsGridAdapter extends ArrayAdapter<ParcelableAccount> {
|
||||||
|
|
||||||
private final ImageLoaderWrapper mImageLoader;
|
private final MediaLoaderWrapper mImageLoader;
|
||||||
|
|
||||||
public AccountsGridAdapter(Context context) {
|
public AccountsGridAdapter(Context context) {
|
||||||
super(context, R.layout.grid_item_selector_account);
|
super(context, R.layout.grid_item_selector_account);
|
||||||
|
|
|
@ -47,7 +47,7 @@ import org.mariotaku.twidere.R;
|
||||||
import org.mariotaku.twidere.app.TwidereApplication;
|
import org.mariotaku.twidere.app.TwidereApplication;
|
||||||
import org.mariotaku.twidere.model.ParcelableAccount;
|
import org.mariotaku.twidere.model.ParcelableAccount;
|
||||||
import org.mariotaku.twidere.task.TwidereAsyncTask;
|
import org.mariotaku.twidere.task.TwidereAsyncTask;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.Utils;
|
import org.mariotaku.twidere.util.Utils;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -100,7 +100,7 @@ public abstract class AccountsListPreference extends PreferenceCategory implemen
|
||||||
|
|
||||||
private final ParcelableAccount mAccount;
|
private final ParcelableAccount mAccount;
|
||||||
private final SharedPreferences mSwitchPreference;
|
private final SharedPreferences mSwitchPreference;
|
||||||
private final ImageLoaderWrapper mImageLoader;
|
private final MediaLoaderWrapper mImageLoader;
|
||||||
|
|
||||||
private final String mSwitchKey;
|
private final String mSwitchKey;
|
||||||
private final boolean mSwitchDefault;
|
private final boolean mSwitchDefault;
|
||||||
|
|
|
@ -36,16 +36,18 @@ import org.mariotaku.twidere.util.imageloader.OvalBitmapDisplayer;
|
||||||
|
|
||||||
import static org.mariotaku.twidere.util.Utils.getBestBannerUrl;
|
import static org.mariotaku.twidere.util.Utils.getBestBannerUrl;
|
||||||
|
|
||||||
public class ImageLoaderWrapper implements Constants {
|
public class MediaLoaderWrapper implements Constants {
|
||||||
|
|
||||||
private final ImageLoader mImageLoader;
|
private final ImageLoader mImageLoader;
|
||||||
private final DisplayImageOptions mProfileImageDisplayOptions;
|
private final DisplayImageOptions mProfileImageDisplayOptions;
|
||||||
private final DisplayImageOptions mDashboardProfileImageDisplayOptions;
|
private final DisplayImageOptions mDashboardProfileImageDisplayOptions;
|
||||||
private final DisplayImageOptions mOvalProfileImageDisplayOptions;
|
private final DisplayImageOptions mOvalProfileImageDisplayOptions;
|
||||||
private final DisplayImageOptions mImageDisplayOptions, mBannerDisplayOptions;
|
private final DisplayImageOptions mImageDisplayOptions, mBannerDisplayOptions;
|
||||||
|
private final VideoLoader mVideoLoader;
|
||||||
|
|
||||||
public ImageLoaderWrapper(final ImageLoader loader) {
|
public MediaLoaderWrapper(final ImageLoader imageLoader, VideoLoader videoLoader) {
|
||||||
mImageLoader = loader;
|
mImageLoader = imageLoader;
|
||||||
|
mVideoLoader = videoLoader;
|
||||||
final DisplayImageOptions.Builder profileOptsBuilder = new DisplayImageOptions.Builder();
|
final DisplayImageOptions.Builder profileOptsBuilder = new DisplayImageOptions.Builder();
|
||||||
profileOptsBuilder.cacheInMemory(true);
|
profileOptsBuilder.cacheInMemory(true);
|
||||||
profileOptsBuilder.cacheOnDisk(true);
|
profileOptsBuilder.cacheOnDisk(true);
|
|
@ -471,7 +471,7 @@ public final class Utils implements Constants, TwitterConstants {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void addToLinearLayout(final LinearLayout container, final ImageLoaderWrapper loader,
|
public static void addToLinearLayout(final LinearLayout container, final MediaLoaderWrapper loader,
|
||||||
final List<ParcelableMedia> mediaList, final long accountId,
|
final List<ParcelableMedia> mediaList, final long accountId,
|
||||||
final int maxColumnCount, final OnMediaClickListener mediaClickListener) {
|
final int maxColumnCount, final OnMediaClickListener mediaClickListener) {
|
||||||
if (container.getOrientation() != LinearLayout.VERTICAL)
|
if (container.getOrientation() != LinearLayout.VERTICAL)
|
||||||
|
@ -510,7 +510,7 @@ public final class Utils implements Constants, TwitterConstants {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void addToLinearLayout(final LinearLayout container, final ImageLoaderWrapper loader,
|
public static void addToLinearLayout(final LinearLayout container, final MediaLoaderWrapper loader,
|
||||||
final ParcelableMedia[] mediaArray, final long accountId,
|
final ParcelableMedia[] mediaArray, final long accountId,
|
||||||
final int maxColumnCount, final OnMediaClickListener listener) {
|
final int maxColumnCount, final OnMediaClickListener listener) {
|
||||||
addToLinearLayout(container, loader, Arrays.asList(mediaArray), accountId, maxColumnCount,
|
addToLinearLayout(container, loader, Arrays.asList(mediaArray), accountId, maxColumnCount,
|
||||||
|
|
|
@ -0,0 +1,171 @@
|
||||||
|
/*
|
||||||
|
* Twidere - Twitter client for Android
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012-2015 Mariotaku Lee <mariotaku.lee@gmail.com>
|
||||||
|
*
|
||||||
|
* 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 3 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, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.mariotaku.twidere.util;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import com.nostra13.universalimageloader.cache.disc.DiskCache;
|
||||||
|
import com.nostra13.universalimageloader.core.download.ImageDownloader;
|
||||||
|
import com.nostra13.universalimageloader.utils.IoUtils;
|
||||||
|
import com.squareup.otto.Bus;
|
||||||
|
|
||||||
|
import org.mariotaku.twidere.app.TwidereApplication;
|
||||||
|
import org.mariotaku.twidere.model.SingleResponse;
|
||||||
|
import org.mariotaku.twidere.task.ManagedAsyncTask;
|
||||||
|
import org.mariotaku.twidere.util.message.VideoLoadFinishedEvent;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by mariotaku on 14-8-13.
|
||||||
|
*/
|
||||||
|
public class VideoLoader {
|
||||||
|
|
||||||
|
private final Context mContext;
|
||||||
|
private final DiskCache mDiskCache;
|
||||||
|
private final ImageDownloader mImageDownloader;
|
||||||
|
private final AsyncTaskManager mTaskManager;
|
||||||
|
private final Bus mBus;
|
||||||
|
|
||||||
|
public VideoLoader(Context context) {
|
||||||
|
final TwidereApplication app = TwidereApplication.getInstance(context);
|
||||||
|
mContext = context;
|
||||||
|
mDiskCache = app.getDiskCache();
|
||||||
|
mImageDownloader = app.getImageDownloader();
|
||||||
|
mTaskManager = app.getAsyncTaskManager();
|
||||||
|
mBus = app.getMessageBus();
|
||||||
|
}
|
||||||
|
|
||||||
|
public File getCachedVideoFile(final String url, boolean loadIfNotFound) {
|
||||||
|
if (url == null) return null;
|
||||||
|
final File cache = mDiskCache.get(url);
|
||||||
|
if (cache.exists())
|
||||||
|
return cache;
|
||||||
|
else if (loadIfNotFound) {
|
||||||
|
loadVideo(url, null);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public int loadVideo(String uri, VideoLoadingListener listener) {
|
||||||
|
if (mTaskManager.hasRunningTasksForTag(uri)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return mTaskManager.add(new PreLoadVideoTask(mContext, this, listener, uri), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void notifyTaskFinish(String uri, boolean succeeded) {
|
||||||
|
mBus.post(new VideoLoadFinishedEvent());
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface VideoLoadingListener {
|
||||||
|
|
||||||
|
void onVideoLoadingCancelled(String uri, VideoLoadingListener listener);
|
||||||
|
|
||||||
|
void onVideoLoadingComplete(String uri, VideoLoadingListener listener, File file);
|
||||||
|
|
||||||
|
void onVideoLoadingFailed(String uri, VideoLoadingListener listener, Exception e);
|
||||||
|
|
||||||
|
void onVideoLoadingProgressUpdate(String uri, VideoLoadingListener listener, int current, int total);
|
||||||
|
|
||||||
|
void onVideoLoadingStarted(String uri, VideoLoadingListener listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class PreLoadVideoTask extends ManagedAsyncTask<Void, Integer, SingleResponse<File>> implements IoUtils.CopyListener {
|
||||||
|
|
||||||
|
private final VideoLoader mPreLoader;
|
||||||
|
private final VideoLoadingListener mListener;
|
||||||
|
private final String mUri;
|
||||||
|
|
||||||
|
private PreLoadVideoTask(final Context context, final VideoLoader preLoader, VideoLoadingListener listener, final String uri) {
|
||||||
|
super(context, preLoader.mTaskManager, uri);
|
||||||
|
mPreLoader = preLoader;
|
||||||
|
mListener = listener;
|
||||||
|
mUri = uri;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onBytesCopied(int current, int total) {
|
||||||
|
if (isCancelled()) return false;
|
||||||
|
publishProgress(current, total);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SingleResponse<File> doInBackground(Void... params) {
|
||||||
|
final File file = mPreLoader.mDiskCache.get(mUri);
|
||||||
|
if (file.isFile() && file.length() > 0) return SingleResponse.getInstance(file);
|
||||||
|
try {
|
||||||
|
final InputStream is = mPreLoader.mImageDownloader.getStream(mUri, null);
|
||||||
|
mPreLoader.mDiskCache.save(mUri, is, this);
|
||||||
|
IoUtils.closeSilently(is);
|
||||||
|
} catch (IOException e) {
|
||||||
|
mPreLoader.mDiskCache.remove(mUri);
|
||||||
|
Log.w(LOGTAG, e);
|
||||||
|
return SingleResponse.getInstance(e);
|
||||||
|
}
|
||||||
|
return SingleResponse.getInstance(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onProgressUpdate(Integer... values) {
|
||||||
|
super.onProgressUpdate(values);
|
||||||
|
if (mListener != null) {
|
||||||
|
mListener.onVideoLoadingProgressUpdate(mUri, mListener, values[0], values[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPreExecute() {
|
||||||
|
super.onPreExecute();
|
||||||
|
if (mListener != null) {
|
||||||
|
mListener.onVideoLoadingStarted(mUri, mListener);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPostExecute(SingleResponse<File> result) {
|
||||||
|
super.onPostExecute(result);
|
||||||
|
if (mListener != null) {
|
||||||
|
if (result.hasData()) {
|
||||||
|
mListener.onVideoLoadingComplete(mUri, mListener, result.getData());
|
||||||
|
} else {
|
||||||
|
mListener.onVideoLoadingFailed(mUri, mListener, result.getException());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mPreLoader.notifyTaskFinish(mUri, result.hasData());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCancelled() {
|
||||||
|
super.onCancelled();
|
||||||
|
if (mListener != null) {
|
||||||
|
mListener.onVideoLoadingCancelled(mUri, mListener);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
/*
|
||||||
|
* Twidere - Twitter client for Android
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012-2015 Mariotaku Lee <mariotaku.lee@gmail.com>
|
||||||
|
*
|
||||||
|
* 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 3 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, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.mariotaku.twidere.util.message;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by mariotaku on 15/3/23.
|
||||||
|
*/
|
||||||
|
public class VideoLoadFinishedEvent {
|
||||||
|
}
|
|
@ -33,7 +33,7 @@ import android.widget.TextView;
|
||||||
import org.mariotaku.twidere.Constants;
|
import org.mariotaku.twidere.Constants;
|
||||||
import org.mariotaku.twidere.R;
|
import org.mariotaku.twidere.R;
|
||||||
import org.mariotaku.twidere.model.ParcelableMedia;
|
import org.mariotaku.twidere.model.ParcelableMedia;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.ImageLoadingHandler;
|
import org.mariotaku.twidere.util.ImageLoadingHandler;
|
||||||
import org.mariotaku.twidere.util.Utils.OnMediaClickListener;
|
import org.mariotaku.twidere.util.Utils.OnMediaClickListener;
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@ public class CardMediaContainer extends ViewGroup implements Constants {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void displayMedia(@Nullable final ParcelableMedia[] mediaArray,
|
public void displayMedia(@Nullable final ParcelableMedia[] mediaArray,
|
||||||
@NonNull final ImageLoaderWrapper loader,
|
@NonNull final MediaLoaderWrapper loader,
|
||||||
final long accountId,
|
final long accountId,
|
||||||
final OnMediaClickListener mediaClickListener,
|
final OnMediaClickListener mediaClickListener,
|
||||||
final ImageLoadingHandler loadingHandler) {
|
final ImageLoadingHandler loadingHandler) {
|
||||||
|
|
|
@ -37,7 +37,7 @@ import org.mariotaku.twidere.R;
|
||||||
import org.mariotaku.twidere.adapter.AbsActivitiesAdapter;
|
import org.mariotaku.twidere.adapter.AbsActivitiesAdapter;
|
||||||
import org.mariotaku.twidere.model.ParcelableActivity;
|
import org.mariotaku.twidere.model.ParcelableActivity;
|
||||||
import org.mariotaku.twidere.model.ParcelableUser;
|
import org.mariotaku.twidere.model.ParcelableUser;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.UserColorNameUtils;
|
import org.mariotaku.twidere.util.UserColorNameUtils;
|
||||||
import org.mariotaku.twidere.view.ActionIconView;
|
import org.mariotaku.twidere.view.ActionIconView;
|
||||||
import org.oshkimaadziig.george.androidutils.SpanFormatter;
|
import org.oshkimaadziig.george.androidutils.SpanFormatter;
|
||||||
|
@ -156,7 +156,7 @@ public class ActivityTitleSummaryViewHolder extends ViewHolder {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void displayUserProfileImages(final ParcelableUser[] statuses) {
|
private void displayUserProfileImages(final ParcelableUser[] statuses) {
|
||||||
final ImageLoaderWrapper imageLoader = adapter.getImageLoader();
|
final MediaLoaderWrapper imageLoader = adapter.getImageLoader();
|
||||||
if (statuses == null) {
|
if (statuses == null) {
|
||||||
for (final ImageView view : profileImageViews) {
|
for (final ImageView view : profileImageViews) {
|
||||||
imageLoader.cancelDisplayTask(view);
|
imageLoader.cancelDisplayTask(view);
|
||||||
|
|
|
@ -34,7 +34,7 @@ import org.mariotaku.twidere.adapter.MessageConversationAdapter;
|
||||||
import org.mariotaku.twidere.model.ParcelableDirectMessage.CursorIndices;
|
import org.mariotaku.twidere.model.ParcelableDirectMessage.CursorIndices;
|
||||||
import org.mariotaku.twidere.model.ParcelableMedia;
|
import org.mariotaku.twidere.model.ParcelableMedia;
|
||||||
import org.mariotaku.twidere.util.ColorUtils;
|
import org.mariotaku.twidere.util.ColorUtils;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.SimpleValueSerializer;
|
import org.mariotaku.twidere.util.SimpleValueSerializer;
|
||||||
import org.mariotaku.twidere.util.TwidereLinkify;
|
import org.mariotaku.twidere.util.TwidereLinkify;
|
||||||
import org.mariotaku.twidere.util.Utils;
|
import org.mariotaku.twidere.util.Utils;
|
||||||
|
@ -73,7 +73,7 @@ public class MessageConversationViewHolder extends ViewHolder {
|
||||||
public void displayMessage(Cursor cursor, CursorIndices indices) {
|
public void displayMessage(Cursor cursor, CursorIndices indices) {
|
||||||
final Context context = adapter.getContext();
|
final Context context = adapter.getContext();
|
||||||
final TwidereLinkify linkify = adapter.getLinkify();
|
final TwidereLinkify linkify = adapter.getLinkify();
|
||||||
final ImageLoaderWrapper loader = adapter.getImageLoader();
|
final MediaLoaderWrapper loader = adapter.getImageLoader();
|
||||||
|
|
||||||
final long accountId = cursor.getLong(indices.account_id);
|
final long accountId = cursor.getLong(indices.account_id);
|
||||||
final long timestamp = cursor.getLong(indices.message_timestamp);
|
final long timestamp = cursor.getLong(indices.message_timestamp);
|
||||||
|
|
|
@ -32,7 +32,7 @@ import android.widget.TextView;
|
||||||
import org.mariotaku.twidere.R;
|
import org.mariotaku.twidere.R;
|
||||||
import org.mariotaku.twidere.adapter.MessageEntriesAdapter;
|
import org.mariotaku.twidere.adapter.MessageEntriesAdapter;
|
||||||
import org.mariotaku.twidere.provider.TwidereDataStore.DirectMessages.ConversationEntries;
|
import org.mariotaku.twidere.provider.TwidereDataStore.DirectMessages.ConversationEntries;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.UserColorNameUtils;
|
import org.mariotaku.twidere.util.UserColorNameUtils;
|
||||||
import org.mariotaku.twidere.util.Utils;
|
import org.mariotaku.twidere.util.Utils;
|
||||||
import org.mariotaku.twidere.view.ShortTimeView;
|
import org.mariotaku.twidere.view.ShortTimeView;
|
||||||
|
@ -66,7 +66,7 @@ public class MessageEntryViewHolder extends ViewHolder implements OnClickListene
|
||||||
|
|
||||||
public void displayMessage(Cursor cursor) {
|
public void displayMessage(Cursor cursor) {
|
||||||
final Context context = adapter.getContext();
|
final Context context = adapter.getContext();
|
||||||
final ImageLoaderWrapper loader = adapter.getImageLoader();
|
final MediaLoaderWrapper loader = adapter.getImageLoader();
|
||||||
|
|
||||||
final long accountId = cursor.getLong(ConversationEntries.IDX_ACCOUNT_ID);
|
final long accountId = cursor.getLong(ConversationEntries.IDX_ACCOUNT_ID);
|
||||||
final long conversationId = cursor.getLong(ConversationEntries.IDX_CONVERSATION_ID);
|
final long conversationId = cursor.getLong(ConversationEntries.IDX_CONVERSATION_ID);
|
||||||
|
|
|
@ -21,10 +21,9 @@ import org.mariotaku.twidere.model.ParcelableMedia;
|
||||||
import org.mariotaku.twidere.model.ParcelableStatus;
|
import org.mariotaku.twidere.model.ParcelableStatus;
|
||||||
import org.mariotaku.twidere.model.ParcelableStatus.CursorIndices;
|
import org.mariotaku.twidere.model.ParcelableStatus.CursorIndices;
|
||||||
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
||||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.ImageLoadingHandler;
|
import org.mariotaku.twidere.util.ImageLoadingHandler;
|
||||||
import org.mariotaku.twidere.util.SimpleValueSerializer;
|
import org.mariotaku.twidere.util.SimpleValueSerializer;
|
||||||
import org.mariotaku.twidere.util.ThemeUtils;
|
|
||||||
import org.mariotaku.twidere.util.TwitterCardUtils;
|
import org.mariotaku.twidere.util.TwitterCardUtils;
|
||||||
import org.mariotaku.twidere.util.UserColorNameUtils;
|
import org.mariotaku.twidere.util.UserColorNameUtils;
|
||||||
import org.mariotaku.twidere.util.Utils;
|
import org.mariotaku.twidere.util.Utils;
|
||||||
|
@ -110,7 +109,7 @@ public class StatusViewHolder extends RecyclerView.ViewHolder implements Constan
|
||||||
}
|
}
|
||||||
|
|
||||||
public void displayStatus(@NonNull final Context context,
|
public void displayStatus(@NonNull final Context context,
|
||||||
@NonNull final ImageLoaderWrapper loader,
|
@NonNull final MediaLoaderWrapper loader,
|
||||||
@NonNull final ImageLoadingHandler handler,
|
@NonNull final ImageLoadingHandler handler,
|
||||||
@NonNull final AsyncTwitterWrapper twitter,
|
@NonNull final AsyncTwitterWrapper twitter,
|
||||||
final boolean displayMediaPreview, final boolean displayAccountsColor,
|
final boolean displayMediaPreview, final boolean displayAccountsColor,
|
||||||
|
@ -229,7 +228,7 @@ public class StatusViewHolder extends RecyclerView.ViewHolder implements Constan
|
||||||
|
|
||||||
public void displayStatus(@NonNull Cursor cursor, @NonNull CursorIndices indices,
|
public void displayStatus(@NonNull Cursor cursor, @NonNull CursorIndices indices,
|
||||||
final boolean displayInReplyTo) {
|
final boolean displayInReplyTo) {
|
||||||
final ImageLoaderWrapper loader = adapter.getImageLoader();
|
final MediaLoaderWrapper loader = adapter.getImageLoader();
|
||||||
final AsyncTwitterWrapper twitter = adapter.getTwitterWrapper();
|
final AsyncTwitterWrapper twitter = adapter.getTwitterWrapper();
|
||||||
final Context context = adapter.getContext();
|
final Context context = adapter.getContext();
|
||||||
final boolean nameFirst = adapter.isNameFirst();
|
final boolean nameFirst = adapter.isNameFirst();
|
||||||
|
@ -443,7 +442,11 @@ public class StatusViewHolder extends RecyclerView.ViewHolder implements Constan
|
||||||
extraTypeView.setImageResource(R.drawable.ic_action_play_circle);
|
extraTypeView.setImageResource(R.drawable.ic_action_play_circle);
|
||||||
extraTypeView.setVisibility(View.VISIBLE);
|
extraTypeView.setVisibility(View.VISIBLE);
|
||||||
} else if (media != null && media.length > 0) {
|
} else if (media != null && media.length > 0) {
|
||||||
|
if (hasVideo(media)) {
|
||||||
|
extraTypeView.setImageResource(R.drawable.ic_action_movie);
|
||||||
|
} else {
|
||||||
extraTypeView.setImageResource(R.drawable.ic_action_gallery);
|
extraTypeView.setImageResource(R.drawable.ic_action_gallery);
|
||||||
|
}
|
||||||
extraTypeView.setVisibility(View.VISIBLE);
|
extraTypeView.setVisibility(View.VISIBLE);
|
||||||
} else if (location != null && location.isValid()) {
|
} else if (location != null && location.isValid()) {
|
||||||
extraTypeView.setImageResource(R.drawable.ic_action_location);
|
extraTypeView.setImageResource(R.drawable.ic_action_location);
|
||||||
|
@ -453,6 +456,13 @@ public class StatusViewHolder extends RecyclerView.ViewHolder implements Constan
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean hasVideo(ParcelableMedia[] media) {
|
||||||
|
for (ParcelableMedia mediaItem : media) {
|
||||||
|
if (mediaItem.type == ParcelableMedia.TYPE_VIDEO) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public static interface StatusClickListener extends ContentCardClickListener {
|
public static interface StatusClickListener extends ContentCardClickListener {
|
||||||
|
|
||||||
void onStatusClick(StatusViewHolder holder, int position);
|
void onStatusClick(StatusViewHolder holder, int position);
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
~ Twidere - Twitter client for Android
|
||||||
|
~
|
||||||
|
~ Copyright (C) 2012-2015 Mariotaku Lee <mariotaku.lee@gmail.com>
|
||||||
|
~
|
||||||
|
~ 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 3 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, see <http://www.gnu.org/licenses/>.
|
||||||
|
-->
|
||||||
|
<FrameLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
<WebView
|
||||||
|
android:id="@+id/web_view"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:layout_height="match_parent"/>
|
||||||
|
|
||||||
|
<ProgressBar
|
||||||
|
android:visibility="gone"
|
||||||
|
android:id="@+id/progress"
|
||||||
|
android:layout_width="@dimen/element_size_normal"
|
||||||
|
android:layout_height="@dimen/element_size_normal"
|
||||||
|
android:layout_gravity="center"/>
|
||||||
|
|
||||||
|
|
||||||
|
</FrameLayout>
|
Loading…
Reference in New Issue