diff options
Diffstat (limited to 'app/src/main/java/org/bienvenidoainternet/baiparser')
8 files changed, 243 insertions, 231 deletions
diff --git a/app/src/main/java/org/bienvenidoainternet/baiparser/LicensesActivity.java b/app/src/main/java/org/bienvenidoainternet/baiparser/LicensesActivity.java index b91ce2b..575754a 100644 --- a/app/src/main/java/org/bienvenidoainternet/baiparser/LicensesActivity.java +++ b/app/src/main/java/org/bienvenidoainternet/baiparser/LicensesActivity.java @@ -1,7 +1,7 @@ package org.bienvenidoainternet.baiparser; -import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; import android.webkit.WebView; public class LicensesActivity extends AppCompatActivity { @@ -9,7 +9,10 @@ public class LicensesActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + ThemeManager tm = new ThemeManager(this); + this.setTheme(tm.getThemeForActivity()); setContentView(R.layout.activity_licenses); + getSupportActionBar().setTitle("Acerca de BaI App"); WebView webView = (WebView) findViewById(R.id.webView); webView.loadUrl("file:///android_asset/html/licenses.html"); } diff --git a/app/src/main/java/org/bienvenidoainternet/baiparser/MainActivity.java b/app/src/main/java/org/bienvenidoainternet/baiparser/MainActivity.java index 65b51e2..18d2e08 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; @@ -33,27 +31,25 @@ import com.koushikdutta.ion.Ion; import org.bienvenidoainternet.baiparser.structure.Board; import org.bienvenidoainternet.baiparser.structure.BoardItem; +import org.json.JSONArray; import org.json.JSONException; 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<>(); @@ -83,46 +79,25 @@ public class MainActivity extends AppCompatActivity @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + ThemeManager tm = new ThemeManager(this); + this.setTheme(tm.getThemeForMainActivity()); if (savedInstanceState != null) { currentThemeId = savedInstanceState.getInt("currentThemeId"); boardList = savedInstanceState.getParcelableArrayList("boardList"); } SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this); - themeId = Integer.valueOf(settings.getString("pref_theme", "1")); - if (settings.getString("pref_password", "").isEmpty()){ SharedPreferences.Editor edit = settings.edit(); edit.putString("pref_password", makePassword()); edit.commit(); } - switch (themeId) { - case 1: - currentThemeId = R.style.AppTheme_NoActionBar; - break; - case 2: - currentThemeId = R.style.AppTheme_Dark; - break; - case 3: - currentThemeId = R.style.AppTheme_HeadLine; - setTheme(R.style.AppTheme_HeadLine_Activity); - break; - case 4: - currentThemeId = R.style.AppTheme_Black; - setTheme(R.style.AppTheme_Black_Activity); - break; - } - - themeManager = new ThemeManager(this); - Log.d("ThemeManager", "isDarkTheme: " + themeManager.isDarkTheme()); - setContentView(R.layout.activity_main); toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.setTitle("Bievenido a internet"); this.setSupportActionBar(toolbar); - fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override @@ -155,20 +130,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() { @@ -380,25 +352,25 @@ public class MainActivity extends AppCompatActivity final SubMenu sub = menu.addSubMenu("Lista de Boards"); Ion.with(getApplicationContext()) .load("http://bienvenidoainternet.org/cgi/api/boards") - .asJsonObject() - .setCallback(new FutureCallback<JsonObject>() { + .asString() + .setCallback(new FutureCallback<String>() { @Override - public void onCompleted(Exception e, JsonObject result) { + public void onCompleted(Exception e, String result) { if (e != null) { e.printStackTrace(); Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show(); - } else { - JsonArray boards = result.get("boards").getAsJsonArray(); - for (int i = 0; i < boards.size(); i++) { - try { - JSONObject board = new JSONObject(boards.get(i).toString()); + }else { + try { + JSONArray boards = new JSONObject(result).getJSONArray("boards"); + for (int i = 0; i < boards.length(); i++) { + JSONObject board = boards.getJSONObject(i); Board parsedBoard = new Board(board.getString("name"), board.getString("dir"), board.getInt("board_type")); sub.add(parsedBoard.getBoardName()); boardList.add(parsedBoard); - } catch (JSONException e1) { - e1.printStackTrace(); - Toast.makeText(getApplicationContext(), "Error parsing JSON", Toast.LENGTH_LONG).show(); } + }catch (JSONException e1) { + Toast.makeText(getApplicationContext(), e1.getMessage(), Toast.LENGTH_LONG).show(); + e1.printStackTrace(); } } } diff --git a/app/src/main/java/org/bienvenidoainternet/baiparser/ResponseActivity.java b/app/src/main/java/org/bienvenidoainternet/baiparser/ResponseActivity.java index e96868a..350de99 100644 --- a/app/src/main/java/org/bienvenidoainternet/baiparser/ResponseActivity.java +++ b/app/src/main/java/org/bienvenidoainternet/baiparser/ResponseActivity.java @@ -2,12 +2,10 @@ package org.bienvenidoainternet.baiparser; import android.content.Intent; import android.content.SharedPreferences; -import android.graphics.drawable.ColorDrawable; import android.net.Uri; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.Menu; import android.view.MenuItem; @@ -45,10 +43,12 @@ public class ResponseActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + ThemeManager tm = new ThemeManager(this); + this.setTheme(tm.getThemeForActivity()); setContentView(R.layout.activity_response); + getSupportActionBar().setTitle("Respondiendo"); settings = PreferenceManager.getDefaultSharedPreferences(this); password = settings.getString("pref_password", "12345678"); - Log.v("password", password); if (savedInstanceState != null){ this.theReply = savedInstanceState.getParcelable("theReply"); diff --git a/app/src/main/java/org/bienvenidoainternet/baiparser/SettingsActivity.java b/app/src/main/java/org/bienvenidoainternet/baiparser/SettingsActivity.java index e8e7df4..eefc5fb 100644 --- a/app/src/main/java/org/bienvenidoainternet/baiparser/SettingsActivity.java +++ b/app/src/main/java/org/bienvenidoainternet/baiparser/SettingsActivity.java @@ -95,6 +95,8 @@ public class SettingsActivity extends AppCompatPreferenceActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + ThemeManager tm = new ThemeManager(this); + this.setTheme(tm.getThemeForActivity()); setupActionBar(); getFragmentManager().beginTransaction().replace(android.R.id.content, new GeneralPreferenceFragment()).commit(); } diff --git a/app/src/main/java/org/bienvenidoainternet/baiparser/ThemeManager.java b/app/src/main/java/org/bienvenidoainternet/baiparser/ThemeManager.java index 7f0be86..28c0d74 100644 --- a/app/src/main/java/org/bienvenidoainternet/baiparser/ThemeManager.java +++ b/app/src/main/java/org/bienvenidoainternet/baiparser/ThemeManager.java @@ -1,26 +1,54 @@ package org.bienvenidoainternet.baiparser; +import android.app.Activity; +import android.content.SharedPreferences; import android.content.res.TypedArray; import android.graphics.Color; +import android.preference.PreferenceManager; +import android.util.Log; /** * Created by Renard on 16-03-2016. */ public class ThemeManager { - private MainActivity ac; private int currentThemeId; - public ThemeManager(MainActivity ac){ - this.ac = ac; - this.currentThemeId = ac.getCurrentThemeId(); + private int prefThemeId; + private Activity activity; + public ThemeManager(Activity activity){ + this.activity = activity; + setCurrentThemeId(); + } + + public void setCurrentThemeId(){ + SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(activity); + int themeId = Integer.valueOf(settings.getString("pref_theme", "1")); + prefThemeId = themeId; + switch (themeId) { + case 1: + currentThemeId = R.style.AppTheme_NoActionBar; + break; + case 2: + currentThemeId = R.style.AppTheme_Dark; + break; + case 3: + currentThemeId = R.style.AppTheme_HeadLine; +// setTheme(R.style.AppTheme_HeadLine_Activity); + break; + case 4: + currentThemeId = R.style.AppTheme_Black; +// setTheme(R.style.AppTheme_Black_Activity); + break; + } + Log.d("ThemeManager", "isDarkTheme: " + isDarkTheme()); } public int getSageColor(){ - TypedArray a = ac.getTheme().obtainStyledAttributes(currentThemeId, new int[]{R.attr.sageColor}); + TypedArray a = activity.getTheme().obtainStyledAttributes(currentThemeId, new int[]{R.attr.sageColor}); return a.getColor(0, Color.CYAN); } public int getMarginColor(){ - TypedArray a = ac.getTheme().obtainStyledAttributes(currentThemeId, new int[]{R.attr.marginColor}); + TypedArray a = activity.getTheme().obtainStyledAttributes(currentThemeId, new int[]{R.attr.marginColor}); return a.getColor(0, Color.CYAN); } @@ -29,27 +57,69 @@ public class ThemeManager { } public int getNameColor() { - TypedArray a = ac.getTheme().obtainStyledAttributes(currentThemeId, new int[]{R.attr.nameColor}); + TypedArray a = activity.getTheme().obtainStyledAttributes(currentThemeId, new int[]{R.attr.nameColor}); return a.getColor(0, Color.CYAN); } public int getTripcodeColor() { - TypedArray a = ac.getTheme().obtainStyledAttributes(currentThemeId, new int[]{R.attr.tripcodeColor}); + TypedArray a = activity.getTheme().obtainStyledAttributes(currentThemeId, new int[]{R.attr.tripcodeColor}); return a.getColor(0, Color.CYAN); } public int getPrimaryColor(){ - TypedArray a = ac.getTheme().obtainStyledAttributes(currentThemeId, new int[]{R.attr.colorPrimary}); + TypedArray a = activity.getTheme().obtainStyledAttributes(currentThemeId, new int[]{R.attr.colorPrimary}); return a.getColor(0, Color.CYAN); } public int getPrimaryDarkColor(){ - TypedArray a = ac.getTheme().obtainStyledAttributes(currentThemeId, new int[]{R.attr.colorPrimaryDark}); + TypedArray a = activity.getTheme().obtainStyledAttributes(currentThemeId, new int[]{R.attr.colorPrimaryDark}); return a.getColor(0, Color.CYAN); } public boolean isDarkTheme(){ - TypedArray a = ac.getTheme().obtainStyledAttributes(currentThemeId, new int[]{R.attr.isDarkTheme}); + TypedArray a = activity.getTheme().obtainStyledAttributes(currentThemeId, new int[]{R.attr.isDarkTheme}); return a.getBoolean(0, false); } + public int getThemeForActivity(){ + int id = R.style.AppTheme; + switch (prefThemeId) { + case 1: // pseudoch + id = R.style.AppTheme; + break; + case 2: // nightmode + id = R.style.AppTheme; + break; + case 3: // photon + id = R.style.AppTheme_HeadLineActionBar; + break; + case 4: // tomorrow + id = R.style.AppTheme_BlackActionBar; + break; + } + return id; + } + + public int getThemeForMainActivity(){ + int id = R.style.AppTheme_NoActionBar; + switch (prefThemeId) { + case 1: // pseudoch + id = R.style.AppTheme_NoActionBar; + break; + case 2: // nightmode + id = R.style.AppTheme_NoActionBar; + break; + case 3: // photon + id = R.style.AppTheme_HeadLineActionBar_NoActionBar; + break; + case 4: // tomorrow + id = R.style.AppTheme_BlackActionBar_NoActionBar; + break; + } + return id; + } + + + public int getCurrentThemeId() { + return currentThemeId; + } } diff --git a/app/src/main/java/org/bienvenidoainternet/baiparser/ThreadListAdapter.java b/app/src/main/java/org/bienvenidoainternet/baiparser/ThreadListAdapter.java index 118e9c6..7a85c1f 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); } @@ -215,12 +228,21 @@ public class ThreadListAdapter extends ArrayAdapter<BoardItem>{ txtReplies.setVisibility(boardItem.isReply ? View.GONE : View.VISIBLE); txtReplies.setText(boardItem.getTotalReplies() + " respuestas " + (boardItem.getTotalFiles() == 0 ? "" : ", " + boardItem.getTotalFiles() + " archivos")); + String fileExt = ""; + if (!boardItem.getFile().isEmpty()){ + String[] pathSplit = boardItem.getFile().split("\\."); + if (pathSplit.length != 0){ + fileExt = pathSplit[1].toUpperCase(); + } + } txtFileInfo.setVisibility(boardItem.getThumb().isEmpty() ? View.GONE : View.VISIBLE); - txtFileInfo.setText((boardItem.getFileSize() / 1024) + " KB " + boardItem.getThumbHeight() + "x" + boardItem.getThumbWidth()); + txtFileInfo.setText(fileExt + " " + (boardItem.getFileSize() / 1024) + " KB " + boardItem.getThumbHeight() + "x" + boardItem.getThumbWidth()); // Trasnparentar items con sage if (convertView != null){ - convertView.setAlpha(boardItem.isSage() ? 0.75F : 1.0F); + if (settings.getBoolean("pref_transparent_sage", true)){ + convertView.setAlpha(boardItem.isSage() ? 0.75F : 1.0F); + } } /* diff --git a/app/src/main/java/org/bienvenidoainternet/baiparser/ViewerActivity.java b/app/src/main/java/org/bienvenidoainternet/baiparser/ViewerActivity.java index 4501c0f..8dc1262 100644 --- a/app/src/main/java/org/bienvenidoainternet/baiparser/ViewerActivity.java +++ b/app/src/main/java/org/bienvenidoainternet/baiparser/ViewerActivity.java @@ -2,55 +2,71 @@ 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 pl.droidsonroids.gif.GifImageView; - -public class ViewerActivity extends AppCompatActivity { - private SubsamplingScaleImageView imageView; - private GifImageView gifView; - private BoardItem bi; - File imagePath; +import layout.FragmentImage; +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.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + getSupportActionBar().setSubtitle("(" + (position + 1) + " / " + fileList.size() + ") " + fileList.get(position).file); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + imagePager.setCurrentItem(relativePosition); this.getSupportActionBar().setDisplayHomeAsUpEnabled(true); } @@ -61,9 +77,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 +92,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 +112,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); + } +} |