From 2374428ad0249e5d50fe102eb72bf5fd9c815b0e Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Wed, 3 May 2023 18:10:47 +0200 Subject: [PATCH 01/31] Updated to API 33, Gradle 8.0.0, Java 17 --- .github/workflows/main.yml | 4 ++-- build.gradle | 2 +- gradle.properties | 10 +++++++--- gradle/wrapper/gradle-wrapper.properties | 3 +-- omniNotes/proguard-rules.txt | 7 ++++++- omniNotes/src/main/res/raw/changelog.xml | 12 ++++++++++++ 6 files changed, 29 insertions(+), 9 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d5607c5a83..8efb1a8a95 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -11,10 +11,10 @@ jobs: uses: actions/checkout@v3 - name: Setup JDK - uses: actions/setup-java@v3 + uses: actions/setup-java@v3.11.0 with: distribution: 'temurin' - java-version: 11 + java-version: '17' cache: 'gradle' - name: Run unit/instrumentation tests and coverage generation diff --git a/build.gradle b/build.gradle index ef7ab7eddb..133d3146c4 100644 --- a/build.gradle +++ b/build.gradle @@ -23,7 +23,7 @@ buildscript { maven { url "https://plugins.gradle.org/m2/" } } dependencies { - classpath 'com.android.tools.build:gradle:7.4.2' + classpath 'com.android.tools.build:gradle:8.0.0' classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.2.0" classpath 'com.adarshr:gradle-test-logger-plugin:2.1.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.0" diff --git a/gradle.properties b/gradle.properties index a69df043b1..39890a49d6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,11 +14,11 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . # -VERSION_NAME=6.2.7 -VERSION_CODE=322 +VERSION_NAME=6.3.0 +VERSION_CODE=323 PACKAGE=it.feio.android.omninotes MIN_SDK=21 -TARGET_SDK=31 +TARGET_SDK=33 android.enableJetifier=true android.useAndroidX=true @@ -44,3 +44,7 @@ VERSION_CHECK_URL= # Google Maps API key to provide addresses autocompletion feature MAPS_API_KEY= org.gradle.unsafe.configuration-cache=on +android.enableR8.fullMode=false +android.defaults.buildfeatures.buildconfig=true +android.nonTransitiveRClass=false +android.nonFinalResIds=false diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 27bedafbc1..06aa6eb866 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -15,9 +15,8 @@ # along with this program. If not, see . # -#Thu Oct 15 07:55:52 CEST 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip diff --git a/omniNotes/proguard-rules.txt b/omniNotes/proguard-rules.txt index 3b37fb6c64..da385ab83b 100644 --- a/omniNotes/proguard-rules.txt +++ b/omniNotes/proguard-rules.txt @@ -133,4 +133,9 @@ -keepnames class com.appeaser.sublimepickerlibrary.datepicker.** { ; ; -} \ No newline at end of file +} + + + +-dontwarn javax.annotation.processing.AbstractProcessor +-dontwarn javax.annotation.processing.SupportedOptions \ No newline at end of file diff --git a/omniNotes/src/main/res/raw/changelog.xml b/omniNotes/src/main/res/raw/changelog.xml index cfb1232ef9..007039b22b 100644 --- a/omniNotes/src/main/res/raw/changelog.xml +++ b/omniNotes/src/main/res/raw/changelog.xml @@ -16,6 +16,18 @@ --> + + [b]New![/b] Targeting Android 13 API with improved performances and security updates + + + + [u]Fix[/u] Backup folder management + + From 11c97fd0c534df58023a357b5f825cac20606522 Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Thu, 4 May 2023 09:27:30 +0200 Subject: [PATCH 02/31] Replaced unattended (my fault) Facebook community with Telegram channel --- README.md | 2 +- assets/translations/play_store_description.txt | 2 +- omniNotes/src/main/assets/html/about.html | 5 ++--- .../android/omninotes/intro/IntroSlide6.java | 6 +++--- .../android/omninotes/utils/ConstantsBase.java | 9 +-------- .../src/main/res/drawable-nodpi/community.png | Bin 0 -> 55269 bytes .../src/main/res/drawable-nodpi/facebook.png | Bin 16587 -> 0 bytes omniNotes/src/main/res/raw/changelog.xml | 1 + 8 files changed, 9 insertions(+), 16 deletions(-) create mode 100644 omniNotes/src/main/res/drawable-nodpi/community.png delete mode 100644 omniNotes/src/main/res/drawable-nodpi/facebook.png diff --git a/README.md b/README.md index d8c5b01315..f8b5d7ff2e 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Omni-Notes is a note taking open-source application aimed to have both a The project was inspired by the absence of such applications compatible with old phones and old versions of Android. It aims to provide an attractive look and follow the most recent design guidelines of the Google operating system that is not currently avaialbe for older devices. -**Follow the developments and post your comments and advice on Facebook Community at https://www.facebook.com/OmniNotes** +**Follow the developments and post your comments and advice on Telegram Community at https://t.me/+VwL2-SGNdTs4ZWY0** Help to keep translations updated is always welcome, if you want give a hand checkout the translation project on *https://translate.omninotes.app.* diff --git a/assets/translations/play_store_description.txt b/assets/translations/play_store_description.txt index d70f57bfc0..bfef7f1434 100644 --- a/assets/translations/play_store_description.txt +++ b/assets/translations/play_store_description.txt @@ -1,6 +1,6 @@ Open-source note taking application, designed to be lightweight and simple without giving up smart behavior. -Follow the developments and post your comments and advice on our community at https://www.facebook.com/OmniNotes +Follow the developments and post your comments and advice on our community at https://t.me/+VwL2-SGNdTs4ZWY0 Your help in translating the app is welcome. Send me an e-mail If you want to lend a hand ! diff --git a/omniNotes/src/main/assets/html/about.html b/omniNotes/src/main/assets/html/about.html index 291dac4017..b6fd3a177c 100644 --- a/omniNotes/src/main/assets/html/about.html +++ b/omniNotes/src/main/assets/html/about.html @@ -53,10 +53,9 @@

- Give a look at our Community for + Give a look at our Community for Beta releases and at developer's personal mini-site for - other softwares, - libraries and trashware! + other softwares, libraries and trashware!

diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/intro/IntroSlide6.java b/omniNotes/src/main/java/it/feio/android/omninotes/intro/IntroSlide6.java index aa5f864d39..72d3b28972 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/intro/IntroSlide6.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/intro/IntroSlide6.java @@ -17,7 +17,7 @@ package it.feio.android.omninotes.intro; -import static it.feio.android.omninotes.utils.ConstantsBase.FACEBOOK_COMMUNITY; +import static it.feio.android.omninotes.utils.ConstantsBase.COMMUNITY_LINK; import android.content.Intent; import android.graphics.Color; @@ -35,11 +35,11 @@ public void onActivityCreated(Bundle savedInstanceState) { binding.introBackground.setBackgroundColor(Color.parseColor("#222222")); binding.introTitle.setText(R.string.tour_listactivity_final_title); binding.introImage.setVisibility(View.GONE); - binding.introImageSmall.setImageResource(R.drawable.facebook); + binding.introImageSmall.setImageResource(R.drawable.community); binding.introImageSmall.setVisibility(View.VISIBLE); binding.introImageSmall.setOnClickListener(v -> { Intent intent = new Intent(Intent.ACTION_VIEW); - intent.setData(Uri.parse(FACEBOOK_COMMUNITY)); + intent.setData(Uri.parse(COMMUNITY_LINK)); startActivity(intent); }); binding.introDescription.setText(R.string.tour_community); diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/utils/ConstantsBase.java b/omniNotes/src/main/java/it/feio/android/omninotes/utils/ConstantsBase.java index 235c748180..f597b9e99c 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/utils/ConstantsBase.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/utils/ConstantsBase.java @@ -20,14 +20,7 @@ public interface ConstantsBase { String DATABASE_NAME = "omni-notes"; String APP_STORAGE_DIRECTORY_SB_SYNC = "db_sync"; - - String DEV_EMAIL = "omninotes@iosue.it"; - String GOOGLE_PLUS_COMMUNITY = "https://plus.google.com/communities/112276053772152071903"; - String FACEBOOK_COMMUNITY = "https://www.facebook.com/OmniNotes/"; - - // Used for updates retrieval - long UPDATE_MIN_FREQUENCY = 24L * 60L * 60L * 1000L; // 1 day - String DRIVE_FOLDER_LAST_BUILD = "https://goo.gl/gB55RE"; + String COMMUNITY_LINK = "https://t.me/omninotes"; // Notes swipe int SWIPE_MARGIN = 30; diff --git a/omniNotes/src/main/res/drawable-nodpi/community.png b/omniNotes/src/main/res/drawable-nodpi/community.png new file mode 100644 index 0000000000000000000000000000000000000000..6af1042d203cec026baef8ea08ebce3bd383c268 GIT binary patch literal 55269 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%0DF(hY@>)pWlmTkPvMMcTsVySLT?!x&k{Jr`r?0 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

5x+!T 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%0D>Z8v{pg9!kIOaWXA_ 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 diff --git a/omniNotes/src/main/res/raw/changelog.xml b/omniNotes/src/main/res/raw/changelog.xml index 007039b22b..f6e9afb75b 100644 --- a/omniNotes/src/main/res/raw/changelog.xml +++ b/omniNotes/src/main/res/raw/changelog.xml @@ -20,6 +20,7 @@ changeDate="May 03, 2023" versionName="6.3.0"> [b]New![/b] Targeting Android 13 API with improved performances and security updates + [b]New![/b] Telegram channel (removed Facebook, never used...) Date: Tue, 23 May 2023 15:42:22 +0200 Subject: [PATCH 03/31] feature #236: PDF Notes export --- build.gradle | 2 +- .../android/omninotes/DetailFragment.java | 87 +++++++++++++++++++ .../it/feio/android/omninotes/OmniNotes.java | 2 + .../res/layout/pdf_template_text_note.xml | 35 ++++++++ omniNotes/src/main/res/menu/menu_detail.xml | 5 ++ 5 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 omniNotes/src/main/res/layout/pdf_template_text_note.xml diff --git a/build.gradle b/build.gradle index 133d3146c4..ef7ab7eddb 100644 --- a/build.gradle +++ b/build.gradle @@ -23,7 +23,7 @@ buildscript { maven { url "https://plugins.gradle.org/m2/" } } dependencies { - classpath 'com.android.tools.build:gradle:8.0.0' + classpath 'com.android.tools.build:gradle:7.4.2' classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.2.0" classpath 'com.adarshr:gradle-test-logger-plugin:2.1.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.0" diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java b/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java index a7565bbdca..fee3d54e81 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java @@ -75,17 +75,21 @@ import android.content.res.Configuration; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Point; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; +import android.graphics.pdf.PdfDocument; import android.location.Location; import android.media.MediaPlayer; import android.media.MediaRecorder; import android.media.ThumbnailUtils; import android.net.Uri; import android.os.AsyncTask; +import android.os.Build; import android.os.Bundle; +import android.os.Environment; import android.os.Handler; import android.provider.MediaStore; import android.text.Editable; @@ -93,6 +97,7 @@ import android.text.Spanned; import android.text.TextUtils; import android.text.TextWatcher; +import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -108,6 +113,7 @@ import android.widget.AutoCompleteTextView; import android.widget.CheckBox; import android.widget.ImageView; +import android.widget.TextView; import android.widget.Toast; import androidx.core.content.ContextCompat; import androidx.core.util.Pair; @@ -175,6 +181,8 @@ import it.feio.android.omninotes.utils.date.ReminderPickers; import it.feio.android.pixlui.links.TextLinkClickListener; import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; import java.io.IOException; import java.lang.ref.WeakReference; import java.text.DateFormat; @@ -1102,12 +1110,91 @@ public boolean onOptionsItemSelected(MenuItem item) { case R.id.menu_note_info: showNoteInfo(); break; + case R.id.menu_convert_PDF: + convertNoteToPDF(); + break; default: LogDelegate.w("Invalid menu option selected"); } return super.onOptionsItemSelected(item); } + private void convertNoteToPDF() { + + String head = getNoteTitle(); + String context = getNoteContent(); + + LayoutInflater inflater = LayoutInflater.from(this.getContext()); + + View view = inflater.inflate(R.layout.pdf_template_text_note, null); + + TextView headView = view.findViewById(R.id.txtHead); + TextView contextView = view.findViewById(R.id.txtContext); + + headView.setText(head); + contextView.setText(context); + + DisplayMetrics displayMetrics = new DisplayMetrics(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + this.getContext().getDisplay().getRealMetrics(displayMetrics); + } + else{ + this.getActivity().getWindowManager().getDefaultDisplay().getRealMetrics(displayMetrics); + } + view.measure( + View.MeasureSpec.makeMeasureSpec( + displayMetrics.widthPixels, View.MeasureSpec.EXACTLY + ), + View.MeasureSpec.makeMeasureSpec( + displayMetrics.heightPixels, View.MeasureSpec.EXACTLY + ) + ); + + view.layout(0,0,displayMetrics.widthPixels,displayMetrics.heightPixels); + + Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(),view.getMeasuredHeight(), Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + view.draw(canvas); + + Bitmap.createScaledBitmap(bitmap,view.getMeasuredWidth(),view.getMeasuredHeight(),true); + + PdfDocument pdf = new PdfDocument(); + PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(view.getMeasuredWidth(),view.getMeasuredHeight(),1).create(); + PdfDocument.Page page = pdf.startPage(pageInfo); + + Canvas canvasPage = page.getCanvas(); + canvasPage.drawBitmap(bitmap,0,0,null); + pdf.finishPage(page); + + File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),head + ".pdf"); + + try { + FileOutputStream fileOutPut = new FileOutputStream(file); + pdf.writeTo(fileOutPut); + pdf.close(); + fileOutPut.flush(); + fileOutPut.close(); + Toast.makeText(getContext(), "PDF file generated successfully.", Toast.LENGTH_SHORT).show(); + + Intent intent = new Intent(Intent.ACTION_VIEW); + Uri uri = Uri.fromFile(file); + intent.setDataAndType(uri,"application/pdf"); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + + startActivity(intent); + } + catch (FileNotFoundException e) { + e.printStackTrace(); + Toast.makeText(getContext(), "file: PDF file did not generate", Toast.LENGTH_SHORT).show(); + pdf.close(); + } + catch (IOException e) { + e.printStackTrace(); + Toast.makeText(getContext(), "I/0: PDF file did not generate", Toast.LENGTH_SHORT).show(); + pdf.close(); + } + } + private void showNoteInfo() { noteTmp.setTitle(getNoteTitle()); noteTmp.setContent(getNoteContent()); diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/OmniNotes.java b/omniNotes/src/main/java/it/feio/android/omninotes/OmniNotes.java index 9b8d89e1b8..f1d1306f54 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/OmniNotes.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/OmniNotes.java @@ -95,6 +95,8 @@ private void initSharedPreferences() { private void enableStrictMode() { if (isDebugBuild()) { StrictMode.enableDefaults(); + StrictMode.allowThreadDiskWrites(); + StrictMode.allowThreadDiskReads(); } } diff --git a/omniNotes/src/main/res/layout/pdf_template_text_note.xml b/omniNotes/src/main/res/layout/pdf_template_text_note.xml new file mode 100644 index 0000000000..28fd43658a --- /dev/null +++ b/omniNotes/src/main/res/layout/pdf_template_text_note.xml @@ -0,0 +1,35 @@ + + + + + + + + + \ No newline at end of file diff --git a/omniNotes/src/main/res/menu/menu_detail.xml b/omniNotes/src/main/res/menu/menu_detail.xml index 78dc02d359..9ec9102a8f 100644 --- a/omniNotes/src/main/res/menu/menu_detail.xml +++ b/omniNotes/src/main/res/menu/menu_detail.xml @@ -120,6 +120,11 @@ android:orderInCategory="1000" android:title="@string/discard_changes" app:showAsAction="ifRoom" /> + Date: Tue, 23 May 2023 19:35:55 +0200 Subject: [PATCH 04/31] feature #236: added tests and removed PDF creating to a diffrent class --- .../omninotes/utils/PDFHelperTest.java | 32 ++++++ .../android/omninotes/DetailFragment.java | 80 ++----------- .../omninotes/helpers/NoteToPdfHelper.java | 105 ++++++++++++++++++ 3 files changed, 145 insertions(+), 72 deletions(-) create mode 100644 omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/PDFHelperTest.java create mode 100644 omniNotes/src/main/java/it/feio/android/omninotes/helpers/NoteToPdfHelper.java diff --git a/omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/PDFHelperTest.java b/omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/PDFHelperTest.java new file mode 100644 index 0000000000..67c508841b --- /dev/null +++ b/omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/PDFHelperTest.java @@ -0,0 +1,32 @@ +package it.feio.android.omninotes.utils; + +import static org.junit.Assert.assertEquals; + +import android.os.Environment; + +import it.feio.android.omninotes.helpers.NoteToPdfHelper; +import it.feio.android.omninotes.models.Note; +import it.feio.android.omninotes.testutils.BaseAndroidTestCase; + +import org.junit.Before; +import org.junit.Test; + +import java.io.File; + +public class PDFHelperTest extends BaseAndroidTestCase { + + @Before + public void SetUp(){ + Note testNote = new Note(); + testNote.setTitle("a test note to convert to a pdf"); + testNote.setContent("this is a text so that the pdf file can be created\n some more info can be put here"); + } + + @Test + public void FillePathMadeCorrectly(){ + NoteToPdfHelper pdfHelper = new NoteToPdfHelper(); + File file = pdfHelper.CreateFillePath("aTestPath"); + File controlFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),"aTestPath.pdf"); + assertEquals(file,controlFile); + } +} diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java b/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java index fee3d54e81..04ab9a0539 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java @@ -143,6 +143,7 @@ import it.feio.android.omninotes.helpers.AttachmentsHelper; import it.feio.android.omninotes.helpers.IntentHelper; import it.feio.android.omninotes.helpers.LogDelegate; +import it.feio.android.omninotes.helpers.NoteToPdfHelper; import it.feio.android.omninotes.helpers.PermissionsHelper; import it.feio.android.omninotes.helpers.TagOpenerHelper; import it.feio.android.omninotes.helpers.date.DateHelper; @@ -1111,7 +1112,7 @@ public boolean onOptionsItemSelected(MenuItem item) { showNoteInfo(); break; case R.id.menu_convert_PDF: - convertNoteToPDF(); + createPDF(); break; default: LogDelegate.w("Invalid menu option selected"); @@ -1119,79 +1120,14 @@ public boolean onOptionsItemSelected(MenuItem item) { return super.onOptionsItemSelected(item); } - private void convertNoteToPDF() { - - String head = getNoteTitle(); - String context = getNoteContent(); - - LayoutInflater inflater = LayoutInflater.from(this.getContext()); - - View view = inflater.inflate(R.layout.pdf_template_text_note, null); - - TextView headView = view.findViewById(R.id.txtHead); - TextView contextView = view.findViewById(R.id.txtContext); - - headView.setText(head); - contextView.setText(context); - - DisplayMetrics displayMetrics = new DisplayMetrics(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { - this.getContext().getDisplay().getRealMetrics(displayMetrics); - } - else{ - this.getActivity().getWindowManager().getDefaultDisplay().getRealMetrics(displayMetrics); - } - view.measure( - View.MeasureSpec.makeMeasureSpec( - displayMetrics.widthPixels, View.MeasureSpec.EXACTLY - ), - View.MeasureSpec.makeMeasureSpec( - displayMetrics.heightPixels, View.MeasureSpec.EXACTLY - ) - ); - - view.layout(0,0,displayMetrics.widthPixels,displayMetrics.heightPixels); - - Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(),view.getMeasuredHeight(), Bitmap.Config.ARGB_8888); - Canvas canvas = new Canvas(bitmap); - view.draw(canvas); - - Bitmap.createScaledBitmap(bitmap,view.getMeasuredWidth(),view.getMeasuredHeight(),true); - - PdfDocument pdf = new PdfDocument(); - PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(view.getMeasuredWidth(),view.getMeasuredHeight(),1).create(); - PdfDocument.Page page = pdf.startPage(pageInfo); - - Canvas canvasPage = page.getCanvas(); - canvasPage.drawBitmap(bitmap,0,0,null); - pdf.finishPage(page); - - File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),head + ".pdf"); - - try { - FileOutputStream fileOutPut = new FileOutputStream(file); - pdf.writeTo(fileOutPut); - pdf.close(); - fileOutPut.flush(); - fileOutPut.close(); - Toast.makeText(getContext(), "PDF file generated successfully.", Toast.LENGTH_SHORT).show(); - - Intent intent = new Intent(Intent.ACTION_VIEW); - Uri uri = Uri.fromFile(file); - intent.setDataAndType(uri,"application/pdf"); - intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - + private void createPDF(){ + NoteToPdfHelper pdfHelper = new NoteToPdfHelper(); + Intent intent = pdfHelper.convertStringToPDF(getNoteTitle(),getNoteContent(),this.getContext()); + if(intent != null){ startActivity(intent); } - catch (FileNotFoundException e) { - e.printStackTrace(); - Toast.makeText(getContext(), "file: PDF file did not generate", Toast.LENGTH_SHORT).show(); - pdf.close(); - } - catch (IOException e) { - e.printStackTrace(); - Toast.makeText(getContext(), "I/0: PDF file did not generate", Toast.LENGTH_SHORT).show(); - pdf.close(); + else{ + Toast.makeText(getContext(), "PDF file wasnt created.", Toast.LENGTH_SHORT).show(); } } diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NoteToPdfHelper.java b/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NoteToPdfHelper.java new file mode 100644 index 0000000000..fe903fa78c --- /dev/null +++ b/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NoteToPdfHelper.java @@ -0,0 +1,105 @@ +package it.feio.android.omninotes.helpers; + +import android.content.Context; +import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.pdf.PdfDocument; +import android.net.Uri; +import android.os.Build; +import android.os.Environment; +import android.util.DisplayMetrics; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.TextView; +import android.widget.Toast; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; + +import it.feio.android.omninotes.BaseFragment; +import it.feio.android.omninotes.R; + +public class NoteToPdfHelper extends BaseFragment { + + public Intent convertStringToPDF(String head, String contents, Context context) { + + LayoutInflater inflater = LayoutInflater.from(context); + + View view = inflater.inflate(R.layout.pdf_template_text_note, null); + + TextView headView = view.findViewById(R.id.txtHead); + TextView contextView = view.findViewById(R.id.txtContext); + + headView.setText(head); + contextView.setText(contents); + + DisplayMetrics displayMetrics = new DisplayMetrics(); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + context.getDisplay().getRealMetrics(displayMetrics); + } + + view.measure( + View.MeasureSpec.makeMeasureSpec( + displayMetrics.widthPixels, View.MeasureSpec.EXACTLY + ), + View.MeasureSpec.makeMeasureSpec( + displayMetrics.heightPixels, View.MeasureSpec.EXACTLY + ) + ); + + view.layout(0,0,displayMetrics.widthPixels,displayMetrics.heightPixels); + + Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(),view.getMeasuredHeight(), Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + view.draw(canvas); + + Bitmap.createScaledBitmap(bitmap,view.getMeasuredWidth(),view.getMeasuredHeight(),true); + + PdfDocument pdf = new PdfDocument(); + PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(view.getMeasuredWidth(),view.getMeasuredHeight(),1).create(); + PdfDocument.Page page = pdf.startPage(pageInfo); + + Canvas canvasPage = page.getCanvas(); + canvasPage.drawBitmap(bitmap,0,0,null); + pdf.finishPage(page); + + File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),head + ".pdf"); + + try { + FileOutputStream fileOutPut = new FileOutputStream(file); + pdf.writeTo(fileOutPut); + pdf.close(); + fileOutPut.flush(); + fileOutPut.close(); + Toast.makeText(context, "PDF file generated successfully.", Toast.LENGTH_SHORT).show(); + + Intent intent = new Intent(Intent.ACTION_VIEW); + Uri uri = Uri.fromFile(file); + intent.setDataAndType(uri,"application/pdf"); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + + return intent; + } + catch (FileNotFoundException e) { + e.printStackTrace(); + Toast.makeText(context, "file: PDF file did not generate", Toast.LENGTH_SHORT).show(); + pdf.close(); + } + catch (IOException e) { + e.printStackTrace(); + Toast.makeText(context, "I/0: PDF file did not generate", Toast.LENGTH_SHORT).show(); + pdf.close(); + } + return null; + } + + public File CreateFillePath(String title){ + File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),title + ".pdf"); + System.out.println(file); + return file; + } +} From fc529ec6a1920e1a1e82f34f0753e215acba8ab2 Mon Sep 17 00:00:00 2001 From: unic77 <112702446+unic77@users.noreply.github.com> Date: Thu, 25 May 2023 19:29:47 +0200 Subject: [PATCH 05/31] feature #236: added test case, made new clas to convert notes to PDF --- build.gradle | 2 +- .../omninotes/utils/NoteToPdfHelperTest.java | 69 +++++++++++++++ .../omninotes/utils/PDFHelperTest.java | 32 ------- .../omninotes/helpers/NoteToPdfHelper.java | 86 +++++++++++-------- 4 files changed, 120 insertions(+), 69 deletions(-) create mode 100644 omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/NoteToPdfHelperTest.java delete mode 100644 omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/PDFHelperTest.java diff --git a/build.gradle b/build.gradle index ef7ab7eddb..d163da6c8a 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * - * This program is distributed in the hope that it will be useful, + * 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. diff --git a/omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/NoteToPdfHelperTest.java b/omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/NoteToPdfHelperTest.java new file mode 100644 index 0000000000..e3df37c4b3 --- /dev/null +++ b/omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/NoteToPdfHelperTest.java @@ -0,0 +1,69 @@ +package it.feio.android.omninotes.utils; + +import android.graphics.pdf.PdfDocument; + +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.io.File; + +import it.feio.android.omninotes.helpers.NoteToPdfHelper; +import it.feio.android.omninotes.models.Note; +import it.feio.android.omninotes.testutils.BaseAndroidTestCase; + +@RunWith(AndroidJUnit4.class) +public class NoteToPdfHelperTest extends BaseAndroidTestCase { + + private NoteToPdfHelper pdfConverter; + private Note note; + + @Before + public void setup(){ + pdfConverter = new NoteToPdfHelper(); + note = new Note(); + } + + @Test + public void testNotePdfCreateWithSpaces(){ + note.setContent("this is a test note"); + note.setTitle("test with spaces in name"); + File file = pdfConverter.createFilePath(note.getTitle()); + File filePath = new File("/storage/emulated/0/Documents/test with spaces in name.pdf"); + Assert.assertEquals(file,filePath); + } + + @Test + public void testNotePdfCreateWithoutSpaces(){ + note.setContent("this is a test note"); + note.setTitle("testWithoutSpacesInName"); + File file = pdfConverter.createFilePath(note.getTitle()); + File filePath = new File("/storage/emulated/0/Documents/testWithoutSpacesInName.pdf"); + Assert.assertEquals(file,filePath); + } + + @Test + public void testNotePdfCreateWithOtherTypeCharSpaces(){ + note.setContent("this is a test note"); + note.setTitle("test.WithoutSpacesInName"); + File file = pdfConverter.createFilePath(note.getTitle()); + Assert.assertNull(file); + } + + @Test + public void testIfPdfIsCreated(){ + PdfDocument pdf = new PdfDocument(); + + PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(524,830,1).create(); + PdfDocument.Page page = pdf.startPage(pageInfo); + + pdf.finishPage(page); + File file = pdfConverter.createFilePath(note.getTitle()); + pdfConverter.writePdfToFillePath(pdf,file); + Assert.assertTrue(file.exists()); + } + +} diff --git a/omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/PDFHelperTest.java b/omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/PDFHelperTest.java deleted file mode 100644 index 67c508841b..0000000000 --- a/omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/PDFHelperTest.java +++ /dev/null @@ -1,32 +0,0 @@ -package it.feio.android.omninotes.utils; - -import static org.junit.Assert.assertEquals; - -import android.os.Environment; - -import it.feio.android.omninotes.helpers.NoteToPdfHelper; -import it.feio.android.omninotes.models.Note; -import it.feio.android.omninotes.testutils.BaseAndroidTestCase; - -import org.junit.Before; -import org.junit.Test; - -import java.io.File; - -public class PDFHelperTest extends BaseAndroidTestCase { - - @Before - public void SetUp(){ - Note testNote = new Note(); - testNote.setTitle("a test note to convert to a pdf"); - testNote.setContent("this is a text so that the pdf file can be created\n some more info can be put here"); - } - - @Test - public void FillePathMadeCorrectly(){ - NoteToPdfHelper pdfHelper = new NoteToPdfHelper(); - File file = pdfHelper.CreateFillePath("aTestPath"); - File controlFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),"aTestPath.pdf"); - assertEquals(file,controlFile); - } -} diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NoteToPdfHelper.java b/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NoteToPdfHelper.java index fe903fa78c..063de33125 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NoteToPdfHelper.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NoteToPdfHelper.java @@ -21,8 +21,9 @@ import it.feio.android.omninotes.BaseFragment; import it.feio.android.omninotes.R; +import it.feio.android.omninotes.databinding.PdfTemplateTextNoteBinding; -public class NoteToPdfHelper extends BaseFragment { +public class NoteToPdfHelper { public Intent convertStringToPDF(String head, String contents, Context context) { @@ -36,8 +37,54 @@ public Intent convertStringToPDF(String head, String contents, Context context) headView.setText(head); contextView.setText(contents); + PdfDocument pdf = createPdfFromView(view, context); + + File file = createFilePath(head); + + if(file != null) { + writePdfToFillePath(pdf, file); + Intent intent = new Intent(Intent.ACTION_VIEW); + Uri uri = Uri.fromFile(file); + intent.setDataAndType(uri,"application/pdf"); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + + return intent; + } + else{ + return null; + } + } + + public File createFilePath(String head){ + if(head.contains(".") || head.contains("/")){ + return null; + } + else { + return new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), head + ".pdf"); + } + } + + public void writePdfToFillePath(PdfDocument pdf,File file){ + try { + FileOutputStream fileOutPut = new FileOutputStream(file); + pdf.writeTo(fileOutPut); + pdf.close(); + fileOutPut.flush(); + fileOutPut.close(); + } + catch (FileNotFoundException e) { + e.printStackTrace(); + pdf.close(); + } + catch (IOException e) { + e.printStackTrace(); + pdf.close(); + } + } + + public PdfDocument createPdfFromView(View view,Context context){ DisplayMetrics displayMetrics = new DisplayMetrics(); - + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { context.getDisplay().getRealMetrics(displayMetrics); } @@ -67,39 +114,6 @@ public Intent convertStringToPDF(String head, String contents, Context context) canvasPage.drawBitmap(bitmap,0,0,null); pdf.finishPage(page); - File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),head + ".pdf"); - - try { - FileOutputStream fileOutPut = new FileOutputStream(file); - pdf.writeTo(fileOutPut); - pdf.close(); - fileOutPut.flush(); - fileOutPut.close(); - Toast.makeText(context, "PDF file generated successfully.", Toast.LENGTH_SHORT).show(); - - Intent intent = new Intent(Intent.ACTION_VIEW); - Uri uri = Uri.fromFile(file); - intent.setDataAndType(uri,"application/pdf"); - intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - - return intent; - } - catch (FileNotFoundException e) { - e.printStackTrace(); - Toast.makeText(context, "file: PDF file did not generate", Toast.LENGTH_SHORT).show(); - pdf.close(); - } - catch (IOException e) { - e.printStackTrace(); - Toast.makeText(context, "I/0: PDF file did not generate", Toast.LENGTH_SHORT).show(); - pdf.close(); - } - return null; - } - - public File CreateFillePath(String title){ - File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),title + ".pdf"); - System.out.println(file); - return file; + return pdf; } } From 10ec5636b90b3702630b5a6dba196a30b5d7a5d3 Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Sat, 29 Apr 2023 19:27:55 +0200 Subject: [PATCH 06/31] Version 6.2.7 code 322 --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 7899efa395..a69df043b1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,8 +14,8 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . # -VERSION_NAME=6.2.6 -VERSION_CODE=321 +VERSION_NAME=6.2.7 +VERSION_CODE=322 PACKAGE=it.feio.android.omninotes MIN_SDK=21 TARGET_SDK=31 From 56f53dc30e42f85413ac6a68101c86b0aaa0141b Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Sun, 30 Apr 2023 22:27:49 +0200 Subject: [PATCH 07/31] Removed outdated icon --- assets/ic_launcher-web.png | Bin 30454 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 assets/ic_launcher-web.png diff --git a/assets/ic_launcher-web.png b/assets/ic_launcher-web.png deleted file mode 100644 index efcf350a8b59dd7d848a43b63646a234b709aee1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30454 zcmdRW_dnJD`~UL{>maA>t&)uFS=K>h?`%0nMz-w2v1KM(*)xQ!YzLvNtdLC-*<`QJ z^Yngw|A?<&bUV)TF|Nn;xUT#CeqGOAX{tXWMbIGt03cOTe5efoQ1G8nfDj-2_1Ams z6aYM1lpf0HdQWYb5_s!AouaI)EH9n@JMZB&`⪙jTTCXplejLu?FNR@F4Q-u@SPb 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 V Date: Sun, 30 Apr 2023 22:28:06 +0200 Subject: [PATCH 08/31] Added graphic for F-Droid --- .../android/en-US/images/feature-graphic.png | Bin 0 -> 105058 bytes .../metadata/android/en-US/images/icon.png | Bin 0 -> 9457 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 fastlane/metadata/android/en-US/images/feature-graphic.png create mode 100644 fastlane/metadata/android/en-US/images/icon.png diff --git a/fastlane/metadata/android/en-US/images/feature-graphic.png b/fastlane/metadata/android/en-US/images/feature-graphic.png new file mode 100644 index 0000000000000000000000000000000000000000..6fdd2741213e97efc6a6507893ad918ee4f15684 GIT binary patch literal 105058 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 literal 0 HcmV?d00001 diff --git a/fastlane/metadata/android/en-US/images/icon.png b/fastlane/metadata/android/en-US/images/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a4941d1e0fccd85336d590ee56254787f6d6a3fc GIT binary patch literal 9457 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 Date: Wed, 3 May 2023 16:39:53 +0200 Subject: [PATCH 09/31] Completelly removed legacy Butterknife dependency and usage --- omniNotes/build.gradle | 2 - .../android/omninotes/async/MainMenuTask.java | 43 ++++++++----------- 2 files changed, 18 insertions(+), 27 deletions(-) diff --git a/omniNotes/build.gradle b/omniNotes/build.gradle index f069f79ce9..3cb691353f 100644 --- a/omniNotes/build.gradle +++ b/omniNotes/build.gradle @@ -173,8 +173,6 @@ dependencies { transitive = true exclude group: "com.android.support" } - implementation 'com.jakewharton:butterknife:10.2.1' - annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' implementation('org.mnode.ical4j:ical4j:3.0.11') { exclude group: 'commons.io' } diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/async/MainMenuTask.java b/omniNotes/src/main/java/it/feio/android/omninotes/async/MainMenuTask.java index 311873cee2..2dbcb103dc 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/async/MainMenuTask.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/async/MainMenuTask.java @@ -24,17 +24,15 @@ import android.content.res.TypedArray; import android.os.AsyncTask; import androidx.fragment.app.Fragment; -import butterknife.BindView; -import butterknife.ButterKnife; import com.pixplicity.easyprefs.library.Prefs; import de.greenrobot.event.EventBus; import it.feio.android.omninotes.MainActivity; import it.feio.android.omninotes.R; import it.feio.android.omninotes.async.bus.NavigationUpdatedEvent; +import it.feio.android.omninotes.databinding.FragmentNavigationDrawerBinding; import it.feio.android.omninotes.models.NavigationItem; import it.feio.android.omninotes.models.adapters.NavDrawerAdapter; import it.feio.android.omninotes.models.misc.DynamicNavigationLookupTable; -import it.feio.android.omninotes.models.views.NonScrollableListView; import it.feio.android.omninotes.utils.Navigation; import java.lang.ref.WeakReference; import java.util.ArrayList; @@ -43,18 +41,15 @@ public class MainMenuTask extends AsyncTask> { - private final WeakReference mFragmentWeakReference; + private final WeakReference fragmentWeakReference; private final MainActivity mainActivity; - @BindView(R.id.drawer_nav_list) - NonScrollableListView mDrawerList; - @BindView(R.id.drawer_tag_list) - NonScrollableListView mDrawerCategoriesList; + FragmentNavigationDrawerBinding navDrawer; - public MainMenuTask(Fragment mFragment) { - mFragmentWeakReference = new WeakReference<>(mFragment); - this.mainActivity = (MainActivity) mFragment.getActivity(); - ButterKnife.bind(this, mFragment.getView()); + public MainMenuTask(Fragment fragment) { + fragmentWeakReference = new WeakReference<>(fragment); + mainActivity = (MainActivity) fragment.getActivity(); + navDrawer = FragmentNavigationDrawerBinding.inflate(fragment.getLayoutInflater()); } @Override @@ -65,33 +60,31 @@ protected List doInBackground(Void... params) { @Override protected void onPostExecute(final List items) { if (isAlive()) { - mDrawerList.setAdapter(new NavDrawerAdapter(mainActivity, items)); - mDrawerList.setOnItemClickListener((arg0, arg1, position, arg3) -> { - String navigation = mFragmentWeakReference.get().getResources().getStringArray(R.array + navDrawer.drawerNavList.setAdapter(new NavDrawerAdapter(mainActivity, items)); + navDrawer.drawerNavList.setOnItemClickListener((arg0, arg1, position, arg3) -> { + String navigation = fragmentWeakReference.get().getResources().getStringArray(R.array .navigation_list_codes)[items.get(position).getArrayIndex()]; updateNavigation(position, navigation); }); - mDrawerList.justifyListViewHeightBasedOnChildren(); + navDrawer.drawerNavList.justifyListViewHeightBasedOnChildren(); } } private void updateNavigation(int position, String navigation) { if (mainActivity.updateNavigation(navigation)) { - mDrawerList.setItemChecked(position, true); - if (mDrawerCategoriesList != null) { - mDrawerCategoriesList.setItemChecked(0, false); // Called to force redraw - } + navDrawer.drawerNavList.setItemChecked(position, true); + navDrawer.drawerTagList.setItemChecked(0, false); // Called to force redraw mainActivity.getIntent().setAction(Intent.ACTION_MAIN); EventBus.getDefault() - .post(new NavigationUpdatedEvent(mDrawerList.getItemAtPosition(position))); + .post(new NavigationUpdatedEvent(navDrawer.drawerNavList.getItemAtPosition(position))); } } private boolean isAlive() { - return mFragmentWeakReference.get() != null - && mFragmentWeakReference.get().isAdded() - && mFragmentWeakReference.get().getActivity() != null - && !mFragmentWeakReference.get().getActivity().isFinishing(); + return fragmentWeakReference.get() != null + && fragmentWeakReference.get().isAdded() + && fragmentWeakReference.get().getActivity() != null + && !fragmentWeakReference.get().getActivity().isFinishing(); } private List buildMainMenu() { From c5a8721d1e87adaae275e73fb8d82e1ed02a93f3 Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Wed, 3 May 2023 18:10:47 +0200 Subject: [PATCH 10/31] Updated to API 33, Gradle 8.0.0, Java 17 --- .github/workflows/main.yml | 4 ++-- build.gradle | 2 +- gradle.properties | 10 +++++++--- gradle/wrapper/gradle-wrapper.properties | 3 +-- omniNotes/proguard-rules.txt | 7 ++++++- omniNotes/src/main/res/raw/changelog.xml | 12 ++++++++++++ 6 files changed, 29 insertions(+), 9 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d5607c5a83..8efb1a8a95 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -11,10 +11,10 @@ jobs: uses: actions/checkout@v3 - name: Setup JDK - uses: actions/setup-java@v3 + uses: actions/setup-java@v3.11.0 with: distribution: 'temurin' - java-version: 11 + java-version: '17' cache: 'gradle' - name: Run unit/instrumentation tests and coverage generation diff --git a/build.gradle b/build.gradle index ef7ab7eddb..133d3146c4 100644 --- a/build.gradle +++ b/build.gradle @@ -23,7 +23,7 @@ buildscript { maven { url "https://plugins.gradle.org/m2/" } } dependencies { - classpath 'com.android.tools.build:gradle:7.4.2' + classpath 'com.android.tools.build:gradle:8.0.0' classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.2.0" classpath 'com.adarshr:gradle-test-logger-plugin:2.1.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.0" diff --git a/gradle.properties b/gradle.properties index a69df043b1..39890a49d6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,11 +14,11 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . # -VERSION_NAME=6.2.7 -VERSION_CODE=322 +VERSION_NAME=6.3.0 +VERSION_CODE=323 PACKAGE=it.feio.android.omninotes MIN_SDK=21 -TARGET_SDK=31 +TARGET_SDK=33 android.enableJetifier=true android.useAndroidX=true @@ -44,3 +44,7 @@ VERSION_CHECK_URL= # Google Maps API key to provide addresses autocompletion feature MAPS_API_KEY= org.gradle.unsafe.configuration-cache=on +android.enableR8.fullMode=false +android.defaults.buildfeatures.buildconfig=true +android.nonTransitiveRClass=false +android.nonFinalResIds=false diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 27bedafbc1..06aa6eb866 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -15,9 +15,8 @@ # along with this program. If not, see . # -#Thu Oct 15 07:55:52 CEST 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip diff --git a/omniNotes/proguard-rules.txt b/omniNotes/proguard-rules.txt index 3b37fb6c64..da385ab83b 100644 --- a/omniNotes/proguard-rules.txt +++ b/omniNotes/proguard-rules.txt @@ -133,4 +133,9 @@ -keepnames class com.appeaser.sublimepickerlibrary.datepicker.** { ; ; -} \ No newline at end of file +} + + + +-dontwarn javax.annotation.processing.AbstractProcessor +-dontwarn javax.annotation.processing.SupportedOptions \ No newline at end of file diff --git a/omniNotes/src/main/res/raw/changelog.xml b/omniNotes/src/main/res/raw/changelog.xml index cfb1232ef9..007039b22b 100644 --- a/omniNotes/src/main/res/raw/changelog.xml +++ b/omniNotes/src/main/res/raw/changelog.xml @@ -16,6 +16,18 @@ --> + + [b]New![/b] Targeting Android 13 API with improved performances and security updates + + + + [u]Fix[/u] Backup folder management + + From 0d3d6a1b9ab08b62d7afa64d91c7b37c55ced7f9 Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Thu, 4 May 2023 09:27:30 +0200 Subject: [PATCH 11/31] Replaced unattended (my fault) Facebook community with Telegram channel --- README.md | 2 +- assets/translations/play_store_description.txt | 2 +- omniNotes/src/main/assets/html/about.html | 5 ++--- .../android/omninotes/intro/IntroSlide6.java | 6 +++--- .../android/omninotes/utils/ConstantsBase.java | 9 +-------- .../src/main/res/drawable-nodpi/community.png | Bin 0 -> 55269 bytes .../src/main/res/drawable-nodpi/facebook.png | Bin 16587 -> 0 bytes omniNotes/src/main/res/raw/changelog.xml | 1 + 8 files changed, 9 insertions(+), 16 deletions(-) create mode 100644 omniNotes/src/main/res/drawable-nodpi/community.png delete mode 100644 omniNotes/src/main/res/drawable-nodpi/facebook.png diff --git a/README.md b/README.md index d8c5b01315..f8b5d7ff2e 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Omni-Notes is a note taking open-source application aimed to have both a The project was inspired by the absence of such applications compatible with old phones and old versions of Android. It aims to provide an attractive look and follow the most recent design guidelines of the Google operating system that is not currently avaialbe for older devices. -**Follow the developments and post your comments and advice on Facebook Community at https://www.facebook.com/OmniNotes** +**Follow the developments and post your comments and advice on Telegram Community at https://t.me/+VwL2-SGNdTs4ZWY0** Help to keep translations updated is always welcome, if you want give a hand checkout the translation project on *https://translate.omninotes.app.* diff --git a/assets/translations/play_store_description.txt b/assets/translations/play_store_description.txt index d70f57bfc0..bfef7f1434 100644 --- a/assets/translations/play_store_description.txt +++ b/assets/translations/play_store_description.txt @@ -1,6 +1,6 @@ Open-source note taking application, designed to be lightweight and simple without giving up smart behavior. -Follow the developments and post your comments and advice on our community at https://www.facebook.com/OmniNotes +Follow the developments and post your comments and advice on our community at https://t.me/+VwL2-SGNdTs4ZWY0 Your help in translating the app is welcome. Send me an e-mail If you want to lend a hand ! diff --git a/omniNotes/src/main/assets/html/about.html b/omniNotes/src/main/assets/html/about.html index 291dac4017..b6fd3a177c 100644 --- a/omniNotes/src/main/assets/html/about.html +++ b/omniNotes/src/main/assets/html/about.html @@ -53,10 +53,9 @@

    - Give a look at our Community for + Give a look at our Community for Beta releases and at developer's personal mini-site for - other softwares, - libraries and trashware! + other softwares, libraries and trashware!

    diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/intro/IntroSlide6.java b/omniNotes/src/main/java/it/feio/android/omninotes/intro/IntroSlide6.java index aa5f864d39..72d3b28972 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/intro/IntroSlide6.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/intro/IntroSlide6.java @@ -17,7 +17,7 @@ package it.feio.android.omninotes.intro; -import static it.feio.android.omninotes.utils.ConstantsBase.FACEBOOK_COMMUNITY; +import static it.feio.android.omninotes.utils.ConstantsBase.COMMUNITY_LINK; import android.content.Intent; import android.graphics.Color; @@ -35,11 +35,11 @@ public void onActivityCreated(Bundle savedInstanceState) { binding.introBackground.setBackgroundColor(Color.parseColor("#222222")); binding.introTitle.setText(R.string.tour_listactivity_final_title); binding.introImage.setVisibility(View.GONE); - binding.introImageSmall.setImageResource(R.drawable.facebook); + binding.introImageSmall.setImageResource(R.drawable.community); binding.introImageSmall.setVisibility(View.VISIBLE); binding.introImageSmall.setOnClickListener(v -> { Intent intent = new Intent(Intent.ACTION_VIEW); - intent.setData(Uri.parse(FACEBOOK_COMMUNITY)); + intent.setData(Uri.parse(COMMUNITY_LINK)); startActivity(intent); }); binding.introDescription.setText(R.string.tour_community); diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/utils/ConstantsBase.java b/omniNotes/src/main/java/it/feio/android/omninotes/utils/ConstantsBase.java index 235c748180..f597b9e99c 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/utils/ConstantsBase.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/utils/ConstantsBase.java @@ -20,14 +20,7 @@ public interface ConstantsBase { String DATABASE_NAME = "omni-notes"; String APP_STORAGE_DIRECTORY_SB_SYNC = "db_sync"; - - String DEV_EMAIL = "omninotes@iosue.it"; - String GOOGLE_PLUS_COMMUNITY = "https://plus.google.com/communities/112276053772152071903"; - String FACEBOOK_COMMUNITY = "https://www.facebook.com/OmniNotes/"; - - // Used for updates retrieval - long UPDATE_MIN_FREQUENCY = 24L * 60L * 60L * 1000L; // 1 day - String DRIVE_FOLDER_LAST_BUILD = "https://goo.gl/gB55RE"; + String COMMUNITY_LINK = "https://t.me/omninotes"; // Notes swipe int SWIPE_MARGIN = 30; diff --git a/omniNotes/src/main/res/drawable-nodpi/community.png b/omniNotes/src/main/res/drawable-nodpi/community.png new file mode 100644 index 0000000000000000000000000000000000000000..6af1042d203cec026baef8ea08ebce3bd383c268 GIT binary patch literal 55269 zcmd>l^;?tg`~I^rV3MPe94ShdpwvJbDW#E+MoJ8n9$iv`gh+RH$ELKj2na}*v~+LZ z`FbCpzv80dzUn;B`&xvKmI^5m0}%iKq-v^)PXGXn`w9l21h~ub`=6J% z3xSn}iXwph_s(iBOu*f_^-|UNHE_qg{oe=F(^YDPyGi&)O;d?*8K0Jf7u;HLCWQg=D}_5sj=km{FK=>qU-)2O z$<=YCpMJXMin5K(?--9CI7#Aea2sELi$Y%$w4AWtxYk^tEPXQgiD>FVSD%@|+ zfR``%?)8bQb{x+tX^Y%`aG9s~X7jU6UaLetcgv4BF13$qJlQ#DdbYrlE)XJ1j~hGz zAfb`U--o*`X;XCv!N}t6aqdSHz@U%ow?ojMZiVbP+YldFx%;w7%(F80G0U~qQvUB2 zng&LOo#S-`NYwo|n(qVz1rY;eF(D#7Ho)hbTtLT#w?iOQTdJ{j86z+L&ok9vtu6tnIslrI1ryY#-9zS9oCvFxt;9=_1 zV)~svTYEGy7khI$kskY7bbT}`uC^P&f|$gh`dROgkqH2jlHXoTl+wt(D(~@C$xQrX z{`!rDk3*A+<{9Zg#INw8u26g>W?CE1yKJ269(7OdA$35CRR)C6Y=8|8K)DR=K;VIZ z6&8=nvcQq*A)YA7to#W2F#*A^eN%I9J9;5f<`15W)>NLIqi3lhzsY2hXLY{}w|&f% zZsMrj{>0qM;%nJE-|H`kLrkDdLfj|=tpPc{jL=>nOAUa&zR4k ztMzAsV+9K3Y9P1h(G;-|5&kw-xw-&hY1xu0h*2A{&ES0;BbPRPv{mcvhy7bCxbSv% zzC@Nl1Ckg84wCEmU)(maU8meo1*{Ec;@$mBIqB*>FjFC}!jzlmCGmai++8uttUla4 zjwU=3tTqWRC4#7h@~Fi?{jy2*43yx1LcqsXpl%vh(Gvt2%e2l~Ub-~>Qq@iz2-=JgN+utxuN<8!kxRw`5X`N@+A zF5cMq<^Jf8v~#LFy6dF(?jiK_R3nMhbm8hmHv0HnHXdE^>x5Q?B#69rf#b z>?~@dY>AxNTlvMbXL33&K8B$Wfs~RektR$PPB%B|Za)|B4jwL;IK9m^!cj`+@vBT?8sxAF0d= zpQ>N2!#a56f3WMY>++aD0y%>|-U|wQ&-$$EQIHm6Qw+aPvU!M!!Z#a)aHa~IM6{0w zL-!`hV{3uTv{28gl-u6$qpg9n>&-jZ%k6gm_wQ?Rwn>ogrX+t63jbA#hmb&*wL8z7 z&+Ic!>SrsMcjYk0uYXo#jN==d#{Mvo13}qfwluHA2*fFa${gWj1nRj(-pgl5&SsBz&;v>LbH#Hl8R)0|G$68>>2TW7Ml?a_)%a^y7~c5F&hbj~&DEaw+Sg3% za(<@Y{zPPkMn-`9-tEOjFs|4Ksrq;08#Xjc6MS&S>5=F5J}S#mh3dYkfT13TPL6xjF-^DGXhzUkL}w^hpdf{3 zF`A6`%6~B^>D=<86oiZGIpQ-FbnwFVJ|+GKP{=c~=0WPir&K~j%@2B0y1x-mU3f8Q05vEN4jT_+wH^9pMSH#z=u$Z(NUrVw!l z7I6pOU$gQR@tH|6?~8M|(vBVJ$2-K9Lf#Xk`M-$N`#$Jov8XLXOIQwXlkm_I_i1Ue zNeC0<#_>vprYH+sU2V2Y`CS~QV-KPX_ir{kY91Xm!07QT*#Gkb2TalBhjwDdLf_&O z+nY2u={p^7y6?+Jv6y0>Mb&`ClY(ir5s5aitsh=z=NZPzd)(Hd{#41ivB5T@g!&H( zby2~_-;gr`4C*D`#Mg%egH(7S;F<)gKF#P(p49=ywC>Fa!X68sOSz1W6VWrfp3_a+ zIU8qTq2Vyz|I!{~bT!8_Fkw-DGDCxRC&N8rQtJKPY%w!0vpAZfF-Tpo<|PC!{%ZRg z?rora&Q)_JcHZ}mrE2ieBZFR3_^$yd*m3Xo;MeUz$Z-xAK}~|SP-MvT8HumI2R4Is zzh(c9Tv<3B&kRezqpB^^moHy}&|jCn&Fsq?BP?uQ7QZ^TxEWeMubD{Ji2oJAgI_>Q z{X!a_KR&RGM|5xXg52jM*jGXUDU9Zc_r-g~HbkQQqZuz%d@RLNvWyd=K0sJ^YdQ01 zzRk(nlBCbRwomH=o1D08pyfQ)$i)f%hx!I1WXc|!n25Do83zyM(TUr!W=5sng< z>W~AxZ!52YMFl2X2pgWrt0tM#(a^jQiB{zU$>+tezLZd~BwLyy8YD)0-I0wokRy;H z&ca(ix=2lr);Xkv+U%XJd^#_cmw0Sb$Q{QlWz$WZ2!5bxEh6Xlm#)>{d*m$hYF-v>&HISyWl` zp;=`Fd3n=E^~1v-3HR>atFvJ+k-qif>U^8F!krDGZqT8-GGxj1Q)Oy(HeWB#mqOi^AB|{NxbJyZoL?KM`o%}~z!;8zj zp0vEd?-KM`X@fDNmF4uGHSynY5L~mQxGZDQm)5f3v9F>s0hps>F`D^c>fzL5-vA$$ z)ao0a$66*efuO-r^7Yfb%f=1NN@hpne*Be&28g@NHsEFv6!fq3@agbWO`h3@`>)v= z3NlJwT%&YaFB<}kX16Kjkx8l?N$QVa-Oc3XQAFOK=7AnyuHo2;LM=-H9Yk;BfHyHN zg3Qb#{|S}05&as>&LtX20J%$Q>_5q!LJnR`)9O}61&AaUtMsv`npno zxtL!x+R9yVTt-L#?flbCJxF33XfWpY)a{_JTXKuLl;8{kX5;sG6Z}h8@|Wh}sF{Z- z1TaPhFFWZL3cC$6&V%sdloWyft9x0%{+vFrCY8GHWw40ZnD=JPFHCri0=0>yt` z4yLxceee{ZpYs|j!HipYr!#4%n|iJ18Ic^kVYShBbY7EqAD!)Nwy^eSPYGJ5Px2;< z$CAYif6z%vE_}f+H=`9rEzLuDXT$Bwkvz5pR z!wWYQ#|w(C7O!k&_84f*d{A+6{@#T1b}h^yjNa%^P@?#3#>9&axdRE#y&A5<5_3>; zAQIH4sm<})QtkoTEm*n5oQ`8NEPx<1^T8A zTF9a5r8v25bmiEs14Ac47$OHky(dj{ltdshp7I+-=p}29a#})X6qWRK<}J z(64oAOTQ;mO=!hX><5LR)4^=a4~vZBZq79?K~(-+Ma*J6urS|bY~~PVSX0x8B_QV$ zP2Y!a75#LXn8Otb3+#$WdK;^>Eb^bLk#S%lfcF=9uA2|`vP09p-9oP}7gUPW&MT!G z)AO2-@o`l|x|)n#A3Zr|3P+-Y5eZgV6-@A`*T@z&pTay=>Vsse8Yhhm<9VJ481!dq zVXjGLL4RB-edlpNyJbQ5f!F<`zk64Hr>Sx`vx5bXl#CpM!p`4x<1#9Ybrj$WXdhni zzf|%a5bzs+`>N$kL`X*gT4zINWj2=;sFVECsd-BS-#gOdQ%7iTs1CI0wqBm@06r&? z5!GH$ff|Y|`ysbqvVmMF$HVU{5U9HrX07seOH4oBRa_<$q3CV;fZ|xz>rLVX>=yr( z-_<~nM=c359XRy4T*kr3PGX+2x(*hAv*wN7gPn3#jE0Nlrg-ou51<;)W7UoqXWM*F zP2%wiZ)N}fd%R3;B}9S(+D&*-6(;$oDjo0h#n13&Bb}G*d^4KYCo{>!0VXV=UP_@v z7t-8kyP+BB8PlPXts9^G{VrKuulJ6B4d=|gLG4ml`aE3uXZ@}f5Ne5kwN$k&=lRO( zrhxobP8|e*7%S(svc^XOD3hdz#XpoK%Jn)PXj}{6L8RoN?{7PI4N*L2?2j2Z7x8aB z4LCNHzotno6%__|IWn-N@n+Sg-hI5gKsp{nE<}8>aVGO>BP{c3-9Do#ZOz3E7@_?K z+j0dUMq@X3fpAt&h3mh(3s{!B6Rk7=TO#|+M3^c&KD*?vq(-8#tpYqll&KpcEd&u~ zg-+o4d$p=L6FX>4IH(k4K!q|rtZb~->C6vcm@>Q+6um8CO&Ir}jkVinV zi>;i^_u@56*HS{_Y{UNB@F@f*+wI{&Lhahjy!~)=>Xmg`_2obWYNiuT0gg9#Fd2Zx zLD!U-R>p3}fnO4&zWcvKV|@;bN80xVT8$|TzAr*D_x|xTpls$Q2%tnVufCfWXN6h! z*Mg8xcATrjyOv4SDrO$pCK_M6Mjb;oNgYC9FL?<}q=cLX2qts5tk<*Ij|I;J53>qLH<2!UpqE{l z!Qe$EV9d?vdj5U#Pu~^_lrIbhbEPV@6_O|ZxHRyi`6hl_N2vTwhh4+*ThrPFLpE3< z{mTbnx^I@YER3S8SCuN)=Fe_AjBehlri0_|rmB^eYhY-EVWAb)udwFS1wG|(`A3<3 zZHM1BGS9nA{T(F6o_70f_# zmEC;h88(8gxl9jouLU|t%2|h*CnTlOFOVD4 zvTD)Ui2$HKO&C%dx$MLb1+QksG;PRO(8t+$0DX$1U4ez?UXq9#0)!?5#(lh=Nz=l6 zm#KVjs(xGr&#yGTVLr$hS;#piHB*C9C@DR9-N<(Cb>ozognn&J; z2G~JU-qiTK`y=2+v)TCJe5v}CWzdza$bg&n&N*pd&#GIr8CWe^AyTnCognqDMsbEH z!El?izQ;&R*sIpY?W*>GXONfVK<~F8E7KbWpv>>8P)m)~^G9z4{FqW9i*sD{&6z$I z#*00xj=wUwrhUi@Pk{?!!b!k%HWoRyJJxbKyE4kR>CJ^PFuD=9u%48~qfBS*n-)4n z3V&ez6?NUDFBZ4iJx9pezVDXVdcuL?r2?eT5_HSB)RKqWn%;1RrtSe{J7^Y z1F(m)Tls2aDYD0~Mt+2jrYd1b)n@OwA?8-hl7?MYU%1uNL%nn^C){+JK^aLPqobRK zg!42u?BP_`j~d{G8;>68#U=^&*{VOnWgfB2mdC7_gG55QkZM|3ShZIs-VXt~S&_;otU`lq#nqGc13AA()G z5u%)JqlsQm2LMol->+~K#RcAE4H7gkq|NkE4ha89@*pEvmj}&59bVLZ|2V^MsaWxe zpVY;mHC5G*KrY~^&%HGkAZ9p_$nq|5yXJ9B+kumRF=?fj1jt4w64x~A6ie1Sb+(sy zLxAn77VUsD20%$I?8%V!A8V0Ux6;)P)cH;mUMuDQ*A zIzssI?ks5!F1*%jrLe~#ay~mHSVJ#HH1DDY_%|MUj6xM`M1XkATKk|K({6#u`62#y z0|Hajd}QTtH&L~YEjtmrV2S9kDn}(j9r7jMWeR8-`72JS$z4jLIA0NL#n=9%&T_aP zsvKj|D{2I44vzCQeKjSe^+Zp#8WK6pm*N=yBxn04MpV%F!RZbw%V_T@Xi~%q6zHzx<#6kW{TY_Lqlc^*j~Qr1Fv_mY*~@ zah-Wpk>x%E3!jf9XYua5851sPS^-rMZ`~=ce-h@PWlXpbxu{rz|K(C1ax!@;morkAm~@Xi#&T( z^LOKo^K`dad?nZvsi|oqvh(BgCxnTGrCLyZ3<<7M?VySoLN16846g(B@Ss^P6Dpzl zt#W!^&}o6=K*ILqN)fXrc-te+GG8KV{v-+)b4dtcDN?(Xnn}^R{Ea;Rt?V#AOqDL* z_lE3v(1HdM2bvn#NqK*1|B<`-(V_2lbuOn?ecTMd?~JRGl01Sb^{(ogYzr!#QxPUL z3bMm(6tdE-vc}7<4dQ({i051u%p*|QG$YR%&Qz}_Dyk=|NhS-PQ71_tA2bOE!Vxid zvgx9Ph&|brDH*TsTX;P?KzCdfyz9_G($Hn$^&L2-;2vNy5HJE~kps8eFCX=iIX5pG z$UiYaQg(TTt$#Xl`DyyqhUfFJ>WtbXvM~L+Egbo9IgdsG9Zml?=$DixeHA>$c7AxA zWK)X$ko)(IpUF*q#en7H52Q}%qM_2AL|9QZ1OcIbJ)V_Q$JxA;NBpw_(@QRMuqgYt z3BU!O3E7K(zBj@y?LSL>)_P#45KK>_loy&LAJM~98`_U-6PBx7D2F<ym7r zh>oqz`vj3(0bYu~@3Ac=8=_0$e-wF9`oa5*n_|%Wxs6xsd<9*`-Kq}u@5<5xLp*`Q3}U}8wgR`Z!wnS7GBYMz-tk=Y(@tl zKX1wB_(S!wNF%DnQmIRvr?-QB+j{W-0f%JRUriFpoua29Ag3JA(S`I71pmI~b$Qh# zbDaOJ0!L5Cx+mU?H;?f_FZgcFjb?AWhSmKF-5VD$mpKRv+qpBDNTp$=Tz^{;)&Ytep9`!hiHhV5$U&PJV`=K#ASc~xDbqp=>o|s3a16Y zd3jqUT&D9_e|g6;Go=LU%T)Chy5QXXS%tws)4#=eR%(*O?A&l6C#U8Ml==We;c%d6 z#$8nQ$51HcNNut>ZKfPrbfBCy0G7Q4DzrlL-lbY#3^k;Iw8*?nnCviI&OFQLBm9li>X#D-!<+$BI7;6DMZRj`3Kz1=Cw};n0P&GJ`~`K$rW!0x(dW&aQ(cEG zO78f)z4bXiAt3z-m+NHO3mI+tw&)))6X>kSFg#HAJ*wz+keVG zYu5&<$1z~r01skNqZL})l`KdUS)VJo-qyZypCypom(7pPz`xwdR`$2vxE4*GZP3Sw ziw}W3@-f}GV=!duPi*l2Eq;lfdeX}uT=V$;?_)u?siY4b zQ<2B9?80@_U>c^O%YyWU5hLatr~(AC^AABW%;7C~TnE+GeG{Ve{1bwABq3Ba)&cRO z^w-pw?{2~nbGZ%-cDg<07~W0} zbCn7~(tYGMCnsr^w3K~|21~k$<}DB{zq39e)WocX1eNs{A0#M411KX*yF*`%!|MNB z?me{-^;!IyxnNEEnzGDSgBvYD`42jgDW+X>#K(WyTH43XBzLJ^lc3d)#wi_p`E-Pw z^iE!@7l8zBL3T+Ul%aJ`NyJ+AvJipn2gv?;szz~Lr!2EB)~1OC8YPJTFF~+6^gRr3=+ILtSU%1*z`zDiaxV1OTP`$r_`>dR;BM9B zb_8?iv@aw)2#-s@_67c9dj!qfxBLB-4}7l4&#>C=FTQ*$ar&l&1LjdIB1jq_@%;In zE^_ay1^-7nxxHXWHHK?anTd?spNfXd*G%MzMl$4~Dip#-aJ}kIsn@G1B1&8^i&jJ3 zUbb++#qs{z`N?l@hk5TZgmY%6q=ISI*5>YHygU9?8@o^(yNidEe7|Wa0MH6kr(Li8 z!{5>7Z^tF@l}rg0V65~3Ce7K}(YNLmmE2il^O)*az zw1gtV$G*K53M2GZr+UNoB9IeP6^H%upm!JsCmZHfyH~`S8;3KU&n45F;pw~{A~&BZ z*EH~NSCQSW7aB5Y!~4by7`bR&#-G_vpoj|JzyoC;f-4Gd>rKecSUF%=h{SZsn_z2n6LQF$s6JefMML z1pCl{HFrv;UI;JVDHcSkqdO@5#-IJlOGDjVb_<%=@7f+Kk_$2>x0+Z)M|LQxg=Q)1 z^gTurS-E-5-7T~^bHTcqLb{wO(AMB4z-Scaa%kukyYNH&Rku`!nv(5p3J7Ot(jxkRKTy?Cig0zlmYvjG9Rd$$(BmTZADNvI^Fw~w7C^jR+m^nZ3j zY2xTjh;(&dIHQE=^j}}&(SnF|p-rbm=Wqh)gog*knH~vkDiVQi_yNxf*e^A&i9cNr zC;`?qx4~}}ky(R$ge1q#($<~ltb11>>Fh<*>^SiYiT?;QU`cmj{Q5@DM_-3SCEy7s zfeO6TWV%c1MNGR@Ian@ZX!d0!vg%eqRu@vxMhm>tdRxE>bh=y69y{r$0z)w#+ROU0 zIeU!5@312hIiZnu{Dk2@UQXRIoz#@}8WD^dPXL!$$>S&?X!HPH<#eU;r2WV9{i{nl zeEx>w#H~Vyv3nI3B5ptK))1_+21AQ}Owv&-PB4zG?ziC{6u?)G-jK)WU z;n=3cEt=SKbR!C`yj&Or>$(bKQ?Yu>9X6dU`gE=mzXFrwh1W&|3ZppTv}9W}AUT)c zNvEen2kr%VN)=KGDyzW!!~0O5p+)|_Bspcs$Q*q>RRaSLw}<|J7JVBRtli+80sHKI z_=qqoC_+6(dGnGSGcaT&=1vBcFM9`77u!S6a8GDl5$tS{=R%>6q35bI=1=Yfu^$`U z!k>(hO+DLw$w~6LND%$Gy+;U!(w2Cm4EgzN@{5d7qCQMs!QG1}FsFQ1)?MSpnHkoP zwd_3r^u2tz1kOqrCCnlOCjD0zWZApN>F^L`?_lcEn-1#&DI^~*XomNwO!;)!7Q1*C zJIfC{j;j%4BzHwJN5=H-BgvQZ#&NXE>P5_*ETW5KOd>UnB8;B`hpl#GpGQ@lWnkaa z8`vSq-~)~!#7Hd!5gHCKd5*uU)NdiEgdkN%;6IycqkV~-ClBu!DYC;M3UH|KVz11W z&2zMm!%iz`zz0f1B6ZLhe_iUrt`~K!5l2l*(lw(l`B74!9g~Q6#nN=6W+V=-0f@es zHvv%596%X}>%@#~jKm7a>;wVfpZAnFC)OP93mO<7-6>aBb*nMs2}Vpu;o#k!A@i`Q zQK_U_Rndf^mZ8^JbglS7A<%4 zm(3LN7`e}g#z#Q+H;8~A=p+==ZRwL5(_8t%YEkfcIg({d*4fXV7-k;u%o?eK!GFDG z(S`CH^tD#VX|9+l!LN|gU!&Zw&}CckGFjqzSp{qg;>?)f3XIS=HT8V^~U z5|DM#JU0xQ+{2`dOap##etfEuGwB;xygr&LDl6l6+2epd=}a|#*HRsu$qwh6M|#`>C7Xk$ zc2%=j9lw4RRk_>=_&YR1jy!+lc+$#=r5rS2&sv5l;H#QYUliZcxp(Zr`gUgN%HOwl zWLH6+{e3i!Xw7`^1I%ie^1~L+M>1*ZfAwck9|Yvb+2k+nREQ!Z+SBr~pHVt|l0bL5 z`@P4PcFf`a<;!*}s2~{x{-uKMFHp?p#AvZ$y%?bsB8>D#xy&?*;Wd#8c9eR0NgkO^ z`S!SU@(?Uz07=Wl5hEMe$Vz{aPc9tKz0>H=C9Gl0}r!;i-b zwRT&vz1nDX@-GBBt8Z`{$g3N9Ug)&oH!vL^UoQcMn;8DnYL=XbENLzeq;uazLZQvD zzosN&Z#ScSNVB+bJ~F);D#?J)-S9VD&V9swfC}vn1*zV=j*KK4w-Gut4nL?!s9PFa znB5EzHaY;LMR6z~3HgoaG9k>|dp9y;rO_t@meW_wX*K5?-AfK4iuO1?K>W^|xSAkn z=Nm2a+_twgkLpH$S)u#IfEcI+1;TF(sQml-Gd<^ykwac!h>0};@3uyyB95&IMJeT+ z3OwlUd%O@ojnSi>+zYV&^0^6czz+p=)vYn+D4;8p9*WAEmV5{~J353V#Z`ZIcS@>So7im9tb@#yP*m5{2$ z%6Uv_M~)}_T(7&UrTq+mM6dudake!Ww~kXs+@OU@5%PRg1R7}cF3G-X^4cDp3g%mz zjhIIY5rHJEvQh_}=)$NnFUlwW!5cTm&Bn-csg&!1g&Zyl9jA~)9UK9=D0bJ8-_d5S zf6%_M=a2ogi_Zh}xqn^;!=Z{U+nG$BD~*+(S}(C+c=#EAK%T=}dqV==Dby#as}OTY zoyLE98a3p(=uW4?v1|Et!3fP?FD275KZ#vm^Zj>kEaEeaHqrmz-!LpW1>$Du+`#v9F3UzNX>%VFT8UMC?OLTL-`T5;F z@U`qdI~8~rC*5(wz-9!Npo}zp>=Ir2#Qrxav?YGmM}m+*MdSKY5}s9fftPmD({}O? zH~T?XE)+rp=6B(g7sd8%hxb(xHP5gH@zo3NpmG>^ z=o$CHrYYIwOUl7~!W#(v1Y1$qxO}U`tu2g&Gnz%GQbc!5iXA(EcdwiAwF=Az=PTE zSCQoKh>Ml4D_#>e&F|Nl^}fgZwn*`}S#a5UMJs~bGGl>c6z{9a6#3B=!%QLttji0P z;E_Lw^m2jb!#+U|6IQZ5N`HBHC}zFy+bCl-GMBJ;06YW4++&mQUvSSekNQxMLivCkT6w=0On_P*xm1Py$Q;(M zaTmYuTM5O#9{Z>dNCIbV&mWyg+%pTRB*Y0f(TK!Pp`S331h38cUD>+vgH@q*L%cBd z2C~EB?7m8?-Q8sTw=OPapvBa4mn1vO`th^R)X+fzx@VQ7`QRcR9P2@5DU(H2%3kK< zkz=nt2MY)eZ*YvjAsiRn@lh4VpMJl*FquiKYx{v$Uk_Va!rcvyqV!%LflS=oc3=a_TQiY1r`9-L&n z!#!vPvSZsIzL?b_80ee9P6_rNn;5ZXZcKQ`{@hx-f)YS-p5uOD4U&!iCyDzMne5*N@_XRCCJtDG!W zw~vdOrcvE9>Z+u(4+eoipC-5~YA^kb%6EeXW}rDxBx1xC-u)U(((GMh|k*2b0{RG zZ!<}Vht_fnUugWx_#Fz{g??1Qn0~$>{{*R8G=NN$bse~qr&kFX7;pWP3~nN{q`kLe zhM8>NW_5$ropZB8!^!#Z`Ax@5>^wI=rCm3X{Bbh=Y#BEX2pTxHHuiIX(nAR^-+m|z z!2jts%jcI_=GXJM%8Erj%yXG#T+_RIbjcM6H5tGg z<-8af{7Tk9R-gyqg=7pN!Z~BP1JC6WMr0m_DrL~X4~-$fD4x`oobTWRRy+hwJx~|Z zRq-%Ey-ApG8GnhUBpgaVUTa`(YqYhjS3;(Bq&?_~wKh9lne2c18oUyim2WfiV`3=$UXUDJXTe9Gk{)Fg=b z*z&q4X-7d=6eN@RiBN0dbS(XyAGT7buM5OUR|;KZ0ZJD~pg_&38TL&&_4dPLofn2z zrT*SqNte42ZNw-J@xF(c?9lu@Nqk0suFzE$vOy$zAW?Ifnms$|N89z&-8nO~k$EDB zF=oG4*q1@C+9TX(%;x;O(p*_f0;B*}-D)FDfr0Ni#Z;zxHnY+Q>+5UaCllh|V>ogDDPB~5 z1|UHz>;7O`@`RvicR{dp-mMae7kJv;=jO2xuB3d-tbJL|iTNS?;j7r2s+><5bO}5H z^qNbD;&(}uxq1sx8~MUa-;Eh}bnk)n!;|%fvt^sFo$5vD5x3V12n>>LCDHIixUTk| zJz_M!slbdk%++pmuV@iFoP~z9zD~HIiecnQ!dHHv7Pmp{oAw1%Ba`!<1)z!iJ+qt8_%P-%EFts0S z6(BmssaWTyAia;KxWmM(w|Jj!L5!82zhcsRlGJVB>a&F2_rrkg8cEH?P9D(J5@xX? zCEr{&WcMwWY~Kd>r%82_woQI;9}iIJj8*V!fHmLanJiO46AZI%CHPl+UgND9 z(oPaP$sFK9n}gK%AT7{B&Q>XwU!HrTI`MhysLxMtY`<|wD@^I4ZyGSe0_zDp@W6~x%au-_7Wko;fjOpQ z+aJ3+sXYU>B#E+_UF>dw2!Rpi2R*SF^vuRrS^(~p$COd!XR1x~_dvO!;U9i>&~sn& z%-IA4)vm8yk3luxW?zNrNN-uEtRngVRF=b1@vo_swOpGKeYGupdOlhp|E%U-M0U#R zcJ0flDC?#bPYpmvzGMrO6-e@g<6vf8Gh$k zF7( zBt7T(U)D#n{V2#Bq{x!In878{0ql7Ki)?nBd3}v9vD386x?uIXOCCrK(F%=n5d^?a zyR4;^H{Z64ipsbX6*NwUyiRgV+T!`PgsQXluX1%q?KRVcaE!|;aQC_Fe zY4Fsa&9?(SJRP|4DPS5mS0?o8cBz2ePRsR%>D!ADrU-m>Or_TP!Jmq|vt9-8wXZ+& zTd;aXCUW@`t8(`9uA|D^EC47VOHuoo?=HXnj3D{H{dpt^Jn;LacFWdbVitr@dm|s0 zS3>L7|5v<(=Gxt{{c2a(fu0Vi1$Aj8fE= zOlgzd`yB+$TSasmjbayyZeJVj8B`ikLO+}{H;8JYvq%&^y+{67%E?1Sa_OWnsaUOz zNho@SvZTzTsH&de(H+MGM5zI)Rbc5VpV`)VEvV*G-Qc9H3XKNt@6WKZu*L;;z~K=x zEBRDB#xVl+w=^~jzsCx`qJ_EUA0)7}#LZQY5p5;#d|hAS5n$0=Zo;SzxH(QNq9R8W zpdgyA(K!F&Xx$EK9nYqlu%xX=IAxB6-uz%)yM3vDq+`>xs;!#}AQ1o_vfcoHM)9XA z;-20Z0?4Gjw7K?@9=tr!$(DyVuF?buA!D%1UxGR%DC91|Hy$F%rFR4eqErRuUrdwz zZC6^Z<#XE(Gxe9;Fl}nV(~-#MY}g-}q5XDADkZz(@No8@dgL{Pr-)q(56zJXy7>-l zcIIAfbdSt4;LUyZs&R~$w%;x(T#?$A^p%+Lf^Qce-AA{H3$XLX>_?=b8$v1=VbqN% zkBB4=96oTZljJ~)xj0z}A}JS}I-mmPsa@+!^bXLBw8KS|iS3UF9#0Mo(2oj!lDe4s z33<=u=X-{bh)1};3E-A!Xo12R_xnW)gjFHN!E_o7i%`IEVj}Z_jEI;QGthOZ3{T9_ zclvZ?YrFKKYl(?PM+qUZ>r>3~tK^h4hC@qgr%MbWK=e)iRQ}5dg|0BYGKHNVgPm|} z3i_{ouA0yLaiF1G>$%bsf?HpYgr8o-8h`cIGuV*pNeom~_b$f}?9y9ygMT_aRVU`N z;fC|X*Q@7jV5$pQeuv?Ip>3j<2HXLP2MqZK6O0SQz$-D3uI{!;8+Ye#wA?zHYVoHR z*?Vt`g?5m9!&xWC=%DB9((RWb&-uBZqiOp*&5W+}w+{u643gy>exDxuC2nO-lw3>P z;S$PQ9dV9zog)f}msAudl1a|qjJCfS(vWLg8>;#NKEvyKMUE&m!A|*ZTID;vh=wn5BLX~ zCCil)eEzmU^Sa?Cq(0qMyfJu<29EJ3myP$|B<}&#w*>_wYa+j`(uebqDupVu;*M_T zq%85{V_%aa?Abtwgq(IOXNQwnH1Ht4!la|-_nZ5J4^y}DAA+KT5mGB)U?U_buwl=) z;>rRu1d}j5ybx~;s5u3LE?-OMlsiz?d5_}Gb8*eNKH^H%FYHWXGm=4y_x{B+->WaJ(NpVPKM`@u?~ z40h-YOJu-&8<&d^HJ~JM>(kGGu|_cR%O5aJcT2ED?R0EZ{dH0l08jZ0GFP1|tj8n~ z2f(3egj zy782Ee3?-$MX}(Nzaw@w@mU?U&j;WxLuOwYn+sWLqUw-!e51a6B>y(HWaOEaqGPxY z=tWNH9$r@oKIVZBj4^4$)=&Gsz)W+o)y|{l1w?G=Yd+qqjgri)@}3Zb;l^~Eg~+ST z8h<;6(W7ykeuN&>Ug;CK%_`*xlWThUV7{%Q)MXXr-x8jlfIq@;+&eO8fXU4fo3gRX zpIVFIz9TCm#`=0l|!pfO?*Nan7k=I|GpToW-;AA{_{vhFGteb7Hn!* zSS50|@#a+Kcne}9kM0R5DqM-;?i|U;EWehZy0I|6(T172jf$yZM2~!p-Lpz2t2yOk zxZ*RJ9=%x$MTIi86NfyeMv$PXanD5snKU6yLTy_6Ye9-*bwKJlr5*SdjyJ8olBt~q z@-bzGk*=a}{C~kJ-cZ~O5;&Cb{H%>`dl#D|zI$t;Po$F4w3tc(- zDrVbB>SCL_vyo+iG{EbQf0oGk$oyjA$7|kpunQ+PwQ?+^@of*WPGR)to$C9tlxzB> zm6%n}Q>mNZcrf!kpf5gN{PU#LE1H!0r4i|E)N<7Q6gFx$=iXd!$_1j zUePZlNVfZ`zj42Xg(BdiMFk0@AVIc11~uAHAek*!_mr`s)1p!GJJR!sor( zwnJ8$?h;pwXR-hDJJ^RV40e!k_SN?c7ZG^jWR=YXuZ}&aMJV`?ACMv3Knuw7Vokza zokx>G9!aS&$)#(MyXrQehz!I0rfj8iL;MLw5VwIpS)u9V(Ms|~GOT5M&_1!_RO*ft zMfa~;oB|dJ-z@cr)_VOtrNh$p=ED(#B(% z1QF@?U*r&n^glwv1wWK_Zcr1 zXej{525Aut43V7+tGWdWoAiD<4-z0!P&%D}uvl{&RSPu=V86S5X_Wr*_Clj+1jWRJW7Q~_OEGA%?r`12TWR68!Q` znIwRZ$RI|Z<`M!)s3q$SM4~b@TgPg%CC^sGK<;p%GEoMlgotzDogrK&{rePpu2dxN zP59;U<0v!SG+fJb6A>}-?Bra{~t|X9uL*~#eZjveVamdMs~85EySo~%f6Pi zBqX8iVP=r^6J<$cE0Q%^)-V&<_mC~k*thIqhB1D(@9+2fe_nI%bDrm%_xrrhInRw= zt4P~k)PBa!M+X!5yVAi6Z-CQ9+Tc2rNK$lJx9>9Q@KqwdexAMRBKG#PopxAZ++0J{ z#OKv-I{DdV>1P>Kqr~BB6@+n(ZytT-#MPeDS7Cq6`{^k+%70)B!naVgV3mY3Px}@c z(Fd=Uh#$4k6Y%|!1_;D(1lDn)2dRQ08dI`6@LWPBsu-y!*TC8;zfr{M@*_7NQk zzR!iR3&85NrDPRIYJ4?=SzQ0gk3JprO7|H;gT@EW2`^B=d7cE&V=5CccT@hOHLHBp z0rAxIKy9J=B91?t@0iM;EAHD~%0DF(hY@>)pWlmTkPvMMcTsVySLT?!x&k{Jr`r?0 zpOSXQSLek^N}uL(R!XVt8D#jr2qbpb|6TI^ z4=4A5S1Gef*vVu%cd0$Rcarv}5GqgtCI4mka-B(0h~ZbVD_0bB|M}*7$J0PCr{6RP zbGCi+>R%2dYoCD@3s_bbce%g`31TbxNbI_b%t@oe6X&Or7V?A3P))-q5T@kRZ_-j_xTelyTX2iU>L^!flh zAJ3YDyy?LW&dMs@N#`1<&OG~1{<(nY+G1=WClRSe|Ho7 z&2v*lZcngw6y^Z3)yf8R9e9X@VB|vvnD%6LGrj4g4a3`()6e{4{{%eSl<#%pl1v>U zm)L*Rhw6( zPle!LxK{nN;XJ=9%+pa{r2qPpX0NMox9)b!hHm#nBB~kgf4xlOa$YmA6A`^oe(q|8 z@#3!Soh2>v(mla*ElH8`$=H0)2Z;^Zi68S;3WYv~$R+;0bo%2jWfNV?F5f|o^wFcj z;og+W(O_=t&?obh8`_GMo*|>GVU|Huq4=y%9DUGm28=PBs#c6!mZ1b+Qk|!H2cha2 z>^8P^6ftW-{mbvDkGSv_@}d9pwwy^X@mEG<>z~yX_GeOOX6K@;r--_#>+IcNN4i(# za?2}JoJy41303!NShXLk^Tpc5>Z7cKUn;--V+Q^epkdTV7%;Xq*JmJAHp2O&x|8*m z-Aw@ApNy1lh78bQs$Coc$KyQE2V%J$5=>GN$7B3VZ&VKUMFatMbXzrHS>pbG&9i$(LqoeEP zCEU};1$v`7=ism4?(b~!_P+FF8$Hq=MRGAQAB#zQ{vaJPMrxB zOqLn%egyU=OK1kfW7UtZb~F>PQcuFA^yX@hPsKnY*lPhTtz{FT2Cs9FThu$MT5)Ou zkunrgb3)|1c*zgnIU*&bg@MT7w za8xkW+b2bRuttqmDBE2B)kJpm>Ds6D?W+j9XtEUS>Q`STvAH^Nyz!KeY%?G|tpC4u z>GcQh1HA(CB1|+U73)J$38T zSjKbCtS{}5=OX^L%z`Gt;^Tv;CC z35e1ttfJD;5-X5iZnTii`*qs7i=YL9kX7Km9q$=@qF_eS8f&qaJ9m!Fza#U!5hBn> z?k#$23FX_qHgvjwvQ8WE9^~{10>3L;X(t3S9?u+b z7)9q^dtUk9sweEMv5d?KHvG!&$x*+iVs2JqHx~hiR`{j~nfs7m)Y4o&oY(Dx^HX3* zD6n?*u+33Bj*mGnd?&Z1G(}EihTaegUL2M!2FpBP_+r2`_Ad6qEBUuJ=_u9s1RMWw zhj2M!#iyf%eb(&=Aqm91eQBm?{6^AR`-ZjdOvuZlX4UAbUypa34ql>)mN@8stRH0z zM~a+r%OPFmopsbDGm%19SR^x5uUxLa^)7sA>Qb32dbki4kPPTSk=q{WIjm@N?P$b! zpyXw?);D`z33PPRyo9>507eXrBc|{>vb4K#^o6#LDgL$tWjxynG)f@@&68G?`qoqq zB(1hl7DYq%A(q$pPrK(E4=?P`#&4+mF9}+W`(@#@UK={c>T90H^3G`i$>*uxUwm6! z+FsGP^~DWK*>ak02BTRD{IMvtXv?BT-?7P95?L;6R&!$i$N>gqZ-71Q0^|$O@HmWh z2yOH20Iv&lATPglj-9FNP{(JtM8sGy@#inCu=fkaVWSOeTj`bJCM!+k&24itrBHVZ z6=T6iD02JZZv4O0@|a1j=alu=`q9)4!owEqZwkQVx__pzfI%kSe4Wb^qbwgHfOcxz zv){g{mkv?W0YrdT6pMNmQ=J(AFc-O#j$R%=J*vvVE)b9^i@%}XNayRg6*Sf~9wTqN z`lJvpSW&A{BqwHJUwJvs%kzRYxN%M$tU148(#oR!z{lt_{2QyT;Xv_O@Ci(N2%D)NDS~C3-8l+vMeq;rVy9OI_cq<*unwO9#lL z&cFiW|Lxn+E@w6?+SDu>(c`cGx=O6(teUTZQ+JA3%VP{m@^iytO?JaR?l9GqF zrQzJypf8Me)*^Wf3F@==E`3_aKWhCiCeT$|bY{sZ02?PE#67aJmSSN$!NKxcQI2Sm zTB<2ta7zdIv%jVm*$ocyrfq!xVo=h;0g$U1u`2t!S)~rs+z4c zwJ0m^1wm}&-%t)vL6q^tC%aI*l* zA2GfD#<2n+a-$orU5R?aoyYdix41Pn4-AV6KG*!ZbTE3x<3(O@|G;t`)=;$*DK$A- z;tJ8SRW4#iOC9g~Phr_~v_U>6{oH4y2UWO@UZYF8_+u7-7SUkof$E&&Xc5!%D>|XXt@NGmlxEiho3htzX3#YDOD1{^OR4N3V?N{8CN*=q zT+~1H#u!JCieS^M@`FZT$0zI@V457c zl2&#W5(Os0r;Lwo!GO&;M$p|&e_}tC2hZ@IZgU!5wU^pStDmWbn1c54G*9^O53R8v zdull1xUJyZ+LsGAy#qNXQf3rKJV~+8>z$Jh`J1n0O>-7!)$Ih`HzmnkvPPAH^v-rL|vz!0TnU*7rsB?|als%K~&7t3wGY zc?(fUQxLHuaGQ&Zd*4CLxxzu?|B-=-GvfAU=eFoi^XfJV))3UKF6r{28D zgb&LS1oHriDiH>7PB^cOBBnp<^)$^ z$_eBFuHU5pP?UOZlN{{hc${moaSb@rZv5rwr$&}h&_T=pRgquW>esF1$N^M@fuxwwd7;G3G z;y3eMP@s>xD!qrz$tfr67OAq4Ror4t<5I9Q&#vHZzWjl!n-lLgTb-hJrz$n3_7Mb8 z0j!v)M$#ZtKS*Lqs*C_c(Fo7ay2y?+;OEIqoyc&3Kh`}8IeZ^SJyZYTc>A_#u45&b zflT_7XfHT9gx5=OiM1ZjWD}1*vD_6gDQzTg0!SMBCi8Z6?j*9E9SZ>1O58`37kbUn}FJDQdgIa-BI^Ct;klvQiyP5*r7Ulu}Gs^X(;eNNx` zM9&{#KCo2LU)ZfcIPkpK@X+DX-`rAATSJz7-cNr{9V)sfZ+i+!h`Rf2SyUkTi^Nl) zNP?9$i_{5@K~c5>Y#ldmfURw}n1G9hiK@&@a7*SWI)6c?l=1TWQvsl$waQFa9rpDF zQak}8W)GBMYKQ*a90))_gqrau>0a;#kIFwKi}>eM-865{K3%I_BV7yPGy7Vh`H2)_|w^KUkHH-S|$o~ z$Nen^5XA=^fs(|e7k6N(!Bnv+RCl@lu7u#uvpNv@cP2h`pViSt@=RQ=kUh%;#l4fW znxp02r9WbNmP6++pLpRu99vGDriexQ0IT zJo({RFo!NX2d(S)x$~IHNa%Ga{Z#t9Um_}vN6T9+;{m_5N}9a=1N{T7{L5z#c6xM2 zi`5(){MR+`D_8L=Cw_IZSl+%KkiI_TV%>a~VM2N*?2<^!F}luRDD03wcZIqvR_W?*pO$JmV>@2#R(D z9*pqfTi!CPjeq3rG1w{5p6)nDS6MT8Qm{0H10r^6AOhJ7L9s<|AkoZpm)e;I3dTOA z@3gobK${oFGz&-~(}9oFyAD{wV^$P>MBiYiNQ{!E78U0(=YRP;aS~BGo~k_w{BKBw z_`dn$ceyzoZ@%CdwX@4~?mjO=3ps!E!`z!Tnm>R1^y#Va^MqK_tIn1XBr9-9b$fPc zPb<;;2e}Ihf0fsPp3h=-U*b#2XQHMf($j#Gc}o9KXBXp7Wt+0PSHH-GCH=YQZqHy@ z)|8a`6Ap~>eM=wO?rJ=@w(8c!a+{-S&F9$?mS@jtj1McwGP|H)^>Z?A?>e+e$ zNxB=QtxA!&c`Bfede|o6A8B+Qm*8N!SJQpT&i@?xJP>>HsxvzT$pgp*1X{?BK7#;0 z89C93b$3XDjEpegHydpBA=Nw-*4)nkgV3zYTrf^MReI1ulW2%pPch(Dj{;)v`;wj4cn1!Rb`K4*-b zY@(yCminQ4+FtH~rq)OY>f$_cf&IWn{cI1<>rbnAc`}vLMpkVjJE2p>n@a_Wdkh8E z0rck-r{{0NN6itb%As5V@6Lh@SpG9t#=W%geh(XFM8MU!=%m!053+AZT7T?2!(6#A zx5oj#hmEq8>CVS4RzhG*%}+^Gex%buMCFI{E*VZ{XEU*!_&DsZC)SjOM?I+ihigvK ziCR)-*sejWz-X=#3B4Eb`>}qSLeSw-g&@9p&a8b%6u`ALL6ECjbB~b|mQNNdvy{(v zQ~6dewjGJ`5;}{Y=TQ$cz}-D0D*6DbUY57|VYASVrPAY_*4k6mYa>fXV~!e^W8^fH zqv+}DEGW*nX>9=&C-#BF@PI$av^}Q|?+0ltl8?K#rPhyxGQk>q`fZnxV)qu821^

    5x+!T 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%0D>Z8v{pg9!kIOaWXA_ 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 diff --git a/omniNotes/src/main/res/raw/changelog.xml b/omniNotes/src/main/res/raw/changelog.xml index 007039b22b..f6e9afb75b 100644 --- a/omniNotes/src/main/res/raw/changelog.xml +++ b/omniNotes/src/main/res/raw/changelog.xml @@ -20,6 +20,7 @@ changeDate="May 03, 2023" versionName="6.3.0"> [b]New![/b] Targeting Android 13 API with improved performances and security updates + [b]New![/b] Telegram channel (removed Facebook, never used...) Date: Tue, 23 May 2023 15:42:22 +0200 Subject: [PATCH 12/31] feature #236: PDF Notes export --- build.gradle | 2 +- .../android/omninotes/DetailFragment.java | 87 +++++++++++++++++++ .../it/feio/android/omninotes/OmniNotes.java | 2 + .../res/layout/pdf_template_text_note.xml | 35 ++++++++ omniNotes/src/main/res/menu/menu_detail.xml | 5 ++ 5 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 omniNotes/src/main/res/layout/pdf_template_text_note.xml diff --git a/build.gradle b/build.gradle index 133d3146c4..ef7ab7eddb 100644 --- a/build.gradle +++ b/build.gradle @@ -23,7 +23,7 @@ buildscript { maven { url "https://plugins.gradle.org/m2/" } } dependencies { - classpath 'com.android.tools.build:gradle:8.0.0' + classpath 'com.android.tools.build:gradle:7.4.2' classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.2.0" classpath 'com.adarshr:gradle-test-logger-plugin:2.1.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.0" diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java b/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java index a7565bbdca..fee3d54e81 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java @@ -75,17 +75,21 @@ import android.content.res.Configuration; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Point; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; +import android.graphics.pdf.PdfDocument; import android.location.Location; import android.media.MediaPlayer; import android.media.MediaRecorder; import android.media.ThumbnailUtils; import android.net.Uri; import android.os.AsyncTask; +import android.os.Build; import android.os.Bundle; +import android.os.Environment; import android.os.Handler; import android.provider.MediaStore; import android.text.Editable; @@ -93,6 +97,7 @@ import android.text.Spanned; import android.text.TextUtils; import android.text.TextWatcher; +import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -108,6 +113,7 @@ import android.widget.AutoCompleteTextView; import android.widget.CheckBox; import android.widget.ImageView; +import android.widget.TextView; import android.widget.Toast; import androidx.core.content.ContextCompat; import androidx.core.util.Pair; @@ -175,6 +181,8 @@ import it.feio.android.omninotes.utils.date.ReminderPickers; import it.feio.android.pixlui.links.TextLinkClickListener; import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; import java.io.IOException; import java.lang.ref.WeakReference; import java.text.DateFormat; @@ -1102,12 +1110,91 @@ public boolean onOptionsItemSelected(MenuItem item) { case R.id.menu_note_info: showNoteInfo(); break; + case R.id.menu_convert_PDF: + convertNoteToPDF(); + break; default: LogDelegate.w("Invalid menu option selected"); } return super.onOptionsItemSelected(item); } + private void convertNoteToPDF() { + + String head = getNoteTitle(); + String context = getNoteContent(); + + LayoutInflater inflater = LayoutInflater.from(this.getContext()); + + View view = inflater.inflate(R.layout.pdf_template_text_note, null); + + TextView headView = view.findViewById(R.id.txtHead); + TextView contextView = view.findViewById(R.id.txtContext); + + headView.setText(head); + contextView.setText(context); + + DisplayMetrics displayMetrics = new DisplayMetrics(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + this.getContext().getDisplay().getRealMetrics(displayMetrics); + } + else{ + this.getActivity().getWindowManager().getDefaultDisplay().getRealMetrics(displayMetrics); + } + view.measure( + View.MeasureSpec.makeMeasureSpec( + displayMetrics.widthPixels, View.MeasureSpec.EXACTLY + ), + View.MeasureSpec.makeMeasureSpec( + displayMetrics.heightPixels, View.MeasureSpec.EXACTLY + ) + ); + + view.layout(0,0,displayMetrics.widthPixels,displayMetrics.heightPixels); + + Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(),view.getMeasuredHeight(), Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + view.draw(canvas); + + Bitmap.createScaledBitmap(bitmap,view.getMeasuredWidth(),view.getMeasuredHeight(),true); + + PdfDocument pdf = new PdfDocument(); + PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(view.getMeasuredWidth(),view.getMeasuredHeight(),1).create(); + PdfDocument.Page page = pdf.startPage(pageInfo); + + Canvas canvasPage = page.getCanvas(); + canvasPage.drawBitmap(bitmap,0,0,null); + pdf.finishPage(page); + + File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),head + ".pdf"); + + try { + FileOutputStream fileOutPut = new FileOutputStream(file); + pdf.writeTo(fileOutPut); + pdf.close(); + fileOutPut.flush(); + fileOutPut.close(); + Toast.makeText(getContext(), "PDF file generated successfully.", Toast.LENGTH_SHORT).show(); + + Intent intent = new Intent(Intent.ACTION_VIEW); + Uri uri = Uri.fromFile(file); + intent.setDataAndType(uri,"application/pdf"); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + + startActivity(intent); + } + catch (FileNotFoundException e) { + e.printStackTrace(); + Toast.makeText(getContext(), "file: PDF file did not generate", Toast.LENGTH_SHORT).show(); + pdf.close(); + } + catch (IOException e) { + e.printStackTrace(); + Toast.makeText(getContext(), "I/0: PDF file did not generate", Toast.LENGTH_SHORT).show(); + pdf.close(); + } + } + private void showNoteInfo() { noteTmp.setTitle(getNoteTitle()); noteTmp.setContent(getNoteContent()); diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/OmniNotes.java b/omniNotes/src/main/java/it/feio/android/omninotes/OmniNotes.java index 9b8d89e1b8..f1d1306f54 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/OmniNotes.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/OmniNotes.java @@ -95,6 +95,8 @@ private void initSharedPreferences() { private void enableStrictMode() { if (isDebugBuild()) { StrictMode.enableDefaults(); + StrictMode.allowThreadDiskWrites(); + StrictMode.allowThreadDiskReads(); } } diff --git a/omniNotes/src/main/res/layout/pdf_template_text_note.xml b/omniNotes/src/main/res/layout/pdf_template_text_note.xml new file mode 100644 index 0000000000..28fd43658a --- /dev/null +++ b/omniNotes/src/main/res/layout/pdf_template_text_note.xml @@ -0,0 +1,35 @@ + + + + + + + + + \ No newline at end of file diff --git a/omniNotes/src/main/res/menu/menu_detail.xml b/omniNotes/src/main/res/menu/menu_detail.xml index 78dc02d359..9ec9102a8f 100644 --- a/omniNotes/src/main/res/menu/menu_detail.xml +++ b/omniNotes/src/main/res/menu/menu_detail.xml @@ -120,6 +120,11 @@ android:orderInCategory="1000" android:title="@string/discard_changes" app:showAsAction="ifRoom" /> + Date: Tue, 23 May 2023 19:35:55 +0200 Subject: [PATCH 13/31] feature #236: added tests and removed PDF creating to a diffrent class --- .../omninotes/utils/PDFHelperTest.java | 32 ++++++ .../android/omninotes/DetailFragment.java | 80 ++----------- .../omninotes/helpers/NoteToPdfHelper.java | 105 ++++++++++++++++++ 3 files changed, 145 insertions(+), 72 deletions(-) create mode 100644 omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/PDFHelperTest.java create mode 100644 omniNotes/src/main/java/it/feio/android/omninotes/helpers/NoteToPdfHelper.java diff --git a/omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/PDFHelperTest.java b/omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/PDFHelperTest.java new file mode 100644 index 0000000000..67c508841b --- /dev/null +++ b/omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/PDFHelperTest.java @@ -0,0 +1,32 @@ +package it.feio.android.omninotes.utils; + +import static org.junit.Assert.assertEquals; + +import android.os.Environment; + +import it.feio.android.omninotes.helpers.NoteToPdfHelper; +import it.feio.android.omninotes.models.Note; +import it.feio.android.omninotes.testutils.BaseAndroidTestCase; + +import org.junit.Before; +import org.junit.Test; + +import java.io.File; + +public class PDFHelperTest extends BaseAndroidTestCase { + + @Before + public void SetUp(){ + Note testNote = new Note(); + testNote.setTitle("a test note to convert to a pdf"); + testNote.setContent("this is a text so that the pdf file can be created\n some more info can be put here"); + } + + @Test + public void FillePathMadeCorrectly(){ + NoteToPdfHelper pdfHelper = new NoteToPdfHelper(); + File file = pdfHelper.CreateFillePath("aTestPath"); + File controlFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),"aTestPath.pdf"); + assertEquals(file,controlFile); + } +} diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java b/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java index fee3d54e81..04ab9a0539 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java @@ -143,6 +143,7 @@ import it.feio.android.omninotes.helpers.AttachmentsHelper; import it.feio.android.omninotes.helpers.IntentHelper; import it.feio.android.omninotes.helpers.LogDelegate; +import it.feio.android.omninotes.helpers.NoteToPdfHelper; import it.feio.android.omninotes.helpers.PermissionsHelper; import it.feio.android.omninotes.helpers.TagOpenerHelper; import it.feio.android.omninotes.helpers.date.DateHelper; @@ -1111,7 +1112,7 @@ public boolean onOptionsItemSelected(MenuItem item) { showNoteInfo(); break; case R.id.menu_convert_PDF: - convertNoteToPDF(); + createPDF(); break; default: LogDelegate.w("Invalid menu option selected"); @@ -1119,79 +1120,14 @@ public boolean onOptionsItemSelected(MenuItem item) { return super.onOptionsItemSelected(item); } - private void convertNoteToPDF() { - - String head = getNoteTitle(); - String context = getNoteContent(); - - LayoutInflater inflater = LayoutInflater.from(this.getContext()); - - View view = inflater.inflate(R.layout.pdf_template_text_note, null); - - TextView headView = view.findViewById(R.id.txtHead); - TextView contextView = view.findViewById(R.id.txtContext); - - headView.setText(head); - contextView.setText(context); - - DisplayMetrics displayMetrics = new DisplayMetrics(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { - this.getContext().getDisplay().getRealMetrics(displayMetrics); - } - else{ - this.getActivity().getWindowManager().getDefaultDisplay().getRealMetrics(displayMetrics); - } - view.measure( - View.MeasureSpec.makeMeasureSpec( - displayMetrics.widthPixels, View.MeasureSpec.EXACTLY - ), - View.MeasureSpec.makeMeasureSpec( - displayMetrics.heightPixels, View.MeasureSpec.EXACTLY - ) - ); - - view.layout(0,0,displayMetrics.widthPixels,displayMetrics.heightPixels); - - Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(),view.getMeasuredHeight(), Bitmap.Config.ARGB_8888); - Canvas canvas = new Canvas(bitmap); - view.draw(canvas); - - Bitmap.createScaledBitmap(bitmap,view.getMeasuredWidth(),view.getMeasuredHeight(),true); - - PdfDocument pdf = new PdfDocument(); - PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(view.getMeasuredWidth(),view.getMeasuredHeight(),1).create(); - PdfDocument.Page page = pdf.startPage(pageInfo); - - Canvas canvasPage = page.getCanvas(); - canvasPage.drawBitmap(bitmap,0,0,null); - pdf.finishPage(page); - - File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),head + ".pdf"); - - try { - FileOutputStream fileOutPut = new FileOutputStream(file); - pdf.writeTo(fileOutPut); - pdf.close(); - fileOutPut.flush(); - fileOutPut.close(); - Toast.makeText(getContext(), "PDF file generated successfully.", Toast.LENGTH_SHORT).show(); - - Intent intent = new Intent(Intent.ACTION_VIEW); - Uri uri = Uri.fromFile(file); - intent.setDataAndType(uri,"application/pdf"); - intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - + private void createPDF(){ + NoteToPdfHelper pdfHelper = new NoteToPdfHelper(); + Intent intent = pdfHelper.convertStringToPDF(getNoteTitle(),getNoteContent(),this.getContext()); + if(intent != null){ startActivity(intent); } - catch (FileNotFoundException e) { - e.printStackTrace(); - Toast.makeText(getContext(), "file: PDF file did not generate", Toast.LENGTH_SHORT).show(); - pdf.close(); - } - catch (IOException e) { - e.printStackTrace(); - Toast.makeText(getContext(), "I/0: PDF file did not generate", Toast.LENGTH_SHORT).show(); - pdf.close(); + else{ + Toast.makeText(getContext(), "PDF file wasnt created.", Toast.LENGTH_SHORT).show(); } } diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NoteToPdfHelper.java b/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NoteToPdfHelper.java new file mode 100644 index 0000000000..fe903fa78c --- /dev/null +++ b/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NoteToPdfHelper.java @@ -0,0 +1,105 @@ +package it.feio.android.omninotes.helpers; + +import android.content.Context; +import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.pdf.PdfDocument; +import android.net.Uri; +import android.os.Build; +import android.os.Environment; +import android.util.DisplayMetrics; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.TextView; +import android.widget.Toast; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; + +import it.feio.android.omninotes.BaseFragment; +import it.feio.android.omninotes.R; + +public class NoteToPdfHelper extends BaseFragment { + + public Intent convertStringToPDF(String head, String contents, Context context) { + + LayoutInflater inflater = LayoutInflater.from(context); + + View view = inflater.inflate(R.layout.pdf_template_text_note, null); + + TextView headView = view.findViewById(R.id.txtHead); + TextView contextView = view.findViewById(R.id.txtContext); + + headView.setText(head); + contextView.setText(contents); + + DisplayMetrics displayMetrics = new DisplayMetrics(); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + context.getDisplay().getRealMetrics(displayMetrics); + } + + view.measure( + View.MeasureSpec.makeMeasureSpec( + displayMetrics.widthPixels, View.MeasureSpec.EXACTLY + ), + View.MeasureSpec.makeMeasureSpec( + displayMetrics.heightPixels, View.MeasureSpec.EXACTLY + ) + ); + + view.layout(0,0,displayMetrics.widthPixels,displayMetrics.heightPixels); + + Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(),view.getMeasuredHeight(), Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + view.draw(canvas); + + Bitmap.createScaledBitmap(bitmap,view.getMeasuredWidth(),view.getMeasuredHeight(),true); + + PdfDocument pdf = new PdfDocument(); + PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(view.getMeasuredWidth(),view.getMeasuredHeight(),1).create(); + PdfDocument.Page page = pdf.startPage(pageInfo); + + Canvas canvasPage = page.getCanvas(); + canvasPage.drawBitmap(bitmap,0,0,null); + pdf.finishPage(page); + + File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),head + ".pdf"); + + try { + FileOutputStream fileOutPut = new FileOutputStream(file); + pdf.writeTo(fileOutPut); + pdf.close(); + fileOutPut.flush(); + fileOutPut.close(); + Toast.makeText(context, "PDF file generated successfully.", Toast.LENGTH_SHORT).show(); + + Intent intent = new Intent(Intent.ACTION_VIEW); + Uri uri = Uri.fromFile(file); + intent.setDataAndType(uri,"application/pdf"); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + + return intent; + } + catch (FileNotFoundException e) { + e.printStackTrace(); + Toast.makeText(context, "file: PDF file did not generate", Toast.LENGTH_SHORT).show(); + pdf.close(); + } + catch (IOException e) { + e.printStackTrace(); + Toast.makeText(context, "I/0: PDF file did not generate", Toast.LENGTH_SHORT).show(); + pdf.close(); + } + return null; + } + + public File CreateFillePath(String title){ + File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),title + ".pdf"); + System.out.println(file); + return file; + } +} From 8a058986837d3d33b1766b0ca70ae1955a91c434 Mon Sep 17 00:00:00 2001 From: unic77 <112702446+unic77@users.noreply.github.com> Date: Thu, 25 May 2023 19:29:47 +0200 Subject: [PATCH 14/31] feature #236: added test case, made new clas to convert notes to PDF --- build.gradle | 2 +- .../omninotes/utils/NoteToPdfHelperTest.java | 69 +++++++++++++++ .../omninotes/utils/PDFHelperTest.java | 32 ------- .../omninotes/helpers/NoteToPdfHelper.java | 86 +++++++++++-------- 4 files changed, 120 insertions(+), 69 deletions(-) create mode 100644 omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/NoteToPdfHelperTest.java delete mode 100644 omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/PDFHelperTest.java diff --git a/build.gradle b/build.gradle index ef7ab7eddb..d163da6c8a 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * - * This program is distributed in the hope that it will be useful, + * 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. diff --git a/omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/NoteToPdfHelperTest.java b/omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/NoteToPdfHelperTest.java new file mode 100644 index 0000000000..e3df37c4b3 --- /dev/null +++ b/omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/NoteToPdfHelperTest.java @@ -0,0 +1,69 @@ +package it.feio.android.omninotes.utils; + +import android.graphics.pdf.PdfDocument; + +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.io.File; + +import it.feio.android.omninotes.helpers.NoteToPdfHelper; +import it.feio.android.omninotes.models.Note; +import it.feio.android.omninotes.testutils.BaseAndroidTestCase; + +@RunWith(AndroidJUnit4.class) +public class NoteToPdfHelperTest extends BaseAndroidTestCase { + + private NoteToPdfHelper pdfConverter; + private Note note; + + @Before + public void setup(){ + pdfConverter = new NoteToPdfHelper(); + note = new Note(); + } + + @Test + public void testNotePdfCreateWithSpaces(){ + note.setContent("this is a test note"); + note.setTitle("test with spaces in name"); + File file = pdfConverter.createFilePath(note.getTitle()); + File filePath = new File("/storage/emulated/0/Documents/test with spaces in name.pdf"); + Assert.assertEquals(file,filePath); + } + + @Test + public void testNotePdfCreateWithoutSpaces(){ + note.setContent("this is a test note"); + note.setTitle("testWithoutSpacesInName"); + File file = pdfConverter.createFilePath(note.getTitle()); + File filePath = new File("/storage/emulated/0/Documents/testWithoutSpacesInName.pdf"); + Assert.assertEquals(file,filePath); + } + + @Test + public void testNotePdfCreateWithOtherTypeCharSpaces(){ + note.setContent("this is a test note"); + note.setTitle("test.WithoutSpacesInName"); + File file = pdfConverter.createFilePath(note.getTitle()); + Assert.assertNull(file); + } + + @Test + public void testIfPdfIsCreated(){ + PdfDocument pdf = new PdfDocument(); + + PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(524,830,1).create(); + PdfDocument.Page page = pdf.startPage(pageInfo); + + pdf.finishPage(page); + File file = pdfConverter.createFilePath(note.getTitle()); + pdfConverter.writePdfToFillePath(pdf,file); + Assert.assertTrue(file.exists()); + } + +} diff --git a/omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/PDFHelperTest.java b/omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/PDFHelperTest.java deleted file mode 100644 index 67c508841b..0000000000 --- a/omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/PDFHelperTest.java +++ /dev/null @@ -1,32 +0,0 @@ -package it.feio.android.omninotes.utils; - -import static org.junit.Assert.assertEquals; - -import android.os.Environment; - -import it.feio.android.omninotes.helpers.NoteToPdfHelper; -import it.feio.android.omninotes.models.Note; -import it.feio.android.omninotes.testutils.BaseAndroidTestCase; - -import org.junit.Before; -import org.junit.Test; - -import java.io.File; - -public class PDFHelperTest extends BaseAndroidTestCase { - - @Before - public void SetUp(){ - Note testNote = new Note(); - testNote.setTitle("a test note to convert to a pdf"); - testNote.setContent("this is a text so that the pdf file can be created\n some more info can be put here"); - } - - @Test - public void FillePathMadeCorrectly(){ - NoteToPdfHelper pdfHelper = new NoteToPdfHelper(); - File file = pdfHelper.CreateFillePath("aTestPath"); - File controlFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),"aTestPath.pdf"); - assertEquals(file,controlFile); - } -} diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NoteToPdfHelper.java b/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NoteToPdfHelper.java index fe903fa78c..063de33125 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NoteToPdfHelper.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NoteToPdfHelper.java @@ -21,8 +21,9 @@ import it.feio.android.omninotes.BaseFragment; import it.feio.android.omninotes.R; +import it.feio.android.omninotes.databinding.PdfTemplateTextNoteBinding; -public class NoteToPdfHelper extends BaseFragment { +public class NoteToPdfHelper { public Intent convertStringToPDF(String head, String contents, Context context) { @@ -36,8 +37,54 @@ public Intent convertStringToPDF(String head, String contents, Context context) headView.setText(head); contextView.setText(contents); + PdfDocument pdf = createPdfFromView(view, context); + + File file = createFilePath(head); + + if(file != null) { + writePdfToFillePath(pdf, file); + Intent intent = new Intent(Intent.ACTION_VIEW); + Uri uri = Uri.fromFile(file); + intent.setDataAndType(uri,"application/pdf"); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + + return intent; + } + else{ + return null; + } + } + + public File createFilePath(String head){ + if(head.contains(".") || head.contains("/")){ + return null; + } + else { + return new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), head + ".pdf"); + } + } + + public void writePdfToFillePath(PdfDocument pdf,File file){ + try { + FileOutputStream fileOutPut = new FileOutputStream(file); + pdf.writeTo(fileOutPut); + pdf.close(); + fileOutPut.flush(); + fileOutPut.close(); + } + catch (FileNotFoundException e) { + e.printStackTrace(); + pdf.close(); + } + catch (IOException e) { + e.printStackTrace(); + pdf.close(); + } + } + + public PdfDocument createPdfFromView(View view,Context context){ DisplayMetrics displayMetrics = new DisplayMetrics(); - + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { context.getDisplay().getRealMetrics(displayMetrics); } @@ -67,39 +114,6 @@ public Intent convertStringToPDF(String head, String contents, Context context) canvasPage.drawBitmap(bitmap,0,0,null); pdf.finishPage(page); - File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),head + ".pdf"); - - try { - FileOutputStream fileOutPut = new FileOutputStream(file); - pdf.writeTo(fileOutPut); - pdf.close(); - fileOutPut.flush(); - fileOutPut.close(); - Toast.makeText(context, "PDF file generated successfully.", Toast.LENGTH_SHORT).show(); - - Intent intent = new Intent(Intent.ACTION_VIEW); - Uri uri = Uri.fromFile(file); - intent.setDataAndType(uri,"application/pdf"); - intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - - return intent; - } - catch (FileNotFoundException e) { - e.printStackTrace(); - Toast.makeText(context, "file: PDF file did not generate", Toast.LENGTH_SHORT).show(); - pdf.close(); - } - catch (IOException e) { - e.printStackTrace(); - Toast.makeText(context, "I/0: PDF file did not generate", Toast.LENGTH_SHORT).show(); - pdf.close(); - } - return null; - } - - public File CreateFillePath(String title){ - File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),title + ".pdf"); - System.out.println(file); - return file; + return pdf; } } From eaf537a5861c64d4a9e0661946e9c6c8376c1225 Mon Sep 17 00:00:00 2001 From: unic77 <112702446+unic77@users.noreply.github.com> Date: Fri, 26 May 2023 09:50:41 +0200 Subject: [PATCH 15/31] Update main.yml --- .github/workflows/main.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8efb1a8a95..43d534b968 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -11,10 +11,10 @@ jobs: uses: actions/checkout@v3 - name: Setup JDK - uses: actions/setup-java@v3.11.0 + uses: actions/setup-java@v3 with: distribution: 'temurin' - java-version: '17' + java-version: '11' cache: 'gradle' - name: Run unit/instrumentation tests and coverage generation @@ -32,4 +32,4 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - run: ./gradlew sonarqube -Dsonar.login="$SONAR_TOKEN" \ No newline at end of file + run: ./gradlew sonarqube -Dsonar.login="$SONAR_TOKEN" From 6e42c09f7d48124669e6fbdd32080926186e8332 Mon Sep 17 00:00:00 2001 From: unic77 <112702446+unic77@users.noreply.github.com> Date: Fri, 26 May 2023 09:51:26 +0200 Subject: [PATCH 16/31] Update play_store_description.txt --- assets/translations/play_store_description.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/translations/play_store_description.txt b/assets/translations/play_store_description.txt index bfef7f1434..b41f6f3463 100644 --- a/assets/translations/play_store_description.txt +++ b/assets/translations/play_store_description.txt @@ -6,7 +6,7 @@ Your help in translating the app is welcome. Send me an e-mail If you want to le Current features: ☆ Material Design interface -☆ Basic add, modify, archive, trash and delete notes actions +☆ Basic add, modify, archive, trash and delete notes actions, ☆ Share, merge and search notes ☆ Image, audio and generic file attachments ☆ Manage your notes using tags and categories From 394ca99ffe16c3be0bd8feb0bd46c9190765b969 Mon Sep 17 00:00:00 2001 From: unic77 <112702446+unic77@users.noreply.github.com> Date: Fri, 26 May 2023 09:52:33 +0200 Subject: [PATCH 17/31] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f8b5d7ff2e..d8c5b01315 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Omni-Notes is a note taking open-source application aimed to have both a The project was inspired by the absence of such applications compatible with old phones and old versions of Android. It aims to provide an attractive look and follow the most recent design guidelines of the Google operating system that is not currently avaialbe for older devices. -**Follow the developments and post your comments and advice on Telegram Community at https://t.me/+VwL2-SGNdTs4ZWY0** +**Follow the developments and post your comments and advice on Facebook Community at https://www.facebook.com/OmniNotes** Help to keep translations updated is always welcome, if you want give a hand checkout the translation project on *https://translate.omninotes.app.* From 0b6b92aa9b2b55f147994aff9c463dd471e26444 Mon Sep 17 00:00:00 2001 From: unic77 <112702446+unic77@users.noreply.github.com> Date: Fri, 26 May 2023 09:54:53 +0200 Subject: [PATCH 18/31] Update gradle.properties --- gradle.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle.properties b/gradle.properties index 39890a49d6..a49b32c6ff 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,11 +14,11 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . # -VERSION_NAME=6.3.0 -VERSION_CODE=323 +VERSION_NAME=6.2.7 +VERSION_CODE=322 PACKAGE=it.feio.android.omninotes MIN_SDK=21 -TARGET_SDK=33 +TARGET_SDK=31 android.enableJetifier=true android.useAndroidX=true From 0f6831953273b5bba950c9ac0c64e6496cb5cbe3 Mon Sep 17 00:00:00 2001 From: unic77 <112702446+unic77@users.noreply.github.com> Date: Fri, 26 May 2023 09:55:40 +0200 Subject: [PATCH 19/31] Update gradle-wrapper.properties --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 06aa6eb866..0d26d4b32c 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -19,4 +19,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip From fc2c0931115b517af5862ca7654a9d8c952cdf7b Mon Sep 17 00:00:00 2001 From: unic77 <112702446+unic77@users.noreply.github.com> Date: Fri, 26 May 2023 09:57:07 +0200 Subject: [PATCH 20/31] Update about.html --- omniNotes/src/main/assets/html/about.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/omniNotes/src/main/assets/html/about.html b/omniNotes/src/main/assets/html/about.html index b6fd3a177c..4cc483e82e 100644 --- a/omniNotes/src/main/assets/html/about.html +++ b/omniNotes/src/main/assets/html/about.html @@ -53,7 +53,7 @@

    - Give a look at our Community for + Give a look at our Community for Beta releases and at developer's personal mini-site for other softwares, libraries and trashware!

    From b865ec2cf9f1a01e70e4771ecae5ff0dd1a16bf7 Mon Sep 17 00:00:00 2001 From: unic77 <112702446+unic77@users.noreply.github.com> Date: Fri, 26 May 2023 09:57:37 +0200 Subject: [PATCH 21/31] Update about.html --- omniNotes/src/main/assets/html/about.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/omniNotes/src/main/assets/html/about.html b/omniNotes/src/main/assets/html/about.html index 4cc483e82e..a31ec201ac 100644 --- a/omniNotes/src/main/assets/html/about.html +++ b/omniNotes/src/main/assets/html/about.html @@ -55,7 +55,8 @@

    Give a look at our Community for Beta releases and at developer's personal mini-site for - other softwares, libraries and trashware! + other softwares, + libraries and trashware!

    From 13a70e7f79a777f770e267f397436a11a2c88cd6 Mon Sep 17 00:00:00 2001 From: unic77 <112702446+unic77@users.noreply.github.com> Date: Fri, 26 May 2023 09:59:20 +0200 Subject: [PATCH 22/31] Update IntroSlide6.java --- .../java/it/feio/android/omninotes/intro/IntroSlide6.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/intro/IntroSlide6.java b/omniNotes/src/main/java/it/feio/android/omninotes/intro/IntroSlide6.java index 72d3b28972..511add3b43 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/intro/IntroSlide6.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/intro/IntroSlide6.java @@ -17,7 +17,7 @@ package it.feio.android.omninotes.intro; -import static it.feio.android.omninotes.utils.ConstantsBase.COMMUNITY_LINK; +import static it.feio.android.omninotes.utils.ConstantsBase.FACEBOOK_COMMUNITY; import android.content.Intent; import android.graphics.Color; @@ -35,13 +35,13 @@ public void onActivityCreated(Bundle savedInstanceState) { binding.introBackground.setBackgroundColor(Color.parseColor("#222222")); binding.introTitle.setText(R.string.tour_listactivity_final_title); binding.introImage.setVisibility(View.GONE); - binding.introImageSmall.setImageResource(R.drawable.community); + binding.introImageSmall.setImageResource(R.drawable.facebook); binding.introImageSmall.setVisibility(View.VISIBLE); binding.introImageSmall.setOnClickListener(v -> { Intent intent = new Intent(Intent.ACTION_VIEW); - intent.setData(Uri.parse(COMMUNITY_LINK)); + intent.setData(Uri.parse(FACEBOOK_COMMUNITY)); startActivity(intent); }); binding.introDescription.setText(R.string.tour_community); } -} \ No newline at end of file +} From 3cdffb3f5ed39832e2f9ad429275332dae8b045b Mon Sep 17 00:00:00 2001 From: unic77 <112702446+unic77@users.noreply.github.com> Date: Fri, 26 May 2023 10:00:35 +0200 Subject: [PATCH 23/31] Update ConstantsBase.java --- .../it/feio/android/omninotes/utils/ConstantsBase.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/utils/ConstantsBase.java b/omniNotes/src/main/java/it/feio/android/omninotes/utils/ConstantsBase.java index f597b9e99c..7bdc3f90a5 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/utils/ConstantsBase.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/utils/ConstantsBase.java @@ -20,7 +20,13 @@ public interface ConstantsBase { String DATABASE_NAME = "omni-notes"; String APP_STORAGE_DIRECTORY_SB_SYNC = "db_sync"; - String COMMUNITY_LINK = "https://t.me/omninotes"; + SString DEV_EMAIL = "omninotes@iosue.it"; + String GOOGLE_PLUS_COMMUNITY = "https://plus.google.com/communities/112276053772152071903"; + String FACEBOOK_COMMUNITY = "https://www.facebook.com/OmniNotes/"; + + // Used for updates retrieval + long UPDATE_MIN_FREQUENCY = 24L * 60L * 60L * 1000L; // 1 day + String DRIVE_FOLDER_LAST_BUILD = "https://goo.gl/gB55RE"; // Notes swipe int SWIPE_MARGIN = 30; From 7d89ea7b990923d0bb8d1e2a1e80d7a5d09e9779 Mon Sep 17 00:00:00 2001 From: unic77 <112702446+unic77@users.noreply.github.com> Date: Tue, 23 May 2023 15:42:22 +0200 Subject: [PATCH 24/31] feature #236: PDF Notes export --- .../android/omninotes/DetailFragment.java | 87 +++++++++++++++++++ .../it/feio/android/omninotes/OmniNotes.java | 2 + .../res/layout/pdf_template_text_note.xml | 35 ++++++++ omniNotes/src/main/res/menu/menu_detail.xml | 5 ++ 4 files changed, 129 insertions(+) create mode 100644 omniNotes/src/main/res/layout/pdf_template_text_note.xml diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java b/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java index a7565bbdca..fee3d54e81 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java @@ -75,17 +75,21 @@ import android.content.res.Configuration; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Point; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; +import android.graphics.pdf.PdfDocument; import android.location.Location; import android.media.MediaPlayer; import android.media.MediaRecorder; import android.media.ThumbnailUtils; import android.net.Uri; import android.os.AsyncTask; +import android.os.Build; import android.os.Bundle; +import android.os.Environment; import android.os.Handler; import android.provider.MediaStore; import android.text.Editable; @@ -93,6 +97,7 @@ import android.text.Spanned; import android.text.TextUtils; import android.text.TextWatcher; +import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -108,6 +113,7 @@ import android.widget.AutoCompleteTextView; import android.widget.CheckBox; import android.widget.ImageView; +import android.widget.TextView; import android.widget.Toast; import androidx.core.content.ContextCompat; import androidx.core.util.Pair; @@ -175,6 +181,8 @@ import it.feio.android.omninotes.utils.date.ReminderPickers; import it.feio.android.pixlui.links.TextLinkClickListener; import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; import java.io.IOException; import java.lang.ref.WeakReference; import java.text.DateFormat; @@ -1102,12 +1110,91 @@ public boolean onOptionsItemSelected(MenuItem item) { case R.id.menu_note_info: showNoteInfo(); break; + case R.id.menu_convert_PDF: + convertNoteToPDF(); + break; default: LogDelegate.w("Invalid menu option selected"); } return super.onOptionsItemSelected(item); } + private void convertNoteToPDF() { + + String head = getNoteTitle(); + String context = getNoteContent(); + + LayoutInflater inflater = LayoutInflater.from(this.getContext()); + + View view = inflater.inflate(R.layout.pdf_template_text_note, null); + + TextView headView = view.findViewById(R.id.txtHead); + TextView contextView = view.findViewById(R.id.txtContext); + + headView.setText(head); + contextView.setText(context); + + DisplayMetrics displayMetrics = new DisplayMetrics(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + this.getContext().getDisplay().getRealMetrics(displayMetrics); + } + else{ + this.getActivity().getWindowManager().getDefaultDisplay().getRealMetrics(displayMetrics); + } + view.measure( + View.MeasureSpec.makeMeasureSpec( + displayMetrics.widthPixels, View.MeasureSpec.EXACTLY + ), + View.MeasureSpec.makeMeasureSpec( + displayMetrics.heightPixels, View.MeasureSpec.EXACTLY + ) + ); + + view.layout(0,0,displayMetrics.widthPixels,displayMetrics.heightPixels); + + Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(),view.getMeasuredHeight(), Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + view.draw(canvas); + + Bitmap.createScaledBitmap(bitmap,view.getMeasuredWidth(),view.getMeasuredHeight(),true); + + PdfDocument pdf = new PdfDocument(); + PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(view.getMeasuredWidth(),view.getMeasuredHeight(),1).create(); + PdfDocument.Page page = pdf.startPage(pageInfo); + + Canvas canvasPage = page.getCanvas(); + canvasPage.drawBitmap(bitmap,0,0,null); + pdf.finishPage(page); + + File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),head + ".pdf"); + + try { + FileOutputStream fileOutPut = new FileOutputStream(file); + pdf.writeTo(fileOutPut); + pdf.close(); + fileOutPut.flush(); + fileOutPut.close(); + Toast.makeText(getContext(), "PDF file generated successfully.", Toast.LENGTH_SHORT).show(); + + Intent intent = new Intent(Intent.ACTION_VIEW); + Uri uri = Uri.fromFile(file); + intent.setDataAndType(uri,"application/pdf"); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + + startActivity(intent); + } + catch (FileNotFoundException e) { + e.printStackTrace(); + Toast.makeText(getContext(), "file: PDF file did not generate", Toast.LENGTH_SHORT).show(); + pdf.close(); + } + catch (IOException e) { + e.printStackTrace(); + Toast.makeText(getContext(), "I/0: PDF file did not generate", Toast.LENGTH_SHORT).show(); + pdf.close(); + } + } + private void showNoteInfo() { noteTmp.setTitle(getNoteTitle()); noteTmp.setContent(getNoteContent()); diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/OmniNotes.java b/omniNotes/src/main/java/it/feio/android/omninotes/OmniNotes.java index 9b8d89e1b8..f1d1306f54 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/OmniNotes.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/OmniNotes.java @@ -95,6 +95,8 @@ private void initSharedPreferences() { private void enableStrictMode() { if (isDebugBuild()) { StrictMode.enableDefaults(); + StrictMode.allowThreadDiskWrites(); + StrictMode.allowThreadDiskReads(); } } diff --git a/omniNotes/src/main/res/layout/pdf_template_text_note.xml b/omniNotes/src/main/res/layout/pdf_template_text_note.xml new file mode 100644 index 0000000000..28fd43658a --- /dev/null +++ b/omniNotes/src/main/res/layout/pdf_template_text_note.xml @@ -0,0 +1,35 @@ + + + + + + + + + \ No newline at end of file diff --git a/omniNotes/src/main/res/menu/menu_detail.xml b/omniNotes/src/main/res/menu/menu_detail.xml index 78dc02d359..9ec9102a8f 100644 --- a/omniNotes/src/main/res/menu/menu_detail.xml +++ b/omniNotes/src/main/res/menu/menu_detail.xml @@ -120,6 +120,11 @@ android:orderInCategory="1000" android:title="@string/discard_changes" app:showAsAction="ifRoom" /> + Date: Tue, 23 May 2023 19:35:55 +0200 Subject: [PATCH 25/31] feature #236: added tests and removed PDF creating to a diffrent class --- .../omninotes/utils/PDFHelperTest.java | 32 ++++++ .../android/omninotes/DetailFragment.java | 80 ++----------- .../omninotes/helpers/NoteToPdfHelper.java | 105 ++++++++++++++++++ 3 files changed, 145 insertions(+), 72 deletions(-) create mode 100644 omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/PDFHelperTest.java create mode 100644 omniNotes/src/main/java/it/feio/android/omninotes/helpers/NoteToPdfHelper.java diff --git a/omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/PDFHelperTest.java b/omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/PDFHelperTest.java new file mode 100644 index 0000000000..67c508841b --- /dev/null +++ b/omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/PDFHelperTest.java @@ -0,0 +1,32 @@ +package it.feio.android.omninotes.utils; + +import static org.junit.Assert.assertEquals; + +import android.os.Environment; + +import it.feio.android.omninotes.helpers.NoteToPdfHelper; +import it.feio.android.omninotes.models.Note; +import it.feio.android.omninotes.testutils.BaseAndroidTestCase; + +import org.junit.Before; +import org.junit.Test; + +import java.io.File; + +public class PDFHelperTest extends BaseAndroidTestCase { + + @Before + public void SetUp(){ + Note testNote = new Note(); + testNote.setTitle("a test note to convert to a pdf"); + testNote.setContent("this is a text so that the pdf file can be created\n some more info can be put here"); + } + + @Test + public void FillePathMadeCorrectly(){ + NoteToPdfHelper pdfHelper = new NoteToPdfHelper(); + File file = pdfHelper.CreateFillePath("aTestPath"); + File controlFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),"aTestPath.pdf"); + assertEquals(file,controlFile); + } +} diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java b/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java index fee3d54e81..04ab9a0539 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java @@ -143,6 +143,7 @@ import it.feio.android.omninotes.helpers.AttachmentsHelper; import it.feio.android.omninotes.helpers.IntentHelper; import it.feio.android.omninotes.helpers.LogDelegate; +import it.feio.android.omninotes.helpers.NoteToPdfHelper; import it.feio.android.omninotes.helpers.PermissionsHelper; import it.feio.android.omninotes.helpers.TagOpenerHelper; import it.feio.android.omninotes.helpers.date.DateHelper; @@ -1111,7 +1112,7 @@ public boolean onOptionsItemSelected(MenuItem item) { showNoteInfo(); break; case R.id.menu_convert_PDF: - convertNoteToPDF(); + createPDF(); break; default: LogDelegate.w("Invalid menu option selected"); @@ -1119,79 +1120,14 @@ public boolean onOptionsItemSelected(MenuItem item) { return super.onOptionsItemSelected(item); } - private void convertNoteToPDF() { - - String head = getNoteTitle(); - String context = getNoteContent(); - - LayoutInflater inflater = LayoutInflater.from(this.getContext()); - - View view = inflater.inflate(R.layout.pdf_template_text_note, null); - - TextView headView = view.findViewById(R.id.txtHead); - TextView contextView = view.findViewById(R.id.txtContext); - - headView.setText(head); - contextView.setText(context); - - DisplayMetrics displayMetrics = new DisplayMetrics(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { - this.getContext().getDisplay().getRealMetrics(displayMetrics); - } - else{ - this.getActivity().getWindowManager().getDefaultDisplay().getRealMetrics(displayMetrics); - } - view.measure( - View.MeasureSpec.makeMeasureSpec( - displayMetrics.widthPixels, View.MeasureSpec.EXACTLY - ), - View.MeasureSpec.makeMeasureSpec( - displayMetrics.heightPixels, View.MeasureSpec.EXACTLY - ) - ); - - view.layout(0,0,displayMetrics.widthPixels,displayMetrics.heightPixels); - - Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(),view.getMeasuredHeight(), Bitmap.Config.ARGB_8888); - Canvas canvas = new Canvas(bitmap); - view.draw(canvas); - - Bitmap.createScaledBitmap(bitmap,view.getMeasuredWidth(),view.getMeasuredHeight(),true); - - PdfDocument pdf = new PdfDocument(); - PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(view.getMeasuredWidth(),view.getMeasuredHeight(),1).create(); - PdfDocument.Page page = pdf.startPage(pageInfo); - - Canvas canvasPage = page.getCanvas(); - canvasPage.drawBitmap(bitmap,0,0,null); - pdf.finishPage(page); - - File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),head + ".pdf"); - - try { - FileOutputStream fileOutPut = new FileOutputStream(file); - pdf.writeTo(fileOutPut); - pdf.close(); - fileOutPut.flush(); - fileOutPut.close(); - Toast.makeText(getContext(), "PDF file generated successfully.", Toast.LENGTH_SHORT).show(); - - Intent intent = new Intent(Intent.ACTION_VIEW); - Uri uri = Uri.fromFile(file); - intent.setDataAndType(uri,"application/pdf"); - intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - + private void createPDF(){ + NoteToPdfHelper pdfHelper = new NoteToPdfHelper(); + Intent intent = pdfHelper.convertStringToPDF(getNoteTitle(),getNoteContent(),this.getContext()); + if(intent != null){ startActivity(intent); } - catch (FileNotFoundException e) { - e.printStackTrace(); - Toast.makeText(getContext(), "file: PDF file did not generate", Toast.LENGTH_SHORT).show(); - pdf.close(); - } - catch (IOException e) { - e.printStackTrace(); - Toast.makeText(getContext(), "I/0: PDF file did not generate", Toast.LENGTH_SHORT).show(); - pdf.close(); + else{ + Toast.makeText(getContext(), "PDF file wasnt created.", Toast.LENGTH_SHORT).show(); } } diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NoteToPdfHelper.java b/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NoteToPdfHelper.java new file mode 100644 index 0000000000..fe903fa78c --- /dev/null +++ b/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NoteToPdfHelper.java @@ -0,0 +1,105 @@ +package it.feio.android.omninotes.helpers; + +import android.content.Context; +import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.pdf.PdfDocument; +import android.net.Uri; +import android.os.Build; +import android.os.Environment; +import android.util.DisplayMetrics; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.TextView; +import android.widget.Toast; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; + +import it.feio.android.omninotes.BaseFragment; +import it.feio.android.omninotes.R; + +public class NoteToPdfHelper extends BaseFragment { + + public Intent convertStringToPDF(String head, String contents, Context context) { + + LayoutInflater inflater = LayoutInflater.from(context); + + View view = inflater.inflate(R.layout.pdf_template_text_note, null); + + TextView headView = view.findViewById(R.id.txtHead); + TextView contextView = view.findViewById(R.id.txtContext); + + headView.setText(head); + contextView.setText(contents); + + DisplayMetrics displayMetrics = new DisplayMetrics(); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + context.getDisplay().getRealMetrics(displayMetrics); + } + + view.measure( + View.MeasureSpec.makeMeasureSpec( + displayMetrics.widthPixels, View.MeasureSpec.EXACTLY + ), + View.MeasureSpec.makeMeasureSpec( + displayMetrics.heightPixels, View.MeasureSpec.EXACTLY + ) + ); + + view.layout(0,0,displayMetrics.widthPixels,displayMetrics.heightPixels); + + Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(),view.getMeasuredHeight(), Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + view.draw(canvas); + + Bitmap.createScaledBitmap(bitmap,view.getMeasuredWidth(),view.getMeasuredHeight(),true); + + PdfDocument pdf = new PdfDocument(); + PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(view.getMeasuredWidth(),view.getMeasuredHeight(),1).create(); + PdfDocument.Page page = pdf.startPage(pageInfo); + + Canvas canvasPage = page.getCanvas(); + canvasPage.drawBitmap(bitmap,0,0,null); + pdf.finishPage(page); + + File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),head + ".pdf"); + + try { + FileOutputStream fileOutPut = new FileOutputStream(file); + pdf.writeTo(fileOutPut); + pdf.close(); + fileOutPut.flush(); + fileOutPut.close(); + Toast.makeText(context, "PDF file generated successfully.", Toast.LENGTH_SHORT).show(); + + Intent intent = new Intent(Intent.ACTION_VIEW); + Uri uri = Uri.fromFile(file); + intent.setDataAndType(uri,"application/pdf"); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + + return intent; + } + catch (FileNotFoundException e) { + e.printStackTrace(); + Toast.makeText(context, "file: PDF file did not generate", Toast.LENGTH_SHORT).show(); + pdf.close(); + } + catch (IOException e) { + e.printStackTrace(); + Toast.makeText(context, "I/0: PDF file did not generate", Toast.LENGTH_SHORT).show(); + pdf.close(); + } + return null; + } + + public File CreateFillePath(String title){ + File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),title + ".pdf"); + System.out.println(file); + return file; + } +} From 4549099e12202896f3fe41927dbe6a3398e43398 Mon Sep 17 00:00:00 2001 From: unic77 <112702446+unic77@users.noreply.github.com> Date: Thu, 25 May 2023 19:29:47 +0200 Subject: [PATCH 26/31] feature #236: added test case, made new clas to convert notes to PDF --- build.gradle | 2 +- .../omninotes/utils/NoteToPdfHelperTest.java | 69 +++++++++++++++ .../omninotes/utils/PDFHelperTest.java | 32 ------- .../omninotes/helpers/NoteToPdfHelper.java | 86 +++++++++++-------- 4 files changed, 120 insertions(+), 69 deletions(-) create mode 100644 omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/NoteToPdfHelperTest.java delete mode 100644 omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/PDFHelperTest.java diff --git a/build.gradle b/build.gradle index ef7ab7eddb..d163da6c8a 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * - * This program is distributed in the hope that it will be useful, + * 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. diff --git a/omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/NoteToPdfHelperTest.java b/omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/NoteToPdfHelperTest.java new file mode 100644 index 0000000000..e3df37c4b3 --- /dev/null +++ b/omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/NoteToPdfHelperTest.java @@ -0,0 +1,69 @@ +package it.feio.android.omninotes.utils; + +import android.graphics.pdf.PdfDocument; + +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.io.File; + +import it.feio.android.omninotes.helpers.NoteToPdfHelper; +import it.feio.android.omninotes.models.Note; +import it.feio.android.omninotes.testutils.BaseAndroidTestCase; + +@RunWith(AndroidJUnit4.class) +public class NoteToPdfHelperTest extends BaseAndroidTestCase { + + private NoteToPdfHelper pdfConverter; + private Note note; + + @Before + public void setup(){ + pdfConverter = new NoteToPdfHelper(); + note = new Note(); + } + + @Test + public void testNotePdfCreateWithSpaces(){ + note.setContent("this is a test note"); + note.setTitle("test with spaces in name"); + File file = pdfConverter.createFilePath(note.getTitle()); + File filePath = new File("/storage/emulated/0/Documents/test with spaces in name.pdf"); + Assert.assertEquals(file,filePath); + } + + @Test + public void testNotePdfCreateWithoutSpaces(){ + note.setContent("this is a test note"); + note.setTitle("testWithoutSpacesInName"); + File file = pdfConverter.createFilePath(note.getTitle()); + File filePath = new File("/storage/emulated/0/Documents/testWithoutSpacesInName.pdf"); + Assert.assertEquals(file,filePath); + } + + @Test + public void testNotePdfCreateWithOtherTypeCharSpaces(){ + note.setContent("this is a test note"); + note.setTitle("test.WithoutSpacesInName"); + File file = pdfConverter.createFilePath(note.getTitle()); + Assert.assertNull(file); + } + + @Test + public void testIfPdfIsCreated(){ + PdfDocument pdf = new PdfDocument(); + + PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(524,830,1).create(); + PdfDocument.Page page = pdf.startPage(pageInfo); + + pdf.finishPage(page); + File file = pdfConverter.createFilePath(note.getTitle()); + pdfConverter.writePdfToFillePath(pdf,file); + Assert.assertTrue(file.exists()); + } + +} diff --git a/omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/PDFHelperTest.java b/omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/PDFHelperTest.java deleted file mode 100644 index 67c508841b..0000000000 --- a/omniNotes/src/androidTest/java/it/feio/android/omninotes/utils/PDFHelperTest.java +++ /dev/null @@ -1,32 +0,0 @@ -package it.feio.android.omninotes.utils; - -import static org.junit.Assert.assertEquals; - -import android.os.Environment; - -import it.feio.android.omninotes.helpers.NoteToPdfHelper; -import it.feio.android.omninotes.models.Note; -import it.feio.android.omninotes.testutils.BaseAndroidTestCase; - -import org.junit.Before; -import org.junit.Test; - -import java.io.File; - -public class PDFHelperTest extends BaseAndroidTestCase { - - @Before - public void SetUp(){ - Note testNote = new Note(); - testNote.setTitle("a test note to convert to a pdf"); - testNote.setContent("this is a text so that the pdf file can be created\n some more info can be put here"); - } - - @Test - public void FillePathMadeCorrectly(){ - NoteToPdfHelper pdfHelper = new NoteToPdfHelper(); - File file = pdfHelper.CreateFillePath("aTestPath"); - File controlFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),"aTestPath.pdf"); - assertEquals(file,controlFile); - } -} diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NoteToPdfHelper.java b/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NoteToPdfHelper.java index fe903fa78c..063de33125 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NoteToPdfHelper.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NoteToPdfHelper.java @@ -21,8 +21,9 @@ import it.feio.android.omninotes.BaseFragment; import it.feio.android.omninotes.R; +import it.feio.android.omninotes.databinding.PdfTemplateTextNoteBinding; -public class NoteToPdfHelper extends BaseFragment { +public class NoteToPdfHelper { public Intent convertStringToPDF(String head, String contents, Context context) { @@ -36,8 +37,54 @@ public Intent convertStringToPDF(String head, String contents, Context context) headView.setText(head); contextView.setText(contents); + PdfDocument pdf = createPdfFromView(view, context); + + File file = createFilePath(head); + + if(file != null) { + writePdfToFillePath(pdf, file); + Intent intent = new Intent(Intent.ACTION_VIEW); + Uri uri = Uri.fromFile(file); + intent.setDataAndType(uri,"application/pdf"); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + + return intent; + } + else{ + return null; + } + } + + public File createFilePath(String head){ + if(head.contains(".") || head.contains("/")){ + return null; + } + else { + return new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), head + ".pdf"); + } + } + + public void writePdfToFillePath(PdfDocument pdf,File file){ + try { + FileOutputStream fileOutPut = new FileOutputStream(file); + pdf.writeTo(fileOutPut); + pdf.close(); + fileOutPut.flush(); + fileOutPut.close(); + } + catch (FileNotFoundException e) { + e.printStackTrace(); + pdf.close(); + } + catch (IOException e) { + e.printStackTrace(); + pdf.close(); + } + } + + public PdfDocument createPdfFromView(View view,Context context){ DisplayMetrics displayMetrics = new DisplayMetrics(); - + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { context.getDisplay().getRealMetrics(displayMetrics); } @@ -67,39 +114,6 @@ public Intent convertStringToPDF(String head, String contents, Context context) canvasPage.drawBitmap(bitmap,0,0,null); pdf.finishPage(page); - File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),head + ".pdf"); - - try { - FileOutputStream fileOutPut = new FileOutputStream(file); - pdf.writeTo(fileOutPut); - pdf.close(); - fileOutPut.flush(); - fileOutPut.close(); - Toast.makeText(context, "PDF file generated successfully.", Toast.LENGTH_SHORT).show(); - - Intent intent = new Intent(Intent.ACTION_VIEW); - Uri uri = Uri.fromFile(file); - intent.setDataAndType(uri,"application/pdf"); - intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - - return intent; - } - catch (FileNotFoundException e) { - e.printStackTrace(); - Toast.makeText(context, "file: PDF file did not generate", Toast.LENGTH_SHORT).show(); - pdf.close(); - } - catch (IOException e) { - e.printStackTrace(); - Toast.makeText(context, "I/0: PDF file did not generate", Toast.LENGTH_SHORT).show(); - pdf.close(); - } - return null; - } - - public File CreateFillePath(String title){ - File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),title + ".pdf"); - System.out.println(file); - return file; + return pdf; } } From 3ddcba3699c847317924c73c42349d018d0fc0b7 Mon Sep 17 00:00:00 2001 From: unic77 <112702446+unic77@users.noreply.github.com> Date: Fri, 26 May 2023 10:56:04 +0200 Subject: [PATCH 27/31] Update play_store_description.txt --- assets/translations/play_store_description.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/translations/play_store_description.txt b/assets/translations/play_store_description.txt index b41f6f3463..36eb327a89 100644 --- a/assets/translations/play_store_description.txt +++ b/assets/translations/play_store_description.txt @@ -1,6 +1,6 @@ Open-source note taking application, designed to be lightweight and simple without giving up smart behavior. -Follow the developments and post your comments and advice on our community at https://t.me/+VwL2-SGNdTs4ZWY0 +Follow the developments and post your comments and advice on our community at https://www.facebook.com/OmniNotes Your help in translating the app is welcome. Send me an e-mail If you want to lend a hand ! From 4449050f67032dbe32bb1f5479a6bec328eced87 Mon Sep 17 00:00:00 2001 From: unic77 <112702446+unic77@users.noreply.github.com> Date: Fri, 26 May 2023 10:57:54 +0200 Subject: [PATCH 28/31] Update build.gradle --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index d163da6c8a..ef7ab7eddb 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * - * This program is distributed in the hope that it will be useful + * 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. From 342cad986854e0b8664681cbf298a1f621134111 Mon Sep 17 00:00:00 2001 From: unic77 <112702446+unic77@users.noreply.github.com> Date: Fri, 26 May 2023 10:59:35 +0200 Subject: [PATCH 29/31] Update main.yml --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 43d534b968..ba502c1ffa 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -14,7 +14,7 @@ jobs: uses: actions/setup-java@v3 with: distribution: 'temurin' - java-version: '11' + java-version: 11 cache: 'gradle' - name: Run unit/instrumentation tests and coverage generation From 6e4d970e9e2173bbfc6e77c951369913e10239e8 Mon Sep 17 00:00:00 2001 From: unic77 <112702446+unic77@users.noreply.github.com> Date: Fri, 26 May 2023 11:01:12 +0200 Subject: [PATCH 30/31] Update ConstantsBase.java --- .../java/it/feio/android/omninotes/utils/ConstantsBase.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/utils/ConstantsBase.java b/omniNotes/src/main/java/it/feio/android/omninotes/utils/ConstantsBase.java index 7bdc3f90a5..2737ffe07d 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/utils/ConstantsBase.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/utils/ConstantsBase.java @@ -20,7 +20,7 @@ public interface ConstantsBase { String DATABASE_NAME = "omni-notes"; String APP_STORAGE_DIRECTORY_SB_SYNC = "db_sync"; - SString DEV_EMAIL = "omninotes@iosue.it"; + String DEV_EMAIL = "omninotes@iosue.it"; String GOOGLE_PLUS_COMMUNITY = "https://plus.google.com/communities/112276053772152071903"; String FACEBOOK_COMMUNITY = "https://www.facebook.com/OmniNotes/"; From f35287481964e50bb89d601d3aa077f07f035739 Mon Sep 17 00:00:00 2001 From: unic77 <112702446+unic77@users.noreply.github.com> Date: Fri, 26 May 2023 11:02:15 +0200 Subject: [PATCH 31/31] Update gradle-wrapper.properties --- gradle/wrapper/gradle-wrapper.properties | 1 + 1 file changed, 1 insertion(+) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 0d26d4b32c..27bedafbc1 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -15,6 +15,7 @@ # along with this program. If not, see . # +#Thu Oct 15 07:55:52 CEST 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME