aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/org/bienvenidoainternet/baiparser
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 /app/src/main/java/org/bienvenidoainternet/baiparser
parente92d1607eb9e71951928155cea53d65b7c665726 (diff)
downloadBaiApp-fe76420bfc927ee5fc002215724c09a6d2d614c2.tar.gz
BaiApp-fe76420bfc927ee5fc002215724c09a6d2d614c2.tar.xz
BaiApp-fe76420bfc927ee5fc002215724c09a6d2d614c2.zip
Nuevo visor de imágenes
Diffstat (limited to 'app/src/main/java/org/bienvenidoainternet/baiparser')
-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
4 files changed, 128 insertions, 176 deletions
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);
+ }
+}