aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Renard 2016-04-08 20:14:59 -0300
committerLibravatar Renard 2016-04-08 20:14:59 -0300
commitfe76420bfc927ee5fc002215724c09a6d2d614c2 (patch)
tree01f9dcb98b8cb78570ab223f0fcac2fe79f6c46e
parente92d1607eb9e71951928155cea53d65b7c665726 (diff)
downloadBaiApp-fe76420bfc927ee5fc002215724c09a6d2d614c2.tar.gz
BaiApp-fe76420bfc927ee5fc002215724c09a6d2d614c2.tar.xz
BaiApp-fe76420bfc927ee5fc002215724c09a6d2d614c2.zip
Nuevo visor de imágenes
-rw-r--r--app/build.gradle5
-rw-r--r--app/src/main/java/layout/FragmentBoardItemList.java (renamed from app/src/main/java/layout/fragmentThreadList.java)10
-rw-r--r--app/src/main/java/layout/FragmentImage.java197
-rw-r--r--app/src/main/java/org/bienvenidoainternet/baiparser/MainActivity.java24
-rw-r--r--app/src/main/java/org/bienvenidoainternet/baiparser/ThreadListAdapter.java27
-rw-r--r--app/src/main/java/org/bienvenidoainternet/baiparser/ViewerActivity.java204
-rw-r--r--app/src/main/java/org/bienvenidoainternet/baiparser/structure/BoardItemFile.java49
-rw-r--r--app/src/main/res/layout/activity_viewer.xml20
-rw-r--r--app/src/main/res/layout/fragment_fragment_image.xml15
-rw-r--r--app/src/main/res/values/strings.xml3
10 files changed, 361 insertions, 193 deletions
diff --git a/app/build.gradle b/app/build.gradle
index 3eaec0f..a41bd51 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -8,8 +8,8 @@ android {
applicationId "org.bienvenidoainternet.baiparser"
minSdkVersion 15
targetSdkVersion 23
- versionCode 5
- versionName "1.5"
+ versionCode 6
+ versionName "1.6"
}
buildTypes {
release {
@@ -30,3 +30,4 @@ dependencies {
compile 'com.koushikdutta.ion:ion:2.+'
}
+
diff --git a/app/src/main/java/layout/fragmentThreadList.java b/app/src/main/java/layout/FragmentBoardItemList.java
index c06fd93..38e4819 100644
--- a/app/src/main/java/layout/fragmentThreadList.java
+++ b/app/src/main/java/layout/FragmentBoardItemList.java
@@ -55,7 +55,7 @@ import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.List;
-public class fragmentThreadList extends Fragment {
+public class FragmentBoardItemList extends Fragment {
public static final String ARG_CURRENTBOARD = "currentBoard", ARG_THREAD_ID = "currentThreadId", ARG_MAIN_FRAGMENT = "imMainFragment",
SAVED_BOARDITEMS = "savedBoardItems", RECENT_POST_MODE = "recentpostmode", ARG_CURRENT_THREAD = "currentThread";
List<ReplyID> idList = new ArrayList<>();
@@ -80,13 +80,13 @@ public class fragmentThreadList extends Fragment {
LinearLayout layoutThreadProcess;
TextView txtThreadProcess;
- public fragmentThreadList() {
+ public FragmentBoardItemList() {
// Required empty public constructor
}
- public static fragmentThreadList newInstance(boolean mainFragment, Board board, BoardItem thread){
- fragmentThreadList fragment = new fragmentThreadList();
+ public static FragmentBoardItemList newInstance(boolean mainFragment, Board board, BoardItem thread){
+ FragmentBoardItemList fragment = new FragmentBoardItemList();
Bundle args = new Bundle();
args.putParcelable(ARG_CURRENTBOARD, board);
args.putParcelable(ARG_CURRENT_THREAD, thread);
@@ -517,6 +517,7 @@ public class fragmentThreadList extends Fragment {
}
}
listViewAdapter.notifyDataSetChanged();
+ listViewAdapter.updateBoardItems(boardItems);
loadingMoreThreads = false;
if (boardItems.isEmpty()){
mListener.updateToolbar(currentBoard, currentThread);
@@ -610,6 +611,7 @@ public class fragmentThreadList extends Fragment {
}
}
listViewAdapter.notifyDataSetChanged();
+ listViewAdapter.updateBoardItems(boardItems);
if (settings.getBoolean("setting_scrollatnewthread", true)){
listViewBoardItems.setSelection(boardItems.size());
mListener.showActionButton();
diff --git a/app/src/main/java/layout/FragmentImage.java b/app/src/main/java/layout/FragmentImage.java
new file mode 100644
index 0000000..399e9f3
--- /dev/null
+++ b/app/src/main/java/layout/FragmentImage.java
@@ -0,0 +1,197 @@
+package layout;
+
+import android.content.Context;
+import android.content.ContextWrapper;
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+
+import com.davemorrissey.labs.subscaleview.ImageSource;
+import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
+import com.koushikdutta.async.future.FutureCallback;
+import com.koushikdutta.ion.Ion;
+
+import org.bienvenidoainternet.baiparser.R;
+import org.bienvenidoainternet.baiparser.ViewerActivity;
+import org.bienvenidoainternet.baiparser.structure.BoardItem;
+import org.bienvenidoainternet.baiparser.structure.BoardItemFile;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+
+import pl.droidsonroids.gif.GifDrawable;
+import pl.droidsonroids.gif.GifImageView;
+
+/**
+ * A simple {@link Fragment} subclass.
+ * Activities that contain this fragment must implement the
+ * {@link FragmentImage.OnFragmentInteractionListener} interface
+ * to handle interaction events.
+ * Use the {@link FragmentImage#newInstance} factory method to
+ * create an instance of this fragment.
+ */
+public class FragmentImage extends Fragment {
+ private static final String ARG_BOARD_ITEM = "param1";
+
+ public BoardItemFile boardItemFile;
+
+ private OnFragmentInteractionListener mListener;
+ private SubsamplingScaleImageView imageView;
+ private GifImageView gifView;
+ private static final String ARG_FILE_URL = "fileURL";
+ private ProgressBar downloadBar;
+
+ public FragmentImage() {
+ // Required empty public constructor
+ }
+
+ public static FragmentImage newInstance(BoardItemFile boardItemFile) {
+ FragmentImage fragment = new FragmentImage();
+ Bundle args = new Bundle();
+ args.putParcelable(ARG_BOARD_ITEM, boardItemFile);
+// args.putString(ARG_FILE_URL, file);
+ fragment.setArguments(args);
+ Log.v("FragmentImage", fragment.toString() + " new Fragment");
+ return fragment;
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ if (getArguments() != null) {
+// currentThread = getArguments().getParcelable(ARG_BOARD_ITEM);
+ boardItemFile = getArguments().getParcelable(ARG_BOARD_ITEM);
+ }
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ View view = inflater.inflate(R.layout.fragment_fragment_image, container, false);
+ imageView = (SubsamplingScaleImageView) view.findViewById(R.id.imageView);
+ gifView = (GifImageView) view.findViewById(R.id.gifView);
+ imageView.setVisibility(View.GONE);
+ gifView.setVisibility(View.GONE);
+ if (boardItemFile.file != null) {
+ if (!boardItemFile.file.endsWith(".webm") && !boardItemFile.file.endsWith(".swf")) {
+ downloadFile();
+ }
+ }
+ return view;
+ }
+
+ // TODO: Rename method, update argument and hook method into UI event
+ public void onButtonPressed(Uri uri) {
+ if (mListener != null) {
+ mListener.onFragmentInteraction(uri);
+ }
+ }
+
+ @Override
+ public void onAttach(Context context) {
+ super.onAttach(context);
+ if (context instanceof OnFragmentInteractionListener) {
+ mListener = (OnFragmentInteractionListener) context;
+ } else {
+ throw new RuntimeException(context.toString()
+ + " must implement OnFragmentInteractionListener");
+ }
+ }
+
+ @Override
+ public void onDetach() {
+ super.onDetach();
+ mListener = null;
+ }
+
+ public void setDownloadBar(ProgressBar downloadBar) {
+ this.downloadBar = downloadBar;
+ }
+
+ /**
+ * This interface must be implemented by activities that contain this
+ * fragment to allow an interaction in this fragment to be communicated
+ * to the activity and potentially other fragments contained in that
+ * activity.
+ * <p/>
+ * See the Android Training lesson <a href=
+ * "http://developer.android.com/training/basics/fragments/communicating.html"
+ * >Communicating with Other Fragments</a> for more information.
+ */
+ public interface OnFragmentInteractionListener {
+ // TODO: Update argument type and name
+ void onFragmentInteraction(Uri uri);
+ }
+
+ private void downloadFile() {
+ downloadBar = ((ViewerActivity)getActivity()).barDownload;
+ downloadBar.setVisibility(View.VISIBLE);
+ ContextWrapper cw = new ContextWrapper(getContext());
+ File directory = cw.getDir("src", Context.MODE_PRIVATE);
+ final File filePath = new File(directory, boardItemFile.boardDir + "_" + boardItemFile.file);
+ if (filePath.exists()) {
+ downloadBar.setVisibility(View.GONE);
+ if (boardItemFile.file.endsWith(".gif")) {
+ try {
+ GifDrawable gifFromFile = new GifDrawable(filePath);
+ gifView.setImageDrawable(gifFromFile);
+ gifView.setVisibility(View.VISIBLE);
+ imageView.setVisibility(View.GONE);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } else {
+ imageView.setImage(ImageSource.uri(filePath.toURI().getPath()));
+ imageView.setVisibility(View.VISIBLE);
+ gifView.setVisibility(View.GONE);
+ }
+ }
+ Ion.with(getContext())
+ .load(boardItemFile.fileURL)
+ .progressBar(downloadBar)
+ .asInputStream()
+ .setCallback(new FutureCallback<InputStream>() {
+ @Override
+ public void onCompleted(Exception e, InputStream result) {
+ downloadBar.setVisibility(View.GONE);
+ if (e != null) {
+ e.printStackTrace();
+ } else {
+ FileOutputStream fout;
+ try {
+ fout = new FileOutputStream(filePath);
+ final byte data[] = new byte[1024];
+ int count;
+ while ((count = result.read(data, 0, 1024)) != -1) {
+ fout.write(data, 0, count);
+ }
+ } catch (Exception e1) {
+ e1.printStackTrace();
+ }
+ if (boardItemFile.file.endsWith(".gif")) {
+ try {
+ GifDrawable gifFromFile = new GifDrawable(filePath);
+ gifView.setImageDrawable(gifFromFile);
+ gifView.setVisibility(View.VISIBLE);
+ imageView.setVisibility(View.GONE);
+ } catch (Exception e2) {
+ e2.printStackTrace();
+ }
+ } else {
+ imageView.setImage(ImageSource.uri(filePath.toURI().getPath()));
+ gifView.setVisibility(View.GONE);
+ imageView.setVisibility(View.VISIBLE);
+ }
+ }
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/org/bienvenidoainternet/baiparser/MainActivity.java b/app/src/main/java/org/bienvenidoainternet/baiparser/MainActivity.java
index 65b51e2..9130160 100644
--- a/app/src/main/java/org/bienvenidoainternet/baiparser/MainActivity.java
+++ b/app/src/main/java/org/bienvenidoainternet/baiparser/MainActivity.java
@@ -3,13 +3,11 @@ package org.bienvenidoainternet.baiparser;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
-import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.NavigationView;
-import android.support.design.widget.Snackbar;
import android.support.v4.view.GravityCompat;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
@@ -39,21 +37,18 @@ import org.json.JSONObject;
import java.util.ArrayList;
import java.util.Random;
-import layout.fragmentThreadList;
+import layout.FragmentBoardItemList;
public class MainActivity extends AppCompatActivity
- implements NavigationView.OnNavigationItemSelectedListener, fragmentThreadList.OnFragmentInteractionListener {
-
- public static final float CURRENT_VERSION = 1.5F;
+ implements NavigationView.OnNavigationItemSelectedListener, FragmentBoardItemList.OnFragmentInteractionListener {
private ViewPager pager; // variable del ViewPager
CustomFragmentPagerAdapter pagerAdapter; // Adaptador del ViewPager
NavigationView navigationView;
DrawerLayout drawer;
FloatingActionButton fab;
public ThemeManager themeManager;
- fragmentThreadList childFragment; // Segunda página del ViewPager, se muestra un solo hilo (selecionado del catálogo)
- fragmentThreadList mainFragment; // Primera página del ViewPager, se muestra una lista de hilos. (catálogo)
-// fragmentThreadList recentFragment;
+ FragmentBoardItemList childFragment; // Segunda página del ViewPager, se muestra un solo hilo (selecionado del catálogo)
+ FragmentBoardItemList mainFragment; // Primera página del ViewPager, se muestra una lista de hilos. (catálogo)
Toolbar toolbar = null;
public int currentThemeId = 0, themeId = 0; // Id del recurso, Id del tema
public ArrayList<Board> boardList = new ArrayList<>();
@@ -155,20 +150,17 @@ public class MainActivity extends AppCompatActivity
navigationView.setNavigationItemSelectedListener(this);
if (savedInstanceState != null) {
- mainFragment = (fragmentThreadList) getSupportFragmentManager().getFragment(savedInstanceState, "mainFragment");
- childFragment = (fragmentThreadList) getSupportFragmentManager().getFragment(savedInstanceState, "childFragment");
-// recentFragment = (fragmentThreadList) getSupportFragmentManager().getFragment(savedInstanceState, "recentFragment");
+ mainFragment = (FragmentBoardItemList) getSupportFragmentManager().getFragment(savedInstanceState, "mainFragment");
+ childFragment = (FragmentBoardItemList) getSupportFragmentManager().getFragment(savedInstanceState, "childFragment");
} else {
- mainFragment = fragmentThreadList.newInstance(true, null, null);
- childFragment = fragmentThreadList.newInstance(false, null, null);
-// recentFragment = fragmentThreadList.newInstance(false, null, -1);
+ mainFragment = FragmentBoardItemList.newInstance(true, null, null);
+ childFragment = FragmentBoardItemList.newInstance(false, null, null);
}
this.pager = (ViewPager) findViewById(R.id.pager);
this.pagerAdapter = new CustomFragmentPagerAdapter(getSupportFragmentManager());
pagerAdapter.addFragment(mainFragment);
pagerAdapter.addFragment(childFragment);
-// pagerAdapter.addFragment(recentFragment);
this.pager.setAdapter(pagerAdapter);
pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
diff --git a/app/src/main/java/org/bienvenidoainternet/baiparser/ThreadListAdapter.java b/app/src/main/java/org/bienvenidoainternet/baiparser/ThreadListAdapter.java
index 57aa362..85cd891 100644
--- a/app/src/main/java/org/bienvenidoainternet/baiparser/ThreadListAdapter.java
+++ b/app/src/main/java/org/bienvenidoainternet/baiparser/ThreadListAdapter.java
@@ -1,12 +1,8 @@
package org.bienvenidoainternet.baiparser;
-import android.animation.ArgbEvaluator;
-import android.animation.ObjectAnimator;
-import android.animation.ValueAnimator;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
-import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.graphics.drawable.ColorDrawable;
@@ -28,6 +24,7 @@ import android.widget.ImageView;
import android.widget.TextView;
import org.bienvenidoainternet.baiparser.structure.BoardItem;
+import org.bienvenidoainternet.baiparser.structure.BoardItemFile;
import java.util.ArrayList;
import java.util.Collections;
@@ -36,7 +33,6 @@ import java.util.EnumSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import java.util.Random;
import java.util.concurrent.TimeUnit;
/**
@@ -47,6 +43,8 @@ public class ThreadListAdapter extends ArrayAdapter<BoardItem>{
private ThemeManager tm;
Typeface monaFont;
public boolean listThreads = false;
+ private ArrayList<BoardItem> boardItems = new ArrayList<BoardItem>();
+ private static final String EXTRA_FILELIST = "fileList";
public ThreadListAdapter(Context context, List<BoardItem> objects, ThemeManager tm) {
super(context, 0, objects);
@@ -55,6 +53,10 @@ public class ThreadListAdapter extends ArrayAdapter<BoardItem>{
monaFont = Typeface.createFromAsset(context.getAssets(), "fonts/mona.ttf");
}
+ public void updateBoardItems(ArrayList<BoardItem> boardItems){
+ this.boardItems = boardItems;
+ }
+
private String intToHexString(int i){
return String.format("#%06X", (0xFFFFFF & i));
}
@@ -73,7 +75,7 @@ public class ThreadListAdapter extends ArrayAdapter<BoardItem>{
return result;
}
@Override
- public View getView(int position, final View convertView, final ViewGroup parent){
+ public View getView(final int position, final View convertView, final ViewGroup parent){
LayoutInflater inflater = (LayoutInflater)getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View listItemView = convertView;
@@ -120,7 +122,18 @@ public class ThreadListAdapter extends ArrayAdapter<BoardItem>{
}else {
Intent in = new Intent(convertView.getContext(), ViewerActivity.class);
Bundle b = new Bundle();
- b.putParcelable("boardItem", boardItem);
+ ArrayList<BoardItemFile> fileList = new ArrayList<BoardItemFile>();
+ int relativePosition = 0;
+ for (int i = 0; i < boardItems.size(); i++){
+ if (!boardItems.get(i).getFile().isEmpty()){
+ if (boardItems.get(i).getFile().equals(boardItem.getFile())){
+ relativePosition = fileList.size();
+ }
+ fileList.add(new BoardItemFile("http://bienvenidoainternet.org/" + boardItems.get(i).getParentBoard().getBoardDir() + "/src/" + boardItems.get(i).getFile(), boardItems.get(i).getFile(), boardItems.get(i).getParentBoard().getBoardDir()));
+ }
+ }
+ b.putParcelableArrayList(EXTRA_FILELIST, fileList);
+ b.putInt("position", relativePosition);
in.putExtras(b);
convertView.getContext().startActivity(in);
}
diff --git a/app/src/main/java/org/bienvenidoainternet/baiparser/ViewerActivity.java b/app/src/main/java/org/bienvenidoainternet/baiparser/ViewerActivity.java
index 4501c0f..9d140ec 100644
--- a/app/src/main/java/org/bienvenidoainternet/baiparser/ViewerActivity.java
+++ b/app/src/main/java/org/bienvenidoainternet/baiparser/ViewerActivity.java
@@ -2,55 +2,75 @@ package org.bienvenidoainternet.baiparser;
import android.content.Context;
import android.content.ContextWrapper;
-import android.graphics.Bitmap;
-import android.os.AsyncTask;
+import android.media.MediaScannerConnection;
+import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
+import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
+import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
-import android.view.View;
import android.widget.ProgressBar;
import android.widget.Toast;
-import com.davemorrissey.labs.subscaleview.ImageSource;
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
-import com.koushikdutta.async.future.FutureCallback;
-import com.koushikdutta.ion.Ion;
import org.bienvenidoainternet.baiparser.structure.BoardItem;
+import org.bienvenidoainternet.baiparser.structure.BoardItemFile;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
+import java.util.ArrayList;
-import pl.droidsonroids.gif.GifDrawable;
+import layout.FragmentImage;
import pl.droidsonroids.gif.GifImageView;
-public class ViewerActivity extends AppCompatActivity {
- private SubsamplingScaleImageView imageView;
- private GifImageView gifView;
- private BoardItem bi;
- File imagePath;
-
+public class ViewerActivity extends AppCompatActivity implements FragmentImage.OnFragmentInteractionListener {
+ private static final String EXTRA_FILELIST = "fileList", EXTRA_RELATIVEPOSITION = "position";
+ private ViewPager imagePager;
+ public ProgressBar barDownload;
+ private int relativePosition = 0;
+ public ArrayList<BoardItemFile> fileList = new ArrayList<BoardItemFile>();
+ private CustomFragmentPagerAdapter pagerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- if (savedInstanceState != null){
- bi = savedInstanceState.getParcelable("boardItem");
- }
if (getIntent().getExtras() != null){
- bi = getIntent().getParcelableExtra("boardItem");
+ fileList = getIntent().getParcelableArrayListExtra(EXTRA_FILELIST);
+ relativePosition = getIntent().getIntExtra(EXTRA_RELATIVEPOSITION, 0);
}
setContentView(R.layout.activity_viewer);
- imageView = (SubsamplingScaleImageView)findViewById(R.id.imageView);
- gifView = (GifImageView) findViewById(R.id.gifView);
- setTitle(bi.getFile());
- downloadFile();
+ barDownload = (ProgressBar) findViewById(R.id.downloadProgressBar);
+ imagePager = (ViewPager) findViewById(R.id.imagePager);
+ this.pagerAdapter = new CustomFragmentPagerAdapter(getSupportFragmentManager());
+ for (int i = 0; i < fileList.size(); i++){
+ Log.v("ImageViewer", fileList.get(i).toString());
+ pagerAdapter.addFragment(FragmentImage.newInstance(fileList.get(i)));
+ }
+ imagePager.setAdapter(pagerAdapter);
+ imagePager.setCurrentItem(relativePosition);
+ imagePager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
+ @Override
+ public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+
+ }
+
+ @Override
+ public void onPageSelected(int position) {
+ getSupportActionBar().setSubtitle(fileList.get(position).file);
+ }
+
+ @Override
+ public void onPageScrollStateChanged(int state) {
+
+ }
+ });
this.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
@@ -61,9 +81,13 @@ public class ViewerActivity extends AppCompatActivity {
baiDir.mkdir();
}
if (item.getItemId() == R.id.menu_save_img){
- File to = new File(Environment.getExternalStorageDirectory().getPath() + "/Bai/" + bi.getFile());
+ BoardItemFile boardItemFile = fileList.get(imagePager.getCurrentItem());
+ File to = new File(Environment.getExternalStorageDirectory().getPath() + "/Bai/" + boardItemFile.file);
+ ContextWrapper cw = new ContextWrapper(getApplicationContext());
+ File directory = cw.getDir("src", Context.MODE_PRIVATE);
+ File fileSource = new File(directory, boardItemFile.boardDir + "_" + boardItemFile.file);
try{
- InputStream in = new FileInputStream(imagePath);
+ InputStream in = new FileInputStream(fileSource);
OutputStream out = new FileOutputStream(to);
byte[] buf = new byte[1024];
int len;
@@ -72,7 +96,8 @@ public class ViewerActivity extends AppCompatActivity {
}
in.close();
out.close();
- Toast.makeText(getApplicationContext(), bi.getFile() + " guardado.", Toast.LENGTH_LONG).show();
+ Toast.makeText(getApplicationContext(), boardItemFile.file + " guardado.", Toast.LENGTH_LONG).show();
+ MediaScannerConnection.scanFile(this, new String[]{to.getPath()}, new String[]{"image/jpeg"}, null);
}catch (Exception e){
e.printStackTrace();
}
@@ -91,135 +116,8 @@ public class ViewerActivity extends AppCompatActivity {
return true;
}
- private void downloadFile(){
- ContextWrapper cw = new ContextWrapper(getApplicationContext());
- File directory = cw.getDir("src", Context.MODE_PRIVATE);
- final File filePath = new File(directory, bi.getParentBoard().getBoardDir() + "_" + bi.getFile());
- final ProgressBar downloadBar = (ProgressBar) findViewById(R.id.downloadProgressBar);
- if (filePath.exists()){
- downloadBar.setVisibility(View.GONE);
- if (bi.getFile().endsWith(".gif")){
- try {
- GifDrawable gifFromFile = new GifDrawable(filePath);
- gifView.setImageDrawable(gifFromFile);
- imageView.setVisibility(View.GONE);
- }catch(Exception e){
- e.printStackTrace();
- }
- }else{
- imageView.setImage(ImageSource.uri(filePath.toURI().getPath()));
- gifView.setVisibility(View.GONE);
- }
- }
- Ion.with(getApplicationContext())
- .load("http://bienvenidoainternet.org/" + bi.getParentBoard().getBoardDir() + "/src/" + bi.getFile())
- .progressBar(downloadBar)
- .asInputStream()
- .setCallback(new FutureCallback<InputStream>() {
- @Override
- public void onCompleted(Exception e, InputStream result) {
- downloadBar.setVisibility(View.GONE);
- if (e != null){
- e.printStackTrace();
- }else{
- FileOutputStream fout;
- try {
- fout = new FileOutputStream(filePath);
- final byte data[] = new byte[1024];
- int count;
- while ((count = result.read(data, 0, 1024)) != -1) {
- fout.write(data, 0, count);
- }
- }catch(Exception e1) {
- e1.printStackTrace();
- }
- if (bi.getFile().endsWith(".gif")){
- try {
- GifDrawable gifFromFile = new GifDrawable(filePath);
- gifView.setImageDrawable(gifFromFile);
- imageView.setVisibility(View.GONE);
- }catch(Exception e2){
- e2.printStackTrace();
- }
- }else{
- imageView.setImage(ImageSource.uri(filePath.toURI().getPath()));
- gifView.setVisibility(View.GONE);
- }
- }
- }
- });
- }
-
- class TaskDownloadFile extends AsyncTask<Void, Void, File> {
-
- @Override
- protected File doInBackground(Void... params) {
- Bitmap downloadedBitmap = null;
- ContextWrapper cw = new ContextWrapper(getApplicationContext());
- File directory = cw.getDir("src", Context.MODE_PRIVATE);
- File mypath = new File(directory, bi.getParentBoard().getBoardDir() + "_" + bi.getFile());
- if (mypath.exists()){
- System.out.println("[Viewer] resource exist!");
- return mypath;
- }
- try {
- String sUrl = "http://bienvenidoainternet.org/" + bi.getParentBoard().getBoardDir() + "/src/" + bi.getFile();
- System.out.println("[Viewer]dwonloading " + sUrl);
-// System.out.println(sUrl);
- InputStream in = new java.net.URL(sUrl).openStream();
-// downloadedBitmap = BitmapFactory.decodeStream(in);
-
-// if (downloadedBitmap != null){
- FileOutputStream fout = null;
- try {
-// in = new BufferedInputStream(new URL(urlString).openStream());
- fout = new FileOutputStream(mypath);
-
- final byte data[] = new byte[1024];
- int count;
- while ((count = in.read(data, 0, 1024)) != -1) {
- fout.write(data, 0, count);
- }
-
-
- }catch(Exception e){
- e.printStackTrace();
- }finally {
- if (in != null) {
- in.close();
- }
- if (fout != null) {
- fout.close();
- }
- }
-// }
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- return mypath;
- }
-
- @Override
- protected void onPostExecute(File file) {
- super.onPostExecute(file);
- imagePath = file;
-// iv.setImageBitmap(bitmap);
- if (bi.getFile().endsWith(".gif")){
- try {
- GifDrawable gifFromFile = new GifDrawable(file);
- gifView.setImageDrawable(gifFromFile);
- imageView.setVisibility(View.GONE);
- }catch(Exception e){
- e.printStackTrace();
- }
- }else{
- imageView.setImage(ImageSource.uri(file.toURI().getPath()));
- gifView.setVisibility(View.GONE);
-// imageView.setImage(ImageSource.resource(R.drawable.bai));
-// System.out.println("not a gif file: " + file.toURI().getPath());
- }
+ @Override
+ public void onFragmentInteraction(Uri uri) {
- }
}
}
diff --git a/app/src/main/java/org/bienvenidoainternet/baiparser/structure/BoardItemFile.java b/app/src/main/java/org/bienvenidoainternet/baiparser/structure/BoardItemFile.java
new file mode 100644
index 0000000..eeff1c4
--- /dev/null
+++ b/app/src/main/java/org/bienvenidoainternet/baiparser/structure/BoardItemFile.java
@@ -0,0 +1,49 @@
+package org.bienvenidoainternet.baiparser.structure;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * Created by Renard on 08-04-2016.
+ */
+public class BoardItemFile implements Parcelable{
+ public String file;
+ public String fileURL;
+ public String boardDir;
+
+ public BoardItemFile(String fileURL, String file, String boardDir){
+ this.fileURL = fileURL;
+ this.file = file;
+ this.boardDir = boardDir;
+ }
+
+ protected BoardItemFile(Parcel in) {
+ file = in.readString();
+ fileURL = in.readString();
+ boardDir = in.readString();
+ }
+
+ public static final Creator<BoardItemFile> CREATOR = new Creator<BoardItemFile>() {
+ @Override
+ public BoardItemFile createFromParcel(Parcel in) {
+ return new BoardItemFile(in);
+ }
+
+ @Override
+ public BoardItemFile[] newArray(int size) {
+ return new BoardItemFile[size];
+ }
+ };
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeString(file);
+ dest.writeString(fileURL);
+ dest.writeString(boardDir);
+ }
+}
diff --git a/app/src/main/res/layout/activity_viewer.xml b/app/src/main/res/layout/activity_viewer.xml
index b66e66b..7febe39 100644
--- a/app/src/main/res/layout/activity_viewer.xml
+++ b/app/src/main/res/layout/activity_viewer.xml
@@ -4,21 +4,19 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="org.bienvenidoainternet.baiparser.ViewerActivity">
-
- <com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
- android:id="@+id/imageView"
- android:layout_width="match_parent"
- android:layout_height="match_parent"/>
- <pl.droidsonroids.gif.GifImageView
- android:id="@+id/gifView"
- android:layout_width="match_parent"
- android:layout_height="match_parent"/>
-
<ProgressBar
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/downloadProgressBar"
android:layout_alignParentTop="true"
- android:layout_centerHorizontal="true" />
+ android:layout_alignParentLeft="true"
+ android:layout_alignParentStart="true" />
+ <android.support.v4.view.ViewPager
+ android:id="@+id/imagePager"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_below="@+id/downloadProgressBar"
+ android:layout_alignParentLeft="true"
+ android:layout_alignParentStart="true" />
</RelativeLayout>
diff --git a/app/src/main/res/layout/fragment_fragment_image.xml b/app/src/main/res/layout/fragment_fragment_image.xml
new file mode 100644
index 0000000..093508a
--- /dev/null
+++ b/app/src/main/res/layout/fragment_fragment_image.xml
@@ -0,0 +1,15 @@
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ tools:context="layout.FragmentImage">
+
+ <com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
+ android:id="@+id/imageView"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"/>
+ <pl.droidsonroids.gif.GifImageView
+ android:id="@+id/gifView"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"/>
+</FrameLayout>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 7fa3e34..f5be573 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -73,4 +73,7 @@
<string name="title_activity_settings">Opciones</string>
+ <!-- TODO: Remove or change this placeholder text -->
+ <string name="hello_blank_fragment">Hello blank fragment</string>
+
</resources>