diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index bd1f753fc..e5cd2b8d8 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -107,6 +107,7 @@
+
diff --git a/AndroidManifest.xml.pattern b/AndroidManifest.xml.pattern
index c22dcc63c..0e1a19586 100644
--- a/AndroidManifest.xml.pattern
+++ b/AndroidManifest.xml.pattern
@@ -107,6 +107,7 @@
+
diff --git a/res/layout/style_item.xml b/res/layout/style_item.xml
index 3f1c0fb96..885821c5e 100644
--- a/res/layout/style_item.xml
+++ b/res/layout/style_item.xml
@@ -3,16 +3,27 @@
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
+ android:paddingLeft="5dip"
+ android:paddingRight="8dp"
android:orientation="horizontal"
>
+
+
diff --git a/src/org/geometerplus/android/fbreader/SelectionBookmarkAction.java b/src/org/geometerplus/android/fbreader/SelectionBookmarkAction.java
index 9fbed96e9..23c9c7ab9 100644
--- a/src/org/geometerplus/android/fbreader/SelectionBookmarkAction.java
+++ b/src/org/geometerplus/android/fbreader/SelectionBookmarkAction.java
@@ -19,6 +19,8 @@
package org.geometerplus.android.fbreader;
+import android.content.Intent;
+
import org.geometerplus.zlibrary.core.resources.ZLResource;
import org.geometerplus.fbreader.book.Bookmark;
@@ -40,6 +42,9 @@ public class SelectionBookmarkAction extends FBAndroidAction {
ZLResource.resource("selection").getResource("bookmarkCreated").getValue()
.replace("%s", bookmark.getText())
);
- //final Intent styleIntent = new Intent();
+ final Intent intent =
+ new Intent(BaseActivity.getApplicationContext(), StyleListActivity.class);
+ intent.putExtra(FBReader.BOOKMARK_KEY, SerializerUtil.serialize(bookmark));
+ OrientationUtil.startActivity(BaseActivity, intent);
}
}
diff --git a/src/org/geometerplus/android/fbreader/StyleListActivity.java b/src/org/geometerplus/android/fbreader/StyleListActivity.java
index 06757825a..5ae37d9e4 100644
--- a/src/org/geometerplus/android/fbreader/StyleListActivity.java
+++ b/src/org/geometerplus/android/fbreader/StyleListActivity.java
@@ -19,6 +19,9 @@
package org.geometerplus.android.fbreader;
+import java.util.ArrayList;
+import java.util.List;
+
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
@@ -27,34 +30,63 @@ import android.view.*;
import org.geometerplus.zlibrary.ui.android.R;
+import org.geometerplus.fbreader.book.*;
+
+import org.geometerplus.android.fbreader.libraryService.BookCollectionShadow;
+
public class StyleListActivity extends ListActivity {
- static final String LIST_SIZE = "listSize";
- static final String ITEM_TITLE = "title";
- static final String ITEM_SUMMARY = "summary";
+ private final BookCollectionShadow myCollection = new BookCollectionShadow();
+ private Bookmark myBookmark;
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
requestWindowFeature(Window.FEATURE_NO_TITLE);
- final ActionListAdapter adapter = new ActionListAdapter(getIntent());
- setListAdapter(adapter);
- getListView().setOnItemClickListener(adapter);
- setResult(-1);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ myCollection.bindToService(this, new Runnable() {
+ public void run() {
+ myBookmark = SerializerUtil.deserializeBookmark(
+ getIntent().getStringExtra(FBReader.BOOKMARK_KEY)
+ );
+ if (myBookmark == null) {
+ finish();
+ return;
+ }
+ final List styles = myCollection.highlightingStyles();
+ if (styles.isEmpty()) {
+ finish();
+ return;
+ }
+ final ActionListAdapter adapter = new ActionListAdapter(styles);
+ setListAdapter(adapter);
+ getListView().setOnItemClickListener(adapter);
+ }
+ });
+ }
+
+ @Override
+ protected void onDestroy() {
+ myCollection.unbind();
+ super.onDestroy();
}
private class ActionListAdapter extends BaseAdapter implements AdapterView.OnItemClickListener {
- private final Intent myIntent;
+ private final List myStyles;
- ActionListAdapter(Intent intent) {
- myIntent = intent;
+ ActionListAdapter(List styles) {
+ myStyles = new ArrayList(styles);
}
public final int getCount() {
- return myIntent.getIntExtra(LIST_SIZE, 0);
+ return myStyles.size();
}
- public final Integer getItem(int position) {
- return position;
+ public final HighlightingStyle getItem(int position) {
+ return myStyles.get(position);
}
public final long getItemId(int position) {
@@ -64,30 +96,21 @@ public class StyleListActivity extends ListActivity {
public View getView(int position, View convertView, final ViewGroup parent) {
final View view = convertView != null
? convertView
- : LayoutInflater.from(parent.getContext()).inflate(R.layout.cancel_item, parent, false);
- final TextView titleView = (TextView)view.findViewById(R.id.cancel_item_title);
- final TextView summaryView = (TextView)view.findViewById(R.id.cancel_item_summary);
- final String title = myIntent.getStringExtra(ITEM_TITLE + position);
- final String summary = myIntent.getStringExtra(ITEM_SUMMARY + position);
+ : LayoutInflater.from(parent.getContext()).inflate(R.layout.style_item, parent, false);
+ final TextView titleView = (TextView)view.findViewById(R.id.style_item_title);
+ final String title = "Style " + getItem(position).Id;
titleView.setText(title);
- if (summary != null) {
- summaryView.setVisibility(View.VISIBLE);
- summaryView.setText(summary);
- titleView.setLayoutParams(new LinearLayout.LayoutParams(
- LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT
- ));
- } else {
- summaryView.setVisibility(View.GONE);
- titleView.setLayoutParams(new LinearLayout.LayoutParams(
- LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT
- ));
- }
return view;
}
- public final void onItemClick(AdapterView> parent, View view, int position, long id) {
- setResult((int)id + 1);
- finish();
+ public final void onItemClick(AdapterView> parent, View view, final int position, long id) {
+ myCollection.bindToService(StyleListActivity.this, new Runnable() {
+ public void run() {
+ myBookmark.setStyleId(getItem(position).Id);
+ myCollection.saveBookmark(myBookmark);
+ finish();
+ }
+ });
}
}
}
diff --git a/src/org/geometerplus/android/fbreader/libraryService/SQLiteBooksDatabase.java b/src/org/geometerplus/android/fbreader/libraryService/SQLiteBooksDatabase.java
index 94eaad3a4..6ea2b8d20 100644
--- a/src/org/geometerplus/android/fbreader/libraryService/SQLiteBooksDatabase.java
+++ b/src/org/geometerplus/android/fbreader/libraryService/SQLiteBooksDatabase.java
@@ -898,14 +898,14 @@ final class SQLiteBooksDatabase extends BooksDatabase {
if (bookmark.getId() == -1) {
if (myInsertBookmarkStatement == null) {
myInsertBookmarkStatement = myDatabase.compileStatement(
- "INSERT OR IGNORE INTO Bookmarks (book_id,bookmark_text,creation_time,modification_time,access_time,access_counter,model_id,paragraph,word,char,end_paragraph,end_word,end_character,visible) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
+ "INSERT OR IGNORE INTO Bookmarks (book_id,bookmark_text,creation_time,modification_time,access_time,access_counter,model_id,paragraph,word,char,end_paragraph,end_word,end_character,visible,style_id) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
);
}
statement = myInsertBookmarkStatement;
} else {
if (myUpdateBookmarkStatement == null) {
myUpdateBookmarkStatement = myDatabase.compileStatement(
- "UPDATE Bookmarks SET book_id = ?, bookmark_text = ?, creation_time =?, modification_time = ?,access_time = ?, access_counter = ?, model_id = ?, paragraph = ?, word = ?, char = ?, end_paragraph = ?, end_word = ?, end_character = ?, visible = ? WHERE bookmark_id = ?"
+ "UPDATE Bookmarks SET book_id = ?, bookmark_text = ?, creation_time =?, modification_time = ?,access_time = ?, access_counter = ?, model_id = ?, paragraph = ?, word = ?, char = ?, end_paragraph = ?, end_word = ?, end_character = ?, visible = ?, style_id = ? WHERE bookmark_id = ?"
);
}
statement = myUpdateBookmarkStatement;
@@ -932,12 +932,13 @@ final class SQLiteBooksDatabase extends BooksDatabase {
statement.bindNull(13);
}
statement.bindLong(14, bookmark.IsVisible ? 1 : 0);
+ statement.bindLong(15, bookmark.getStyleId());
if (statement == myInsertBookmarkStatement) {
return statement.executeInsert();
} else {
final long id = bookmark.getId();
- statement.bindLong(12, id);
+ statement.bindLong(16, id);
statement.execute();
return id;
}
diff --git a/src/org/geometerplus/fbreader/book/Bookmark.java b/src/org/geometerplus/fbreader/book/Bookmark.java
index 4c5d9a4d5..f84206005 100644
--- a/src/org/geometerplus/fbreader/book/Bookmark.java
+++ b/src/org/geometerplus/fbreader/book/Bookmark.java
@@ -257,6 +257,10 @@ mainLoop:
return myStyleId;
}
+ public void setStyleId(int styleId) {
+ myStyleId = styleId;
+ }
+
public String getText() {
return myText;
}