diff --git a/src/org/geometerplus/android/fbreader/SelectionBookmarkAction.java b/src/org/geometerplus/android/fbreader/SelectionBookmarkAction.java new file mode 100644 index 000000000..07d396dd1 --- /dev/null +++ b/src/org/geometerplus/android/fbreader/SelectionBookmarkAction.java @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2007-2011 Geometer Plus + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +package org.geometerplus.android.fbreader; + +import org.geometerplus.zlibrary.core.resources.ZLResource; + +import org.geometerplus.fbreader.library.Bookmark; +import org.geometerplus.fbreader.fbreader.FBReaderApp; +import org.geometerplus.fbreader.fbreader.FBView; + +import org.geometerplus.android.util.UIUtil; + +public class SelectionBookmarkAction extends FBAndroidAction { + SelectionBookmarkAction(FBReader baseApplication, FBReaderApp fbreader) { + super(baseApplication, fbreader); + } + + public void run() { + final FBView fbview = Reader.getTextView(); + final String text = fbview.getSelectedText(); + + new Bookmark( + Reader.Model.Book, + fbview.getModel().getId(), + fbview.getSelectionStartPosition(), + text, + true + ).save(); + fbview.clearSelection(); + + UIUtil.showMessageText( + BaseActivity, + ZLResource.resource("selection").getResource("bookmarkCreated").getValue().replace("%s", text) + ); + } +} diff --git a/src/org/geometerplus/android/fbreader/SelectionCopyAction.java b/src/org/geometerplus/android/fbreader/SelectionCopyAction.java new file mode 100644 index 000000000..61f3773cf --- /dev/null +++ b/src/org/geometerplus/android/fbreader/SelectionCopyAction.java @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2007-2011 Geometer Plus + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +package org.geometerplus.android.fbreader; + +import android.app.Application; +import android.text.ClipboardManager; + +import org.geometerplus.zlibrary.core.resources.ZLResource; + +import org.geometerplus.zlibrary.ui.android.library.ZLAndroidApplication; + +import org.geometerplus.fbreader.fbreader.FBReaderApp; + +import org.geometerplus.android.util.UIUtil; + +public class SelectionCopyAction extends FBAndroidAction { + SelectionCopyAction(FBReader baseActivity, FBReaderApp fbreader) { + super(baseActivity, fbreader); + } + + public void run() { + final String text = Reader.getTextView().getSelectedText(); + Reader.getTextView().clearSelection(); + + final ClipboardManager clipboard = + (ClipboardManager)ZLAndroidApplication.Instance().getSystemService(Application.CLIPBOARD_SERVICE); + clipboard.setText(text); + UIUtil.showMessageText( + BaseActivity, + ZLResource.resource("selection").getResource("textInBuffer").getValue().replace("%s", clipboard.getText()) + ); + } +} diff --git a/src/org/geometerplus/android/fbreader/SelectionShareAction.java b/src/org/geometerplus/android/fbreader/SelectionShareAction.java new file mode 100644 index 000000000..2a5147a45 --- /dev/null +++ b/src/org/geometerplus/android/fbreader/SelectionShareAction.java @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2007-2011 Geometer Plus + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +package org.geometerplus.android.fbreader; + +import android.content.Intent; + +import org.geometerplus.zlibrary.core.resources.ZLResource; + +import org.geometerplus.fbreader.fbreader.FBReaderApp; + +public class SelectionShareAction extends FBAndroidAction { + SelectionShareAction(FBReader baseActivity, FBReaderApp fbreader) { + super(baseActivity, fbreader); + } + + public void run() { + final String text = Reader.getTextView().getSelectedText(); + final String title = Reader.Model.Book.getTitle(); + Reader.getTextView().clearSelection(); + + final Intent intent = new Intent(android.content.Intent.ACTION_SEND); + intent.setType("text/plain"); + intent.putExtra(android.content.Intent.EXTRA_SUBJECT, + ZLResource.resource("selection").getResource("quoteFrom").getValue().replace("%s", title) + ); + intent.putExtra(android.content.Intent.EXTRA_TEXT, text); + BaseActivity.startActivity(Intent.createChooser(intent, null)); + } +} diff --git a/src/org/geometerplus/fbreader/fbreader/FBView.java b/src/org/geometerplus/fbreader/fbreader/FBView.java index 025b13dbb..8f77737ac 100644 --- a/src/org/geometerplus/fbreader/fbreader/FBView.java +++ b/src/org/geometerplus/fbreader/fbreader/FBView.java @@ -541,6 +541,19 @@ public final class FBView extends ZLTextView { return myFooter; } + @Override + public void clearSelection() { + super.clearSelection(); + } + + public String getSelectedText() { + final TextBuilderTraverser traverser = new TextBuilderTraverser(this); + if (!isSelectionEmpty()) { + traverser.traverse(getSelectionStartPosition(), getSelectionEndPosition()); + } + return traverser.getText(); + } + public static final int SCROLLBAR_SHOW_AS_FOOTER = 3; @Override