From f6aa9ece5cd341fadaf6220090fb67c33eb2f490 Mon Sep 17 00:00:00 2001 From: Bofh Date: Mon, 26 Apr 2021 22:18:38 +0200 Subject: [PATCH] initial commit --- .gitignore | 15 ++ .idea/.gitignore | 3 + .idea/compiler.xml | 6 + .idea/gradle.xml | 22 +++ .idea/jarRepositories.xml | 25 +++ .idea/misc.xml | 9 + app/.gitignore | 1 + app/build.gradle | 40 ++++ app/proguard-rules.pro | 21 +++ .../textbanner/ExampleInstrumentedTest.java | 26 +++ app/src/main/AndroidManifest.xml | 22 +++ .../es/nogafam/textbanner/EditActivity.java | 103 +++++++++++ .../java/es/nogafam/textbanner/Helpers.java | 38 ++++ .../es/nogafam/textbanner/MainActivity.java | 77 ++++++++ app/src/main/res/drawable-v24/ic_launcher.png | Bin 0 -> 12363 bytes app/src/main/res/drawable/ic_launcher.png | Bin 0 -> 12363 bytes app/src/main/res/layout/activity_edit.xml | 107 +++++++++++ app/src/main/res/layout/activity_main.xml | 16 ++ .../res/mipmap-anydpi-v26/ic_launcher.png | Bin 0 -> 12363 bytes app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 12363 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 12363 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 12363 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 12363 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 12363 bytes app/src/main/res/raw/main_html | 45 +++++ app/src/main/res/values-night/themes.xml | 16 ++ app/src/main/res/values/colors.xml | 34 ++++ app/src/main/res/values/strings.xml | 8 + app/src/main/res/values/themes.xml | 16 ++ .../nogafam/textbanner/ExampleUnitTest.java | 17 ++ build.gradle | 24 +++ gradle.properties | 19 ++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54329 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 172 ++++++++++++++++++ gradlew.bat | 84 +++++++++ settings.gradle | 2 + 37 files changed, 974 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/compiler.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/misc.xml create mode 100644 app/.gitignore create mode 100644 app/build.gradle create mode 100644 app/proguard-rules.pro create mode 100644 app/src/androidTest/java/es/nogafam/textbanner/ExampleInstrumentedTest.java create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/java/es/nogafam/textbanner/EditActivity.java create mode 100644 app/src/main/java/es/nogafam/textbanner/Helpers.java create mode 100644 app/src/main/java/es/nogafam/textbanner/MainActivity.java create mode 100644 app/src/main/res/drawable-v24/ic_launcher.png create mode 100644 app/src/main/res/drawable/ic_launcher.png create mode 100644 app/src/main/res/layout/activity_edit.xml create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.png create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app/src/main/res/raw/main_html create mode 100644 app/src/main/res/values-night/themes.xml create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/themes.xml create mode 100644 app/src/test/java/es/nogafam/textbanner/ExampleUnitTest.java create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aa724b7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..61a9130 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..23a89bb --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,22 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..a5f05cd --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..d5d35ec --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..0a05a40 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,40 @@ +plugins { + id 'com.android.application' +} + +android { + compileSdkVersion 30 + buildToolsVersion "30.0.3" + + defaultConfig { + applicationId "es.nogafam.textbanner" + minSdkVersion 16 + targetSdkVersion 30 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } +} + +dependencies { + + implementation 'androidx.appcompat:appcompat:1.1.0' + implementation 'com.google.android.material:material:1.1.0' + implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + implementation 'com.thebluealliance:spectrum:0.7.1' + testImplementation 'junit:junit:4.+' + androidTestImplementation 'androidx.test.ext:junit:1.1.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' +} \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/app/src/androidTest/java/es/nogafam/textbanner/ExampleInstrumentedTest.java b/app/src/androidTest/java/es/nogafam/textbanner/ExampleInstrumentedTest.java new file mode 100644 index 0000000..398c57b --- /dev/null +++ b/app/src/androidTest/java/es/nogafam/textbanner/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package es.nogafam.textbanner; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + assertEquals("es.nogafam.textbanner", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..903b0b8 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/es/nogafam/textbanner/EditActivity.java b/app/src/main/java/es/nogafam/textbanner/EditActivity.java new file mode 100644 index 0000000..d21ae3a --- /dev/null +++ b/app/src/main/java/es/nogafam/textbanner/EditActivity.java @@ -0,0 +1,103 @@ +package es.nogafam.textbanner; + +import androidx.appcompat.app.AppCompatActivity; + +import android.content.SharedPreferences; +import android.content.pm.ActivityInfo; +import android.os.Bundle; +import android.text.Editable; +import android.text.TextWatcher; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import android.widget.EditText; + +import com.thebluealliance.spectrum.SpectrumDialog; + +public class EditActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + requestWindowFeature(Window.FEATURE_NO_TITLE); + setContentView(R.layout.activity_edit); + getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, + WindowManager.LayoutParams.FLAG_FULLSCREEN); + getSupportActionBar().hide(); + setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + + final SharedPreferences prefs = this.getSharedPreferences("nogafam_es_textbanner", MODE_PRIVATE); + ((EditText)findViewById(R.id.editMainText)).setText(prefs.getString("main-text", "HI")); + ((EditText)findViewById(R.id.editFontSizeFactor)).setText(String.valueOf(prefs.getInt("font-size", 10))); + ((EditText)findViewById(R.id.editVelocity)).setText(String.valueOf(prefs.getInt("anim-velocity", 5))); + findViewById(R.id.editTextColor).setBackgroundColor(prefs.getInt("text-color", R.color.black)); + findViewById(R.id.editBackColor).setBackgroundColor(prefs.getInt("back-color", R.color.white)); + + final TextWatcher watcher = new TextWatcher() { + public void onTextChanged(CharSequence s, int start, int before, int count) { } + public void beforeTextChanged(CharSequence s, int start, int count, int after) { } + public void afterTextChanged(Editable s) { + savePreferences(); + } + }; + ((EditText)findViewById(R.id.editMainText)).addTextChangedListener(watcher); + ((EditText)findViewById(R.id.editFontSizeFactor)).addTextChangedListener(watcher); + ((EditText)findViewById(R.id.editVelocity)).addTextChangedListener(watcher); + + this.findViewById(R.id.editTextColor).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + final String tag = "text-color"; + Helpers.colorPicker(EditActivity.this, prefs.getInt(tag, R.color.black), new SpectrumDialog.OnColorSelectedListener() { + @Override + public void onColorSelected(boolean colorSelected, int color) { + if (colorSelected) { + final SharedPreferences.Editor editor = prefs.edit(); + editor.putInt(tag, color); + editor.apply(); + findViewById(R.id.editTextColor).setBackgroundColor(color); + } + } + }).show(getSupportFragmentManager(), tag); + } + }); + + this.findViewById(R.id.editBackColor).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + final String tag = "back-color"; + Helpers.colorPicker(EditActivity.this, prefs.getInt(tag, R.color.white), new SpectrumDialog.OnColorSelectedListener() { + @Override + public void onColorSelected(boolean colorSelected, int color) { + if (colorSelected) { + final SharedPreferences.Editor editor = prefs.edit(); + editor.putInt(tag, color); + editor.apply(); + findViewById(R.id.editBackColor).setBackgroundColor(color); + } + } + }).show(getSupportFragmentManager(), tag); + } + }); + } + + private void savePreferences() { + final SharedPreferences prefs = this.getSharedPreferences("nogafam_es_textbanner", MODE_PRIVATE); + final SharedPreferences.Editor editor = prefs.edit(); + editor.putString("main-text", getStrValue(R.id.editMainText)); + editor.putInt("font-size", getIntValue(R.id.editFontSizeFactor)); + editor.putInt("anim-velocity", getIntValue(R.id.editVelocity)); + editor.apply(); + } + + private String getStrValue(int resource) { + return ((EditText)findViewById(resource)).getText().toString().trim(); + } + + private int getIntValue(int resource) { + String value = ((EditText)findViewById(resource)).getText().toString().trim(); + if (value.equals("")) + value = "0"; + return Integer.parseInt(value); + } +} \ No newline at end of file diff --git a/app/src/main/java/es/nogafam/textbanner/Helpers.java b/app/src/main/java/es/nogafam/textbanner/Helpers.java new file mode 100644 index 0000000..0923dba --- /dev/null +++ b/app/src/main/java/es/nogafam/textbanner/Helpers.java @@ -0,0 +1,38 @@ +package es.nogafam.textbanner; + +import android.content.Context; + +import com.thebluealliance.spectrum.SpectrumDialog; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; + +public class Helpers { + + public static SpectrumDialog colorPicker(Context context, int colorSelected, SpectrumDialog.OnColorSelectedListener listener) { + return new SpectrumDialog.Builder(context) + .setColors(R.array.color_selector) + .setSelectedColor(colorSelected) + .setDismissOnColorSelected(true) + .setOutlineWidth(2) + .setOnColorSelectedListener(listener).build(); + } + + public static String readRawFile(Context context, int resource) { + InputStream is = context.getResources().openRawResource(resource); + BufferedReader br = new BufferedReader(new InputStreamReader(is)); + String readLine; + StringBuilder sb = new StringBuilder(); + try { + while ((readLine = br.readLine()) != null) + sb.append(readLine); + is.close(); + br.close(); + } catch (IOException e) { + e.printStackTrace(); + } + return sb.toString(); + } +} diff --git a/app/src/main/java/es/nogafam/textbanner/MainActivity.java b/app/src/main/java/es/nogafam/textbanner/MainActivity.java new file mode 100644 index 0000000..90eb834 --- /dev/null +++ b/app/src/main/java/es/nogafam/textbanner/MainActivity.java @@ -0,0 +1,77 @@ +package es.nogafam.textbanner; + +import androidx.appcompat.app.AppCompatActivity; + +import android.annotation.SuppressLint; +import android.content.Intent; +import android.content.SharedPreferences; +import android.content.pm.ActivityInfo; +import android.os.Bundle; +import android.util.DisplayMetrics; +import android.util.Log; +import android.view.MotionEvent; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import android.webkit.WebSettings; +import android.webkit.WebView; + +public class MainActivity extends AppCompatActivity { + + private boolean configIntentStarted = false; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + requestWindowFeature(Window.FEATURE_NO_TITLE); + setContentView(R.layout.activity_main); + getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, + WindowManager.LayoutParams.FLAG_FULLSCREEN); + getSupportActionBar().hide(); + setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); + + configIntentStarted = false; + final WebView webview = this.findViewById(R.id.mainWeb); + webview.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + if (!configIntentStarted) { + configIntentStarted = true; + Intent intent = new Intent(MainActivity.this, EditActivity.class); + startActivity(intent); + return true; + } + return false; + } + }); + loadUIWithPreferences(); + } + + @SuppressLint("SetJavaScriptEnabled") + private void loadUIWithPreferences() { + final DisplayMetrics displayMetrics = new DisplayMetrics(); + getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); + final int height = displayMetrics.heightPixels; + + final SharedPreferences prefs = this.getSharedPreferences("nogafam_es_textbanner", MODE_PRIVATE); + final WebView webview = this.findViewById(R.id.mainWeb); + final String mainText = prefs.getString("main-text", "HI"); + String html = Helpers.readRawFile(this, R.raw.main_html); + html = html.replace("{animVelocity}", String.valueOf(prefs.getInt("anim-velocity", 5)) ); + html = html.replace("{fontSize}", String.valueOf(prefs.getInt("font-size", 10)) ); + html = html.replace("{textColor}", String.format("%06X", (0xFFFFFF & prefs.getInt("text-color", R.color.black))) ); + html = html.replace("{mainText}", mainText.replace("&", "&").replace(">", ">").replace("<", "<")); + webview.getSettings().setJavaScriptEnabled(true); + webview.setBackgroundColor(prefs.getInt("back-color", R.color.white)); + webview.loadData(html, "text/html", "UTF-8"); + Log.e("html", html); + } + + @Override + protected void onResume() { + super.onResume(); + configIntentStarted = false; + loadUIWithPreferences(); + } + +} \ No newline at end of file diff --git a/app/src/main/res/drawable-v24/ic_launcher.png b/app/src/main/res/drawable-v24/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..5d350c5dbb66c7cc2c4f474bc9c2e929eba02349 GIT binary patch literal 12363 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_launcher.png b/app/src/main/res/drawable/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..5d350c5dbb66c7cc2c4f474bc9c2e929eba02349 GIT binary patch literal 12363 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_edit.xml b/app/src/main/res/layout/activity_edit.xml new file mode 100644 index 0000000..b637671 --- /dev/null +++ b/app/src/main/res/layout/activity_edit.xml @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + +