summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--res/layout/fragment_comic.xml16
-rw-r--r--res/menu/activity_view_comic.xml5
-rw-r--r--res/values/strings.xml2
-rw-r--r--res/xml/preferences.xml6
-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
10 files changed, 123 insertions, 31 deletions
diff --git a/res/layout/fragment_comic.xml b/res/layout/fragment_comic.xml
index 1bc0b35..7cac0d4 100644
--- a/res/layout/fragment_comic.xml
+++ b/res/layout/fragment_comic.xml
@@ -3,11 +3,19 @@
android:id="@+id/FrameLayout3"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
-
+
<org.fox.ttcomics.TouchImageView
android:id="@+id/comic_image"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- />
-
+ android:layout_height="match_parent" />
+
+ <TextView
+ android:id="@+id/comic_page"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="bottom|right"
+ android:layout_margin="4dp"
+ android:alpha="0.25"
+ android:text="25" />
+
</FrameLayout> \ No newline at end of file
diff --git a/res/menu/activity_view_comic.xml b/res/menu/activity_view_comic.xml
index de8e7ae..07bc560 100644
--- a/res/menu/activity_view_comic.xml
+++ b/res/menu/activity_view_comic.xml
@@ -7,5 +7,10 @@
<item android:id="@+id/menu_go_location"
android:title="@string/menu_go_location"
android:showAsAction="never" />
+
+ <item android:id="@+id/menu_share"
+ android:title="@string/menu_share"
+ android:icon="@android:drawable/ic_menu_share"
+ android:showAsAction="ifRoom" />
</menu>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index d544724..719c277 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -26,4 +26,6 @@
<string name="dialog_location_location">Location…</string>
<string name="dialog_location_end">End</string>
<string name="tab_unfinished">Unfinished</string>
+ <string name="menu_share">Share</string>
+ <string name="prefs_use_full_screen">Fullscreen mode</string>
</resources> \ No newline at end of file
diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml
index fa8a8f5..5211394 100644
--- a/res/xml/preferences.xml
+++ b/res/xml/preferences.xml
@@ -19,5 +19,11 @@
android:defaultValue="false"
android:key="dim_status_bar"
android:title="@string/prefs_dim_status_bar" />
+
+ <CheckBoxPreference
+ android:defaultValue="false"
+ android:key="use_full_screen"
+ android:title="@string/prefs_use_full_screen" />
+
</PreferenceCategory>
</PreferenceScreen> \ No newline at end of file
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: