From a9cc984b15c79f0c9b42e0815b1bb3c9a5bdde08 Mon Sep 17 00:00:00 2001 From: jnlon Date: Fri, 16 Aug 2019 13:44:06 -0400 Subject: [PATCH 1/5] Disable TextView autosizing --- app/src/main/res/layout/activity_menu.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/layout/activity_menu.xml b/app/src/main/res/layout/activity_menu.xml index 77ae512..f971171 100644 --- a/app/src/main/res/layout/activity_menu.xml +++ b/app/src/main/res/layout/activity_menu.xml @@ -24,7 +24,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_margin="16dp" - android:autoSizeTextType="uniform" + android:autoSizeTextType="none" android:textIsSelectable="true" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintLeft_toLeftOf="parent" From b706f9ccce1ebafd9d7081f60bf5ee60c467c11f Mon Sep 17 00:00:00 2001 From: jnlon Date: Sat, 17 Aug 2019 16:28:45 -0400 Subject: [PATCH 2/5] Implement set font size dialog --- .../pocketgopher/MainActivity.java | 47 ++++++++++++++++--- .../gopherclient/Activity/MenuActivity.java | 1 + app/src/main/res/menu/client_main.xml | 8 +++- 3 files changed, 49 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/MainActivity.java b/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/MainActivity.java index 47ec68e..81e5a15 100644 --- a/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/MainActivity.java +++ b/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/MainActivity.java @@ -18,6 +18,7 @@ import android.widget.EditText; import android.widget.LinearLayout; import android.widget.ListView; +import android.widget.NumberPicker; import com.gmail.afonsotrepa.pocketgopher.gopherclient.Page; @@ -28,7 +29,9 @@ public class MainActivity extends AppCompatActivity { private Menu menu; public static int font = R.style.monospace; + public static int fontSize = 14; // 14sp is the default textview text size + private static final String FONT_SIZE_SETTING = "font_size"; private static final String MONOSPACE_FONT_SETTING = "monospace_font"; private static final String FIRST_RUN = "first_run"; @@ -49,6 +52,8 @@ protected void onCreate(Bundle savedInstanceState) font = R.style.serif; } + fontSize = sharedPreferences.getInt(FONT_SIZE_SETTING, fontSize); + if (sharedPreferences.getBoolean(FIRST_RUN, true)) { editor.putBoolean(FIRST_RUN, false); @@ -179,13 +184,15 @@ public boolean onCreateOptionsMenu(Menu menu) @Override public boolean onOptionsItemSelected(MenuItem item) { + // get the preferences editor + final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); + final SharedPreferences.Editor editor = sharedPreferences.edit(); + // get a dialog builder + AlertDialog.Builder alertDialog = new AlertDialog.Builder(this); + switch (item.getItemId()) { case R.id.monospace_font: - SharedPreferences sharedPreferences = PreferenceManager - .getDefaultSharedPreferences(this); - SharedPreferences.Editor editor = sharedPreferences.edit(); - if (font == R.style.serif) { font = R.style.monospace; @@ -205,9 +212,38 @@ public boolean onOptionsItemSelected(MenuItem item) return true; + case R.id.font_size: + //create the font size number picker + final NumberPicker numberPicker = new NumberPicker(this); + numberPicker.setMinValue(1); + numberPicker.setMaxValue(64); + numberPicker.setValue(sharedPreferences.getInt(FONT_SIZE_SETTING, 12)); + + //setup the dialog with the number picker + alertDialog.setMessage("Font Size"); + alertDialog.setView(numberPicker); + + //setup the ok button callback to save the number picker value into shared preferences + alertDialog.setPositiveButton("OK", + new DialogInterface.OnClickListener() + { + @Override + public void onClick(final DialogInterface dialog, int which) + { + // store the new font size setting into shared preferences + editor.putInt(FONT_SIZE_SETTING, numberPicker.getValue()); + editor.apply(); + } + } + ); + + // show the dialog + alertDialog.show(); + + return true; + case R.id.link: //create the dialog to be shown when the button gets clicked - AlertDialog.Builder alertDialog = new AlertDialog.Builder(this); alertDialog.setMessage("URL:"); //setup the EditText where the user will input url to the page @@ -220,7 +256,6 @@ public boolean onOptionsItemSelected(MenuItem item) input.setInputType(InputType.TYPE_TEXT_VARIATION_URI); alertDialog.setView(input); - alertDialog.setPositiveButton("Go", new DialogInterface.OnClickListener() { diff --git a/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/Activity/MenuActivity.java b/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/Activity/MenuActivity.java index e9c0406..7aabc4d 100644 --- a/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/Activity/MenuActivity.java +++ b/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/Activity/MenuActivity.java @@ -50,6 +50,7 @@ protected void onCreate(Bundle savedInstaceState) final TextView textView = findViewById(R.id.textView); textView.setTextAppearance(this, MainActivity.font); + textView.setTextSize(MainActivity.fontSize); textView.setMovementMethod(LinkMovementMethod.getInstance()); final Context context = this; diff --git a/app/src/main/res/menu/client_main.xml b/app/src/main/res/menu/client_main.xml index 05563fc..63e7097 100644 --- a/app/src/main/res/menu/client_main.xml +++ b/app/src/main/res/menu/client_main.xml @@ -10,6 +10,12 @@ android:visible="true" app:showAsAction="never" /> + + - \ No newline at end of file + From d140e7aeae6394b83b9f798499d5cbe539a7c420 Mon Sep 17 00:00:00 2001 From: jnlon Date: Sat, 17 Aug 2019 18:30:26 -0400 Subject: [PATCH 3/5] Fix new font size not being applied --- .../com/gmail/afonsotrepa/pocketgopher/MainActivity.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/MainActivity.java b/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/MainActivity.java index 81e5a15..ab63f43 100644 --- a/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/MainActivity.java +++ b/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/MainActivity.java @@ -223,6 +223,8 @@ public boolean onOptionsItemSelected(MenuItem item) alertDialog.setMessage("Font Size"); alertDialog.setView(numberPicker); + final MainActivity activity = this; + //setup the ok button callback to save the number picker value into shared preferences alertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() @@ -230,9 +232,13 @@ public boolean onOptionsItemSelected(MenuItem item) @Override public void onClick(final DialogInterface dialog, int which) { + // get the new font size from number picker + int newFontSize = numberPicker.getValue(); // store the new font size setting into shared preferences - editor.putInt(FONT_SIZE_SETTING, numberPicker.getValue()); + editor.putInt(FONT_SIZE_SETTING, newFontSize); editor.apply(); + // update the current font size + activity.fontSize = newFontSize; } } ); From 4729dc8aa5ae069caf8983780f622ab0f7e305cd Mon Sep 17 00:00:00 2001 From: jnlon Date: Thu, 29 Aug 2019 15:22:04 -0400 Subject: [PATCH 4/5] Scale page icon relative to textview line height --- .../afonsotrepa/pocketgopher/gopherclient/AudioPage.java | 2 +- .../afonsotrepa/pocketgopher/gopherclient/BinPage.java | 2 +- .../afonsotrepa/pocketgopher/gopherclient/HtmlPage.java | 4 ++-- .../afonsotrepa/pocketgopher/gopherclient/ImagePage.java | 2 +- .../afonsotrepa/pocketgopher/gopherclient/MenuPage.java | 2 +- .../gmail/afonsotrepa/pocketgopher/gopherclient/Page.java | 8 ++++++++ .../afonsotrepa/pocketgopher/gopherclient/SearchPage.java | 2 +- .../pocketgopher/gopherclient/TextFilePage.java | 2 +- .../pocketgopher/gopherclient/UnknownPage.java | 2 +- .../afonsotrepa/pocketgopher/gopherclient/VideoPage.java | 2 +- 10 files changed, 18 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/AudioPage.java b/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/AudioPage.java index bf8c70a..4f181a4 100644 --- a/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/AudioPage.java +++ b/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/AudioPage.java @@ -78,7 +78,7 @@ public void run() text.setSpan(cs1, 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); text.setSpan(cs2, 2, text.length() - 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //set the image tag behind (left of) the text - text.setSpan(new ImageSpan(context, IMAGE_TAG), 0, 1, 0); + text.setSpan(Page.formatIcon(context, textView, IMAGE_TAG), 0, 1, 0); //add it to the end of textView textView.append(text); } diff --git a/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/BinPage.java b/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/BinPage.java index 981cb10..b06dbc6 100644 --- a/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/BinPage.java +++ b/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/BinPage.java @@ -70,7 +70,7 @@ public void run() text.setSpan(cs1, 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); text.setSpan(cs2, 2, text.length() - 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //set the image tag behind (left of) the text - text.setSpan(new ImageSpan(context, IMAGE_TAG), 0, 1, 0); + text.setSpan(Page.formatIcon(context, textView, IMAGE_TAG), 0, 1, 0); //add it to the end of textView textView.append(text); } diff --git a/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/HtmlPage.java b/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/HtmlPage.java index dab7a44..0f3202f 100644 --- a/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/HtmlPage.java +++ b/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/HtmlPage.java @@ -71,7 +71,7 @@ public void run() text.setSpan(cs1, 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); text.setSpan(cs2, 2, text.length() - 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //set the image tag behind (left of) the text - text.setSpan(new ImageSpan(context, IMAGE_TAG), 0, 1, 0); + text.setSpan(Page.formatIcon(context, textView, IMAGE_TAG), 0, 1, 0); //add it to the end of textView textView.append(text); } @@ -155,4 +155,4 @@ public void run() Toast.makeText(context, e.getMessage(), Toast.LENGTH_LONG).show(); } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/ImagePage.java b/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/ImagePage.java index 28742a9..2915902 100644 --- a/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/ImagePage.java +++ b/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/ImagePage.java @@ -80,7 +80,7 @@ public void run() text.setSpan(cs1, 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); text.setSpan(cs2, 2, text.length() - 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //set the image tag behind (left of) the text - text.setSpan(new ImageSpan(context, IMAGE_TAG), 0, 1, 0); + text.setSpan(Page.formatIcon(context, textView, IMAGE_TAG), 0, 1, 0); //add it to the end of textView textView.append(text); } diff --git a/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/MenuPage.java b/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/MenuPage.java index 23a90be..cdd2c59 100644 --- a/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/MenuPage.java +++ b/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/MenuPage.java @@ -73,7 +73,7 @@ public void run() text.setSpan(cs1, 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); text.setSpan(cs2, 2, text.length() - 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //set the image tag behind (left of) the text - text.setSpan(new ImageSpan(context, IMAGE_TAG), 0, 1, 0); + text.setSpan(Page.formatIcon(context, textView, IMAGE_TAG) , 0, 1, 0); //add it to the end of textView textView.append(text); } diff --git a/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/Page.java b/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/Page.java index eaeb082..eeb89a3 100644 --- a/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/Page.java +++ b/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/Page.java @@ -6,12 +6,14 @@ import android.content.Context; import android.content.DialogInterface; import android.content.pm.PackageManager; +import android.graphics.drawable.Drawable; import android.os.Environment; import android.os.Handler; import android.os.Looper; import android.support.annotation.NonNull; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; +import android.text.style.ImageSpan; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; @@ -55,6 +57,12 @@ public Page(String server, Integer port, Character type, String selector) this(server, port, type, selector, null); } + public static ImageSpan formatIcon(Context context, TextView textView, int resourceID) { + Drawable icon = context.getDrawable(resourceID); + int iconSize = (int)((double)textView.getLineHeight()*2.5); + icon.setBounds(0, 0, iconSize, iconSize); + return new ImageSpan(icon, 0); + } public abstract void open(final Context context); diff --git a/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/SearchPage.java b/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/SearchPage.java index 8c4a6ad..f2790e2 100644 --- a/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/SearchPage.java +++ b/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/SearchPage.java @@ -73,7 +73,7 @@ public void run() text.setSpan(cs1, 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); text.setSpan(cs2, 2, text.length() - 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //set the image tag behind (left of) the text - text.setSpan(new ImageSpan(context, IMAGE_TAG), 0, 1, 0); + text.setSpan(Page.formatIcon(context, textView, IMAGE_TAG), 0, 1, 0); //add it to the end of textView textView.append(text); } diff --git a/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/TextFilePage.java b/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/TextFilePage.java index 433966c..7157242 100644 --- a/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/TextFilePage.java +++ b/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/TextFilePage.java @@ -69,7 +69,7 @@ public void run() text.setSpan(cs1, 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); text.setSpan(cs2, 2, text.length() - 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //set the image tag behind (left of) the text - text.setSpan(new ImageSpan(context, IMAGE_TAG), 0, 1, 0); + text.setSpan(Page.formatIcon(context, textView, IMAGE_TAG), 0, 1, 0); //add it to the end of textView textView.append(text); } diff --git a/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/UnknownPage.java b/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/UnknownPage.java index 0ea634e..5cbd5d9 100644 --- a/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/UnknownPage.java +++ b/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/UnknownPage.java @@ -39,7 +39,7 @@ public void render(final TextView textView, final Context context, String line) public void run() { //set the image tag behind (left of) the text - text.setSpan(new ImageSpan(context, IMAGE_TAG), 0, 1, 0); + text.setSpan(Page.formatIcon(context, textView, IMAGE_TAG), 0, 1, 0); textView.append(text); } }); diff --git a/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/VideoPage.java b/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/VideoPage.java index 1e0feef..ad3d05e 100644 --- a/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/VideoPage.java +++ b/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/VideoPage.java @@ -79,7 +79,7 @@ public void run() text.setSpan(cs1, 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); text.setSpan(cs2, 2, text.length() - 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //set the image tag behind (left of) the text - text.setSpan(new ImageSpan(context, IMAGE_TAG), 0, 1, 0); + text.setSpan(Page.formatIcon(context, textView, IMAGE_TAG), 0, 1, 0); //add it to the end of textView textView.append(text); } From 65664b5bddcb7a83675e153ea7ea24182dd79b19 Mon Sep 17 00:00:00 2001 From: jnlon Date: Thu, 29 Aug 2019 15:36:29 -0400 Subject: [PATCH 5/5] Respect chosen font size when viewing text files --- .../pocketgopher/gopherclient/Activity/TextFileActivity.java | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/Activity/TextFileActivity.java b/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/Activity/TextFileActivity.java index 3bb08c1..b324623 100644 --- a/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/Activity/TextFileActivity.java +++ b/app/src/main/java/com/gmail/afonsotrepa/pocketgopher/gopherclient/Activity/TextFileActivity.java @@ -49,6 +49,7 @@ protected void onCreate(Bundle savedInstanceState) final TextView textView = (TextView) findViewById(R.id.textView); //set the font textView.setTextAppearance(this, MainActivity.font); + textView.setTextSize(MainActivity.fontSize); //start a new thread to do network stuff new Thread(new Runnable()