aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/layout
diff options
context:
space:
mode:
authorLibravatar Renard1911 2016-04-11 17:52:55 -0300
committerLibravatar Renard1911 2016-04-11 17:52:55 -0300
commitc94f0e1d27f0a92a17b2e65363bdce6461249d95 (patch)
tree6990d471d884ad87a2be9234e40fd2a91f6bb827 /app/src/main/java/layout
parent0f3adf23154e6d7e0eaced70a31676d71bef8e34 (diff)
parent90ee611af8ba4c38e70f27eb0df55e9134ad625c (diff)
downloadBaiApp-1.6.0.tar.gz
BaiApp-1.6.0.tar.xz
BaiApp-1.6.0.zip
Merge pull request #1 from Renard1911/devv1.6.0
Dev
Diffstat (limited to 'app/src/main/java/layout')
-rw-r--r--app/src/main/java/layout/FragmentBoardItemList.java (renamed from app/src/main/java/layout/fragmentThreadList.java)20
-rw-r--r--app/src/main/java/layout/FragmentImage.java211
2 files changed, 224 insertions, 7 deletions
diff --git a/app/src/main/java/layout/fragmentThreadList.java b/app/src/main/java/layout/FragmentBoardItemList.java
index c06fd93..149def3 100644
--- a/app/src/main/java/layout/fragmentThreadList.java
+++ b/app/src/main/java/layout/FragmentBoardItemList.java
@@ -38,6 +38,7 @@ import org.bienvenidoainternet.baiparser.MainActivity;
import org.bienvenidoainternet.baiparser.R;
import org.bienvenidoainternet.baiparser.RecentPostAdapter;
import org.bienvenidoainternet.baiparser.ResponseActivity;
+import org.bienvenidoainternet.baiparser.ThemeManager;
import org.bienvenidoainternet.baiparser.ThreadListAdapter;
import org.bienvenidoainternet.baiparser.structure.Board;
import org.bienvenidoainternet.baiparser.structure.BoardItem;
@@ -55,7 +56,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 +81,15 @@ public class fragmentThreadList extends Fragment {
LinearLayout layoutThreadProcess;
TextView txtThreadProcess;
- public fragmentThreadList() {
+ ThemeManager tm;
+
+ 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);
@@ -104,6 +107,7 @@ public class fragmentThreadList extends Fragment {
this.currentThread = getArguments().getParcelable(ARG_CURRENT_THREAD);
this.imMainFragment = getArguments().getBoolean(ARG_MAIN_FRAGMENT);
}
+ tm = new ThemeManager(getActivity());
}
@Override
@@ -130,7 +134,7 @@ public class fragmentThreadList extends Fragment {
// Aplicación del Tema
settings = PreferenceManager.getDefaultSharedPreferences(this.getContext());
- int themeResId = ((MainActivity)getActivity()).getCurrentThemeId();
+ int themeResId = tm.getCurrentThemeId();
Context context = new ContextThemeWrapper(getActivity(), themeResId);
LayoutInflater localInflater = inflater.cloneInContext(context);
View v = localInflater.inflate(R.layout.fragment_fragment_thread_list, container, false);
@@ -145,14 +149,14 @@ public class fragmentThreadList extends Fragment {
this.loadingBar = (ProgressBar)rootView.findViewById(R.id.progressBar);
// Agregamos color al divider del listview
- ColorDrawable cd = new ColorDrawable((((MainActivity) getActivity()).themeManager).getMarginColor());
+ ColorDrawable cd = new ColorDrawable(tm.getMarginColor());
listViewBoardItems.setDivider(cd);
listViewBoardItems.setDividerHeight(1);
// registramos los menus del listview
registerForContextMenu(listViewBoardItems);
// Creamos los dos adaptadores y los seteamos dependiendo del modo del fragmento
- listViewAdapter = new ThreadListAdapter(v.getContext(), boardItems, (((MainActivity) getActivity()).themeManager));
+ listViewAdapter = new ThreadListAdapter(v.getContext(), boardItems, tm);
recentPostAdapter = new RecentPostAdapter(v.getContext(), boardItems);
if (recentPostMode){
listViewBoardItems.setAdapter(recentPostAdapter);
@@ -517,6 +521,7 @@ public class fragmentThreadList extends Fragment {
}
}
listViewAdapter.notifyDataSetChanged();
+ listViewAdapter.updateBoardItems(boardItems);
loadingMoreThreads = false;
if (boardItems.isEmpty()){
mListener.updateToolbar(currentBoard, currentThread);
@@ -610,6 +615,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..f337e5f
--- /dev/null
+++ b/app/src/main/java/layout/FragmentImage.java
@@ -0,0 +1,211 @@
+package layout;
+
+import android.content.Context;
+import android.content.ContextWrapper;
+import android.content.Intent;
+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.Button;
+import android.widget.ProgressBar;
+import android.widget.RelativeLayout;
+
+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.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);
+ RelativeLayout layoutOpenBrowser = (RelativeLayout) view.findViewById(R.id.layoutOpenBrowser);
+ if (boardItemFile.file != null) {
+ if (!boardItemFile.file.endsWith(".webm") && !boardItemFile.file.endsWith(".swf")) {
+ layoutOpenBrowser.setVisibility(View.GONE);
+ downloadFile();
+ }else{
+ layoutOpenBrowser.setVisibility(View.VISIBLE);
+ }
+ }
+ Button btnOpenBrowser = (Button) view.findViewById(R.id.btnLaunchBrowser);
+ btnOpenBrowser.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent in = new Intent(Intent.ACTION_VIEW, Uri.parse(boardItemFile.fileURL));
+ in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ v.getContext().startActivity(in);
+ }
+ });
+ 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);
+ }
+ }
+ }
+ });
+ }
+}