Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

integration with KnownReader #134

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
5 changes: 5 additions & 0 deletions AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.MULTIWINDOW_LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="aard2.search" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>

<activity
Expand Down
12 changes: 11 additions & 1 deletion README.org
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@
implemented an action to start Aard 2 with lookup intent.

Applications can launch Aard 2 lookup by starting activity with intent
~aard2.lookup~ with text to look up passed as an extra string
~aard2.lookup~ (show lookup card) or ~aard2.search~ (show articles list) with text to look up passed as an extra string
parameter [[http://developer.android.com/reference/android/app/SearchManager.html#QUERY][SearchManager.QUERY]]. For example:

#+BEGIN_SRC java
Expand All @@ -177,3 +177,13 @@
#+BEGIN_SRC sh
adb shell am start -a aard2.lookup -f 335544320 -e query "Foo Bar"
#+END_SRC

Application can pass extra string SENDER_ACTION to receive back translated text if the user click "return" action (in the article card).
The "callback" intent will be as follows:

#+BEGIN_SRC java
Intent intentSender = new Intent(SENDER_ACTION);
intentSender.putExtra("extraTitle", "[article key]");
intentSender.putExtra("extraText", "[translated text]");
Where translated text will be the innerText of artile's webview.
#+END_SRC#+END_SRC
8 changes: 8 additions & 0 deletions res/menu/article.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item android:id="@+id/action_send_article"
android:title="@string/action_send_article"
android:checkable="true"
android:checked="false"
android:showAsAction="always"
/>

<item android:id="@+id/action_bookmark_article"
android:title="@string/action_bookmark_article"
android:checkable="true"
Expand Down
4 changes: 4 additions & 0 deletions res/menu/lookup.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,8 @@
android:showAsAction="always"
android:actionLayout="@layout/action_lookup"
/>
<item android:id="@+id/action_backspace"
android:title="@string/action_backspace"
android:showAsAction="always"
/>
</menu>
1 change: 1 addition & 0 deletions res/values-de/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

<string name="action_find_dictionaries">Finde Wörterbücher</string>
<string name="action_find_in_page">Suche in Seite</string>
<string name="action_send_article">Rückkehr</string>
<string name="action_bookmark_article">Lesezeichen</string>
<string name="action_filter">Filter</string>
<string name="action_ascending">Aufsteigend</string>
Expand Down
1 change: 1 addition & 0 deletions res/values-es/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<string name="subtitle_dictionaries">Diccionarios</string>
<string name="action_find_dictionaries">Encontrar diccionarios</string>
<string name="action_find_in_page">Buscar en la página</string>
<string name="action_send_article">Regreso</string>
<string name="action_bookmark_article">Añadir marcadores</string>
<string name="action_filter">Filtrar</string>
<string name="action_ascending">Ascendente</string>
Expand Down
1 change: 1 addition & 0 deletions res/values-fr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<string name="subtitle_dictionaries">Dictionnaires</string>
<string name="action_find_dictionaries">Chercher dictionnaires</string>
<string name="action_find_in_page">Chercher sur la page</string>
<string name="action_send_article">Retourner</string>
<string name="action_bookmark_article">Signet</string>
<string name="action_filter">Filtre</string>
<string name="action_ascending">Croissant</string>
Expand Down
1 change: 1 addition & 0 deletions res/values-it/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<string name="subtitle_dictionaries">Dizionari</string>
<string name="action_find_dictionaries">Trova dizionari</string>
<string name="action_find_in_page">Trova nella pagina</string>
<string name="action_send_article">Ritorno</string>
<string name="action_bookmark_article">Segnalibro</string>
<string name="action_filter">Filtro</string>
<string name="action_ascending">Ascendente</string>
Expand Down
1 change: 1 addition & 0 deletions res/values-kab/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

<string name="action_find_dictionaries">Af-d imawalen</string>
<string name="action_find_in_page">Af-d deg usebter</string>
<string name="action_send_article">Return</string>
<string name="action_bookmark_article">Asɣal</string>
<string name="action_filter">Imsizdeg</string>
<string name="action_ascending">Igemment</string>
Expand Down
1 change: 1 addition & 0 deletions res/values-nb-rNO/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<string name="subtitle_dictionaries">Ordlister</string>
<string name="action_find_dictionaries">Finn ordlister</string>
<string name="action_find_in_page">Finn på side</string>
<string name="action_send_article">Komme tilbake</string>
<string name="action_bookmark_article">Bokmerk</string>
<string name="action_filter">Filtrer</string>
<string name="action_ascending">Stigende</string>
Expand Down
1 change: 1 addition & 0 deletions res/values-nl/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<string name="subtitle_dictionaries">Woordenboeken</string>
<string name="action_find_dictionaries">Woordenboeken zoeken</string>
<string name="action_find_in_page">Zoeken in pagina</string>
<string name="action_send_article">Opbrengst</string>
<string name="action_bookmark_article">Toevoegen aan bladwijzers</string>
<string name="action_filter">Filteren</string>
<string name="action_ascending">Oplopend</string>
Expand Down
1 change: 1 addition & 0 deletions res/values-pl/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<string name="subtitle_dictionaries">Słowniki</string>
<string name="action_find_dictionaries">Znajdź słowniki</string>
<string name="action_find_in_page">Znajdź na stronie</string>
<string name="action_send_article">Powrót</string>
<string name="action_bookmark_article">Dodaj do zakładek</string>
<string name="action_filter">Filtruj</string>
<string name="action_ascending">Rosnąco</string>
Expand Down
1 change: 1 addition & 0 deletions res/values-pt-rBR/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<string name="subtitle_dictionaries">Dicionários</string>
<string name="action_find_dictionaries">Procurar dicionários</string>
<string name="action_find_in_page">Localizar na página</string>
<string name="action_send_article">Retornar</string>
<string name="action_bookmark_article">Adicionar aos marcadores</string>
<string name="action_filter">Filtro</string>
<string name="action_ascending">Ascendente</string>
Expand Down
1 change: 1 addition & 0 deletions res/values-pt-rPT/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<string name="subtitle_dictionaries">Dicionários</string>
<string name="action_find_dictionaries">Procurar dicionários</string>
<string name="action_find_in_page">Localizar na página</string>
<string name="action_send_article">Retornar</string>
<string name="action_bookmark_article">Adicionar aos marcadores</string>
<string name="action_filter">Filtro</string>
<string name="action_ascending">Ascendente</string>
Expand Down
1 change: 1 addition & 0 deletions res/values-ru/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

<string name="action_find_dictionaries">Искать словари</string>
<string name="action_find_in_page">Поиск на странице</string>
<string name="action_send_article">Вернуть</string>
<string name="action_bookmark_article">Закладка</string>
<string name="action_filter">Фильтр</string>
<string name="action_ascending">По возрастанию</string>
Expand Down
1 change: 1 addition & 0 deletions res/values-uk/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
<string name="action_filter">Фільтр</string>
<string name="action_find_dictionaries">Шукати словники</string>
<string name="action_find_in_page">Пошук на сторінці</string>
<string name="action_send_article">Повернення</string>
<string name="action_goto_parent_dir">Вверх</string>
<string name="action_lookup">Пошук</string>
<string name="action_reload_directory">Перезавантажити</string>
Expand Down
2 changes: 2 additions & 0 deletions res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<string name="subtitle_dictionaries">Dictionaries</string>
<string name="action_find_dictionaries">Find Dictionaries</string>
<string name="action_find_in_page">Find in page</string>
<string name="action_send_article">Return</string>
<string name="action_bookmark_article">Bookmark</string>
<string name="action_filter">Filter</string>
<string name="action_ascending">Ascending</string>
Expand Down Expand Up @@ -94,6 +95,7 @@
<string name="msg_file_not_css">Doesn\'t appear to be a CSS file</string>
<string name="msg_no_activity_to_get_content">No activity is available to open file</string>
<string name="action_add_dictionaries">Add</string>
<string name="action_backspace">&lt;</string>
<string name="title_activity_file_select">Select Dictionary File</string>
<string name="action_goto_parent_dir">Up</string>
<string name="action_reload_directory">Reload</string>
Expand Down
28 changes: 27 additions & 1 deletion src/itkach/aard2/ArticleCollectionActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import android.app.ActionBar;
import android.app.Activity;
import android.app.SearchManager;
import android.content.ActivityNotFoundException;
import android.content.ComponentName;
import android.content.Intent;
import android.content.SharedPreferences;
Expand Down Expand Up @@ -43,6 +44,8 @@ public class ArticleCollectionActivity extends FragmentActivity

static final String PREF = "articleCollection";
static final String PREF_FULLSCREEN = "fullscreen";
static String SENDER_ACTION = "";
public String mPageTitle = "";

ArticleCollectionPagerAdapter articleCollectionPagerAdapter;
ViewPager viewPager;
Expand Down Expand Up @@ -167,7 +170,25 @@ public void run() {
viewPager.setCurrentItem(position);

PagerTitleStrip titleStrip = (PagerTitleStrip)findViewById(R.id.pager_title_strip);
titleStrip.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 10);
titleStrip.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
titleStrip.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Intent upIntent = Intent.makeMainActivity(new ComponentName(ArticleCollectionActivity.this, MainActivity.class));
if (NavUtils.shouldUpRecreateTask(ArticleCollectionActivity.this, upIntent)) {
upIntent.putExtra(SearchManager.QUERY, mPageTitle);
TaskStackBuilder.create(ArticleCollectionActivity.this)
.addNextIntent(upIntent).startActivities();
} else {
// This activity is part of the application's task, so simply
// navigate up to the hierarchical parent activity.
upIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
upIntent.putExtra(SearchManager.QUERY, mPageTitle);
startActivity(upIntent);
}
finish();
}
});
updateTitle(position);
articleCollectionPagerAdapter.registerDataSetObserver(new DataSetObserver() {
@Override
Expand Down Expand Up @@ -237,6 +258,10 @@ private ArticleCollectionPagerAdapter createFromIntent(Application app, Intent i
if (lookupKey == null) {
lookupKey = intent.getStringExtra("EXTRA_QUERY");
}
SENDER_ACTION = intent.getStringExtra("SENDER_ACTION");
if (SENDER_ACTION == null) SENDER_ACTION = "";
Log.d(TAG, String.format("Sender action is %s", SENDER_ACTION));

String preferredSlobId = null;
if (lookupKey == null) {
Uri uri = intent.getData();
Expand Down Expand Up @@ -310,6 +335,7 @@ private void updateTitle(int position) {
actionBar.setTitle("???");
}
actionBar.setSubtitle(pageTitle);
mPageTitle = pageTitle.toString();
}


Expand Down
35 changes: 35 additions & 0 deletions src/itkach/aard2/ArticleFragment.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,23 @@

import android.app.Activity;
import android.app.AlertDialog;
import android.app.SearchManager;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.widget.ImageView;
Expand All @@ -26,11 +31,13 @@ public class ArticleFragment extends Fragment {
public static final String ARG_URL = "articleUrl";

private ArticleWebView view;
private MenuItem miSend;
private MenuItem miBookmark;
private MenuItem miFullscreen;
private Drawable icBookmark;
private Drawable icBookmarkO;
private Drawable icFullscreen;
private Drawable icReturn;
private String url;


Expand All @@ -42,6 +49,7 @@ public void onCreate(Bundle savedInstanceState) {
icBookmark = IconMaker.actionBar(context, IconMaker.IC_BOOKMARK);
icBookmarkO = IconMaker.actionBar(context, IconMaker.IC_BOOKMARK_O);
icFullscreen = IconMaker.actionBar(context, IconMaker.IC_FULLSCREEN);
icReturn = IconMaker.actionBar(context, IconMaker.IC_SHARE);
setHasOptionsMenu(true);
}

Expand All @@ -52,6 +60,7 @@ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
//to avoid duplicates
menu.clear();
inflater.inflate(R.menu.article, menu);
miSend = menu.findItem(R.id.action_send_article);
miBookmark = menu.findItem(R.id.action_bookmark_article);
miFullscreen = menu.findItem(R.id.action_fullscreen);
if (Build.VERSION.SDK_INT < 19) {
Expand Down Expand Up @@ -80,6 +89,27 @@ public boolean onOptionsItemSelected(MenuItem item) {
view.showFindDialog(null, true);
return true;
}
if (itemId == R.id.action_send_article) {
if (this.url != null)
if (!(ArticleCollectionActivity.SENDER_ACTION == null || ArticleCollectionActivity.SENDER_ACTION.isEmpty()))
view.evaluateJavascript(
//"(function() { return ('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>'); })();",
"(function() { return (document.getElementsByTagName('html')[0].innerText); })();",
new ValueCallback<String>() {
@Override
public void onReceiveValue(String txt) {
Intent intentSender = new Intent(ArticleCollectionActivity.SENDER_ACTION);
intentSender.putExtra("extraText", txt);
intentSender.putExtra("extraTitle",((ArticleCollectionActivity)getActivity()).mPageTitle);
try
{
getActivity().startActivity(intentSender);
} catch ( ActivityNotFoundException e ) {
Log.e("ERR", "Intent error: " + e.getMessage());
}
}
});
}
if (itemId == R.id.action_bookmark_article) {
Application app = (Application)getActivity().getApplication();
if (this.url != null) {
Expand Down Expand Up @@ -186,6 +216,7 @@ public void onResume() {
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
if (this.url == null) {
miSend.setVisible(false);
miBookmark.setVisible(false);
}
else {
Expand All @@ -197,9 +228,12 @@ public void onPrepareOptionsMenu(Menu menu) {
miBookmark.setVisible(false);
}
}
if (ArticleCollectionActivity.SENDER_ACTION == null || ArticleCollectionActivity.SENDER_ACTION.isEmpty())
miSend.setVisible(false);
applyTextZoomPref();
applyStylePref();
miFullscreen.setIcon(icFullscreen);
miSend.setIcon(icReturn);
}

void applyTextZoomPref() {
Expand All @@ -225,6 +259,7 @@ public void onDestroy() {
view = null;
}
miFullscreen = null;
miSend = null;
miBookmark = null;
super.onDestroy();
}
Expand Down
5 changes: 4 additions & 1 deletion src/itkach/aard2/IconMaker.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@

class IconMaker {

//icon codes could be seen at: https://fontawesome.com/v4.7/cheatsheet/

static final String CUSTOM_FONT_PATH = "fontawesome-4.2.0.ttf";

static final char IC_SEARCH = '\uf002';
Expand Down Expand Up @@ -39,7 +41,8 @@ class IconMaker {
static final char IC_LEVEL_UP = '\uf148';
static final char IC_BAN = '\uf05e';
static final char IC_FULLSCREEN = '\uf065';

static final char IC_SHARE = '\uf064';
static final char IC_ARROW_LEFT = '\uf060';

static FontDrawable make(Context context, char c, int sizeDp, int color) {
FontDrawable drawable = new FontDrawable.Builder(context, c, CUSTOM_FONT_PATH)
Expand Down
Loading