mirror of https://github.com/kurisufriend/Clover
parent
cf7af07382
commit
3d6fe34518
@ -1,17 +1,35 @@ |
|||||||
package org.floens.chan.core.model; |
package org.floens.chan.core.model; |
||||||
|
|
||||||
public class PostImage { |
public class PostImage { |
||||||
|
public enum Type { |
||||||
|
STATIC, GIF, MOVIE |
||||||
|
} |
||||||
|
|
||||||
public String thumbnailUrl; |
public String thumbnailUrl; |
||||||
public String imageUrl; |
public String imageUrl; |
||||||
public String filename; |
public String filename; |
||||||
public int imageWidth; |
public int imageWidth; |
||||||
public int imageHeight; |
public int imageHeight; |
||||||
|
|
||||||
public PostImage(String thumbnailUrl, String imageUrl, String filename, int imageWidth, int imageHeight) { |
public Type type; |
||||||
|
|
||||||
|
public PostImage(String thumbnailUrl, String imageUrl, String filename, String extension, int imageWidth, int imageHeight) { |
||||||
this.thumbnailUrl = thumbnailUrl; |
this.thumbnailUrl = thumbnailUrl; |
||||||
this.imageUrl = imageUrl; |
this.imageUrl = imageUrl; |
||||||
this.filename = filename; |
this.filename = filename; |
||||||
this.imageWidth = imageWidth; |
this.imageWidth = imageWidth; |
||||||
this.imageHeight = imageHeight; |
this.imageHeight = imageHeight; |
||||||
|
|
||||||
|
switch (extension) { |
||||||
|
case "gif": |
||||||
|
type = Type.GIF; |
||||||
|
break; |
||||||
|
case "webm": |
||||||
|
type = Type.MOVIE; |
||||||
|
break; |
||||||
|
default: |
||||||
|
type = Type.STATIC; |
||||||
|
break; |
||||||
|
} |
||||||
} |
} |
||||||
} |
} |
||||||
|
@ -0,0 +1,40 @@ |
|||||||
|
package org.floens.chan.core.presenter; |
||||||
|
|
||||||
|
import org.floens.chan.core.model.PostImage; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
public class ImageViewerPresenter { |
||||||
|
private final Callback callback; |
||||||
|
|
||||||
|
private boolean exiting = false; |
||||||
|
private List<PostImage> images; |
||||||
|
private int selectedIndex; |
||||||
|
|
||||||
|
public ImageViewerPresenter(Callback callback) { |
||||||
|
this.callback = callback; |
||||||
|
} |
||||||
|
|
||||||
|
public void showImages(List<PostImage> images, int index) { |
||||||
|
callback.startPreviewInTransition(); |
||||||
|
|
||||||
|
this.images = images; |
||||||
|
selectedIndex = index; |
||||||
|
} |
||||||
|
|
||||||
|
public void onExit() { |
||||||
|
if (exiting) return; |
||||||
|
exiting = true; |
||||||
|
callback.startPreviewOutTransition(); |
||||||
|
} |
||||||
|
|
||||||
|
public void onInTransitionEnd() { |
||||||
|
PostImage image = images.get(selectedIndex); |
||||||
|
} |
||||||
|
|
||||||
|
public interface Callback { |
||||||
|
public void startPreviewInTransition(); |
||||||
|
|
||||||
|
public void startPreviewOutTransition(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,35 @@ |
|||||||
|
package org.floens.chan.ui.adapter; |
||||||
|
|
||||||
|
import android.content.Context; |
||||||
|
import android.view.View; |
||||||
|
|
||||||
|
import org.floens.chan.core.model.PostImage; |
||||||
|
import org.floens.chan.ui.view.MultiImageView; |
||||||
|
import org.floens.chan.ui.view.ViewPagerAdapter; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
public class ImageViewerAdapter extends ViewPagerAdapter { |
||||||
|
private final Context context; |
||||||
|
private final List<PostImage> images; |
||||||
|
private final MultiImageView.Callback multiImageViewCallback; |
||||||
|
|
||||||
|
public ImageViewerAdapter(Context context, List<PostImage> images, MultiImageView.Callback multiImageViewCallback) { |
||||||
|
this.context = context; |
||||||
|
this.images = images; |
||||||
|
this.multiImageViewCallback = multiImageViewCallback; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public View getView(int position) { |
||||||
|
MultiImageView view = new MultiImageView(context); |
||||||
|
view.bindPostImage(images.get(position), multiImageViewCallback); |
||||||
|
|
||||||
|
return view; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int getCount() { |
||||||
|
return images.size(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,25 @@ |
|||||||
|
package org.floens.chan.ui.view; |
||||||
|
|
||||||
|
import android.support.v4.view.PagerAdapter; |
||||||
|
import android.view.View; |
||||||
|
import android.view.ViewGroup; |
||||||
|
|
||||||
|
import org.floens.chan.utils.AndroidUtils; |
||||||
|
|
||||||
|
public abstract class ViewPagerAdapter extends PagerAdapter { |
||||||
|
@Override |
||||||
|
public Object instantiateItem(ViewGroup container, int position) { |
||||||
|
return getView(position); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void destroyItem(ViewGroup container, int position, Object object) { |
||||||
|
AndroidUtils.removeFromParentView((View) object); |
||||||
|
} |
||||||
|
|
||||||
|
public boolean isViewFromObject(View view, Object object) { |
||||||
|
return view == object; |
||||||
|
} |
||||||
|
|
||||||
|
public abstract View getView(int position); |
||||||
|
} |
Loading…
Reference in new issue