コード例 #1
0
    public View getView(int position, View convertView, ViewGroup parent) {
      final View view =
          (convertView != null)
              ? convertView
              : LayoutInflater.from(parent.getContext())
                  .inflate(R.layout.bookmark_item, parent, false);
      final ImageView imageView = (ImageView) view.findViewById(R.id.bookmark_item_icon);
      final TextView textView = (TextView) view.findViewById(R.id.bookmark_item_text);
      final TextView bookTitleView = (TextView) view.findViewById(R.id.bookmark_item_booktitle);

      final Bookmark bookmark = getItem(position);
      if (bookmark == null) {
        imageView.setVisibility(View.VISIBLE);
        imageView.setImageResource(R.drawable.ic_list_plus);
        textView.setText(ZLResource.resource("bookmarksView").getResource("new").getValue());
        bookTitleView.setVisibility(View.GONE);
      } else {
        imageView.setVisibility(View.GONE);
        textView.setText(bookmark.getText());
        if (myCurrentBook) {
          bookTitleView.setVisibility(View.GONE);
        } else {
          bookTitleView.setVisibility(View.VISIBLE);
          bookTitleView.setText(bookmark.getBookTitle());
        }
      }
      return view;
    }
コード例 #2
0
ファイル: FBReaderApp.java プロジェクト: nvdnkpr/FBReaderJ
  public boolean jumpBack() {
    try {
      if (getTextView() != BookTextView) {
        showBookTextView();
        return true;
      }

      if (myJumpEndPosition == null || myJumpTimeStamp == null) {
        return false;
      }
      // more than 2 minutes ago
      if (myJumpTimeStamp.getTime() + 2 * 60 * 1000 < new Date().getTime()) {
        return false;
      }
      if (!myJumpEndPosition.equals(BookTextView.getStartCursor())) {
        return false;
      }

      final List<Bookmark> bookmarks = Library.Instance().invisibleBookmarks(Model.Book);
      if (bookmarks.isEmpty()) {
        return false;
      }
      final Bookmark b = bookmarks.get(0);
      b.delete();
      gotoBookmark(b);
      return true;
    } finally {
      myJumpEndPosition = null;
      myJumpTimeStamp = null;
    }
  }
コード例 #3
0
 @Override
 public void onPause() {
   for (Bookmark bookmark : AllBooksBookmarks) {
     bookmark.save();
   }
   super.onPause();
 }
コード例 #4
0
ファイル: FBReaderApp.java プロジェクト: nvdnkpr/FBReaderJ
  public void runCancelAction(int index) {
    if (index < 0 || index >= myCancelActionsList.size()) {
      return;
    }

    final CancelActionDescription description = myCancelActionsList.get(index);
    switch (description.Type) {
      case library:
        runAction(ActionCode.SHOW_LIBRARY);
        break;
      case networkLibrary:
        runAction(ActionCode.SHOW_NETWORK_LIBRARY);
        break;
      case previousBook:
        openBook(Library.Instance().getPreviousBook(), null, null);
        break;
      case returnTo:
        {
          final Bookmark b = ((BookmarkDescription) description).Bookmark;
          b.delete();
          gotoBookmark(b);
          break;
        }
      case close:
        closeWindow();
        break;
    }
  }
コード例 #5
0
 private void gotoBookmark(Bookmark bookmark) {
   bookmark.markAsAccessed();
   myCollection.saveBookmark(bookmark);
   final Book book = myCollection.getBookById(bookmark.getBookId());
   if (book != null) {
     FBReader.openBookActivity(this, book, bookmark);
   } else {
     UIUtil.showErrorMessage(this, "cannotOpenBook");
   }
 }
コード例 #6
0
ファイル: FBReaderApp.java プロジェクト: nvdnkpr/FBReaderJ
 private synchronized void updateInvisibleBookmarksList(Bookmark b) {
   if (Model != null && Model.Book != null && b != null) {
     for (Bookmark bm : Library.Instance().invisibleBookmarks(Model.Book)) {
       if (b.equals(bm)) {
         bm.delete();
       }
     }
     b.save();
     final List<Bookmark> bookmarks = Library.Instance().invisibleBookmarks(Model.Book);
     for (int i = 3; i < bookmarks.size(); ++i) {
       bookmarks.get(i).delete();
     }
   }
 }
コード例 #7
0
 @Override
 protected void deleteBookmark(Bookmark bookmark) {
   if (myDeleteBookmarkStatement == null) {
     myDeleteBookmarkStatement =
         myDatabase.compileStatement("DELETE FROM Bookmarks WHERE bookmark_id = ?");
   }
   myDeleteBookmarkStatement.bindLong(1, bookmark.getId());
   myDeleteBookmarkStatement.execute();
 }
コード例 #8
0
 private void gotoBookmark(Bookmark bookmark) {
   bookmark.onOpen();
   final FBReader fbreader = (FBReader) FBReader.Instance();
   final long bookId = bookmark.getBookId();
   if ((fbreader.Model == null) || (fbreader.Model.Book.getId() != bookId)) {
     final Book book = Book.getById(bookId);
     if (book != null) {
       finish();
       fbreader.openBook(book, bookmark);
     } else {
       Toast.makeText(
               this,
               ZLResource.resource("errorMessage").getResource("cannotOpenBook").getValue(),
               Toast.LENGTH_SHORT)
           .show();
     }
   } else {
     finish();
     fbreader.gotoBookmark(bookmark);
   }
 }
コード例 #9
0
  @Override
  protected void onNewIntent(Intent intent) {
    OrientationUtil.setOrientation(this, intent);

    if (!Intent.ACTION_SEARCH.equals(intent.getAction())) {
      return;
    }
    String pattern = intent.getStringExtra(SearchManager.QUERY);
    myBookmarkSearchPatternOption.setValue(pattern);

    final LinkedList<Bookmark> bookmarks = new LinkedList<Bookmark>();
    pattern = pattern.toLowerCase();
    for (Bookmark b : myAllBooksAdapter.bookmarks()) {
      if (MiscUtil.matchesIgnoreCase(b.getText(), pattern)) {
        bookmarks.add(b);
      }
    }
    if (!bookmarks.isEmpty()) {
      showSearchResultsTab(bookmarks);
    } else {
      UIUtil.showErrorMessage(this, "bookmarkNotFound");
    }
  }
コード例 #10
0
  @Override
  public void onCreate(Bundle bundle) {
    super.onCreate(bundle);

    Thread.setDefaultUncaughtExceptionHandler(
        new org.geometerplus.zlibrary.ui.android.library.UncaughtExceptionHandler(this));

    // requestWindowFeature(Window.FEATURE_NO_TITLE);
    setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);

    final TabHost host = getTabHost();
    LayoutInflater.from(this).inflate(R.layout.bookmarks, host.getTabContentView(), true);

    AllBooksBookmarks = Bookmark.bookmarks();
    Collections.sort(AllBooksBookmarks, new Bookmark.ByTimeComparator());
    final FBReader fbreader = (FBReader) FBReader.Instance();

    if (fbreader.Model != null) {
      final long bookId = fbreader.Model.Book.getId();
      for (Bookmark bookmark : AllBooksBookmarks) {
        if (bookmark.getBookId() == bookId) {
          myThisBookBookmarks.add(bookmark);
        }
      }

      myThisBookView = createTab("thisBook", R.id.this_book);
      new BookmarksAdapter(myThisBookView, myThisBookBookmarks, true);
    } else {
      findViewById(R.id.this_book).setVisibility(View.GONE);
    }

    myAllBooksView = createTab("allBooks", R.id.all_books);
    new BookmarksAdapter(myAllBooksView, AllBooksBookmarks, false);

    findViewById(R.id.search_results).setVisibility(View.GONE);
  }
コード例 #11
0
 @Override
 public boolean onContextItemSelected(MenuItem item) {
   final int position = ((AdapterView.AdapterContextMenuInfo) item.getMenuInfo()).position;
   final ListView view = (ListView) getTabHost().getCurrentView();
   final Bookmark bookmark = ((BookmarksAdapter) view.getAdapter()).getItem(position);
   switch (item.getItemId()) {
     case OPEN_ITEM_ID:
       gotoBookmark(bookmark);
       return true;
     case EDIT_ITEM_ID:
       final Intent intent = new Intent(this, BookmarkEditActivity.class);
       startActivityForResult(intent, 1);
       // TODO: implement
       return true;
     case DELETE_ITEM_ID:
       bookmark.delete();
       myThisBookBookmarks.remove(bookmark);
       AllBooksBookmarks.remove(bookmark);
       mySearchResults.remove(bookmark);
       invalidateAllViews();
       return true;
   }
   return super.onContextItemSelected(item);
 }
コード例 #12
0
  @Override
  protected long saveBookmark(Bookmark bookmark) {
    SQLiteStatement statement;
    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,visible) 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 = ?, visible = ? WHERE bookmark_id = ?");
      }
      statement = myUpdateBookmarkStatement;
    }

    statement.bindLong(1, bookmark.getBookId());
    statement.bindString(2, bookmark.getText());
    SQLiteUtil.bindDate(statement, 3, bookmark.getTime(Bookmark.CREATION));
    SQLiteUtil.bindDate(statement, 4, bookmark.getTime(Bookmark.MODIFICATION));
    SQLiteUtil.bindDate(statement, 5, bookmark.getTime(Bookmark.ACCESS));
    statement.bindLong(6, bookmark.getAccessCount());
    SQLiteUtil.bindString(statement, 7, bookmark.ModelId);
    statement.bindLong(8, bookmark.ParagraphIndex);
    statement.bindLong(9, bookmark.ElementIndex);
    statement.bindLong(10, bookmark.CharIndex);
    statement.bindLong(11, bookmark.IsVisible ? 1 : 0);

    if (statement == myInsertBookmarkStatement) {
      return statement.executeInsert();
    } else {
      final long id = bookmark.getId();
      statement.bindLong(12, id);
      statement.execute();
      return id;
    }
  }
コード例 #13
0
ファイル: FBReaderApp.java プロジェクト: nvdnkpr/FBReaderJ
 BookmarkDescription(Bookmark b) {
   super(CancelActionType.returnTo, b.getText());
   Bookmark = b;
 }
コード例 #14
0
 public void deleteBookmark(Bookmark bookmark) {
   if (bookmark != null && bookmark.getId() != -1) {
     myDatabase.deleteBookmark(bookmark);
   }
 }
コード例 #15
0
 public void saveBookmark(Bookmark bookmark) {
   if (bookmark != null) {
     bookmark.setId(myDatabase.saveBookmark(bookmark));
   }
 }