diff options
author | Renard | 2016-04-08 20:14:59 -0300 |
---|---|---|
committer | Renard | 2016-04-08 20:14:59 -0300 |
commit | fe76420bfc927ee5fc002215724c09a6d2d614c2 (patch) | |
tree | 01f9dcb98b8cb78570ab223f0fcac2fe79f6c46e | |
parent | e92d1607eb9e71951928155cea53d65b7c665726 (diff) | |
download | BaiApp-fe76420bfc927ee5fc002215724c09a6d2d614c2.tar.gz BaiApp-fe76420bfc927ee5fc002215724c09a6d2d614c2.tar.xz BaiApp-fe76420bfc927ee5fc002215724c09a6d2d614c2.zip |
Nuevo visor de imágenes
-rw-r--r-- | app/build.gradle | 5 | ||||
-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.java | 197 | ||||
-rw-r--r-- | app/src/main/java/org/bienvenidoainternet/baiparser/MainActivity.java | 24 | ||||
-rw-r--r-- | app/src/main/java/org/bienvenidoainternet/baiparser/ThreadListAdapter.java | 27 | ||||
-rw-r--r-- | app/src/main/java/org/bienvenidoainternet/baiparser/ViewerActivity.java | 204 | ||||
-rw-r--r-- | app/src/main/java/org/bienvenidoainternet/baiparser/structure/BoardItemFile.java | 49 | ||||
-rw-r--r-- | app/src/main/res/layout/activity_viewer.xml | 20 | ||||
-rw-r--r-- | app/src/main/res/layout/fragment_fragment_image.xml | 15 | ||||
-rw-r--r-- | app/src/main/res/values/strings.xml | 3 |
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> |