1
0
Fork 0
mirror of https://github.com/geometer/FBReaderJ.git synced 2025-10-05 10:49:24 +02:00

bookmarks refactoring

This commit is contained in:
Nikolay Pultsin 2011-01-24 00:06:17 +00:00
parent c54921db1f
commit d53b2c585c
2 changed files with 89 additions and 91 deletions

View file

@ -209,92 +209,6 @@ public class BookmarksActivity extends TabActivity implements MenuItem.OnMenuIte
return super.onContextItemSelected(item);
}
private String createBookmarkText(ZLTextWordCursor cursor) {
cursor = new ZLTextWordCursor(cursor);
final StringBuilder builder = new StringBuilder();
final StringBuilder sentenceBuilder = new StringBuilder();
final StringBuilder phraseBuilder = new StringBuilder();
int wordCounter = 0;
int sentenceCounter = 0;
int storedWordCounter = 0;
boolean lineIsNonEmpty = false;
boolean appendLineBreak = false;
mainLoop:
while ((wordCounter < 20) && (sentenceCounter < 3)) {
while (cursor.isEndOfParagraph()) {
if (!cursor.nextParagraph()) {
break mainLoop;
}
if ((builder.length() > 0) && cursor.getParagraphCursor().isEndOfSection()) {
break mainLoop;
}
if (phraseBuilder.length() > 0) {
sentenceBuilder.append(phraseBuilder);
phraseBuilder.delete(0, phraseBuilder.length());
}
if (sentenceBuilder.length() > 0) {
if (appendLineBreak) {
builder.append("\n");
}
builder.append(sentenceBuilder);
sentenceBuilder.delete(0, sentenceBuilder.length());
++sentenceCounter;
storedWordCounter = wordCounter;
}
lineIsNonEmpty = false;
if (builder.length() > 0) {
appendLineBreak = true;
}
}
final ZLTextElement element = cursor.getElement();
if (element instanceof ZLTextWord) {
final ZLTextWord word = (ZLTextWord)element;
if (lineIsNonEmpty) {
phraseBuilder.append(" ");
}
phraseBuilder.append(word.Data, word.Offset, word.Length);
++wordCounter;
lineIsNonEmpty = true;
switch (word.Data[word.Offset + word.Length - 1]) {
case ',':
case ':':
case ';':
case ')':
sentenceBuilder.append(phraseBuilder);
phraseBuilder.delete(0, phraseBuilder.length());
break;
case '.':
case '!':
case '?':
++sentenceCounter;
if (appendLineBreak) {
builder.append("\n");
appendLineBreak = false;
}
sentenceBuilder.append(phraseBuilder);
phraseBuilder.delete(0, phraseBuilder.length());
builder.append(sentenceBuilder);
sentenceBuilder.delete(0, sentenceBuilder.length());
storedWordCounter = wordCounter;
break;
}
}
cursor.nextWord();
}
if (storedWordCounter < 4) {
if (sentenceBuilder.length() == 0) {
sentenceBuilder.append(phraseBuilder);
}
if (appendLineBreak) {
builder.append("\n");
}
builder.append(sentenceBuilder);
}
return builder.toString();
}
private void addBookmark() {
final FBReaderApp fbreader = (FBReaderApp)FBReaderApp.Instance();
final ZLTextView textView = fbreader.getTextView();
@ -308,7 +222,6 @@ mainLoop:
// TODO: text edit dialog
final Bookmark bookmark = new Bookmark(
fbreader.Model.Book,
createBookmarkText(cursor),
textView.getModel().getId(),
cursor
);