summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2012-10-14 10:52:00 +0400
committerAndrew Dolgov <[email protected]>2012-10-14 10:52:00 +0400
commitacf5bb61b1d71ad582619384d4c3326970645efd (patch)
tree49df47e99d4407e67cee914b768bb92e348019e6 /src
parentd81003594c647261967951cb874dfb540c1e50bc (diff)
implement sharing, page numbers, and other stuff
Diffstat (limited to 'src')
-rw-r--r--src/org/fox/ttcomics/ComicFragment.java17
-rw-r--r--src/org/fox/ttcomics/ComicListFragment.java16
-rw-r--r--src/org/fox/ttcomics/ComicPager.java11
-rw-r--r--src/org/fox/ttcomics/CommonActivity.java12
-rw-r--r--src/org/fox/ttcomics/MainActivity.java1
-rw-r--r--src/org/fox/ttcomics/ViewComicActivity.java68
6 files changed, 98 insertions, 27 deletions
diff --git a/src/org/fox/ttcomics/ComicFragment.java b/src/org/fox/ttcomics/ComicFragment.java
index 1fa585e..9aa42e8 100644
--- a/src/org/fox/ttcomics/ComicFragment.java
+++ b/src/org/fox/ttcomics/ComicFragment.java
@@ -14,20 +14,23 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
+import android.widget.TextView;
public class ComicFragment extends Fragment {
private final String TAG = this.getClass().getSimpleName();
private SharedPreferences m_prefs;
private Bitmap m_comic;
+ private int m_page;
public ComicFragment() {
super();
}
- public ComicFragment(InputStream is) {
+ public ComicFragment(InputStream is, int page) {
super();
m_comic = BitmapFactory.decodeStream(is);
+ m_page = page;
}
@Override
@@ -39,6 +42,7 @@ public class ComicFragment extends Fragment {
if (savedInstanceState != null) {
m_comic = savedInstanceState.getParcelable("comic");
+ m_page = savedInstanceState.getInt("page");
}
if (m_comic != null) {
@@ -49,11 +53,19 @@ public class ComicFragment extends Fragment {
public void onScaleChanged(float scale) {
ViewPager pager = (ViewPager) getActivity().findViewById(R.id.comics_pager);
- pager.setPagingEnabled(scale - 1.0f < 0.01);
+ if (pager != null) {
+ pager.setPagingEnabled(scale - 1.0f < 0.01);
+ }
}
});
}
+ TextView page = (TextView) view.findViewById(R.id.comic_page);
+
+ if (page != null) {
+ page.setText(String.valueOf(m_page));
+ }
+
return view;
}
@@ -70,6 +82,7 @@ public class ComicFragment extends Fragment {
super.onSaveInstanceState(out);
out.putParcelable("comic", m_comic);
+ out.putInt("page", m_page);
}
}
diff --git a/src/org/fox/ttcomics/ComicListFragment.java b/src/org/fox/ttcomics/ComicListFragment.java
index 4fe63df..7bf20e6 100644
--- a/src/org/fox/ttcomics/ComicListFragment.java
+++ b/src/org/fox/ttcomics/ComicListFragment.java
@@ -110,8 +110,8 @@ public class ComicListFragment extends Fragment implements OnItemClickListener {
}
}
- File thumbnailFile = new File(CommonActivity.getCacheFileName(file.getAbsolutePath()));
-
+ File thumbnailFile = new File(m_activity.getCacheFileName(file.getAbsolutePath()));
+
ImageView thumbnail = (ImageView) v.findViewById(R.id.thumbnail);
if (thumbnail != null) {
@@ -261,14 +261,10 @@ public class ComicListFragment extends Fragment implements OnItemClickListener {
try {
InputStream is = cba.getItem(0);
- File thumbnailDir = new File(storage.getAbsolutePath() + "/" + m_activity.THUMBNAIL_PATH);
-
- if (!thumbnailDir.isDirectory()) { thumbnailDir.mkdirs(); };
-
- File thumbnailFile = new File(CommonActivity.getCacheFileName(filePath));
-
- if (thumbnailDir.isDirectory() && !thumbnailFile.exists()) {
- FileOutputStream fos = new FileOutputStream(thumbnailFile.getAbsolutePath());
+ File thumbnailFile = new File(m_activity.getCacheFileName(filePath));
+
+ if (!thumbnailFile.exists() || fullRescan) {
+ FileOutputStream fos = new FileOutputStream(thumbnailFile);
byte[] buffer = new byte[1024];
int len = 0;
diff --git a/src/org/fox/ttcomics/ComicPager.java b/src/org/fox/ttcomics/ComicPager.java
index 08e9c65..233fa59 100644
--- a/src/org/fox/ttcomics/ComicPager.java
+++ b/src/org/fox/ttcomics/ComicPager.java
@@ -18,7 +18,7 @@ public class ComicPager extends Fragment {
private String m_fileName;
private SharedPreferences m_prefs;
private final String TAG = this.getClass().getSimpleName();
- private CbzComicArchive m_archive;
+ private ComicArchive m_archive;
private CommonActivity m_activity;
private class PagerAdapter extends FragmentStatePagerAdapter {
@@ -29,7 +29,7 @@ public class ComicPager extends Fragment {
@Override
public Fragment getItem(int position) {
try {
- return new ComicFragment(m_archive.getItem(position));
+ return new ComicFragment(m_archive.getItem(position), position+1);
} catch (IOException e) {
// TODO Auto-generated catch block
@@ -52,6 +52,10 @@ public class ComicPager extends Fragment {
super();
}
+ public ComicArchive getArchive() {
+ return m_archive;
+ }
+
public int getCount() {
return m_adapter.getCount();
}
@@ -105,7 +109,8 @@ public class ComicPager extends Fragment {
pager.setAdapter(m_adapter);
pager.setCurrentItem(position);
- m_activity.setProgress(Math.round(((float)position / (float)m_archive.getCount()) * 10000));
+
+ m_activity.onComicSelected(m_fileName, position);
} catch (IOException e) {
diff --git a/src/org/fox/ttcomics/CommonActivity.java b/src/org/fox/ttcomics/CommonActivity.java
index 933778e..c0a2d01 100644
--- a/src/org/fox/ttcomics/CommonActivity.java
+++ b/src/org/fox/ttcomics/CommonActivity.java
@@ -4,6 +4,7 @@ import java.io.File;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
+import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
@@ -13,14 +14,13 @@ import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.view.Display;
import android.view.MenuItem;
+import android.widget.ShareActionProvider;
public class CommonActivity extends FragmentActivity {
private final String TAG = this.getClass().getSimpleName();
protected static final String FRAG_COMICS_PAGER = "comic_pager";
protected static final String FRAG_COMICS_LIST = "comics_list";
-
- public static final String THUMBNAIL_PATH = "/data/org.fox.ttcomics/thumbnails/";
protected SharedPreferences m_prefs;
@@ -152,12 +152,10 @@ public class CommonActivity extends FragmentActivity {
return null;
}
- public static String getCacheFileName(String fileName) {
- String hashedUrl = md5(fileName);
-
- File storage = Environment.getExternalStorageDirectory();
+ public String getCacheFileName(String fileName) {
+ String hash = md5(fileName);
- File file = new File(storage.getAbsolutePath() + THUMBNAIL_PATH + "/" + hashedUrl + ".png");
+ File file = new File(getExternalCacheDir().getAbsolutePath() + "/" + hash + ".png");
return file.getAbsolutePath();
}
diff --git a/src/org/fox/ttcomics/MainActivity.java b/src/org/fox/ttcomics/MainActivity.java
index d0ffda1..38b22a5 100644
--- a/src/org/fox/ttcomics/MainActivity.java
+++ b/src/org/fox/ttcomics/MainActivity.java
@@ -15,6 +15,7 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.ViewGroup;
import android.view.Window;
+import android.widget.ShareActionProvider;
public class MainActivity extends CommonActivity {
private final String TAG = this.getClass().getSimpleName();
diff --git a/src/org/fox/ttcomics/ViewComicActivity.java b/src/org/fox/ttcomics/ViewComicActivity.java
index c8cac2c..b0d6db2 100644
--- a/src/org/fox/ttcomics/ViewComicActivity.java
+++ b/src/org/fox/ttcomics/ViewComicActivity.java
@@ -1,10 +1,15 @@
package org.fox.ttcomics;
import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
+import android.content.Intent;
+import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
import android.util.Log;
@@ -13,12 +18,14 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
+import android.view.WindowManager;
import android.widget.NumberPicker;
public class ViewComicActivity extends CommonActivity {
private final String TAG = this.getClass().getSimpleName();
private String m_fileName;
+ private Menu m_menu;
@SuppressLint("NewApi")
@Override
@@ -43,11 +50,20 @@ public class ViewComicActivity extends CommonActivity {
getActionBar().setDisplayHomeAsUpEnabled(true);
setTitle(new File(m_fileName).getName());
+
+ if (m_prefs.getBoolean("use_full_screen", false)) {
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
+ WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ }
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_view_comic, menu);
+
+ m_menu = menu;
+
+ //updateMenu();
return true;
}
@@ -58,10 +74,55 @@ public class ViewComicActivity extends CommonActivity {
out.putString("fileName", m_fileName);
}
+ @Override
+ public void onComicSelected(String fileName, int position) {
+ super.onComicSelected(fileName, position);
+
+ //updateMenu();
+ }
+
+ private void shareComic() {
+
+ ComicPager pager = (ComicPager) getSupportFragmentManager().findFragmentByTag(FRAG_COMICS_PAGER);
+
+ if (pager != null) {
+
+ try {
+ File tmpFile = File.createTempFile("ttshare", ".png");
+
+ InputStream is = pager.getArchive().getItem(pager.getPosition());
+ FileOutputStream fos = new FileOutputStream(tmpFile);
+
+ byte[] buffer = new byte[1024];
+ int len = 0;
+ while ((len = is.read(buffer)) != -1) {
+ fos.write(buffer, 0, len);
+ }
+
+ fos.close();
+ is.close();
+
+ Intent shareIntent = new Intent(Intent.ACTION_SEND);
+
+ shareIntent.setType("image/jpeg");
+ shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(tmpFile));
+
+ startActivity(Intent.createChooser(shareIntent, "Share comic"));
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+ }
+
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
- case R.id.menu_go_location:
-
+ case R.id.menu_share:
+ shareComic();
+ return true;
+ case R.id.menu_go_location:
Dialog dialog = new Dialog(ViewComicActivity.this);
AlertDialog.Builder builder = new AlertDialog.Builder(ViewComicActivity.this)
.setTitle("Go to...")
@@ -131,9 +192,6 @@ public class ViewComicActivity extends CommonActivity {
dialog = builder.create();
dialog.show();
-
-
- // TODO display dialog: Beginning, Page..., Last unread
return true;
case android.R.id.home: