mirror of
https://github.com/geometer/FBReaderJ.git
synced 2025-10-05 10:49:24 +02:00
bookmarks refactoring
This commit is contained in:
parent
c54921db1f
commit
d53b2c585c
2 changed files with 89 additions and 91 deletions
|
@ -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
|
||||
);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue