From b074ae8ee99f86b8722ada828e53e301d014a2e5 Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Thu, 29 Mar 2018 18:24:01 +0200 Subject: [PATCH 01/37] Changed label in tour --- etc/translations/strings.xml | 2 +- omniNotes/src/main/res/values/strings.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/etc/translations/strings.xml b/etc/translations/strings.xml index eda149fb3c..41663a6b87 100644 --- a/etc/translations/strings.xml +++ b/etc/translations/strings.xml @@ -366,7 +366,7 @@ Navigate Navigation menu allows you to move through notes with filters and tags Tags - Add colored tags to find notes at-a-glance + Add colored categories to organize notes at-a-glance Improve Add attachment of several kinds to your notes! Do more diff --git a/omniNotes/src/main/res/values/strings.xml b/omniNotes/src/main/res/values/strings.xml index f2a51dc87b..08095838b3 100644 --- a/omniNotes/src/main/res/values/strings.xml +++ b/omniNotes/src/main/res/values/strings.xml @@ -380,7 +380,7 @@ Navigate Navigation menu allows you to move through notes with filters and tags Tags - Add colored tags to find notes at-a-glance + Add colored categories to organize notes at-a-glance Improve Add attachment of several kinds to your notes! Do more From 308af25cf99828a4317b22b3d4d03185f7a71244 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Fri, 30 Mar 2018 20:55:43 +0300 Subject: [PATCH 02/37] New feature: Add timestamp --- .../android/omninotes/DetailFragment.java | 41 +++++++++++++++---- .../drawable/ic_access_time_black_24px.xml | 12 ++++++ .../src/main/res/layout/attachment_dialog.xml | 13 ++++++ omniNotes/src/main/res/values/strings.xml | 1 + 4 files changed, 58 insertions(+), 9 deletions(-) create mode 100644 omniNotes/src/main/res/drawable/ic_access_time_black_24px.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 d60683c100..939a6d33b8 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java @@ -42,15 +42,14 @@ import android.os.Bundle; import android.os.Handler; import android.provider.MediaStore; -import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import android.support.v4.app.ActivityCompat; import android.support.v4.app.FragmentTransaction; import android.support.v4.content.ContextCompat; import android.support.v4.util.Pair; import android.support.v4.view.MenuItemCompat; import android.support.v4.widget.DrawerLayout; import android.text.Editable; +import android.text.Selection; import android.text.TextUtils; import android.text.TextWatcher; import android.util.DisplayMetrics; @@ -75,6 +74,7 @@ import de.keyboardsurfer.android.widget.crouton.Style; import it.feio.android.checklistview.exceptions.ViewNotSupportedException; import it.feio.android.checklistview.interfaces.CheckListChangedListener; +import it.feio.android.checklistview.models.CheckListView; import it.feio.android.checklistview.models.CheckListViewItem; import it.feio.android.checklistview.models.ChecklistManager; import it.feio.android.checklistview.utils.DensityUtil; @@ -107,9 +107,11 @@ import java.io.File; import java.io.IOException; import java.lang.ref.WeakReference; +import java.text.DateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; +import java.util.Date; import java.util.List; import static com.nineoldandroids.view.ViewPropertyAnimator.animate; @@ -830,6 +832,7 @@ private void initViewContent() { * Force focus and shows soft keyboard. Only happens if it's a new note, without shared content. * {@link showKeyboard} is used to check if the note is created from shared content. */ + @SuppressWarnings("JavadocReference") private void requestFocus(final EditText view) { if (note.get_id() == null && !noteTmp.isChanged(note) && showKeyboard) { KeyboardUtils.showKeyboard(view); @@ -1346,6 +1349,9 @@ private void showPopup(View anchor) { // Location android.widget.TextView locationSelection = (android.widget.TextView) layout.findViewById(R.id.location); locationSelection.setOnClickListener(new AttachmentOnClickListener()); + // Time + android.widget.TextView timeStampSelection = (android.widget.TextView) layout.findViewById(R.id.timestamp); + timeStampSelection.setOnClickListener(new AttachmentOnClickListener()); // Desktop note with PushBullet if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { android.widget.TextView pushbulletSelection = (android.widget.TextView) layout.findViewById(R.id @@ -1436,6 +1442,26 @@ private void takeSketch(Attachment attachment) { .addToBackStack(mainActivity.FRAGMENT_DETAIL_TAG).commit(); } + private void addTimestamp() { + Editable editable = content.getText(); + int position = content.getSelectionStart(); + DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT); + String dateStamp = dateFormat.format(new Date().getTime()) + " "; + if (noteTmp.isChecklist()) { + if (mChecklistManager.getFocusedItemView() != null) { + editable = mChecklistManager.getFocusedItemView().getEditText().getEditableText(); + position = mChecklistManager.getFocusedItemView().getEditText().getSelectionStart(); + } else { + ((CheckListView) toggleChecklistView) + .addItem(dateStamp, false, mChecklistManager.getCount()); + } + } + String leadSpace = position == 0 ? "" : " "; + dateStamp = leadSpace + dateStamp; + editable.insert(position, dateStamp); + Selection.setSelection(editable, position + dateStamp.length()); + } + @SuppressLint("NewApi") @Override @@ -2336,7 +2362,6 @@ public void onClick(View v) { // Photo from camera case R.id.camera: takePhoto(); - attachmentDialog.dismiss(); break; case R.id.recording: if (!isRecording) { @@ -2349,12 +2374,10 @@ public void onClick(View v) { addAttachment(attachment); mAttachmentAdapter.notifyDataSetChanged(); mGridView.autoresize(); - attachmentDialog.dismiss(); } break; case R.id.video: takeVideo(); - attachmentDialog.dismiss(); break; case R.id.files: if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE) == @@ -2363,15 +2386,15 @@ public void onClick(View v) { } else { askReadExternalStoragePermission(); } - attachmentDialog.dismiss(); break; case R.id.sketch: takeSketch(null); - attachmentDialog.dismiss(); break; case R.id.location: displayLocationDialog(); - attachmentDialog.dismiss(); + break; + case R.id.timestamp: + addTimestamp(); break; case R.id.pushbullet: MessagingExtension.mirrorMessage(mainActivity, getString(R.string.app_name), @@ -2379,11 +2402,11 @@ public void onClick(View v) { getNoteContent(), BitmapFactory.decodeResource(getResources(), R.drawable.ic_stat_literal_icon), null, 0); - attachmentDialog.dismiss(); break; default: Log.e(Constants.TAG, "Wrong element choosen: " + v.getId()); } + if(!isRecording)attachmentDialog.dismiss(); } } diff --git a/omniNotes/src/main/res/drawable/ic_access_time_black_24px.xml b/omniNotes/src/main/res/drawable/ic_access_time_black_24px.xml new file mode 100644 index 0000000000..1ac9c48040 --- /dev/null +++ b/omniNotes/src/main/res/drawable/ic_access_time_black_24px.xml @@ -0,0 +1,12 @@ + + + + diff --git a/omniNotes/src/main/res/layout/attachment_dialog.xml b/omniNotes/src/main/res/layout/attachment_dialog.xml index 3eb0f12cf3..fb12a6bb92 100644 --- a/omniNotes/src/main/res/layout/attachment_dialog.xml +++ b/omniNotes/src/main/res/layout/attachment_dialog.xml @@ -114,6 +114,19 @@ pixlui:typeface="Roboto-Regular.ttf" android:textColor="@color/text_gray" /> + + Delete all the attachments? Gallery Location + Timestamp Pushbullet Remove location? Remove reminder? From 9d3cb952cab92f10a925e7d8d26e9eea42ed7b96 Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Thu, 5 Apr 2018 01:13:29 +0200 Subject: [PATCH 03/37] Fixed language switch (fix #460) --- .../feio/android/omninotes/BaseActivity.java | 24 ++++++---- .../it/feio/android/omninotes/OmniNotes.java | 5 -- .../omninotes/helpers/LanguageHelper.java | 47 ++++++++++++++----- 3 files changed, 50 insertions(+), 26 deletions(-) diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/BaseActivity.java b/omniNotes/src/main/java/it/feio/android/omninotes/BaseActivity.java index bcfdedb567..a2f802b329 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/BaseActivity.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/BaseActivity.java @@ -25,23 +25,22 @@ import android.content.SharedPreferences; import android.content.res.Resources; import android.graphics.Typeface; -import android.os.Build; import android.os.Bundle; -import android.os.Handler; -import android.support.annotation.NonNull; import android.support.v4.app.FragmentTransaction; import android.support.v4.content.LocalBroadcastManager; import android.support.v7.app.ActionBarActivity; import android.util.Log; -import android.view.*; -import android.widget.EditText; +import android.view.KeyEvent; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.ViewConfiguration; import android.widget.Toast; -import com.afollestad.materialdialogs.DialogAction; -import com.afollestad.materialdialogs.MaterialDialog; -import com.afollestad.materialdialogs.MaterialDialog.SingleButtonCallback; +import it.feio.android.omninotes.helpers.LanguageHelper; import it.feio.android.omninotes.models.Note; import it.feio.android.omninotes.models.PasswordValidator; -import it.feio.android.omninotes.utils.*; +import it.feio.android.omninotes.utils.Constants; +import it.feio.android.omninotes.utils.Navigation; +import it.feio.android.omninotes.utils.PasswordHelper; import it.feio.android.omninotes.widget.ListWidgetProvider; import java.lang.reflect.Field; @@ -67,11 +66,16 @@ public boolean onCreateOptionsMenu(Menu menu) { return super.onCreateOptionsMenu(menu); } + @Override + protected void attachBaseContext(Context newBase) { + Context context = LanguageHelper.updateLanguage(newBase, null); + super.attachBaseContext(context); + } @Override protected void onCreate(Bundle savedInstanceState) { prefs = getSharedPreferences(Constants.PREFS_NAME, MODE_MULTI_PROCESS); - // Force menu overflow icon + // Forces menu overflow icon try { ViewConfiguration config = ViewConfiguration.get(this.getApplicationContext()); Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey"); 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 67ef2084ed..1ad6605e90 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/OmniNotes.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/OmniNotes.java @@ -64,9 +64,6 @@ public void onCreate() { initAcra(this); initLeakCanary(); - - // Checks selected locale or default one - LanguageHelper.updateLanguage(this, null); } private void initLeakCanary() { @@ -92,11 +89,9 @@ public static boolean isDebugBuild() { } @Override - // Used to restore user selected locale when configuration changes public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); String language = prefs.getString(Constants.PREF_LANG, ""); - super.onConfigurationChanged(newConfig); LanguageHelper.updateLanguage(this, language); } diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/helpers/LanguageHelper.java b/omniNotes/src/main/java/it/feio/android/omninotes/helpers/LanguageHelper.java index 095a1619a5..684fcd63de 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/helpers/LanguageHelper.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/helpers/LanguageHelper.java @@ -22,37 +22,62 @@ import android.content.Context; import android.content.SharedPreferences; import android.content.res.Configuration; -import android.content.res.Resources; import android.os.Build; +import android.os.LocaleList; import android.support.annotation.NonNull; -import android.support.multidex.MultiDexApplication; import android.text.TextUtils; import it.feio.android.omninotes.utils.Constants; import java.util.Locale; +import static android.content.Context.MODE_MULTI_PROCESS; -public class LanguageHelper extends MultiDexApplication { + +public class LanguageHelper { /** * Updates default language with forced one */ - @SuppressLint("CommitPrefEdits") - public static void updateLanguage(Context ctx, String lang) { - Configuration cfg = new Configuration(); + @SuppressLint("ApplySharedPref") + public static Context updateLanguage(Context ctx, String lang) { SharedPreferences prefs = ctx.getSharedPreferences(Constants.PREFS_NAME, MODE_MULTI_PROCESS); String language = prefs.getString(Constants.PREF_LANG, ""); + Locale locale = null; if (TextUtils.isEmpty(language) && lang == null) { - cfg.locale = Locale.getDefault(); - prefs.edit().putString(Constants.PREF_LANG, cfg.locale.toString()).commit(); + locale = Locale.getDefault(); + prefs.edit().putString(Constants.PREF_LANG, locale.toString()).commit(); } else if (lang != null) { - cfg.locale = getLocale(lang); + locale = getLocale(lang); prefs.edit().putString(Constants.PREF_LANG, lang).commit(); } else if (!TextUtils.isEmpty(language)) { - cfg.locale = getLocale(language); + locale = getLocale(language); + } + + return setLocale(ctx, locale); + } + + @SuppressWarnings("deprecation") + private static Context setLocale(Context context, Locale locale){ + Configuration configuration = context.getResources().getConfiguration(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + configuration.setLocale(locale); + + LocaleList localeList = new LocaleList(locale); + LocaleList.setDefault(localeList); + configuration.setLocales(localeList); + + context.createConfigurationContext(configuration); + + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { + configuration.setLocale(locale); + context.createConfigurationContext(configuration); + + } else { + configuration.locale = locale; + context.getResources().updateConfiguration(configuration, context.getResources().getDisplayMetrics()); } - ctx.getResources().updateConfiguration(cfg, null); + return context; } /** From 33c202b4315488ebce3ff67e9df8a69e7372dad5 Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Thu, 5 Apr 2018 01:14:33 +0200 Subject: [PATCH 04/37] Bumped version to next 5.5.0 development --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index a076b14e25..df579cd244 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,8 +15,8 @@ # along with this program. If not, see . # -VERSION_NAME=5.4.5 -VERSION_CODE=240 +VERSION_NAME=5.5.0 +VERSION_CODE=241 PACKAGE=it.feio.android.omninotes MIN_SDK=16 From 89df555f397e0ee6046643d36db6668cf708489b Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Thu, 5 Apr 2018 01:16:51 +0200 Subject: [PATCH 05/37] Upgraded target_dk from 23 to 27 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index df579cd244..9cfe614423 100644 --- a/gradle.properties +++ b/gradle.properties @@ -20,7 +20,7 @@ VERSION_CODE=241 PACKAGE=it.feio.android.omninotes MIN_SDK=16 -TARGET_SDK=23 +TARGET_SDK=27 BUILD_TOOLS=26.0.2 # The following properties are empty defaults to allow build and can EVENTUALLY be overridden to allow: From 3f96fd546db03db1584bc6c53c10d3b06a4036d1 Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Thu, 5 Apr 2018 01:17:18 +0200 Subject: [PATCH 06/37] Upgraded build tools and Gradle wrapper binary version --- .travis.yml | 2 +- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8879c0b002..99219237c2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,7 +21,7 @@ android: - tools - platform-tools - build-tools-26.0.2 - - android-23 + - android-27 - extra-google-m2repository - extra-android-m2repository licenses: diff --git a/build.gradle b/build.gradle index 9853c3c590..6c46fdaa46 100644 --- a/build.gradle +++ b/build.gradle @@ -21,7 +21,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.0.1' + classpath 'com.android.tools.build:gradle:3.1.0' classpath 'me.tatarka:gradle-retrolambda:3.2.5' classpath 'me.tatarka.retrolambda.projectlombok:lombok.ast:0.2.3.a2' classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.6" diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 55e446ccc9..4e5625365b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Wed Nov 08 17:59:56 CET 2017 +#Wed Apr 04 22:14:12 CEST 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip From f59c384e89fb1b6c8e00796c656a1f713f5bd438 Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Thu, 5 Apr 2018 02:03:30 +0200 Subject: [PATCH 07/37] Removed transparent navigation bar (fix #463) This should save some computation cycles due to all the removed code that was used to dynamically calculate the height of the navigation bar to move accordly all the other elements to avoid overlapping. --- .../android/omninotes/DetailFragment.java | 62 +------------------ .../feio/android/omninotes/ListFragment.java | 21 +------ .../android/omninotes/models/views/Fab.java | 8 --- .../src/main/res/layout/activity_about.xml | 3 +- .../src/main/res/layout/activity_main.xml | 9 +-- .../src/main/res/layout/fragment_detail.xml | 5 +- .../src/main/res/layout/fragment_list.xml | 5 +- .../src/main/res/values-land-v19/dimens.xml | 23 ------- .../src/main/res/values-land-v21/dimens.xml | 21 ------- omniNotes/src/main/res/values-v19/styles.xml | 9 +-- omniNotes/src/main/res/values-v21/styles.xml | 9 +-- omniNotes/src/main/res/values/dimens.xml | 6 +- omniNotes/src/main/res/values/styles.xml | 1 - 13 files changed, 14 insertions(+), 168 deletions(-) delete mode 100644 omniNotes/src/main/res/values-land-v19/dimens.xml delete mode 100644 omniNotes/src/main/res/values-land-v21/dimens.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 d60683c100..0fbb19a6aa 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java @@ -42,9 +42,7 @@ import android.os.Bundle; import android.os.Handler; import android.provider.MediaStore; -import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import android.support.v4.app.ActivityCompat; import android.support.v4.app.FragmentTransaction; import android.support.v4.content.ContextCompat; import android.support.v4.util.Pair; @@ -58,7 +56,6 @@ import android.view.*; import android.view.View.OnClickListener; import android.view.View.OnTouchListener; -import android.view.ViewTreeObserver.OnGlobalLayoutListener; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; import android.view.animation.AnimationUtils; @@ -77,7 +74,6 @@ import it.feio.android.checklistview.interfaces.CheckListChangedListener; import it.feio.android.checklistview.models.CheckListViewItem; import it.feio.android.checklistview.models.ChecklistManager; -import it.feio.android.checklistview.utils.DensityUtil; import it.feio.android.omninotes.async.AttachmentTask; import it.feio.android.omninotes.async.bus.NotesUpdatedEvent; import it.feio.android.omninotes.async.bus.PushbulletReplyEvent; @@ -118,7 +114,7 @@ public class DetailFragment extends BaseFragment implements OnReminderPickedListener, OnTouchListener, - OnGlobalLayoutListener, OnAttachingFileListener, TextWatcher, CheckListChangedListener, OnNoteSaved, + OnAttachingFileListener, TextWatcher, CheckListChangedListener, OnNoteSaved, OnGeoUtilResultListener { private static final int TAKE_PHOTO = 1; @@ -198,7 +194,6 @@ public class DetailFragment extends BaseFragment implements OnReminderPickedList private boolean swiping; private int startSwipeX; private SharedPreferences prefs; - private View keyboardPlaceholder; private boolean orientationChanged; private long audioRecordingTimeStart; private long audioRecordingTime; @@ -237,11 +232,6 @@ public void onStop() { @Override public void onResume() { super.onResume(); - // Adding a layout observer to perform calculus when showing keyboard - if (root != null) { - root.getViewTreeObserver().addOnGlobalLayoutListener(this); - } - activityPausing = false; } @@ -249,10 +239,6 @@ public void onResume() { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_detail, container, false); - // Bottom padding set for translucent navigation bar since Kitkat - int softButtonHeight=Display.getSoftButtonsBarHeight( getActivity()); - view.setPadding(view.getPaddingLeft(), view.getPaddingTop(), view.getPaddingRight(), - view.getPaddingBottom() + softButtonHeight); ButterKnife.bind(this, view); return view; } @@ -337,10 +323,6 @@ public void onPause() { mRecorder = null; } - if (root != null) { - root.getViewTreeObserver().removeOnGlobalLayoutListener(this); - } - if (toggleChecklistView != null) { KeyboardUtils.hideKeyboard(toggleChecklistView); content.clearFocus(); @@ -2068,48 +2050,6 @@ public boolean onTouch(View v, MotionEvent event) { return true; } - - @Override - public void onGlobalLayout() { - int screenHeight = Display.getUsableSize(mainActivity).y; - int navBarOffset = Display.orientationLandscape(mainActivity) ? 0 : DensityUtil.pxToDp(Display - .getNavigationBarHeight(mainActivity.getWindow().getDecorView()), mainActivity); - int heightDiff = screenHeight - Display.getVisibleSize(mainActivity).y + navBarOffset; - boolean keyboardVisible = heightDiff > 150; - if (keyboardVisible && keyboardPlaceholder == null) { - shrinkLayouts(heightDiff); - } else if (!keyboardVisible && keyboardPlaceholder != null) { - restoreLayouts(); - } - } - - - private void shrinkLayouts(int heightDiff) { - detailWrapperView.removeView(timestampsView); - keyboardPlaceholder = new View(mainActivity); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - if (!(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && Display.orientationLandscape(mainActivity) - )) { - root.addView(keyboardPlaceholder, LinearLayout.LayoutParams.MATCH_PARENT, heightDiff); - } - } - } - - - private void restoreLayouts() { - if (root != null) { - ViewGroup wrapper = (ViewGroup) root.findViewById(R.id.detail_wrapper); - if (root.indexOfChild(keyboardPlaceholder) != -1) { - root.removeView(keyboardPlaceholder); - } - keyboardPlaceholder = null; - if (wrapper.indexOfChild(timestampsView) == -1) { - wrapper.addView(timestampsView); - } - } - } - - @Override public void onAttachingFileErrorOccurred(Attachment mAttachment) { mainActivity.showMessage(R.string.error_saving_attachments, ONStyle.ALERT); diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/ListFragment.java b/omniNotes/src/main/java/it/feio/android/omninotes/ListFragment.java index 1f79894b7e..44193ee8ce 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/ListFragment.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/ListFragment.java @@ -144,7 +144,6 @@ public class ListFragment extends BaseFragment implements OnViewTouchedListener, private ListFragment mFragment; private android.support.v7.view.ActionMode actionMode; private boolean keepActionMode = false; - private TextView listFooter; // Undo archive/trash private boolean undoTrash = false; @@ -475,20 +474,8 @@ private void initListView() { list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); list.setItemsCanFocus(false); - // If device runs KitKat a footer is added to list to avoid - // navigation bar transparency covering items - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - int navBarHeight = Display.getNavigationBarHeightKitkat(mainActivity); - listFooter = new TextView(mainActivity.getApplicationContext()); - listFooter.setHeight(navBarHeight); - // To avoid useless events on footer - listFooter.setOnClickListener(null); - list.addFooterView(listFooter); - } - // Note long click to start CAB mode list.setOnItemLongClickListener((arg0, view, position, arg3) -> { - if (view.equals(listFooter)) return true; if (getActionMode() != null) { return false; } @@ -501,7 +488,6 @@ private void initListView() { // Note single click listener managed by the activity itself list.setOnItemClickListener((arg0, view, position, arg3) -> { - if (view.equals(listFooter)) return; if (getActionMode() == null) { editNote(listAdapter.getItem(position), view); return; @@ -1292,11 +1278,8 @@ protected void trashNote(List notes, boolean trash) { */ private void selectAllNotes() { for (int i = 0; i < list.getChildCount(); i++) { - LinearLayout v = (LinearLayout) list.getChildAt(i).findViewById(R.id.card_layout); - // Checks null to avoid the footer - if (v != null) { - v.setBackgroundColor(getResources().getColor(R.color.list_bg_selected)); - } + LinearLayout v = list.getChildAt(i).findViewById(R.id.card_layout); + v.setBackgroundColor(getResources().getColor(R.color.list_bg_selected)); } selectedNotes.clear(); for (int i = 0; i < listAdapter.getCount(); i++) { diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/models/views/Fab.java b/omniNotes/src/main/java/it/feio/android/omninotes/models/views/Fab.java index 2f18498fa0..164e3419dd 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/models/views/Fab.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/models/views/Fab.java @@ -89,14 +89,6 @@ public void onScrollDown() { noteBtn.setOnClickListener(onClickListener); } - // In KitKat bottom padding is added by navbar height - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - int navBarHeight = Display.getNavigationBarHeightKitkat(OmniNotes.getAppContext()); - FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) fab.getLayoutParams(); - params.setMargins(params.leftMargin, params.topMargin, params.rightMargin, - navBarHeight + DensityUtil.pxToDp(params.bottomMargin, OmniNotes.getAppContext())); - fab.setLayoutParams(params); - } } diff --git a/omniNotes/src/main/res/layout/activity_about.xml b/omniNotes/src/main/res/layout/activity_about.xml index 76333c3094..76f01ff3fd 100644 --- a/omniNotes/src/main/res/layout/activity_about.xml +++ b/omniNotes/src/main/res/layout/activity_about.xml @@ -20,7 +20,6 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:clipToPadding="true" - android:paddingTop="@dimen/padding_top_kitkat" android:fitsSystemWindows="false"> - \ No newline at end of file + diff --git a/omniNotes/src/main/res/layout/activity_main.xml b/omniNotes/src/main/res/layout/activity_main.xml index d16dd29a82..ecc10a764f 100644 --- a/omniNotes/src/main/res/layout/activity_main.xml +++ b/omniNotes/src/main/res/layout/activity_main.xml @@ -20,9 +20,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:clipToPadding="false" - android:fitsSystemWindows="false" - tools:context="it.feio.android.omninotes.MainActivity"> + tools:context=".MainActivity"> + android:orientation="vertical"> @@ -65,4 +62,4 @@ - \ No newline at end of file + diff --git a/omniNotes/src/main/res/layout/fragment_detail.xml b/omniNotes/src/main/res/layout/fragment_detail.xml index 392aa96111..b19b9caa1b 100644 --- a/omniNotes/src/main/res/layout/fragment_detail.xml +++ b/omniNotes/src/main/res/layout/fragment_detail.xml @@ -154,7 +154,6 @@ android:layout_width="match_parent" android:layout_height="200dp" android:id="@+id/snackbar_placeholder" - android:layout_alignParentBottom="true" - android:layout_marginBottom="@dimen/navigation_bar_height"/> + android:layout_alignParentBottom="true"/> - \ No newline at end of file + diff --git a/omniNotes/src/main/res/layout/fragment_list.xml b/omniNotes/src/main/res/layout/fragment_list.xml index fb3160247b..f5f5560727 100644 --- a/omniNotes/src/main/res/layout/fragment_list.xml +++ b/omniNotes/src/main/res/layout/fragment_list.xml @@ -127,7 +127,6 @@ android:layout_width="match_parent" android:layout_height="200dp" android:id="@+id/snackbar_placeholder" - android:layout_gravity="bottom" - android:layout_marginBottom="@dimen/navigation_bar_height"/> + android:layout_gravity="bottom"/> - \ No newline at end of file + diff --git a/omniNotes/src/main/res/values-land-v19/dimens.xml b/omniNotes/src/main/res/values-land-v19/dimens.xml deleted file mode 100644 index a6bf433909..0000000000 --- a/omniNotes/src/main/res/values-land-v19/dimens.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - 25dp - 0dp - 10dp - - \ No newline at end of file diff --git a/omniNotes/src/main/res/values-land-v21/dimens.xml b/omniNotes/src/main/res/values-land-v21/dimens.xml deleted file mode 100644 index 48f133b160..0000000000 --- a/omniNotes/src/main/res/values-land-v21/dimens.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - 0dp - - \ No newline at end of file diff --git a/omniNotes/src/main/res/values-v19/styles.xml b/omniNotes/src/main/res/values-v19/styles.xml index adc5c07f9f..7295b26d66 100644 --- a/omniNotes/src/main/res/values-v19/styles.xml +++ b/omniNotes/src/main/res/values-v19/styles.xml @@ -16,16 +16,9 @@ --> - - - - - \ No newline at end of file + diff --git a/omniNotes/src/main/res/values-v21/styles.xml b/omniNotes/src/main/res/values-v21/styles.xml index 4c7e2222a5..1f501ee027 100644 --- a/omniNotes/src/main/res/values-v21/styles.xml +++ b/omniNotes/src/main/res/values-v21/styles.xml @@ -16,17 +16,10 @@ --> - - - - \ No newline at end of file + diff --git a/omniNotes/src/main/res/values/dimens.xml b/omniNotes/src/main/res/values/dimens.xml index c6542a986c..4de873cdf9 100644 --- a/omniNotes/src/main/res/values/dimens.xml +++ b/omniNotes/src/main/res/values/dimens.xml @@ -52,10 +52,6 @@ 24dp - - 48dp - - 42dp @@ -77,4 +73,4 @@ 24dp 64dp - \ No newline at end of file + diff --git a/omniNotes/src/main/res/values/styles.xml b/omniNotes/src/main/res/values/styles.xml index e964e53b9f..39e7577b4f 100644 --- a/omniNotes/src/main/res/values/styles.xml +++ b/omniNotes/src/main/res/values/styles.xml @@ -137,7 +137,6 @@ bottom 16dp 16dp - @dimen/undobar_margin_bottom horizontal @color/card_undobar_material_background_color true From a6fff2bc4cc9173d8eb1190da0618ae00b0486bd Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Thu, 5 Apr 2018 22:20:02 +0200 Subject: [PATCH 08/37] Removed FAB semi-transparent overlay It seemed to be useless, maybe I implemented it on some previous version where labels were not used already or they were without shadow with consequent low visibility --- .../java/it/feio/android/omninotes/ListFragment.java | 1 - .../it/feio/android/omninotes/models/views/Fab.java | 10 +--------- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/ListFragment.java b/omniNotes/src/main/java/it/feio/android/omninotes/ListFragment.java index 44193ee8ce..d746c922d5 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/ListFragment.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/ListFragment.java @@ -259,7 +259,6 @@ private void initFab() { break; } }); - fab.setOverlay(R.color.white_overlay); } diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/models/views/Fab.java b/omniNotes/src/main/java/it/feio/android/omninotes/models/views/Fab.java index 164e3419dd..106e523319 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/models/views/Fab.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/models/views/Fab.java @@ -1,24 +1,18 @@ package it.feio.android.omninotes.models.views; -import android.os.Build; import android.support.v4.view.ViewPropertyAnimatorListener; import android.view.View; import android.view.ViewGroup; import android.view.animation.AccelerateDecelerateInterpolator; -import android.widget.FrameLayout; import android.widget.ListView; import android.widget.RelativeLayout; - import com.getbase.floatingactionbutton.AddFloatingActionButton; import com.getbase.floatingactionbutton.FloatingActionsMenu; - -import it.feio.android.checklistview.utils.DensityUtil; import it.feio.android.omninotes.OmniNotes; import it.feio.android.omninotes.R; import it.feio.android.omninotes.models.listeners.AbsListViewScrollDetector; import it.feio.android.omninotes.models.listeners.OnFabItemClickedListener; import it.feio.android.omninotes.utils.Constants; -import it.feio.android.omninotes.utils.Display; import static android.support.v4.view.ViewCompat.animate; @@ -47,7 +41,7 @@ private void init() { this.fabHidden = true; this.fabExpanded = false; - AddFloatingActionButton fabAddButton = (AddFloatingActionButton) fab.findViewById(R.id.fab_expand_menu_button); + AddFloatingActionButton fabAddButton = fab.findViewById(R.id.fab_expand_menu_button); fabAddButton.setOnClickListener(v -> { if (!isExpanded() && expandOnLongClick) { performAction(v); @@ -102,7 +96,6 @@ public void onClick(View v) { public void performToggle() { fabExpanded = !fabExpanded; fab.toggle(); - toggleOverlay(); } @@ -140,7 +133,6 @@ public void hideFab() { animateFab(fab.getHeight() + getMarginBottom(fab), View.VISIBLE, View.INVISIBLE); fabHidden = true; fabExpanded = false; - toggleOverlay(); } } From 1984572cbebca164231ffc061acd3b8741079bff Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Thu, 5 Apr 2018 23:34:17 +0200 Subject: [PATCH 09/37] Fixed undesired bypass of password request on swipe action (fix #372) --- .../it/feio/android/omninotes/models/PasswordValidator.java | 2 +- .../java/it/feio/android/omninotes/utils/PasswordHelper.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/models/PasswordValidator.java b/omniNotes/src/main/java/it/feio/android/omninotes/models/PasswordValidator.java index b9f46e9456..244cb6b22a 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/models/PasswordValidator.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/models/PasswordValidator.java @@ -19,5 +19,5 @@ public interface PasswordValidator { - public void onPasswordValidated(boolean passwordConfirmed); + void onPasswordValidated(boolean passwordConfirmed); } diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/utils/PasswordHelper.java b/omniNotes/src/main/java/it/feio/android/omninotes/utils/PasswordHelper.java index 1d56b535b0..2451e51b7c 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/utils/PasswordHelper.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/utils/PasswordHelper.java @@ -41,7 +41,7 @@ public class PasswordHelper { public static void requestPassword(final Activity mActivity, final PasswordValidator mPasswordValidator) { LayoutInflater inflater = mActivity.getLayoutInflater(); final View v = inflater.inflate(R.layout.password_request_dialog_layout, null); - final EditText passwordEditText = (EditText) v.findViewById(R.id.password_request); + final EditText passwordEditText = v.findViewById(R.id.password_request); MaterialDialog dialog = new MaterialDialog.Builder(mActivity) .autoDismiss(false) @@ -71,6 +71,7 @@ public static void requestPassword(final Activity mActivity, final PasswordValid .neutralText(mActivity.getResources().getString(R.string.password_forgot)) .onNeutral((dialog13, which) -> { PasswordHelper.resetPassword(mActivity); + mPasswordValidator.onPasswordValidated(false); dialog13.dismiss(); }) .build(); From 89b4fa9ed7765423b4cd3534c4462402d43c2da2 Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Thu, 5 Apr 2018 23:57:01 +0200 Subject: [PATCH 10/37] Fixed notes list refresh after security password reset (fix #465) --- .../main/java/it/feio/android/omninotes/ListFragment.java | 8 ++++---- .../main/java/it/feio/android/omninotes/MainActivity.java | 1 - 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/ListFragment.java b/omniNotes/src/main/java/it/feio/android/omninotes/ListFragment.java index d746c922d5..8a087e50a2 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/ListFragment.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/ListFragment.java @@ -60,6 +60,7 @@ import com.nhaarman.listviewanimations.itemmanipulation.DynamicListView; import com.pnikosis.materialishprogress.ProgressWheel; +import it.feio.android.omninotes.async.bus.*; import org.apache.commons.lang.ObjectUtils; import java.util.ArrayList; @@ -75,10 +76,6 @@ import de.greenrobot.event.EventBus; import de.keyboardsurfer.android.widget.crouton.Crouton; import de.keyboardsurfer.android.widget.crouton.Style; -import it.feio.android.omninotes.async.bus.CategoriesUpdatedEvent; -import it.feio.android.omninotes.async.bus.NavigationUpdatedNavDrawerClosedEvent; -import it.feio.android.omninotes.async.bus.NotesLoadedEvent; -import it.feio.android.omninotes.async.bus.NotesMergeEvent; import it.feio.android.omninotes.async.notes.NoteLoaderTask; import it.feio.android.omninotes.async.notes.NoteProcessorArchive; import it.feio.android.omninotes.async.notes.NoteProcessorCategorize; @@ -1189,6 +1186,9 @@ else if (Navigation.checkNavigation(Navigation.CATEGORY)) { closeFab(); } + public void onEvent(PasswordRemovedEvent passwordRemovedEvent) { + initNotesList(mainActivity.getIntent()); + } private void animateListView() { if (!OmniNotes.isDebugBuild()) { diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/MainActivity.java b/omniNotes/src/main/java/it/feio/android/omninotes/MainActivity.java index 737e8618eb..3b78a69e8f 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/MainActivity.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/MainActivity.java @@ -163,7 +163,6 @@ private void init() { fragmentTransaction.add(R.id.fragment_container, new ListFragment(), FRAGMENT_LIST_TAG).commit(); } - // Handling of Intent actions handleIntents(); } From 7dffccc889608a9110b1e35ec7ef115a42933bb8 Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Thu, 5 Apr 2018 23:58:35 +0200 Subject: [PATCH 11/37] Changelog updated --- omniNotes/src/main/res/raw/changelog.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/omniNotes/src/main/res/raw/changelog.xml b/omniNotes/src/main/res/raw/changelog.xml index aeb13510bf..7ca52d858b 100644 --- a/omniNotes/src/main/res/raw/changelog.xml +++ b/omniNotes/src/main/res/raw/changelog.xml @@ -17,6 +17,14 @@ --> + + [b]New![/b] New "attachment" available to easily add the current timestamp + [i]Improved![/i] Removed outdated transparent navigation bar: this will save a lot of CPU avoiding calculating dynamic layout, after all today all devides are very much bigger than when this optimization has been introduced + [i]Improved![/i] Removed semi-transparent overlay when using floating action button to speed-up the flow + [u]Fix[/u] Notes list update after password reset and password request bypass using swipe actions + [u]Fix[/u] Language switching on Android Oreo and later versions + + [i]Improved![/i] Updated translations [i]Improved![/i] Added full description and screenshots for F-Droid users From 5899de2d890f3f20ea3d59927334fdd3ae0c3743 Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Fri, 6 Apr 2018 02:10:55 +0200 Subject: [PATCH 12/37] Implemented unfinished checklists rapid search (closes #458) --- etc/translations/strings.xml | 1 + .../feio/android/omninotes/ListFragment.java | 29 ++++++------- .../omninotes/async/notes/NoteLoaderTask.java | 39 +++++++++++------- .../feio/android/omninotes/db/DbHelper.java | 10 ++++- .../exceptions/NotesLoadingException.java | 28 +++++++++++++ .../omninotes/utils/ConstantsBase.java | 1 + .../ic_format_list_checks_white_24dp.png | Bin 0 -> 644 bytes .../ic_format_list_checks_white_24dp.png | Bin 0 -> 462 bytes .../ic_format_list_checks_white_24dp.png | Bin 0 -> 553 bytes .../ic_format_list_checks_white_24dp.png | Bin 0 -> 662 bytes .../ic_format_list_checks_white_24dp.png | Bin 0 -> 770 bytes omniNotes/src/main/res/menu/menu_list.xml | 7 ++++ omniNotes/src/main/res/raw/changelog.xml | 1 + .../src/main/res/values-en-rUS/strings.xml | 1 + .../src/main/res/values-it-rIT/strings.xml | 1 + omniNotes/src/main/res/values/strings.xml | 1 + 16 files changed, 88 insertions(+), 31 deletions(-) create mode 100644 omniNotes/src/main/java/it/feio/android/omninotes/exceptions/NotesLoadingException.java create mode 100644 omniNotes/src/main/res/drawable-hdpi/ic_format_list_checks_white_24dp.png create mode 100644 omniNotes/src/main/res/drawable-mdpi/ic_format_list_checks_white_24dp.png create mode 100644 omniNotes/src/main/res/drawable-xhdpi/ic_format_list_checks_white_24dp.png create mode 100644 omniNotes/src/main/res/drawable-xxhdpi/ic_format_list_checks_white_24dp.png create mode 100644 omniNotes/src/main/res/drawable-xxxhdpi/ic_format_list_checks_white_24dp.png diff --git a/etc/translations/strings.xml b/etc/translations/strings.xml index 41663a6b87..16180fab36 100644 --- a/etc/translations/strings.xml +++ b/etc/translations/strings.xml @@ -202,6 +202,7 @@ Checklist Text note Photo + Incompleted checklists Displays some statistics and expiring reminders from Omni Notes diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/ListFragment.java b/omniNotes/src/main/java/it/feio/android/omninotes/ListFragment.java index 8a087e50a2..35e16b7bc3 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/ListFragment.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/ListFragment.java @@ -28,7 +28,6 @@ import android.graphics.Color; import android.graphics.drawable.AnimationDrawable; import android.os.AsyncTask; -import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Looper; @@ -61,6 +60,7 @@ import com.pnikosis.materialishprogress.ProgressWheel; import it.feio.android.omninotes.async.bus.*; +import it.feio.android.omninotes.utils.*; import org.apache.commons.lang.ObjectUtils; import java.util.ArrayList; @@ -94,15 +94,6 @@ import it.feio.android.omninotes.models.listeners.OnViewTouchedListener; import it.feio.android.omninotes.models.views.Fab; import it.feio.android.omninotes.models.views.InterceptorLinearLayout; -import it.feio.android.omninotes.utils.AnimationsHelper; -import it.feio.android.omninotes.utils.Constants; -import it.feio.android.omninotes.utils.Display; -import it.feio.android.omninotes.utils.KeyboardUtils; -import it.feio.android.omninotes.utils.Navigation; -import it.feio.android.omninotes.utils.PasswordHelper; -import it.feio.android.omninotes.utils.ReminderHelper; -import it.feio.android.omninotes.utils.TagsHelper; -import it.feio.android.omninotes.utils.TextHelper; import it.feio.android.pixlui.links.UrlCompleter; import it.feio.android.simplegallery.util.BitmapUtils; @@ -603,6 +594,7 @@ private void prepareActionModeMenu() { } menu.findItem(R.id.menu_add_reminder).setVisible(true); menu.findItem(R.id.menu_category).setVisible(true); + menu.findItem(R.id.menu_uncomplete_checklists).setVisible(true); menu.findItem(R.id.menu_tags).setVisible(true); menu.findItem(R.id.menu_trash).setVisible(true); } @@ -734,6 +726,7 @@ private void setActionItemsVisibility(Menu menu, boolean searchViewHasFocus) { menu.findItem(R.id.menu_expanded_view).setVisible(!drawerOpen && !expandedView && !searchViewHasFocus); menu.findItem(R.id.menu_contracted_view).setVisible(!drawerOpen && expandedView && !searchViewHasFocus); menu.findItem(R.id.menu_empty_trash).setVisible(!drawerOpen && navigationTrash); + menu.findItem(R.id.menu_uncomplete_checklists).setVisible(searchViewHasFocus); menu.findItem(R.id.menu_tags).setVisible(searchViewHasFocus); } @@ -778,6 +771,8 @@ public boolean performAction(MenuItem item, ActionMode actionMode) { break; case R.id.menu_filter_category_remove: filterCategoryArchived(false); + case R.id.menu_uncomplete_checklists: + filterByUncompleteChecklists(); break; case R.id.menu_tags: filterByTags(); @@ -999,6 +994,7 @@ public void onPositive(MaterialDialog materialDialog) { /** * Notes list adapter initialization and association to view + * @FIXME: This method is a divine opprobrium and MUST be refactored. I'm ashamed by myself. */ void initNotesList(Intent intent) { Log.d(Constants.TAG, "initNotesList intent: " + intent.getAction()); @@ -1021,13 +1017,17 @@ void initNotesList(Intent intent) { // Searching searchQuery = searchQueryInstant; searchQueryInstant = null; - if (searchTags != null || searchQuery != null || Intent.ACTION_SEARCH.equals(intent.getAction())) { + if (searchTags != null || searchQuery != null + || IntentChecker.checkAction(intent, Intent.ACTION_SEARCH, Constants.ACTION_SEARCH_UNCOMPLETE_CHECKLISTS)) { // Using tags if (searchTags != null && intent.getStringExtra(SearchManager.QUERY) == null) { searchQuery = searchTags; NoteLoaderTask.getInstance().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, "getNotesByTag", searchQuery); + } else if (Constants.ACTION_SEARCH_UNCOMPLETE_CHECKLISTS.equals(intent.getAction())) { + searchQuery = getContext().getResources().getString(R.string.uncompleted_checklists); + NoteLoaderTask.getInstance().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, "getNotesByUncompleteChecklist"); } else { // Get the intent, verify the action and get the query if (intent.getStringExtra(SearchManager.QUERY) != null) { @@ -1759,9 +1759,10 @@ private void filterCategoryArchived(boolean filter) { } - /** - * Search notes by tags - */ + private void filterByUncompleteChecklists() { + initNotesList(new Intent(Constants.ACTION_SEARCH_UNCOMPLETE_CHECKLISTS)); + } + private void filterByTags() { // Retrieves all available categories diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/async/notes/NoteLoaderTask.java b/omniNotes/src/main/java/it/feio/android/omninotes/async/notes/NoteLoaderTask.java index f9a6f61849..7fb194a41e 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/async/notes/NoteLoaderTask.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/async/notes/NoteLoaderTask.java @@ -21,9 +21,11 @@ import de.greenrobot.event.EventBus; import it.feio.android.omninotes.async.bus.NotesLoadedEvent; import it.feio.android.omninotes.db.DbHelper; +import it.feio.android.omninotes.exceptions.NotesLoadingException; import it.feio.android.omninotes.models.Note; import it.feio.android.omninotes.utils.Constants; +import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; @@ -55,23 +57,28 @@ protected ArrayList doInBackground(Object... params) { ArrayList notes = new ArrayList<>(); String methodName = params[0].toString(); - Object methodArgs = params[1]; DbHelper db = DbHelper.getInstance(); - // If null argument an empty list will be returned - if (methodArgs == null) { - return notes; - } - - // Checks the argument class with reflection - Class[] paramClass = new Class[]{methodArgs.getClass()}; - - // Retrieves and calls the right method - try { - Method method = db.getClass().getDeclaredMethod(methodName, paramClass); - notes = (ArrayList) method.invoke(db, paramClass[0].cast(methodArgs)); - } catch (Exception e) { - Log.e(Constants.TAG, "Error retrieving notes", e); + if (params.length < 2 || params[1] == null) { + try { + Method method = db.getClass().getDeclaredMethod(methodName); + notes = (ArrayList)method.invoke(db); + } catch (NoSuchMethodException e) { + return notes; + } catch (IllegalAccessException e) { + throw new NotesLoadingException("Error retrieving notes", e); + } catch (InvocationTargetException e) { + throw new NotesLoadingException("Error retrieving notes", e); + } + } else { + Object methodArgs = params[1]; + Class[] paramClass = new Class[]{methodArgs.getClass()}; + try { + Method method = db.getClass().getDeclaredMethod(methodName, paramClass); + notes = (ArrayList) method.invoke(db, paramClass[0].cast(methodArgs)); + } catch (Exception e) { + throw new NotesLoadingException("Error retrieving notes", e); + } } return notes; @@ -84,4 +91,4 @@ protected void onPostExecute(ArrayList notes) { super.onPostExecute(notes); EventBus.getDefault().post(new NotesLoadedEvent(notes)); } -} \ No newline at end of file +} diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/db/DbHelper.java b/omniNotes/src/main/java/it/feio/android/omninotes/db/DbHelper.java index 7d20db80af..efe95fd405 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/db/DbHelper.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/db/DbHelper.java @@ -23,7 +23,6 @@ import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; -import android.database.sqlite.SQLiteReadOnlyDatabaseException; import android.net.Uri; import android.util.Log; import it.feio.android.omninotes.OmniNotes; @@ -768,6 +767,15 @@ public List getNotesByTag(String[] tags) { .toList().toBlocking().single(); } + /** + * Retrieves all uncompleted checklists + */ + public List getNotesByUncompleteChecklist() { + String whereCondition = " WHERE " + KEY_CHECKLIST + " = 1 AND " + KEY_CONTENT + " LIKE '%" + it.feio.android + .checklistview.interfaces.Constants.UNCHECKED_SYM + "%'"; + return getNotes(whereCondition, true); + } + /** * Retrieves all attachments diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/exceptions/NotesLoadingException.java b/omniNotes/src/main/java/it/feio/android/omninotes/exceptions/NotesLoadingException.java new file mode 100644 index 0000000000..ee70893f58 --- /dev/null +++ b/omniNotes/src/main/java/it/feio/android/omninotes/exceptions/NotesLoadingException.java @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2018 Federico Iosue (federico.iosue@gmail.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundatibehaon, 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, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package it.feio.android.omninotes.exceptions; + +public class NotesLoadingException extends RuntimeException { + + private static final long serialVersionUID = 1288015037660807104L; + + public NotesLoadingException(String message, Exception e) { + super(message, e); + } + +} 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 ecf7fc8c85..b8857d19d9 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 @@ -71,6 +71,7 @@ public interface ConstantsBase { * Used to quickly add a note, save, and perform backPress (eg. Tasker+Pushbullet) * */ String ACTION_SEND_AND_EXIT = "action_send_and_exit"; + String ACTION_SEARCH_UNCOMPLETE_CHECKLISTS = "action_search_uncomplete_checklists"; String PREF_LANG = "settings_language"; String PREF_LAST_UPDATE_CHECK = "last_update_check"; diff --git a/omniNotes/src/main/res/drawable-hdpi/ic_format_list_checks_white_24dp.png b/omniNotes/src/main/res/drawable-hdpi/ic_format_list_checks_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..a1fc42d6ca9fb33ec8a46428b5a2caa4b642eac6 GIT binary patch literal 644 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBSkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+eS5K)hhiu0R{01Y44~ zy9wy$!fk$L9koEv$x0Bg+K;vCKT^vIq4!@mt*6Xl?NbCO9dLr?TD!-&e zU02k~l|MSQLrDJk)Y%Psx55k5*S=S{dbiNHQL${!k|mrgixmW(y{{|xQ!7`{)Oz=n~1T_$4; zllzv4)2kedJ-x;6zx7P@v-Wo%|$@5GX~yfI$0Dh%S|?#Bd$c`h}AN!ms zQ?~H_Vm$qJo^^w-^lf0ss+PD$l%yn}$c1Je*ABP&BwD!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3 zytltOogu~WD0c$WFXO-WWEomJcsA8M|G4Tho5tE*LC+cH&XY~@wzvNANaGBVXRFt9Q(c-H)+8AU^GeoAIqC2kGV@5R^yHE4irC@xF4N=htF z)h#W`WJt@*Nww0~*DuK}(9caw&rHtN%?b9(aWc+umuckr0@TCc>FVdQ&MBb@068d< APXGV_ literal 0 HcmV?d00001 diff --git a/omniNotes/src/main/res/drawable-xhdpi/ic_format_list_checks_white_24dp.png b/omniNotes/src/main/res/drawable-xhdpi/ic_format_list_checks_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..c4a2005875ac97487b703091699e130f7b4530cf GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f-TA0 z-33Sk!B6Mi^+1ZVz$3C4NPB>>+sSM@Amf#%i(^Q}y|+_6g_;ZmT%}J7SBN~Hy>ZIY z@=rcm*3-|oMzw}aaM6(ZvOm@8aJ}RK9}dM9fw~l5)`lgWn{>Qi-WNCScUAr1&Gh+3 z-&gB<-`s-k2fX^FuU5|_^ug^vW4?+)O9jK4#yi%>w?CYIU?#i!dz;up##>yLpV!!6 zvU&1M-K?dz1DNI>VlR_>@L=xQ2ALZ*EAkt&6>0)sUe?xp*!_Hl&<)mCt7ptD7hKU& z|55EDPkrZ3vpA;8gdEN{!H4>va$QwDgTe~DWM4fGZn#h literal 0 HcmV?d00001 diff --git a/omniNotes/src/main/res/drawable-xxhdpi/ic_format_list_checks_white_24dp.png b/omniNotes/src/main/res/drawable-xxhdpi/ic_format_list_checks_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..e44522c3d479d7a22d373d61dadd85d6d354489a GIT binary patch literal 662 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Ea{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3xO=Z9Yh!|@-ABHuH>jt zD4^#u*GO-t==KGQ4tb82A~z0k_3amyUMqWk@}mPlw z4+yU3q&mj%o#_&~52Pws=M|qfvf64PsvO#&`r%l-TUMuWr^o+as=PYEUiz9#+ov7h zSLA+T(czPfH=fKh4xe*1=MjVdfwL0}w>i#9%J&s>KB9SQuU+Hr#z#3)*L?K@bp4i^ zURqhGCb>e}`|S&8NQd`bkS}b+=jWbA*-8YM+}p@tNfEitjo*8sy?wZt`|BqgyV)hf9t6-Y4{85mmV8kp!Bn1&b` zSs9vI8JTJu7+4t?JZpZ^jG`eoKP5A*61Rrw_hRgU8ZXsH|GNfhZ sq+03g>zCvf=;tP;XC`OshPs9YIu=)i&-zq63#f;|)78&qol`;+03j>v3IG5A literal 0 HcmV?d00001 diff --git a/omniNotes/src/main/res/drawable-xxxhdpi/ic_format_list_checks_white_24dp.png b/omniNotes/src/main/res/drawable-xxxhdpi/ic_format_list_checks_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..d4204af5754450c4326e50c19d781d155cdce1da GIT binary patch literal 770 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3OVK0cicL!xV8S@{t9-4tR&+Zj)Y_X zna`jLf{b6|5#%5`&-5>o?J4@%Mhwb_}|BJL>*~9rCJ2!AgA5(Yo?R@NS*7UW% zaFUo{p}64m&gnIl=dCsG&iy~9;<@*wt-sGqKKR3}$G&Mv>i3omw5!XlATYN9y;n@?u%==QP z+aG_=^sVpy+?)9=s+VJ>yz8Y`k6$Q1ejWYYw@hHlcR!D#!g+m%1SRS_oPb2nL_vxD zEsa28$r+BGc;_URW9u`$S&rRrtyePmr}ww>zz@Etzc&|^&S!>&eZu@2=2HQ-ccw0T zbss3ETH+c}l9E`GYL#4+3Zxi}3=A!F4NPre9?2f5VK)z4*}Q$iB}c-klT literal 0 HcmV?d00001 diff --git a/omniNotes/src/main/res/menu/menu_list.xml b/omniNotes/src/main/res/menu/menu_list.xml index 2526ccc4b6..c2dccd854c 100644 --- a/omniNotes/src/main/res/menu/menu_list.xml +++ b/omniNotes/src/main/res/menu/menu_list.xml @@ -68,6 +68,13 @@ android:title="@string/category" android:visible="false" app:showAsAction="always"/> + + [b]New![/b] Rapidly search your unfinished to-do lists [b]New![/b] New "attachment" available to easily add the current timestamp [i]Improved![/i] Removed outdated transparent navigation bar: this will save a lot of CPU avoiding calculating dynamic layout, after all today all devides are very much bigger than when this optimization has been introduced [i]Improved![/i] Removed semi-transparent overlay when using floating action button to speed-up the flow diff --git a/omniNotes/src/main/res/values-en-rUS/strings.xml b/omniNotes/src/main/res/values-en-rUS/strings.xml index 5b264b8ac3..5e7a803e97 100644 --- a/omniNotes/src/main/res/values-en-rUS/strings.xml +++ b/omniNotes/src/main/res/values-en-rUS/strings.xml @@ -200,6 +200,7 @@ Checklist Text note Photo + Incompleted checklists Displays some statistics and expiring reminders from Omni Notes Settings diff --git a/omniNotes/src/main/res/values-it-rIT/strings.xml b/omniNotes/src/main/res/values-it-rIT/strings.xml index a2aec356e1..fdb7f0f1ce 100644 --- a/omniNotes/src/main/res/values-it-rIT/strings.xml +++ b/omniNotes/src/main/res/values-it-rIT/strings.xml @@ -201,6 +201,7 @@ Vuoi inviare una segnalazione allo sviluppatore? Lista di controllo Nota testuale Foto + Liste di controllo incomplete Mostra alcune statistiche e i promemoria di Omni Notes Impostazioni diff --git a/omniNotes/src/main/res/values/strings.xml b/omniNotes/src/main/res/values/strings.xml index f25cde1bfd..c063a183ff 100644 --- a/omniNotes/src/main/res/values/strings.xml +++ b/omniNotes/src/main/res/values/strings.xml @@ -217,6 +217,7 @@ Checklist Text note Photo + Incompleted checklists Displays some statistics and expiring reminders from Omni Notes From 80f15c562b260a6ac3240368245850da535d4edc Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Fri, 6 Apr 2018 02:35:09 +0200 Subject: [PATCH 13/37] Fixed some app's tour labels --- etc/translations/strings.xml | 4 ++-- omniNotes/src/main/res/values-en-rUS/strings.xml | 2 +- omniNotes/src/main/res/values/strings.xml | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/etc/translations/strings.xml b/etc/translations/strings.xml index 16180fab36..91db810e37 100644 --- a/etc/translations/strings.xml +++ b/etc/translations/strings.xml @@ -365,7 +365,7 @@ Actions Create new notes, sort them, access to preferences Navigate - Navigation menu allows you to move through notes with filters and tags + Navigation menu allows you to move through notes with filters and categories Tags Add colored categories to organize notes at-a-glance Improve @@ -375,7 +375,7 @@ Just press Long pression have different effects on an object (attachment, location, reminder) than short pression! Links - Click on an URL or e-mail address to copy or open it + URL, e-mail addresses and telephone numbers recognition Swipe Create new notes without \n leaving the one you\'re editing Save diff --git a/omniNotes/src/main/res/values-en-rUS/strings.xml b/omniNotes/src/main/res/values-en-rUS/strings.xml index 5e7a803e97..74f6266d4c 100644 --- a/omniNotes/src/main/res/values-en-rUS/strings.xml +++ b/omniNotes/src/main/res/values-en-rUS/strings.xml @@ -377,7 +377,7 @@ To go back, press the \"up\" navigation icon, or your device button Enjoy Thanks for using Omni Notes \nThe opensource alternative for productivity and leisure note-taking! - Don\'t forget to subscribe our community! + Subscribe to the communities to participate! drawer open drawer closed diff --git a/omniNotes/src/main/res/values/strings.xml b/omniNotes/src/main/res/values/strings.xml index c063a183ff..8ba1bc0221 100644 --- a/omniNotes/src/main/res/values/strings.xml +++ b/omniNotes/src/main/res/values/strings.xml @@ -380,7 +380,7 @@ Actions Create new notes, sort them, access to preferences Navigate - Navigation menu allows you to move through notes with filters and tags + Navigation menu allows you to move through notes with filters and categories Tags Add colored categories to organize notes at-a-glance Improve @@ -390,14 +390,14 @@ Just press Long pression have different effects on an object (attachment, location, reminder) than short pression! Links - Click on an URL or e-mail address to copy or open it + URL, e-mail addresses and telephone numbers recognition Swipe Create new notes without \n leaving the one you\'re editing Save To go back, press the \"up\" navigation icon, or your device button Enjoy Thanks for using Omni Notes \nThe opensource alternative for productivity and leisure note-taking! - Subscribe to the community to participate! + Subscribe to the communities to participate! drawer open From c16ff42de1def192abbe513039f12b655de78bb7 Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Fri, 6 Apr 2018 03:45:33 +0200 Subject: [PATCH 14/37] Added Facebook community link into tour --- .../android/omninotes/intro/IntroSlide6.java | 46 ++++++++++-- .../omninotes/utils/ConstantsBase.java | 2 + .../src/main/res/drawable-nodpi/facebook.png | Bin 0 -> 16587 bytes .../src/main/res/drawable-nodpi/gplus.png | Bin 13075 -> 30109 bytes .../res/layout/intro_slide_communities.xml | 69 ++++++++++++++++++ omniNotes/src/main/res/values/strings.xml | 1 - 6 files changed, 110 insertions(+), 8 deletions(-) create mode 100644 omniNotes/src/main/res/drawable-nodpi/facebook.png create mode 100644 omniNotes/src/main/res/layout/intro_slide_communities.xml 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 6f336b9219..d116416efa 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 @@ -4,25 +4,57 @@ import android.graphics.Color; import android.net.Uri; import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; +import butterknife.BindView; +import butterknife.ButterKnife; import it.feio.android.omninotes.R; +import it.feio.android.omninotes.utils.Constants; -public class IntroSlide6 extends IntroFragment { +public class IntroSlide6 extends Fragment { + + @BindView(R.id.intro_background) + View background; + + @BindView(R.id.intro_title) + TextView title; + + @BindView(R.id.intro_image_community_googleplus) + ImageView image_gplus; + + @BindView(R.id.intro_image_community_facebook) + ImageView image_facebook; + + @BindView(R.id.intro_description) + TextView description; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View v = inflater.inflate(R.layout.intro_slide_communities, container, false); + ButterKnife.bind(this, v); + return v; + } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); background.setBackgroundColor(Color.parseColor("#222222")); title.setText(R.string.tour_listactivity_final_title); - image.setVisibility(View.GONE); - image_small.setImageResource(R.drawable.gplus); - image_small.setVisibility(View.VISIBLE); - image_small.setOnClickListener(v -> { + image_gplus.setOnClickListener(v -> { + Intent intent = new Intent(Intent.ACTION_VIEW); + intent.setData(Uri.parse(Constants.GOOGLE_PLUS_COMMUNITY)); + startActivity(intent); + }); + image_facebook.setOnClickListener(v -> { Intent intent = new Intent(Intent.ACTION_VIEW); - intent.setData(Uri.parse(getString(R.string.gplus_community))); + intent.setData(Uri.parse(Constants.FACEBOOK_COMMUNITY)); startActivity(intent); }); description.setText(R.string.tour_community); } -} \ No newline at end of file +} 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 b8857d19d9..fa64a317d0 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 @@ -22,6 +22,8 @@ public interface ConstantsBase { 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 diff --git a/omniNotes/src/main/res/drawable-nodpi/facebook.png b/omniNotes/src/main/res/drawable-nodpi/facebook.png new file mode 100644 index 0000000000000000000000000000000000000000..3cd652096f709eed3864010fd4ace49e31b349d4 GIT binary patch literal 16587 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 literal 0 HcmV?d00001 diff --git a/omniNotes/src/main/res/drawable-nodpi/gplus.png b/omniNotes/src/main/res/drawable-nodpi/gplus.png index 6aec00088cd4d52f9f1845b746f32fa1a7ec3be4..6c9239d5b1ebcf1a160be18d2570b7b910e0064f 100644 GIT binary patch literal 30109 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 H+BD=pW6beW literal 13075 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 SxckK)(0HJ$@=eJ)^#1`l$U=w! diff --git a/omniNotes/src/main/res/layout/intro_slide_communities.xml b/omniNotes/src/main/res/layout/intro_slide_communities.xml new file mode 100644 index 0000000000..9d84efc29b --- /dev/null +++ b/omniNotes/src/main/res/layout/intro_slide_communities.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + diff --git a/omniNotes/src/main/res/values/strings.xml b/omniNotes/src/main/res/values/strings.xml index 8ba1bc0221..b7dcf0d64b 100644 --- a/omniNotes/src/main/res/values/strings.xml +++ b/omniNotes/src/main/res/values/strings.xml @@ -24,7 +24,6 @@ https://plus.google.com/102629628248642947234/posts https://github.com/federicoiosue http://goo.gl/zBZQLr - https://plus.google.com/communities/112276053772152071903 Paypal http://goo.gl/ZXgBhz Bitcoin From 810cfdefecd840840b90ae2570040f62042206c5 Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Mon, 9 Apr 2018 23:59:40 +0200 Subject: [PATCH 15/37] First note title is not duplicated during merging (fix #468) --- .../it/feio/android/omninotes/OmniNotes.java | 3 ++- .../omninotes/helpers/NotesHelper.java | 18 ++++++++------ omniNotes/src/main/res/raw/changelog.xml | 1 + .../omninotes/helpers/NotesHelperTest.java | 24 ++++++++++++++----- 4 files changed, 32 insertions(+), 14 deletions(-) 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 1ad6605e90..d475bc022a 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/OmniNotes.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/OmniNotes.java @@ -85,7 +85,8 @@ protected Void doInBackground(Void... params) { @NonNull public static boolean isDebugBuild() { - return BuildConfig.BUILD_TYPE.equals("debug"); +// return BuildConfig.BUILD_TYPE.equals("debug"); + return false; } @Override diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NotesHelper.java b/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NotesHelper.java index 416b5b5683..bc82adf94b 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NotesHelper.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NotesHelper.java @@ -8,6 +8,7 @@ import it.feio.android.omninotes.utils.Constants; import it.feio.android.omninotes.utils.StorageHelper; import org.apache.commons.lang.ObjectUtils; +import org.apache.commons.lang.StringUtils; import java.util.ArrayList; import java.util.List; @@ -22,20 +23,20 @@ public static boolean haveSameId(Note note, Note currentNote) { } - public static StringBuilder appendContent(Note note, StringBuilder content) { + public static StringBuilder appendContent(Note note, StringBuilder content, boolean includeTitle) { if (content.length() > 0 - && (!TextUtils.isEmpty(note.getTitle()) || !TextUtils.isEmpty(note.getContent()))) { + && (!StringUtils.isEmpty(note.getTitle()) || !StringUtils.isEmpty(note.getContent()))) { content.append(System.getProperty("line.separator")).append(System.getProperty("line.separator")) .append(Constants.MERGED_NOTES_SEPARATOR).append(System.getProperty("line.separator")) .append(System.getProperty("line.separator")); } - if (!TextUtils.isEmpty(note.getTitle())) { + if (includeTitle && !StringUtils.isEmpty(note.getTitle())) { content.append(note.getTitle()); } - if (!TextUtils.isEmpty(note.getTitle()) && !TextUtils.isEmpty(note.getContent())) { + if (!StringUtils.isEmpty(note.getTitle()) && !StringUtils.isEmpty(note.getContent())) { content.append(System.getProperty("line.separator")).append(System.getProperty("line.separator")); } - if (!TextUtils.isEmpty(note.getContent())) { + if (!StringUtils.isEmpty(note.getContent())) { content.append(note.getContent()); } return content; @@ -63,19 +64,22 @@ public static Note mergeNotes(List notes, boolean keepMergedNotes) { Note mergedNote = new Note(); mergedNote.setTitle(notes.get(0).getTitle()); StringBuilder content = new StringBuilder(); + // Just first note title must not be included into the content + boolean includeTitle = false; for (Note note : notes) { - appendContent(note, content); + appendContent(note, content, includeTitle); locked = locked || note.isLocked(); category = (Category) ObjectUtils.defaultIfNull(category, note.getCategory()); String currentReminder = note.getAlarm(); - if (!TextUtils.isEmpty(currentReminder) && reminder == null) { + if (!StringUtils.isEmpty(currentReminder) && reminder == null) { reminder = currentReminder; reminderRecurrenceRule = note.getRecurrenceRule(); } latitude = (Double) ObjectUtils.defaultIfNull(latitude, note.getLatitude()); longitude = (Double) ObjectUtils.defaultIfNull(longitude, note.getLongitude()); addAttachments(keepMergedNotes, note, attachments); + includeTitle = true; } mergedNote.setContent(content.toString()); diff --git a/omniNotes/src/main/res/raw/changelog.xml b/omniNotes/src/main/res/raw/changelog.xml index af52ab7586..1eb8eb4d2f 100644 --- a/omniNotes/src/main/res/raw/changelog.xml +++ b/omniNotes/src/main/res/raw/changelog.xml @@ -24,6 +24,7 @@ [i]Improved![/i] Removed semi-transparent overlay when using floating action button to speed-up the flow [u]Fix[/u] Notes list update after password reset and password request bypass using swipe actions [u]Fix[/u] Language switching on Android Oreo and later versions + [u]Fix[/u] First title duplication during notes' merging diff --git a/omniNotes/src/test/java/it/feio/android/omninotes/helpers/NotesHelperTest.java b/omniNotes/src/test/java/it/feio/android/omninotes/helpers/NotesHelperTest.java index 4711a8a2f5..55a1d2e61d 100644 --- a/omniNotes/src/test/java/it/feio/android/omninotes/helpers/NotesHelperTest.java +++ b/omniNotes/src/test/java/it/feio/android/omninotes/helpers/NotesHelperTest.java @@ -21,6 +21,9 @@ import it.feio.android.omninotes.models.Note; +import java.util.Arrays; +import java.util.List; + import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @@ -34,12 +37,21 @@ public void haveSameIdShouldFail() { assertFalse(NotesHelper.haveSameId(note1, note2)); } - @Test - public void haveSameIdShouldSucceed() { - Note note1 = getNote(3L, "test title", "test content"); - Note note2 = getNote(3L, "different test title", "different test content"); - assertTrue(NotesHelper.haveSameId(note1, note2)); - } + @Test + public void haveSameIdShouldSucceed() { + Note note1 = getNote(3L, "test title", "test content"); + Note note2 = getNote(4L, "different test title", "different test content"); + assertTrue(NotesHelper.haveSameId(note1, note2)); + } + + @Test + public void mergingNotesDoesntDuplicateFirstTitle() { + final String FIRST_NOTE_TITLE = "test title 1"; + Note note1 = getNote(5L, FIRST_NOTE_TITLE, ""); + Note note2 = getNote(6L, "test title 2", ""); + Note mergedNote = NotesHelper.mergeNotes(Arrays.asList(note1, note2), false); + assertFalse(mergedNote.getContent().contains(FIRST_NOTE_TITLE)); + } private Note getNote(Long id, String title, String content) { Note note = new Note(); From 397e7517cf0ad6e1e8b69445e1cbc58fc8ef33a7 Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Tue, 10 Apr 2018 00:52:45 +0200 Subject: [PATCH 16/37] Workaround for broken TravisCI build with SDK 27 (fix #469) The issue is still not completelly fixed anyway: https://github.com/travis-ci/travis-ci/issues/8874 --- .travis.yml | 4 +++- gradle.properties | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 99219237c2..0bbf572f33 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,7 +20,7 @@ android: - tools - tools - platform-tools - - build-tools-26.0.2 + - build-tools-27.0.3 - android-27 - extra-google-m2repository - extra-android-m2repository @@ -28,6 +28,8 @@ android: - android-sdk-preview-license-.+ - android-sdk-license-.+ - google-gdk-license-.+ +before_install: + - yes | sdkmanager "platforms;android-27" script: - ./gradlew clean build jacocoTestReport sonarqube after_success: diff --git a/gradle.properties b/gradle.properties index 9cfe614423..90bc3436bd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -21,7 +21,7 @@ PACKAGE=it.feio.android.omninotes MIN_SDK=16 TARGET_SDK=27 -BUILD_TOOLS=26.0.2 +BUILD_TOOLS=27.0.3 # The following properties are empty defaults to allow build and can EVENTUALLY be overridden to allow: From d622082f0bb88381724e6266c0da3836e8e7688b Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Tue, 10 Apr 2018 00:55:55 +0200 Subject: [PATCH 17/37] Refactored NotesHelper class tests I moved everything under UnitTests thanks to android SDK related classes removal --- .../omninotes/helpers/NotesHelperTest.java | 56 ------------------- .../omninotes/helpers/NotesHelperTest.java | 32 ++++++++++- 2 files changed, 29 insertions(+), 59 deletions(-) delete mode 100644 omniNotes/src/androidTest/java/it/feio/android/omninotes/helpers/NotesHelperTest.java diff --git a/omniNotes/src/androidTest/java/it/feio/android/omninotes/helpers/NotesHelperTest.java b/omniNotes/src/androidTest/java/it/feio/android/omninotes/helpers/NotesHelperTest.java deleted file mode 100644 index 6de49a987f..0000000000 --- a/omniNotes/src/androidTest/java/it/feio/android/omninotes/helpers/NotesHelperTest.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (C) 2016 Federico Iosue (federico.iosue@gmail.com) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundatibehaon, 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, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package it.feio.android.omninotes.helpers; - -import android.support.test.runner.AndroidJUnit4; -import it.feio.android.omninotes.models.Note; -import it.feio.android.omninotes.utils.Constants; -import org.apache.commons.lang.StringUtils; -import org.junit.Test; -import org.junit.runner.RunWith; - -import java.util.ArrayList; -import java.util.List; - -import static junit.framework.Assert.*; - - -@RunWith(AndroidJUnit4.class) -public class NotesHelperTest { - - @Test - public void mergeNotes() { - - int notesNumber = 3; - List notes = new ArrayList<>(); - for (int i = 0; i < notesNumber; i++) { - Note note = new Note(); - note.setTitle("Merged note " + i + " title"); - note.setContent("Merged note " + i + " content"); - notes.add(note); - } - Note mergeNote = NotesHelper.mergeNotes(notes, false); - - assertNotNull(mergeNote); - assertTrue(mergeNote.getTitle().equals("Merged note 0 title")); - assertTrue(mergeNote.getContent().contains("Merged note 0 content")); - assertTrue(mergeNote.getContent().contains("Merged note 1 content")); - assertTrue(mergeNote.getContent().contains("Merged note 2 content")); - assertEquals(StringUtils.countMatches(mergeNote.getContent(), Constants.MERGED_NOTES_SEPARATOR), 2); - } -} diff --git a/omniNotes/src/test/java/it/feio/android/omninotes/helpers/NotesHelperTest.java b/omniNotes/src/test/java/it/feio/android/omninotes/helpers/NotesHelperTest.java index 55a1d2e61d..4c1ade8a66 100644 --- a/omniNotes/src/test/java/it/feio/android/omninotes/helpers/NotesHelperTest.java +++ b/omniNotes/src/test/java/it/feio/android/omninotes/helpers/NotesHelperTest.java @@ -17,13 +17,19 @@ package it.feio.android.omninotes.helpers; +import it.feio.android.omninotes.utils.Constants; +import junit.framework.Assert; +import org.apache.commons.lang.StringUtils; import org.junit.Test; import it.feio.android.omninotes.models.Note; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertNotNull; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @@ -40,19 +46,39 @@ public void haveSameIdShouldFail() { @Test public void haveSameIdShouldSucceed() { Note note1 = getNote(3L, "test title", "test content"); - Note note2 = getNote(4L, "different test title", "different test content"); + Note note2 = getNote(3L, "different test title", "different test content"); assertTrue(NotesHelper.haveSameId(note1, note2)); } @Test public void mergingNotesDoesntDuplicateFirstTitle() { final String FIRST_NOTE_TITLE = "test title 1"; - Note note1 = getNote(5L, FIRST_NOTE_TITLE, ""); - Note note2 = getNote(6L, "test title 2", ""); + Note note1 = getNote(4L, FIRST_NOTE_TITLE, ""); + Note note2 = getNote(5L, "test title 2", ""); Note mergedNote = NotesHelper.mergeNotes(Arrays.asList(note1, note2), false); assertFalse(mergedNote.getContent().contains(FIRST_NOTE_TITLE)); } + @Test + public void mergeNotes() { + int notesNumber = 3; + List notes = new ArrayList<>(); + for (int i = 0; i < notesNumber; i++) { + Note note = new Note(); + note.setTitle("Merged note " + i + " title"); + note.setContent("Merged note " + i + " content"); + notes.add(note); + } + Note mergeNote = NotesHelper.mergeNotes(notes, false); + + assertNotNull(mergeNote); + Assert.assertTrue(mergeNote.getTitle().equals("Merged note 0 title")); + Assert.assertTrue(mergeNote.getContent().contains("Merged note 0 content")); + Assert.assertTrue(mergeNote.getContent().contains("Merged note 1 content")); + Assert.assertTrue(mergeNote.getContent().contains("Merged note 2 content")); + assertEquals(StringUtils.countMatches(mergeNote.getContent(), Constants.MERGED_NOTES_SEPARATOR), 2); + } + private Note getNote(Long id, String title, String content) { Note note = new Note(); note.set_id(id); From 39b8c34a087d70a5240ce970c1d3b87908c83a5f Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Sat, 14 Apr 2018 22:53:14 +0200 Subject: [PATCH 18/37] Implemented currently edited note's informations action (closes #471) --- etc/translations/strings.xml | 2 + omniNotes/src/main/AndroidManifest.xml | 3 + .../android/omninotes/DetailFragment.java | 11 + .../android/omninotes/NoteInfosActivity.java | 85 ++++++ .../feio/android/omninotes/db/DbHelper.java | 45 +-- .../omninotes/helpers/NotesHelper.java | 84 +++++- .../feio/android/omninotes/models/Stats.java | 113 ++------ .../omninotes/models/StatsSingleNote.java | 124 ++++++++ .../ic_information_outline_grey600_24dp.png | Bin 0 -> 1428 bytes .../ic_information_outline_grey600_24dp.png | Bin 0 -> 972 bytes .../ic_information_outline_grey600_24dp.png | Bin 0 -> 1692 bytes .../ic_information_outline_grey600_24dp.png | Bin 0 -> 2387 bytes .../ic_information_outline_grey600_24dp.png | Bin 0 -> 3203 bytes .../main/res/layout/activity_note_infos.xml | 268 ++++++++++++++++++ .../main/res/layout/activity_stats_note.xml | 80 ++++++ omniNotes/src/main/res/menu/menu_detail.xml | 7 +- omniNotes/src/main/res/raw/changelog.xml | 1 + omniNotes/src/main/res/values/strings.xml | 2 + 18 files changed, 690 insertions(+), 135 deletions(-) create mode 100644 omniNotes/src/main/java/it/feio/android/omninotes/NoteInfosActivity.java create mode 100644 omniNotes/src/main/java/it/feio/android/omninotes/models/StatsSingleNote.java create mode 100644 omniNotes/src/main/res/drawable-hdpi/ic_information_outline_grey600_24dp.png create mode 100644 omniNotes/src/main/res/drawable-mdpi/ic_information_outline_grey600_24dp.png create mode 100644 omniNotes/src/main/res/drawable-xhdpi/ic_information_outline_grey600_24dp.png create mode 100644 omniNotes/src/main/res/drawable-xxhdpi/ic_information_outline_grey600_24dp.png create mode 100644 omniNotes/src/main/res/drawable-xxxhdpi/ic_information_outline_grey600_24dp.png create mode 100644 omniNotes/src/main/res/layout/activity_note_infos.xml create mode 100644 omniNotes/src/main/res/layout/activity_stats_note.xml diff --git a/etc/translations/strings.xml b/etc/translations/strings.xml index 91db810e37..c795b98d5b 100644 --- a/etc/translations/strings.xml +++ b/etc/translations/strings.xml @@ -203,6 +203,8 @@ Text note Photo Incompleted checklists + Info + Completed Displays some statistics and expiring reminders from Omni Notes diff --git a/omniNotes/src/main/AndroidManifest.xml b/omniNotes/src/main/AndroidManifest.xml index f2899b87ae..0256ba63f0 100644 --- a/omniNotes/src/main/AndroidManifest.xml +++ b/omniNotes/src/main/AndroidManifest.xml @@ -180,6 +180,9 @@ + . + */ + +package it.feio.android.omninotes; + +import android.app.Activity; +import android.os.Bundle; +import android.view.View; +import android.widget.TextView; +import butterknife.BindView; +import butterknife.ButterKnife; +import it.feio.android.omninotes.helpers.NotesHelper; +import it.feio.android.omninotes.models.Note; +import it.feio.android.omninotes.models.StatsSingleNote; +import it.feio.android.omninotes.utils.Constants; + +import java.util.Objects; + + +public class NoteInfosActivity extends Activity { + + @BindView(R.id.note_infos_chars) + TextView chars; + @BindView(R.id.note_infos_words) + TextView words; + @BindView(R.id.note_infos_checklist_items) + TextView checklistItems; + @BindView(R.id.note_infos_completed_checklist_items) + TextView checklistCompletedItems; + @BindView(R.id.note_infos_images) + TextView images; + @BindView(R.id.note_infos_videos) + TextView videos; + @BindView(R.id.note_infos_audiorecordings) + TextView audioRecordings; + @BindView(R.id.note_infos_sketches) + TextView sketches; + @BindView(R.id.note_infos_files) + TextView files; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_note_infos); + ButterKnife.bind(this); + Note note = Objects.requireNonNull(getIntent().getExtras()).getParcelable(Constants.INTENT_NOTE); + populateViews(note); + } + + private void populateViews(Note note) { + StatsSingleNote infos = NotesHelper.getNoteInfos(note); + populateView(chars, infos.getChars()); + populateView(words, infos.getWords()); + populateView(checklistItems, infos.getChecklistItemsNumber()); + populateView(checklistCompletedItems, infos.getChecklistCompletedItemsNumber()); + populateView(images, infos.getImages()); + populateView(videos, infos.getVideos()); + populateView(audioRecordings, infos.getAudioRecordings()); + populateView(sketches, infos.getSketches()); + populateView(files, infos.getFiles()); + } + + private void populateView(TextView textView, int numberValue) { + if (numberValue > 0) { + textView.setText(String.valueOf(numberValue)); + } else { + ((View) textView.getParent()).setVisibility(View.GONE); + } + } + +} diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/db/DbHelper.java b/omniNotes/src/main/java/it/feio/android/omninotes/db/DbHelper.java index efe95fd405..2617710686 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/db/DbHelper.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/db/DbHelper.java @@ -27,6 +27,7 @@ import android.util.Log; import it.feio.android.omninotes.OmniNotes; import it.feio.android.omninotes.async.upgrade.UpgradeProcessor; +import it.feio.android.omninotes.helpers.NotesHelper; import it.feio.android.omninotes.models.*; import it.feio.android.omninotes.utils.*; @@ -362,46 +363,6 @@ public List getNotesWithLocation() { } - /** - * Counts words in a note - */ - public int getWords(Note note) { - int count = 0; - String[] fields = {note.getTitle(), note.getContent()}; - for (String field : fields) { - boolean word = false; - int endOfLine = field.length() - 1; - for (int i = 0; i < field.length(); i++) { - // if the char is a letter, word = true. - if (Character.isLetter(field.charAt(i)) && i != endOfLine) { - word = true; - // if char isn't a letter and there have been letters before, - // counter goes up. - } else if (!Character.isLetter(field.charAt(i)) && word) { - count++; - word = false; - // last word of String; if it doesn't end with a non letter, it - // wouldn't count without this. - } else if (Character.isLetter(field.charAt(i)) && i == endOfLine) { - count++; - } - } - } - return count; - } - - - /** - * Counts chars in a note - */ - public int getChars(Note note) { - int count = 0; - count += note.getTitle().length(); - count += note.getContent().length(); - return count; - } - - /** * Common method for notes retrieval. It accepts a query to perform and returns matching records. */ @@ -1012,8 +973,8 @@ public Stats getStats() { if (note.getLongitude() != null && note.getLongitude() != 0) { locations++; } - words = getWords(note); - chars = getChars(note); + words = NotesHelper.getWords(note); + chars = NotesHelper.getChars(note); if (words > maxWords) { maxWords = words; } diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NotesHelper.java b/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NotesHelper.java index bc82adf94b..220fa612a1 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NotesHelper.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NotesHelper.java @@ -1,12 +1,13 @@ package it.feio.android.omninotes.helpers; -import android.text.TextUtils; import it.feio.android.omninotes.OmniNotes; import it.feio.android.omninotes.models.Attachment; import it.feio.android.omninotes.models.Category; import it.feio.android.omninotes.models.Note; +import it.feio.android.omninotes.models.StatsSingleNote; import it.feio.android.omninotes.utils.Constants; import it.feio.android.omninotes.utils.StorageHelper; +import it.feio.android.omninotes.utils.TagsHelper; import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.StringUtils; @@ -94,4 +95,85 @@ public static Note mergeNotes(List notes, boolean keepMergedNotes) { return mergedNote; } + /** + * Retrieves statistics data for a single note + */ + public static StatsSingleNote getNoteInfos(Note note) { + StatsSingleNote infos = new StatsSingleNote(); + + int words, chars; + if (note.isChecklist()) { + infos.setChecklistCompletedItemsNumber(StringUtils.countMatches(note.getContent(), it.feio.android.checklistview + .interfaces.Constants.CHECKED_SYM)); + infos.setChecklistItemsNumber(infos.getChecklistCompletedItemsNumber() + + StringUtils.countMatches(note.getContent(), it.feio.android.checklistview.interfaces.Constants.UNCHECKED_SYM)); + } + infos.setTags(TagsHelper.retrieveTags(note).size()); + words = getWords(note); + chars = getChars(note); + infos.setWords(words); + infos.setChars(chars); + + int attachmentsAll = 0, images = 0, videos = 0, audioRecordings = 0, sketches = 0, files = 0; + for (Attachment attachment : note.getAttachmentsList()) { + if (Constants.MIME_TYPE_IMAGE.equals(attachment.getMime_type())) { + images++; + } else if (Constants.MIME_TYPE_VIDEO.equals(attachment.getMime_type())) { + videos++; + } else if (Constants.MIME_TYPE_AUDIO.equals(attachment.getMime_type())) { + audioRecordings++; + } else if (Constants.MIME_TYPE_SKETCH.equals(attachment.getMime_type())) { + sketches++; + } else if (Constants.MIME_TYPE_FILES.equals(attachment.getMime_type())) { + files++; + } + } + infos.setAttachments(attachmentsAll); + infos.setImages(images); + infos.setVideos(videos); + infos.setAudioRecordings(audioRecordings); + infos.setSketches(sketches); + infos.setFiles(files); + + return infos; + } + + /** + * Counts words in a note + */ + public static int getWords(Note note) { + int count = 0; + String[] fields = {note.getTitle(), note.getContent()}; + for (String field : fields) { + boolean word = false; + int endOfLine = field.length() - 1; + for (int i = 0; i < field.length(); i++) { + // if the char is a letter, word = true. + if (Character.isLetter(field.charAt(i)) && i != endOfLine) { + word = true; + // if char isn't a letter and there have been letters before, + // counter goes up. + } else if (!Character.isLetter(field.charAt(i)) && word) { + count++; + word = false; + // last word of String; if it doesn't end with a non letter, it + // wouldn't count without this. + } else if (Character.isLetter(field.charAt(i)) && i == endOfLine) { + count++; + } + } + } + return count; + } + + /** + * Counts chars in a note + */ + public static int getChars(Note note) { + int count = 0; + count += note.getTitle().length(); + count += note.getContent().length(); + return count; + } + } diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/models/Stats.java b/omniNotes/src/main/java/it/feio/android/omninotes/models/Stats.java index d009919043..88d660dfe8 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/models/Stats.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/models/Stats.java @@ -17,33 +17,24 @@ package it.feio.android.omninotes.models; -public class Stats { - - int notesActive; - int notesArchived; - int notesTrashed; - int reminders; - int remindersFutures; - int notesChecklist; - int notesMasked; - int categories; - int tags; - - int attachments; - int images; - int videos; - int audioRecordings; - int sketches; - int files; - int location; - - int words; - int wordsMax; - int wordsAvg; - int chars; - int charsMax; - int charsAvg; - long usageTime; +public class Stats extends StatsSingleNote { + + private int notesActive; + private int notesArchived; + private int notesTrashed; + private int reminders; + private int remindersFutures; + private int notesChecklist; + private int notesMasked; + private int categories; + + private int location; + + private int wordsMax; + private int wordsAvg; + private int charsMax; + private int charsAvg; + private long usageTime; public int getNotesTotalNumber() { @@ -201,72 +192,12 @@ public void setCharsAvg(int charsAvg) { } - public int getAttachments() { - return attachments; - } - - - public void setAttachments(int attachments) { - this.attachments = attachments; - } - - - public int getImages() { - return images; - } - - - public void setImages(int images) { - this.images = images; - } - - - public int getVideos() { - return videos; - } - - - public void setVideos(int videos) { - this.videos = videos; - } - - - public int getAudioRecordings() { - return audioRecordings; - } - - - public void setAudioRecordings(int audioRecordings) { - this.audioRecordings = audioRecordings; - } - - - public int getSketches() { - return sketches; - } - - - public void setSketches(int sketches) { - this.sketches = sketches; - } - - - public int getFiles() { - return files; - } - - - public void setFiles(int files) { - this.files = files; - } - - - public int getLocation() { - return location; - } + public int getLocation() { + return location; + } - public void setLocation(int location) { + public void setLocation(int location) { this.location = location; } diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/models/StatsSingleNote.java b/omniNotes/src/main/java/it/feio/android/omninotes/models/StatsSingleNote.java new file mode 100644 index 0000000000..4857ae3843 --- /dev/null +++ b/omniNotes/src/main/java/it/feio/android/omninotes/models/StatsSingleNote.java @@ -0,0 +1,124 @@ + +/* + * Copyright (C) 2018 Federico Iosue (federico.iosue@gmail.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundatibehaon, 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, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package it.feio.android.omninotes.models; + +public class StatsSingleNote { + + protected int tags; + protected int attachments; + protected int images; + protected int videos; + protected int audioRecordings; + protected int sketches; + protected int files; + + protected int words; + protected int chars; + + protected int checklistItemsNumber; + protected int checklistCompletedItemsNumber; + + public int getTags() { + return tags; + } + + public void setTags(int tags) { + this.tags = tags; + } + + public int getWords() { + return words; + } + + public void setWords(int words) { + this.words = words; + } + + public int getChars() { + return chars; + } + + public void setChars(int chars) { + this.chars = chars; + } + + public int getAttachments() { + return attachments; + } + + public void setAttachments(int attachments) { + this.attachments = attachments; + } + + public int getImages() { + return images; + } + + public void setImages(int images) { + this.images = images; + } + + public int getVideos() { + return videos; + } + + public void setVideos(int videos) { + this.videos = videos; + } + + public int getAudioRecordings() { + return audioRecordings; + } + + public void setAudioRecordings(int audioRecordings) { + this.audioRecordings = audioRecordings; + } + + public int getSketches() { + return sketches; + } + + public void setSketches(int sketches) { + this.sketches = sketches; + } + + public int getFiles() { + return files; + } + + public void setFiles(int files) { + this.files = files; + } + + public int getChecklistItemsNumber() { + return checklistItemsNumber; + } + + public void setChecklistItemsNumber(int checklistItemsNumber) { + this.checklistItemsNumber = checklistItemsNumber; + } + + public int getChecklistCompletedItemsNumber() { + return checklistCompletedItemsNumber; + } + + public void setChecklistCompletedItemsNumber(int checklistCompletedItemsNumber) { + this.checklistCompletedItemsNumber = checklistCompletedItemsNumber; + } +} diff --git a/omniNotes/src/main/res/drawable-hdpi/ic_information_outline_grey600_24dp.png b/omniNotes/src/main/res/drawable-hdpi/ic_information_outline_grey600_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..4f0394e96e2717f7b13af0c60e4299ad4b496f22 GIT binary patch literal 1428 zcmZ{kdo|*2wBLNV)>H@pkY{h5pr~+-2J@)NH+q2!v)|I z6yhuZkct6dDI5Si)IdGC=$@Y)l#q)glZX(Zx9QTJ31LsNdk71n`@iPaAMXH-3-lm5 z2L$)L3HDCV3RK;ty&=9kO30Ft=KTfR1JfRm3i0HI`i!X`Lr}&&x3&3PC*8`t+1_L) zv`MV)Z8BGBHjAT(I#l1ipGW33?Q4G^Z)ms=PDzfFhUL6HYV#^?2rl3FtEB!-oeQ&i z%(r>QTd%#hC07m0f;8$XV~6iIM9%7B8BvTFm*ylq(=4>781~| z&F`T()bWFWmpY86(mJ4QT-gs9J|pw739Dw2lwkB$Q?Iw@JVEwg>Z?*|u$s z*jeU(@)B#GoCtMxm!#^{y!09p78Mq@k1fT=aRX3mDmY)0t*(WSb-qXqCAX%uh5h;Y z`HqtV0>;G8BD+Bmv^aDk70o@R^EghHb6ieNZaHvm*W?NPsms7B4&8SaE3}iJDUu*H zv;72rM$+}uhto>^fR@VaaG7#zDaqKai;KHZ;_Ec-k??D@!FoYZU46af>Z|Xz>vK=vCdVcv z1#RrsYL=D6eMLLiYvwHe&30+Cj)bhr)p=q{0C4170**kZ+My~}qjH|V-YnI}i}NUD zlm}%`+0xzD{cl;cin(6m3|Qf28;WZ^otMYL>NE}sV$(A+wzG@%)h_n63qw%lH@0Rw zYqn8WJYi0w!gY2^N`_%&Lh#M76>O;Fj3`68yZ*vLx#}$AZs^n?K0q6 zKdMuv%Rx0eJ3Gc;1g}qVkRUkeRFgB{tZwDUTRzCX`VY5*$jBZpG*J z%}v?c+gC~1-9yNhOZEzS+t*%et&feyuEq~GFH1K`5XvnrE%uu59JFi2=n7WoC64tl z-Z3yR@Wp*F1{=s|2e^zh35rj3P7cOAtOa50@rKf44JB%$=pUU*6~ImU`gp6o6H(sJ zl(9ynfj+J(^LU9f%INT66{!OGhmt=g{C~J4{JuILmlzwyCL8Xp;;Fh2Eo8%6Wc6!- z5l{7Gy55`(0d?c@v9=TNiB|goQAAbA_{Tf<7b}{Hm%klWCV+9n#!aD8a;uEN2AdxjAS$;B8DCnZyIavP9pfS$)68P QYeO2~;p#(dAcSZA1Bs7YdH?_b literal 0 HcmV?d00001 diff --git a/omniNotes/src/main/res/drawable-mdpi/ic_information_outline_grey600_24dp.png b/omniNotes/src/main/res/drawable-mdpi/ic_information_outline_grey600_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..7fb1874480f4f99556996bd7a32ece6b782c9112 GIT binary patch literal 972 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3fcFroT|! zq`Jjx?Uf5LYg8n1UCydq%Q8@l63Cw(5xcIWJeS9?D=1>|vz(kiFIMn`HTAY#mdHJy zG@Yf`TFgf8_}#|xGM}&ep8c=RPrG-Z&irQf<`_MBpUYpA3K%UIduFYbKj0p^)~YXf zZHU(FTIQPj`*~Up+_2aC8S2txz!U$C<%5m>^Ih+3AM{23VzJq(^E!9&#TATCiY(1f zZ}NO#Rd8occkb?DmuPrg+?!C=X!dXdu9cRjfzt_gs-oO6s zs{zk_M%4zL(@KlC3MZ^e<@vE?-@bo4rqA9UwKlApV@=nIidoCVtr(Pyco(elpEhlp z)LoZF8k01-c7@IR7-@3Zk0H9WZ`HoH-@n~nwkrS3hY)s!)0>pBP z$oo7QOKx*B+yH{l_|L?~&fY)c;d;J?RqG^vUHQ+X zbJ{AqO@0^SDz<{VpZCPCs;(~z&LE>>J+ERb2wRm0jR%GEmiFH_9*y{s~!SM|SE z?d7~N@qz+}-pW_p+kRcB{OtTcb7@d!kV_mh^C~OZW{uVPyMN7%2OC7#SE^=o*;l8XAWf8Cw}yTA3PY8yHv_7%ZNrw-ZG}ZhlH;S|x4` zmkv(@Wi1Vm4aH^YR!ND)sk)^_nG9)}IjL6q`uZig1^T&(>6yvdx^BjWet{(+W%ilt ROMrS9JYD@<);T3K0RRXOjfMaK literal 0 HcmV?d00001 diff --git a/omniNotes/src/main/res/drawable-xhdpi/ic_information_outline_grey600_24dp.png b/omniNotes/src/main/res/drawable-xhdpi/ic_information_outline_grey600_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..53fd4a95066a6d3a4063c78a8e85d9e505e3fd79 GIT binary patch literal 1692 zcmZ{lc~sL^7RO%#$R0_f6jmN$J}%7{ha&m`QG=(z307~zTR#+ zT8Fg&06Jt6kpdC(#WnUoF%Z6a1A=Oli(05v+9=t7MioukpCkNE5D&Ue_pi7lV+JtgeNQO!_B7WazPb+V){WKRBcvs?TB zR)3*4o%XMy36~txAld9i_<&yUSNnx(LZn8VME!iGj1c?7ey!hb1PuLE--{euA2Tz0 z_50Vc0#04)c4Y@{+hMr=r51G&Ba{Sz%75$RR3a#1Ra0k-JGjW`fx#5i&N`t`;@ssu7d zk>>;#)T&g_JH0@{F-b+ivY3h8j2ck;w7Pnfna9-#ZN=WK^Q>&}Dcx!6#jB&6}zuoVX=BM@b%ZQ#szwU^2!xy@{yQ@Fk2@Erm z8kl}i1E{yc!11MxC=UY+2Gh-d!@Q=tSkb!EtULC*dww9%^X1alKz^Tc5#8|0;QMTB z(L1Z`Z3VGGVZIrSbN6=q%k2l-qv3V3j%eIxYxmeAR(ta!RcaiGR6)1r$DRTD;(Pfj4?eU9sC z4alwA{cBMSzf!~?7?$wsJ2wzPL3yXJVHP2D@ z>->*t+IBFugH$d*QR!M!Q)BtV&-1B>gf>=xfB)&aAh`YHjQsL)I8_}%XAe={3Mx&U z1;HOC%+lG{Tv= z)H&UEKN`YfzBI zxVpMp4N8-LP670}xw-JJ(lhx74<0N#GFHy|?cXBNAtFx8d4w%k-`a`y^z_u*(Hv`P zdgw0fbTPHCtx@42dT6!kX??hqtAcMctwWmBX>i{4;@zb1R}1Sc3|fFxyVm56uad4ew;Licbr?7m#J%TXr8WS=hFfw9w)Y_V|>nm_y@*rf9bGFhwVZ zBU?f@Dsh?tuQPI>7uO`&^+GZ;EI9(tNQ!^}uox?Q6b6T~vZi9K@mL4E4b~ik!DBH0 zEVXR64$%>7@qtWQ(xCC@uSQLv9 cgQ7&G_@A>S1nspBu!l5&?CMRdA%tfB2^$6W(*OVf literal 0 HcmV?d00001 diff --git a/omniNotes/src/main/res/drawable-xxhdpi/ic_information_outline_grey600_24dp.png b/omniNotes/src/main/res/drawable-xxhdpi/ic_information_outline_grey600_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..705145b8e4af905084c3c2e6e873c0ea2bebe87a GIT binary patch literal 2387 zcmZ`*c{mhWA3ihoZJ0?V%a?4)5}6@evW#nNW4SX$VT@%o*A~W3w73S>QW8^`P`M1U zj7uX-WX+QJY(=guyKWLj@lD@<-yh$3o^#&kch2*B-rqUT^Lx*m;)t~p6P6YR0Ek&* z(9T@M{G5XP+!eoGXT=3xKQntX0BSNtz7zSlF(k~{${bV;$S!jOd2fufJpeH(03_Z4 zfWzHNTmm3m8-Nv001Wd0IDS2!L;~K`r|8jy~di+fQ z5R|k=o8h7+*B`kD$X-6$b@(Z!_2nb|kZcw@T4DAJget6F6bk0d4=dd5l78J&YG@=*R0tE^^8Ry0$3a!cs9S*87E zWOB0HaCd=`Q5{`xl0Khnuv6H)v$?0g^C9deOwN$9^p;p}UU^_<>7;;0iO!^fjhcfE z-nSz1Ub=5UBmayVl7KLOX@x#6+8(7&vm+gB@=D9dyr19N`vxES7vKTkby;fXwxSgb zVKct&V~6$Se9riA0i-%;5q->fwIQYuGllB+(V@kK;f0>4_9_Ad8Z};VQ_DMpMz>eV zE|pntEP}dbzEgt7*IBk{e0oBZ8nm;w|54%ulTpbkR?UPDrGc19g?=jy=x#>UYAg9p z9g8ouYpy6j&q!?MjQG?s>XImue#G2OEypH7oELie_A5_*Ae?0W#6@Fzd1wD3S*kN0 z%@kw9KzvX_B8{#kDJ(!Dk%R+}T#Ji~Dp3*hvuS4t0HWy5yoj1T{ zEy)d|B9*gy5*q9t4-E|!I;v9mb37e>p-~G3K3mui2kDth$rQD{aKrj8o&8+DoR&`iCUPnRvU}g6j$6u&hOx+dpADr} zlh%|5QsPWn>+!R|R4wP>ar3V{QT;^|1D@LY3;%8?UAp9SKUiWY(HL?4WVf6@O`UA5`} zow<}&7l*BJS<_Aowq8qn>b%^tyu6&i3R&d9xAuSh3Y*Pu3|;7ryqu^H*neN&Jp)cF ze+$3SdU1J_#xUYOnH6=(0kO64v(`cv#bap`!i?3Jej@c~i95L7P*6aNY;>Jxv2IhB z3{uK`q&hJdW>IN9Jw28R(h$dQ`lo}TW#ud$wgqA<^Xgvxm(*wEV4l3YdC4V1OW#<0 zwOR}ZV*1P2mAxx3PTj?P zNbT^lf*3b{AT9JHD6FbC-=6(vR~m;{i-0zd^a<(mDAdX!kr$;hyV?u+dOvMhRDXxzETLVk z17$xkKGw_87h-m9csV!>Rz^55FQs-AYn=DUHkF&v$XYK5o$E~3b$QAQg-jGEOofLa zy7jt_i1JSbj8|grNHimUwTDhT6BKRVrTpZi*EDtaz5C9@$&xI`4HxP@7?_t3$9rNdN;qG3%O~N)ZL|RALcRYpq53H3Wlgo=5Zt~ zPq5V#>4U*M)kB>)Dq4X&2<5hiDDwS-GG@)K3XS(G9}d_%YXNA=rLpacW112`d#etSO%MzT;HrgtQ-{mI`1p7X z$wYYniM-73A>HXG#~=iaV@9`Z!pr2IC$;~5Aq8E$HcCKpg`p)tFBZxUvd$(fvo_Rl zAqC=Gk#fSNGS_#n=sk*ut1GrWvr`EhH_KlIiMu%4{GcxAkYdcEX3VH+Kk$ z-)o?W=iC0So*n&!&}~NI@a}K=g4--lMW4+z8mSOQ`M(IGQj4!ow{aK}UiMPauKmGJhokzFAuPhr(2E%6s~H|j1|)KT ruc4Nf7A5eyRv^)j?Cq}^hO%~X)%7R6+MMRPBLJ)|vFIvu&s+Zi^jJ-q literal 0 HcmV?d00001 diff --git a/omniNotes/src/main/res/drawable-xxxhdpi/ic_information_outline_grey600_24dp.png b/omniNotes/src/main/res/drawable-xxxhdpi/ic_information_outline_grey600_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..9bc5aeecdfeff3a1d38f73ddf6cbd33be44ffe50 GIT binary patch literal 3203 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 literal 0 HcmV?d00001 diff --git a/omniNotes/src/main/res/layout/activity_note_infos.xml b/omniNotes/src/main/res/layout/activity_note_infos.xml new file mode 100644 index 0000000000..3e48ce7f71 --- /dev/null +++ b/omniNotes/src/main/res/layout/activity_note_infos.xml @@ -0,0 +1,268 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/omniNotes/src/main/res/layout/activity_stats_note.xml b/omniNotes/src/main/res/layout/activity_stats_note.xml new file mode 100644 index 0000000000..1e1ac6b041 --- /dev/null +++ b/omniNotes/src/main/res/layout/activity_stats_note.xml @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/omniNotes/src/main/res/menu/menu_detail.xml b/omniNotes/src/main/res/menu/menu_detail.xml index 2a3a87e1bc..d007bc7163 100644 --- a/omniNotes/src/main/res/menu/menu_detail.xml +++ b/omniNotes/src/main/res/menu/menu_detail.xml @@ -108,5 +108,10 @@ android:orderInCategory="1000" android:title="@string/discard_changes" app:showAsAction="ifRoom"/> + - \ 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 1eb8eb4d2f..a849f117db 100644 --- a/omniNotes/src/main/res/raw/changelog.xml +++ b/omniNotes/src/main/res/raw/changelog.xml @@ -20,6 +20,7 @@ [b]New![/b] Rapidly search your unfinished to-do lists [b]New![/b] New "attachment" available to easily add the current timestamp + [b]New![/b] Now an option is available into the editor to check currently edited note's informations [i]Improved![/i] Removed outdated transparent navigation bar: this will save a lot of CPU avoiding calculating dynamic layout, after all today all devides are very much bigger than when this optimization has been introduced [i]Improved![/i] Removed semi-transparent overlay when using floating action button to speed-up the flow [u]Fix[/u] Notes list update after password reset and password request bypass using swipe actions diff --git a/omniNotes/src/main/res/values/strings.xml b/omniNotes/src/main/res/values/strings.xml index b7dcf0d64b..a23ec0eae1 100644 --- a/omniNotes/src/main/res/values/strings.xml +++ b/omniNotes/src/main/res/values/strings.xml @@ -217,6 +217,8 @@ Text note Photo Incompleted checklists + Info + Completed Displays some statistics and expiring reminders from Omni Notes From f0fa0d79f1ecb6115efdcfe7fdcf805183d5df6b Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Mon, 16 Apr 2018 00:05:23 +0200 Subject: [PATCH 19/37] Fixed words and chars calculus and related tests added --- .../omninotes/helpers/NotesHelper.java | 16 +++++++-- .../omninotes/helpers/NotesHelperTest.java | 33 +++++++++++++++++++ 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NotesHelper.java b/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NotesHelper.java index 220fa612a1..d832983f34 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NotesHelper.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NotesHelper.java @@ -13,6 +13,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.regex.Pattern; public class NotesHelper { @@ -145,6 +146,7 @@ public static int getWords(Note note) { int count = 0; String[] fields = {note.getTitle(), note.getContent()}; for (String field : fields) { + field = sanitizeTextForWordsAndCharsCount(note, field); boolean word = false; int endOfLine = field.length() - 1; for (int i = 0; i < field.length(); i++) { @@ -166,13 +168,21 @@ public static int getWords(Note note) { return count; } + private static String sanitizeTextForWordsAndCharsCount(Note note, String field) { + if (note.isChecklist()) { + String regex = "(" + Pattern.quote(it.feio.android.checklistview.interfaces.Constants.CHECKED_SYM) + "|" + + Pattern.quote(it.feio.android.checklistview.interfaces.Constants.UNCHECKED_SYM) + ")"; + field = field.replaceAll(regex, ""); + } + return field; + } + /** * Counts chars in a note */ public static int getChars(Note note) { - int count = 0; - count += note.getTitle().length(); - count += note.getContent().length(); + int count = sanitizeTextForWordsAndCharsCount(note, note.getTitle()).length(); + count += sanitizeTextForWordsAndCharsCount(note, note.getContent()).length(); return count; } diff --git a/omniNotes/src/test/java/it/feio/android/omninotes/helpers/NotesHelperTest.java b/omniNotes/src/test/java/it/feio/android/omninotes/helpers/NotesHelperTest.java index 4c1ade8a66..8248802d8c 100644 --- a/omniNotes/src/test/java/it/feio/android/omninotes/helpers/NotesHelperTest.java +++ b/omniNotes/src/test/java/it/feio/android/omninotes/helpers/NotesHelperTest.java @@ -17,6 +17,7 @@ package it.feio.android.omninotes.helpers; +import it.feio.android.checklistview.models.ChecklistManager; import it.feio.android.omninotes.utils.Constants; import junit.framework.Assert; import org.apache.commons.lang.StringUtils; @@ -79,6 +80,38 @@ public void mergeNotes() { assertEquals(StringUtils.countMatches(mergeNote.getContent(), Constants.MERGED_NOTES_SEPARATOR), 2); } + @Test + public void getChars() { + Note note = getNote(1L, "one two", "three four five\nAnother line"); + assertEquals(35, NotesHelper.getChars(note)); + } + + @Test + public void getChecklistChars() { + String content = it.feio.android.checklistview.interfaces.Constants.CHECKED_SYM + "done\n" + it.feio.android + .checklistview.interfaces.Constants.UNCHECKED_SYM + "undone yet"; + Note note = getNote(1L, "checklist", content); + note.setChecklist(true); + assertEquals(24, NotesHelper.getChars(note)); + } + + @Test + public void getWords() { + Note note = getNote(1L, "one two", "three four five"); + assertEquals(5, NotesHelper.getWords(note)); + note.setTitle("singleword"); + assertEquals(4, NotesHelper.getWords(note)); + } + + @Test + public void getChecklistWords() { + String content = it.feio.android.checklistview.interfaces.Constants.CHECKED_SYM + "done\n" + it.feio.android + .checklistview.interfaces.Constants.UNCHECKED_SYM + "undone yet"; + Note note = getNote(1L, "checklist", content); + note.setChecklist(true); + assertEquals(4, NotesHelper.getWords(note)); + } + private Note getNote(Long id, String title, String content) { Note note = new Note(); note.set_id(id); From 1240d4faf9ad9e3b3702ef09391d7e5a3488c010 Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Mon, 16 Apr 2018 00:20:27 +0200 Subject: [PATCH 20/37] Added Persian translation and updated other languages (closes #433) --- omniNotes/src/main/res/raw/changelog.xml | 1 + .../src/main/res/values-ar-rSA/strings.xml | 3 +- .../src/main/res/values-ca-rES/strings.xml | 3 +- .../src/main/res/values-cs-rCZ/strings.xml | 3 +- .../src/main/res/values-de-rDE/strings.xml | 7 +- .../src/main/res/values-el-rGR/strings.xml | 3 +- .../src/main/res/values-en-rUS/strings.xml | 4 +- .../src/main/res/values-es-rES/strings.xml | 3 +- .../src/main/res/values-es-rXA/strings.xml | 3 +- .../src/main/res/values-eu-rES/strings.xml | 3 +- .../src/main/res/values-fa-rIR/arrays.xml | 62 +++ .../src/main/res/values-fa-rIR/strings.xml | 390 ++++++++++++++++++ .../src/main/res/values-fr-rFR/strings.xml | 7 +- .../src/main/res/values-gl-rES/strings.xml | 7 +- .../src/main/res/values-hi-rIN/strings.xml | 3 +- .../src/main/res/values-hr-rHR/strings.xml | 3 +- .../src/main/res/values-hu-rHU/strings.xml | 7 +- .../src/main/res/values-in-rID/strings.xml | 3 +- .../src/main/res/values-it-rIT/strings.xml | 2 +- .../src/main/res/values-iw-rIL/strings.xml | 3 +- .../src/main/res/values-ja-rJP/strings.xml | 5 +- .../src/main/res/values-km-rKH/strings.xml | 3 +- .../src/main/res/values-lo-rLA/strings.xml | 3 +- .../src/main/res/values-lv-rLV/strings.xml | 3 +- .../src/main/res/values-nl-rNL/strings.xml | 3 +- .../src/main/res/values-pl-rPL/strings.xml | 3 +- .../src/main/res/values-pt-rBR/strings.xml | 3 +- .../src/main/res/values-pt-rPT/strings.xml | 3 +- .../src/main/res/values-ru-rRU/strings.xml | 5 +- .../src/main/res/values-sk-rSK/strings.xml | 3 +- .../src/main/res/values-sl-rSI/strings.xml | 3 +- .../src/main/res/values-sr-rSP/strings.xml | 3 +- .../src/main/res/values-sv-rSE/strings.xml | 3 +- .../src/main/res/values-tr-rTR/strings.xml | 3 +- .../src/main/res/values-uk-rUA/strings.xml | 3 +- .../src/main/res/values-zh-rCN/strings.xml | 3 +- .../src/main/res/values-zh-rTW/strings.xml | 3 +- 37 files changed, 530 insertions(+), 45 deletions(-) create mode 100644 omniNotes/src/main/res/values-fa-rIR/arrays.xml create mode 100644 omniNotes/src/main/res/values-fa-rIR/strings.xml diff --git a/omniNotes/src/main/res/raw/changelog.xml b/omniNotes/src/main/res/raw/changelog.xml index a849f117db..a7fdb0b64c 100644 --- a/omniNotes/src/main/res/raw/changelog.xml +++ b/omniNotes/src/main/res/raw/changelog.xml @@ -21,6 +21,7 @@ [b]New![/b] Rapidly search your unfinished to-do lists [b]New![/b] New "attachment" available to easily add the current timestamp [b]New![/b] Now an option is available into the editor to check currently edited note's informations + [b]New![/b] Persian translation [i]Improved![/i] Removed outdated transparent navigation bar: this will save a lot of CPU avoiding calculating dynamic layout, after all today all devides are very much bigger than when this optimization has been introduced [i]Improved![/i] Removed semi-transparent overlay when using floating action button to speed-up the flow [u]Fix[/u] Notes list update after password reset and password request bypass using swipe actions diff --git a/omniNotes/src/main/res/values-ar-rSA/strings.xml b/omniNotes/src/main/res/values-ar-rSA/strings.xml index 51a78febac..3ab86151c1 100644 --- a/omniNotes/src/main/res/values-ar-rSA/strings.xml +++ b/omniNotes/src/main/res/values-ar-rSA/strings.xml @@ -201,6 +201,7 @@ قائمة التدقيق ملاحظة نصية صور + Incompleted checklists عرض بعض الاحصائيات و المذكرات المنتهية من مدونات أومني إعدادات @@ -363,7 +364,7 @@ الملاحة قائمة التصفح تتيح لك التنقل بين الملاحظات واستخدام المرشحات والوسوم الوسوم - إضافة علامات ملونة للعثور على الملاحظات في لمحة + Add colored categories to organize notes at-a-glance تحسين إضافة مرفق من عدة أنواع لملاحظاتك! القيام بالمزيد diff --git a/omniNotes/src/main/res/values-ca-rES/strings.xml b/omniNotes/src/main/res/values-ca-rES/strings.xml index de2c285fe9..4a48e4a705 100644 --- a/omniNotes/src/main/res/values-ca-rES/strings.xml +++ b/omniNotes/src/main/res/values-ca-rES/strings.xml @@ -200,6 +200,7 @@ Llista de verificació Nota de text Foto + Llistes incompletes Mostra algunes estadístiques i recordatoris expirats de l\'Omni Notes Configuració @@ -361,7 +362,7 @@ Navega El menú de navegació us permet moure per les notes amb filtres i etiquetes Etiquetes - Afegiu etiquetes de colros per trobar les notes fàcilment + Afegiu categories amb colors per organitzar les notes fàcilment Millora Afegiu adjunts de diferents tipus a les notes! Feu més diff --git a/omniNotes/src/main/res/values-cs-rCZ/strings.xml b/omniNotes/src/main/res/values-cs-rCZ/strings.xml index cb5c89d8c4..2c02e54929 100644 --- a/omniNotes/src/main/res/values-cs-rCZ/strings.xml +++ b/omniNotes/src/main/res/values-cs-rCZ/strings.xml @@ -200,6 +200,7 @@ Seznam úkolů Textová poznámka Fotka + Incompleted checklists Zobrazí statistiky a připomenutí kterým brzy vyprší platnost z Omni Notes Nastavení @@ -361,7 +362,7 @@ Navigace Navigační menu umožňuje procházení poznámek pomocí filtrů a značek Značky - Přidáním barevných značek najdete poznámky na první pohled + Add colored categories to organize notes at-a-glance Vylepšení Přidejte do Vašich poznámek různé druhy příloh! Více diff --git a/omniNotes/src/main/res/values-de-rDE/strings.xml b/omniNotes/src/main/res/values-de-rDE/strings.xml index cbb0acef4a..e66329ce41 100644 --- a/omniNotes/src/main/res/values-de-rDE/strings.xml +++ b/omniNotes/src/main/res/values-de-rDE/strings.xml @@ -193,13 +193,14 @@ Archivierte Notizen ausblenden Archivierte Notizen anzeigen Das Zugriffsrecht auf den externen Speicher wird benötigt, um Backups in öffentlichen Ordnern zu erlauben - Permission to read on external storage is needed to allow attaching files from there + Um Dateianhänge verwalten zu können ist die Berechtigung für den externen Speicher notwendig Das Zugriffsrecht auf das Mikrofon wird benötigt, um Audio-Notizen aufzunehmen Der Zugriffsrecht auf den Standort wird benötigt, um Standortinformationen ihrer Notiz hinzuzufügen Zugriffsrecht nicht bewilligt Checkliste Notiz Foto + Unvollständige Checkliste Zeige Statistiken und sich nähernde Errinerungen Einstellungen @@ -245,7 +246,7 @@ Neues Passwort eingeben Passwort bestätigen Passwort erfolgreich geändert - Password removed: all notes have been unlocked + Passwort entfernt: Alle Notizen wurden entschlüsselt Passwort falsch! Passwort ist leer Passwort entfernen\nund alle gesperrten Notizen freischalten? @@ -361,7 +362,7 @@ Navigationsmenü Das Navigationsmenü erlaubt es Ihnen zwischen Stichwortlisten zu wechseln, archivierte Notizen und angelegte Erinnerungen aufzurufen Stichwort hinzufügen - Zur besseren Übersicht, fügen Sie Ihren Gedanken und Ideen Stichworte und Farben hinzu + Fügen Sie Farben zu Kategorien hinzu, um Ihre Notizen besser sortieren zu können Anhänge Fügen Sie verschiedene Anhänge Ihren Notizen hinzu! Weitere Aktionen... diff --git a/omniNotes/src/main/res/values-el-rGR/strings.xml b/omniNotes/src/main/res/values-el-rGR/strings.xml index e70caac50a..445d1a1604 100644 --- a/omniNotes/src/main/res/values-el-rGR/strings.xml +++ b/omniNotes/src/main/res/values-el-rGR/strings.xml @@ -200,6 +200,7 @@ Λίστα ελέγχου Σημείωση κειμένου Φωτογραφία + Incompleted checklists Εμφανίζει κάποια στατιστικά στοιχεία και ληγμένες υπενθυμίσεις από τις σημειώσεις Omni Ρυθμίσεις @@ -361,7 +362,7 @@ Πλοήγηση Το μενού πλοήγησης σας επιτρέπει να μετακινηθείτε μεταξύ σημειώσεων με φίλτρα και Ετικετών Ετικέτες - Προσθήκη έγχρωμων ετικετών για να βρίσκετε σημειώσεις με μια ματιά + Add colored categories to organize notes at-a-glance Βελτίωση Προσθήκη συνημμένων διαφόρων ειδών στις σημειώσεις σας! Κάντε περισσότερα diff --git a/omniNotes/src/main/res/values-en-rUS/strings.xml b/omniNotes/src/main/res/values-en-rUS/strings.xml index 74f6266d4c..91497978be 100644 --- a/omniNotes/src/main/res/values-en-rUS/strings.xml +++ b/omniNotes/src/main/res/values-en-rUS/strings.xml @@ -362,7 +362,7 @@ Navigate Navigation menu allows you to move through notes with filters and tags Tags - Add colored tags to find notes at-a-glance + Add colored categories to organize notes at-a-glance Improve Add attachment of several kinds to your notes! Do more @@ -377,7 +377,7 @@ To go back, press the \"up\" navigation icon, or your device button Enjoy Thanks for using Omni Notes \nThe opensource alternative for productivity and leisure note-taking! - Subscribe to the communities to participate! + Don\'t forget to subscribe our community! drawer open drawer closed diff --git a/omniNotes/src/main/res/values-es-rES/strings.xml b/omniNotes/src/main/res/values-es-rES/strings.xml index 2ae06d64f8..aab4b5d58f 100644 --- a/omniNotes/src/main/res/values-es-rES/strings.xml +++ b/omniNotes/src/main/res/values-es-rES/strings.xml @@ -201,6 +201,7 @@ Lista de comprobación Nota de texto Foto + Incompleted checklists Muestra algunas estadísticas y recordatorios cercanos de Omni Notes Configuración @@ -362,7 +363,7 @@ Navegar El menú de navegación le permite moverse a través de las notas con etiquetas y filtros Etiquetas - Agregar etiquetas de color para mantener sus pensamientos siempre eficientes + Add colored categories to organize notes at-a-glance Mejorar Añadir un montón de tipos diferentes de archivos adjuntos a sus notas! Hacer más diff --git a/omniNotes/src/main/res/values-es-rXA/strings.xml b/omniNotes/src/main/res/values-es-rXA/strings.xml index 1900bf6ac0..e78e32bf4f 100644 --- a/omniNotes/src/main/res/values-es-rXA/strings.xml +++ b/omniNotes/src/main/res/values-es-rXA/strings.xml @@ -200,6 +200,7 @@ Llista de comprobación Nota de testu Semeya + Incompleted checklists Amuesa dalgunes estadístiques y avisos cercanos d\'Omni Notes Axustes @@ -361,7 +362,7 @@ Navegar El menú de navegación permítete movete al traviés de les notes con etiquetes y filtros Etiquetes - Amiesta etiquetes de color pa caltener los pensamientos d\'un xeitu eficiente + Add colored categories to organize notes at-a-glance Ameyora Puedes amestar axuntos de distintos tipos a les notes! Facer más diff --git a/omniNotes/src/main/res/values-eu-rES/strings.xml b/omniNotes/src/main/res/values-eu-rES/strings.xml index a466dda7a2..4c26f04e74 100644 --- a/omniNotes/src/main/res/values-eu-rES/strings.xml +++ b/omniNotes/src/main/res/values-eu-rES/strings.xml @@ -200,6 +200,7 @@ Egiaztapen-zerrenda Testu-oharra Argazkia + Incompleted checklists Erakutsi Omni Notes aplikazioko estatistika batzuk eta iraungitze datak Ezarpenak @@ -361,7 +362,7 @@ Nabigatu Nabigazio menuak oharretatik mugitzea ahalbidetzen dizu iragazki eta etiketen bidez Etiketak - Gehitu kolorezko etiketak oharrak berehala aurkitzeko + Add colored categories to organize notes at-a-glance Hobetu Gehitu mota desberdinetako eranskinak zure oharretara! Egin gehiago diff --git a/omniNotes/src/main/res/values-fa-rIR/arrays.xml b/omniNotes/src/main/res/values-fa-rIR/arrays.xml new file mode 100644 index 0000000000..6f5f97c4bc --- /dev/null +++ b/omniNotes/src/main/res/values-fa-rIR/arrays.xml @@ -0,0 +1,62 @@ + + + + + + \"یادداشت‌ها\" + آرشیو + یادآورها + سطل زباله + دسته بندی نشده + + + عنوان + تاریخ ایجاد + آخرین تغییرات + تاریخ یادآور + + + حفظ موقعیت + انتقال به انتهای فهرست + انتقال به انتهای موارد انتخاب نشده + + + غیر فعال + فقط نوار + فقط لیست یادداشت ها + تکمیل شد + + + غیر فعال + فقط نوار + فهرست یادداشتها + + + کوچکترین + کوچک + پیش‌فرض + بزرگ + بزرگترین + + + اشتراک + زدودن + زدودن همه + ویرایش + + diff --git a/omniNotes/src/main/res/values-fa-rIR/strings.xml b/omniNotes/src/main/res/values-fa-rIR/strings.xml new file mode 100644 index 0000000000..0d38757fe5 --- /dev/null +++ b/omniNotes/src/main/res/values-fa-rIR/strings.xml @@ -0,0 +1,390 @@ + + + + + + یادداشت‌ها + اضافه کردن یادداشت + عنوان + Omni Notes + جستجو + جستجو در یادداشت ها + محتوا + ذخیره + اشتراک + برگردان + سطل زباله + به سطل زباله منتقل شد + یاداشت (های) سطل زباله + یاداشت‌(ها) از سطل زباله بازیابی شدند + بازیابی از سطل زباله + زدودن + زدودن همیشگی یاداشت(ها) + آرشیو + بازیابی از آرشیو + ایجاد شد: + بروز شد: + پاکسازی یاداشت را تایید می‌کنید؟ + تایید + باشه + نه + لغو + یادداشت بروز شد + نمی‌توان یک یادداشت خالی را ذخیره کرد + نمی‌توان یک یادداشت خالی را به اشتراک گذاشت + یادداشت آرشیو شد + یادداشت از آرشیو بازیابی شد + یادداشت + اشتراک با + \n【by Omni Notes】 + مرتب‌سازی + مرتب سازی بر اساس + برای بازگردانی لمس کنید + تنظیم یادآور برای + شروع از + در + انصراف از تغییرات + پیوست + دوربین + پیوست انتخاب شده را حذف کنید؟ + همه پیوست ها را حذف کنید؟ + گالری + مکان + Pushbullet + مکان حذف شود؟ + یادآوری حذف شود؟ + افزودن یادآور + مکان پیدا نشد + ضبط + توقف + برنامه ای برای اجرای فایل نیست + فضای ذخیره سازی کافی نیست + ویدیو + قابلیت بر روی این دستگاه موجود نیست + خطایی هنگام حذف یادداشت رخ داد + نسخه پشتیبانی موجود نیست + نام پشتیبان را وارد کنید + لمس -> بازیابی\nلمس طولانی -> حذف + هشدار: این جایگزین همه داده کنونی میشود! + پشتیبان گیری کامل شد + بازیابی داده کامل شد + برای تازه‌سازی برنامه لمس کنید + پشتیبان درحال حاضر موجود است. روی آن بازنوشت می‌شود + برچسب + برچسب‌ها + افزودن برچسب‌ها + برچسب(های) انتخاب شده + دسته بندی‌ها + ویرایش دسته‌بندی + افزودن دسته بندی + عنوان + توضیحات + رنگ + دسته بندی ذخیره شد + دسته‌بندی حذف شد + عنوان دسته بندی وارد نشده + حذف دسته بندی + دسته بندی + طبقه بندی شده بعنوان + ویرایش دسته‌بندی + پاکسازی دسته‌بندی را تایید می‌کنید؟ + این دسته‌بندی بوسیله برخی یادداشت ها استفاده شده.\n تایید میکنید درصورت حذف دسته‌بندی بدون دسته‌بندی شوند؟ + نپذیرفتن + حذف دسته‌بندی + هنوز برچسبی وجود ندارد\n با نوشتن هشتگ \"#\" در یادداشت‌ها آن را ایجاد کنید + هیچ دسته‌بندی هنوز ایجاد نشده است + دسته‌بندی از یادداشت‌ها حذف شد + یادداشت‌ها دسته بندی شدند بعنوان + گذرواژه را وارد کنید + قفل + برای قفل کردن یادداشت را ذخیره کنید + برای بازگشایی یادداشت را ذخیره کنید + بازگشایی + ویرایش گذرواژه امنیتی + اطلاعات + حذف شده + اینجا چیزی نیست! + فعال کردن فهرست + غیر فعال کردن فهرست + مورد جدید + چک لیست حذف شود؟ + موارد انتخاب شده را نگه دارید + نگه داشتن علامت + حالت طراحی + اشتباهی رخ داده در Omni Notes\n گزارش بصورت خودکار برای توسعه دهندگان ارسال شود؟ + درج نظر در اینجا (اختیاری): + اشتباهی رخ داده در Omni Notes\n گزارشی برای توسعه دهندگان ارسال شد! + نسخه جدید Omni Notes موجود است مایل به بروزرسانی هستید؟ + بروزرسانی و امتیازدهی! + الآن نه + حالت طراحی + از سر + رنگ ها + ضربه + پاک کردن طرح؟ + یادآوری تنظیم نشده + اشباع رنگ + شفافیت + نپذیرفتن + بعدا یادآوری کن + خطای وارد کردن پیوست + خطا در ذخیره پیوست ها + ادامه + نمای کوچک + نمای گسترده + نمای شبکه + افزودن میان‌بر + میانبر به صفحه اصلی اضافه شد + میانبر به یادداشت حذف شده اشاره میکند + ویدجت ساده با دکمه + پیمایش لیست با دکمه + یادداشت‌ها + تصاویر بندانگشتی پیوست‌ها را نشان بده + نمایش timestamps + انتخاب عملکرد + ویرایش + یادآورها + منقضی نشده + منقضی شده + امروز + فردا + بازکردن + رونوشت‌ + هیچ برنامه کاربردی برای این عملکرد یافت نشد + پاک کن + تصویر + خطا + آرشیو شد + فایل ها + ادغام + یادداشت های اصلی را پس از ادغام حذف میکنید؟ + تنظیم نشده + خالی کردن سطل زباله + تایید حذف تمام یادداشت های سطل آشغال؟ + کمک + کتابچه راهنمای کاربر آنلاین + برچسب ها اضافه شدند + درحال کار... + وارد شد + همگام سازی + استخراج صورت گرفت + انتخاب همه + جستجوی مکان + استفاده از مکان فعلی + فیلتر + حذف فیلتر + پنهان کردن یادآورهای قدیمی + نمایش یادآورهای قدیمی + پنهان کردن یادداشت های بایگانی شده + نشان دادن یادداشت های بایگانی شده + مجوز برای نوشتن بر روی ذخیره سازی خارجی لازم است برای پشتیبان گیری در پوشه های عمومی + مجوز برای خواندن در ذخیره سازی خارجی لازم است برای اجازه پیوست کردن فایل ها از آنجا + اجازه استفاده از میکروفون برای ضبط یادداشت های صوتی مورد نیاز است + اجازه دسترسی به مکان لازم است اطلاعات موقعیت را به یادداشت های خود را اضافه کنید + اجازه داده نشده + چک لیست + یادداشت متنی + تصویر + چک لیست‌های کامل نشده + + برخی آمارها و یادآورهای منقضی از یادداشت های Omni را نمایش می دهد + تنظیمات + اطلاعات + دیگر + پاک کردن تمام داده ها + پاک کردن تمام داده های نرم افزار? (نسخه های پشتیبان حفظ خواهد شد) + تنظیمات + همگام سازی و پشتیبان گیری + پشتیبان گیری + همگام سازی و پشتیبان گیری + بازیابی یا حذف نسخه های پشتیبان + وارد کردن یادداشت ها از Springpad + آرشیو خروجی Springpad را انتخاب کنید و مطمئن شوید به اینترنت وصل هستید + همگام با گوگل درایو + ثبت نام برنامه برای همگام سازی داده ها در سرویس ذخیره سازی گوگل درایو + پرونده صادر شد با موفقیت به پوشه + صادرات فایل ناموفق بود + پرونده با موفقیت وارد شد + واردات فایل ناموفق بود + فایلی که باید وارد شود وجود ندارد + وارد کردن داده ممکن است باعث رونوشت یادداشت کنونی شود. ادامه میدهید؟ + پرونده صادر شده موجود را رونویسی می کند. ادامه می دهید؟ + حرکات + فعال سازی swype + رابط کاربری + انیمیشن + پشتیبان گیری + اعلان‌ها + لرزش + فعال کردن تداوم اعلان ها + به برنامه اجازه دسترسی به اعلان ها را میدهد می دهد برای زنده ماندن بعد راه اندازی مجدد + پیمایش + گزارش تغییرات + شناسایی لینک + پیوست های ویدئو + داده‌ + پشتیبان گیری + گذرواژه + درخواست گذرواژه در دسترسی + گذرواژه تضمین می کند که یادداشت نمی شود یا تغییر نمی‌یابد توسط شخص دیگر.\n\nWhen زمان تنظیم گذرواژه جدید، قبلی درخواست می شود. + گذرواژه اشتباه است و یا گم شده + درج یک گذرواژه‌ی جدید + تایید گذرواژه جدید + گذرواژه با موفقیت تغییر یافت + حذف گذرواژه: همه یادداشت ها باز شده اند + گذرواژه اشتباه است + گذرواژه خالی است + گذرواژه حذف \n و یادداشت های قفل شده را باز شود؟ + نشانگر دسته‌بندی + واردات و صادرات داده ها برنامه + اندازه های مجاز در مگابایت + ویرایش گذرواژه امنیتی + فعال/غیر فعال کردن انیمیشن ها در لیست یادداشت ها + نمایش/پنهان کردن نشانگر برای دسته‌بندی‌ها + آدرس ها و ایمیل‌های تایپ شده را خودکار قابل کلیک کن + واقعا نسخه پشتیبان را حذف میکنید؟ + واقعا از نسخه پشتیبان بازیابی کنم؟ + پاک کردن اطلاعات کامل شد + چک لیست + چه باید بکنید هنگامی که یک مورد انتخاب شده است؟ + تنظیمات + آزمایشی + درباره + گوگل پلاس + مشترک شدن در برنامه بتا برای بروز بودن با آخرین امکانات + کمک مالی + حمایت از توسعه این برنامه با کمک مالی غیر انتفاعی + زبان + صدای زنگ + رنگ کامل + یادداشت های کاملا رنگی در نمای لیست و مشاهده جزئیات + فقط فهرست + فعالسازی تمام رنگ در نمای لیست. در لیست جزئیات فقط نشانگر تگ رنگی خواهد بود + تأخیر دوم یادآوری + دقیقه + تقویم و زمان ساده + استفاده از (آسانتر) رابط کاربری اندروید برای انتخاب ساعت و تاریخ،بجای رابط کاربری گوگل + اولین روز هفته + تور برنامه + تور برنامه را دوباره به من نشان بده + افزودن تنظیمات و گذرواژه + تنظیمات افزوده شد + یک سوال و پاسخ امنیتی را وارد کنید برای زمانی که گذرواژه را فراموش کردید + سوال + پاسخ + تایید پاسخ + فراموشی گذرواژه + حذف گذرواژه + پاسخ اشتباه است و یا گم شده + گذرواژه تنظیم نشده + پاسخ اشتباه + تطبیق رنگ برنامه + تطبیق رنگ ویدجت + جستجوی آنی + منو راهبری در خروج + با فشار دادن \"بازگشت\" هنگامی که در لیست یادداشت به جای خروج منوی ناوبری باز می شود + اندازه متن + رفتار + کشیدن یادداشت‌ها + کشیدن در یادداشت‌ها برای انجام یک عمل + کشیدن برای انتقال به سطل زباله + کشیدن یادداشت‌ها با انگشت انها را آرشیو میکند + کشیدن یادداشت‌ها با انگشت انها را به سطل زباله منتقل میکند + گروه دسته بندی نشده است + یک آیتم جدید در فهرست ناوبری برای یادداشت های طبقه بندی نشده اضافه می کند + شمارنده یادداشت + تعداد یادداشت های مربوط به دسته بندی را نشان می دهد + مکان خودکار + به صورت خودکار مکان را به یادداشت های جدید اضافه می کند + منو پویا + آیتم های منو استفاده نشده به صورت خودکار پنهان می شوند + دکمه عملکرد شناور + لمس کوتاه انجام عمل + گزینه های کوتاه لمس را تغییر می دهد + فایل پیوست در پایین + پیوست ها را در زیر مطالب یادداشت نشان می دهد + پیوست ها را در بالای مطالب یادداشت نشان می دهد + تاریخ های متقاعد شده + تاریخ ها در قالب ساده تری نمایش داده میشوند + تاریخ در قالب با جزئيات بیشتر نشان داده شده میشود + حریم خصوصی + گزارش خطا + وقتی برنامه متوقف شد توسعه دهنده مطلع میشود تا به شما کمک کند + هیچ گزارش خرابی ارسال نخواهد شد. اگر شک ندارید اشتباهی رخ نمیدهد! + ارسال داده ناشناس + با ارسال اطلاعات غیر حساس مانند مدل دستگاه، زبان، ویژگی های برنامه اغلب استفاده شده، به توسعه دهنده کمک کنید. این داده ها فقط برای بهبود برنامه منبع باز استفاده می شوند. + آمار + + کل یادداشت ها + یادداشت های فعال + یادداشت های بایگانی شده + یادداشت های سطل زباله + یادآورها + یادآورهای آینده + چک لیست + یادداشت های قفل شده + دسته بندی‌ها + برچسب‌ها + پیوست‌‌‌‌‌‌ها + تصاویر + ویدیوها + ضبط صدا + طرح ها + فایل ها + مکانها + کلمه ها + حداکثر کلمات + میانگین کلمات + کاراکتر ها + حداکثر کاراکترها + میانگین کاراکترها + + شما برای اولین بار Omni Note را راه اندازی کردید، آیا میخواهید تور برنامه را بگیرید؟ + خوش آمدید به Omni Omni! + برای ادامه تور روی \"ادامه\" کلیک کنید + عملیات + ایجاد یادداشت جدید، مرتب کردن آنها، دسترسی به تنظیمات + پیمایش + منوی تنظیمات اجازه می دهد تا از طریق یادداشت ها با فیلتر ها و برچسب ها حرکت کنید + برچسب‌ها + افزودن دسته های رنگی برای سازماندهی یادداشت در--نگاه + بهبود + قادر به افزودن انواع مختلفی پیوست برای یادداشت های خود هستید! + بیشتر + اشتراک، تگ آرشیو، حفاظت، و بیشتر… + فقط بفشارید + لمس طولانی تاثیر متفاوتی روی هر شی(پیوست،مکان،یادآور) در قیاس با لمس کوتاه دارد! + پیوند‌ها + روی آدرس سایت یا ایمیل آدرس کلیک کنید تا آن را باز یا کپی کنید + کشیدن + ایجاد یادداشت جدید بدون \n ترک یادداشتی که در حال ویرایش هستید + ذخیره + برای برگشت ،دکمه ناوبری \"بالا\" را از دکمه های دستگاه خود بزنید + لذت ببرید + با تشکر برای استفاده از / n Omni Notes جایگزین متن‌باز برای بهره وری از اوقات فراغت یادداشت برداری! + برای مشارکت در اجتماع عضو شوید! + + کشو باز است + کشو بسته شد + یادآور + اندازه ضخامت + یادداشت بندانگشتی + نماد یادآور یادداشت + بازکردن کشو ناوبری + بستن کشوی ناوبری + diff --git a/omniNotes/src/main/res/values-fr-rFR/strings.xml b/omniNotes/src/main/res/values-fr-rFR/strings.xml index 57c8a54835..6559eee327 100644 --- a/omniNotes/src/main/res/values-fr-rFR/strings.xml +++ b/omniNotes/src/main/res/values-fr-rFR/strings.xml @@ -193,13 +193,14 @@ Masquer les notes archivées Afficher les notes archivées L\'autorisation d\'écrire sur le stockage externe est nécessaire pour permettre des sauvegardes sur des dossiers publics - Permission to read on external storage is needed to allow attaching files from there + L\'autorisation de lire sur le stockage externe est nécessaire pour permettre des pièces jointes L\'autorisation d\'utiliser le microphone est nécessaire pour enregistrer des notes audio L\'autorisation d’accéder à la localisation est nécessaire pour ajouter des informations de position à vos notes Autorisation non accordée Liste Note Photo + Listes à cocher incomplètes Affiche des statistiques et des rappels à venir de Omni Notes. Paramètres @@ -245,7 +246,7 @@ Entrer un nouveau mot de passe Confirmer le nouveau mot de passe Mot de passe modifié avec succès - Password removed: all notes have been unlocked + Mot de passe supprimé : toutes les notes ont été déverrouillées Mot de passe incorrect Mot de passe vide Supprimer le mot de passe\net déverrouiller toutes les notes ? @@ -361,7 +362,7 @@ Naviguer Le menu de navigation vous permet de parcourir les notes grâce aux filtres et aux mots-clés Mots-clés - Ajouter des mots-clés colorés pour trouver vos notes en un clin d’œil + Ajouter des catégories colorées pour organiser vos notes en un coup d\'œil Améliorer Ajouter différents types de pièces jointes à vos notes ! Faire plus diff --git a/omniNotes/src/main/res/values-gl-rES/strings.xml b/omniNotes/src/main/res/values-gl-rES/strings.xml index 323717cba3..2df3220a55 100644 --- a/omniNotes/src/main/res/values-gl-rES/strings.xml +++ b/omniNotes/src/main/res/values-gl-rES/strings.xml @@ -193,13 +193,14 @@ Agochar notas arquivadas Mostrar notas arquivadas O permiso de escritura no almacenamento externo é necesario para poder facer copias de seguranza nos cartafoles públicos - Permission to read on external storage is needed to allow attaching files from there + O permiso de lectura no almacenamento externo é necesario para poder anexar ficheiros a partir del O permiso para usar o micrófono é necesario para poder gravar notas de audio O permiso de acceso á túa localización é necesario para engadir esa información ás túas notas Permiso non concedido Listaxe de verificación Nota de texto Foto + Listaxes de verificación incompletas Mostrar algunhas estatísticas e recordatorios próximos de Omni Notes Axustes @@ -245,7 +246,7 @@ Inserir un novo contrasinal Confirmar o novo contrasinal O contrasinal cambiouse correctamente - Password removed: all notes have been unlocked + Contrasinal eliminado: todas as notas foron desbloqueadas Contrasinal incorrecto O contrasinal está baleiro Queres eliminar o contrasinal\ne desbloquear todas as notas bloqueadas? @@ -361,7 +362,7 @@ Navegar O menú de navegación permite moverse a través das notas con etiquetas e filtros Etiquetas - Engadir cores ás notas para manter os pensamentos dun xeito eficiente + Engadir categorías de cores para organizar as notas cunha ollada Melloras Engade unha morea de anexos de diferentes tipos ás túas notas! Facer máis diff --git a/omniNotes/src/main/res/values-hi-rIN/strings.xml b/omniNotes/src/main/res/values-hi-rIN/strings.xml index c71f1bb310..347611fa35 100644 --- a/omniNotes/src/main/res/values-hi-rIN/strings.xml +++ b/omniNotes/src/main/res/values-hi-rIN/strings.xml @@ -202,6 +202,7 @@ चेकलिस्ट टेक्स्ट नोट तस्वीरें + Incompleted checklists रिमाइंडर और कुछ आंकड़े ओमनी नोटस कि और से दिखाए सेटिंग्स @@ -364,7 +365,7 @@ नेविगेट करें नेविगेशन मेनू आप नोट्स के माध्यम से फिल्टर और टैग के साथ ले जाने के लिए अनुमति देता है टैग - आपके विचार हमेशा कुशल रखने के लिए रंग का टैग जोड़ें + Add colored categories to organize notes at-a-glance सुधार अलग अलग प्रकारों कीअ टैचमेंट अपने नोट् से जोड़ें! अधिक करो diff --git a/omniNotes/src/main/res/values-hr-rHR/strings.xml b/omniNotes/src/main/res/values-hr-rHR/strings.xml index ef5d663713..ec9d73fcfa 100644 --- a/omniNotes/src/main/res/values-hr-rHR/strings.xml +++ b/omniNotes/src/main/res/values-hr-rHR/strings.xml @@ -200,6 +200,7 @@ Check lista Tekstualna bilješka Fotografija + Incompleted checklists Prikazuje neke statistike i podsjetnike koji istječu u aplikaciji Omni bilješke Postavke @@ -361,7 +362,7 @@ Navigacija Navigacijski izbornik omogućuje vam navigaciju kroz bilješke pomoću filtera i tagova Tagovi - Dodajte obojene tagove kako biste lakše pronašli bilješke + Add colored categories to organize notes at-a-glance Poboljšanja Dodajte privitke različitih vrsta svojim bilješkama! Napravite više diff --git a/omniNotes/src/main/res/values-hu-rHU/strings.xml b/omniNotes/src/main/res/values-hu-rHU/strings.xml index cf3760ad82..ed12716896 100644 --- a/omniNotes/src/main/res/values-hu-rHU/strings.xml +++ b/omniNotes/src/main/res/values-hu-rHU/strings.xml @@ -193,13 +193,14 @@ Archivált megjegyzések elrejtése Archivált megjegyzések megjelenítése Biztonsági mentéshez engedélyezni kell a külső tárolókba való írást - Permission to read on external storage is needed to allow attaching files from there + A külső tároló olvasásának engedélyezése ahhoz szükséges, hogy lehessen onnan fájlokat csatolni a jegyzetekhez Hangfelvételekhez engedélyezni kell a mikrofont A földrajzi helyzethez történő hozzáférés engedélyezése a helyszín információk hozzáadásához Hozzáférés megtagadva Ellenőrzőlista Szöveges megjegyzés Fénykép + Befejezetlen feladatlisták Statisztikák és lejáró emlékeztetők megjelenítése az Omni Notes-ból Beállítások @@ -245,7 +246,7 @@ Írjon be új jelszavat Az új jelszó megerősítése Jelszó módosítása sikerült - Password removed: all notes have been unlocked + A jelszó eltávolítva: minden jegyzet elérhető jelszó nélkül Hibás jelszó A jelszó üres Eltávolítja a jelszavat\nés feloldja az összes zárolt jegyzetet? @@ -361,7 +362,7 @@ Navigáció A navigációs menü lehetővé teszi a jegyzetek közötti mozgást kategóriák és címkék segítségével Címkék - Használjon színes címkéket a jegyzetek könnyebb megtalálásához + Használjon színekkel jelölt kategóriákat a jegyzetek villámgyors szervezéséhez Javítás Adjon különböző mellékleteket a jegyzeteihez! Többet diff --git a/omniNotes/src/main/res/values-in-rID/strings.xml b/omniNotes/src/main/res/values-in-rID/strings.xml index 57d1d099d1..26e567b670 100644 --- a/omniNotes/src/main/res/values-in-rID/strings.xml +++ b/omniNotes/src/main/res/values-in-rID/strings.xml @@ -200,6 +200,7 @@ Daftar nama Catatan teks Foto + Incompleted checklists Tampilkan beberapa statistik dan mengakhiri pengingat dari Omni Notes Setelan @@ -361,7 +362,7 @@ Navigasi Menu navigasi memungkinkan anda untuk bergerak di catatan dengan filter dan tag Tag - Tambah tag berwarna untuk mencari catatan at-a-glance + Add colored categories to organize notes at-a-glance Tingkatkan Tambahkan lampiran dari beberapa jenis untuk catatan anda! Lakukan lebih banyak diff --git a/omniNotes/src/main/res/values-it-rIT/strings.xml b/omniNotes/src/main/res/values-it-rIT/strings.xml index fdb7f0f1ce..971ac16063 100644 --- a/omniNotes/src/main/res/values-it-rIT/strings.xml +++ b/omniNotes/src/main/res/values-it-rIT/strings.xml @@ -363,7 +363,7 @@ Vuoi inviare una segnalazione allo sviluppatore? Naviga Il menu di navigazione consente di spostarsi attraverso le note con filtri e tag Tag - Aggiungi tag colorati per mantenere sempre efficienti i tuoi pensieri + Aggiungi categorie colorate per mantenere sempre organizzati i tuoi pensieri Migliora Aggiungi molti diversi tipi di allegato alle tue note! Fai di più diff --git a/omniNotes/src/main/res/values-iw-rIL/strings.xml b/omniNotes/src/main/res/values-iw-rIL/strings.xml index 13ce26e0ff..1e7d65f9e0 100644 --- a/omniNotes/src/main/res/values-iw-rIL/strings.xml +++ b/omniNotes/src/main/res/values-iw-rIL/strings.xml @@ -200,6 +200,7 @@ Checklist Text note Photo + Incompleted checklists הצגת נתונים סטטיסטיים ותזכורות שתוקפן עומד לפוג מ-Omni Notes הגדרות @@ -361,7 +362,7 @@ ניווט תפריט ניווט מאפשר לכם לנוע מבעד להערות עם מסננים ותגיות תגיות - הוספת צבע לתגיות כדי שרעיונותיכם יהיו מאורגנים + Add colored categories to organize notes at-a-glance שיפור הוספת מספר סוגים של קבצים מצורפים להערות שלכם! עשו עוד diff --git a/omniNotes/src/main/res/values-ja-rJP/strings.xml b/omniNotes/src/main/res/values-ja-rJP/strings.xml index 77d7305f8b..aece2e70fa 100644 --- a/omniNotes/src/main/res/values-ja-rJP/strings.xml +++ b/omniNotes/src/main/res/values-ja-rJP/strings.xml @@ -193,13 +193,14 @@ アーカイブしたノートを非表示 アーカイブしたノートを表示 パブリック フォルダーのバックアップを許可するために、外部ストレージに書き込みのアクセス許可が必要です - Permission to read on external storage is needed to allow attaching files from there + そこからの添付を可能にするために、外部ストレージの読み込みアクセス許可が必要です オーディオ ノートを録音するために、マイクを使用するアクセス許可が必要です ノートに位置情報を追加するために、場所にアクセスするアクセス許可が必要です アクセス許可が与えられていません チェックリスト テキスト ノート 写真 + チェックリストが未完です 統計情報と Omni Notes から期限切れのアラームを表示します 設定 @@ -361,7 +362,7 @@ ナビゲーション ナビゲーション メニューでは、フィルターとタグでノートを移動することができます タグ - ノートに一目でわかる色のタグを追加します + 色付きのカテゴリーを追加してノートを一目で整理します 改善 ノートにいくつかの種類の添付ファイルを追加します! さらに diff --git a/omniNotes/src/main/res/values-km-rKH/strings.xml b/omniNotes/src/main/res/values-km-rKH/strings.xml index b9ffe71cda..fc52326c3c 100644 --- a/omniNotes/src/main/res/values-km-rKH/strings.xml +++ b/omniNotes/src/main/res/values-km-rKH/strings.xml @@ -203,6 +203,7 @@ Send automatic report to developer?\" Checklist Text note Photo + Incompleted checklists Displays some statistics and expiring reminders from Khmer Notes ការកំណត់ @@ -364,7 +365,7 @@ Send automatic report to developer?\" Navigate Navigation menu allows you to move through notes with filters and tags ពាក្យគន្លឺះ - Add colored tags to find notes at-a-glance + Add colored categories to organize notes at-a-glance Improve Add attachment of several kinds to your notes! Do more diff --git a/omniNotes/src/main/res/values-lo-rLA/strings.xml b/omniNotes/src/main/res/values-lo-rLA/strings.xml index e904c5cab6..4492098268 100644 --- a/omniNotes/src/main/res/values-lo-rLA/strings.xml +++ b/omniNotes/src/main/res/values-lo-rLA/strings.xml @@ -200,6 +200,7 @@ Checklist Text note Photo + Incompleted checklists ສະແດງສະຖິຕິຈຳນວນໜຶ່ງ ແລະ ເຂົ້າເຖິງໂຕເຕືອນຄວາມຈຳຈາກ Omni Notes ການ​ຕັ້ງຄ່າ @@ -361,7 +362,7 @@ ການຄວບຄຸມ ເມນູການຄວບຄຸມເຮັດໃຫ້ທ່ານສາມາດຈັດການບັນທຶກດ້ວຍໂຕຄັດກອງ ແລະ ປ້າຍ ປ້າຍ - ເພີ່ມປ້າຍສີເພື່ອເຮັດໃຫ້ຄວາມຈື່ຈຳຂອງທ່ານມີປະສິດທິຜົນ + Add colored categories to organize notes at-a-glance ປັບປຸງ ເພີ່ມຮຟລ໌ແນບຫຼາກຫຼາຍຮູບແບບໃສ່ບັນທຶກຂອງທ່ານ! ເຮັດໄດ້ອີກຫຼາຍຢ່າງ diff --git a/omniNotes/src/main/res/values-lv-rLV/strings.xml b/omniNotes/src/main/res/values-lv-rLV/strings.xml index b6aa5d4d32..23be612bd0 100644 --- a/omniNotes/src/main/res/values-lv-rLV/strings.xml +++ b/omniNotes/src/main/res/values-lv-rLV/strings.xml @@ -200,6 +200,7 @@ Saraksts Teksta piezīme Fotoattēls + Incompleted checklists Parāda nedaudz statistikas un izbeigušos atgādinājumus no Omni Notes Iestatījumi @@ -361,7 +362,7 @@ Navigate Navigation menu allows you to move through notes with filters and tags Birkas - Add colored tags to find notes at-a-glance + Add colored categories to organize notes at-a-glance Improve Add attachment of several kinds to your notes! Do more diff --git a/omniNotes/src/main/res/values-nl-rNL/strings.xml b/omniNotes/src/main/res/values-nl-rNL/strings.xml index 3d89f87554..f60c5c7189 100644 --- a/omniNotes/src/main/res/values-nl-rNL/strings.xml +++ b/omniNotes/src/main/res/values-nl-rNL/strings.xml @@ -200,6 +200,7 @@ Checklist Tekstnotitie Foto + Incompleted checklists Sommige statistieken en de naderende herinneringen van Omni notities worden weergegeven Instellingen @@ -361,7 +362,7 @@ Navigatie Navigatie-menu laat toe u te verplaatsen door notities met filters en labels Tags - Voeg gekleurde tags toe om uw bedenkingen efficiënt bij te houden + Add colored categories to organize notes at-a-glance Verbeteren Een heleboel verschillende bijlagentypen aan uw notities toevoegen! Meer doen diff --git a/omniNotes/src/main/res/values-pl-rPL/strings.xml b/omniNotes/src/main/res/values-pl-rPL/strings.xml index bbacdbe5f3..9c630611f8 100644 --- a/omniNotes/src/main/res/values-pl-rPL/strings.xml +++ b/omniNotes/src/main/res/values-pl-rPL/strings.xml @@ -200,6 +200,7 @@ Lista zadań Notatka tekstowa Zdjęcie + Incompleted checklists Wyświetla niektóre statystyki i wygasłe przypomnienia z Omni Notes Ustawienia @@ -361,7 +362,7 @@ Nawiguj Menu nawigacji pozwala poruszać się wśród notatek z filtrami i znacznikami Znaczniki - Dodaj kolorowe znaczniki, aby ułatwić wyszukiwanie notatki + Add colored categories to organize notes at-a-glance Ulepszenia Dodaj załącznik do kilku rodzajów notatek! Więcej diff --git a/omniNotes/src/main/res/values-pt-rBR/strings.xml b/omniNotes/src/main/res/values-pt-rBR/strings.xml index 865b4d317d..b537436e15 100644 --- a/omniNotes/src/main/res/values-pt-rBR/strings.xml +++ b/omniNotes/src/main/res/values-pt-rBR/strings.xml @@ -200,6 +200,7 @@ Lista de verificação Nota de texto Foto + Incompleted checklists Mostra algumas estatísticas e próximos alertas do Omni Notes Configurações @@ -361,7 +362,7 @@ Navegar O menu de navegação permite que você se mova através de notas com marcas e filtros Marcas - Adicione marcas coloridas para manter seus pensamentos sempre organizados + Add colored categories to organize notes at-a-glance Aprimore Adicione vários tipos diferentes de anexos a suas notas! Faça mais diff --git a/omniNotes/src/main/res/values-pt-rPT/strings.xml b/omniNotes/src/main/res/values-pt-rPT/strings.xml index 3b884b1fcc..5357e5ef04 100644 --- a/omniNotes/src/main/res/values-pt-rPT/strings.xml +++ b/omniNotes/src/main/res/values-pt-rPT/strings.xml @@ -200,6 +200,7 @@ Lista de verificação Nota de texto Fotografia + Incompleted checklists Mostra algumas estatísticas e próximos alertas do Omni Notes Definições @@ -361,7 +362,7 @@ Navegue O menu de navegação permite-lhe mover-se entre notas com filtros e etiquetas Classifique - Adicione etiquetas coloridas para manter os seus pensamentos sempre eficientes + Add colored categories to organize notes at-a-glance Melhore Adicione muitos anexos de diferentes tipos às suas notas! Faça mais diff --git a/omniNotes/src/main/res/values-ru-rRU/strings.xml b/omniNotes/src/main/res/values-ru-rRU/strings.xml index 96e60d94b5..77539aca03 100644 --- a/omniNotes/src/main/res/values-ru-rRU/strings.xml +++ b/omniNotes/src/main/res/values-ru-rRU/strings.xml @@ -193,13 +193,14 @@ Скрыть архивные заметки Показать архивные заметки Предоставьте разрешение для записи на внешний накопитель для создания резервных копий в пользовательских папках - Permission to read on external storage is needed to allow attaching files from there + Предоставьте разрешение на чтение внешнего накопителя для создания резервных копий в пользовательских папках Предоставьте разрешение на использование микрофона для записи аудиозаметок Предоставьте разрешение на определение расположения для добавления координат в заметки Разрешение не предоставлено Перечень Запись Фотография + Неполные списки Отображает некоторую статистику и ближайшие напоминания из Omni Notes Настройки @@ -245,7 +246,7 @@ Введите новый пароль Подтвердите новый пароль Пароль успешно изменен - Password removed: all notes have been unlocked + Пароль убран: все заметки разблокированы Пароль набран неправильно Пароль не установлен Удалить пароль и разблокировать заметки? diff --git a/omniNotes/src/main/res/values-sk-rSK/strings.xml b/omniNotes/src/main/res/values-sk-rSK/strings.xml index a410cb8191..12bd139723 100644 --- a/omniNotes/src/main/res/values-sk-rSK/strings.xml +++ b/omniNotes/src/main/res/values-sk-rSK/strings.xml @@ -200,6 +200,7 @@ Zoznam úloh Textová poznámka Fotografia + Incompleted checklists Zobrazí niektoré štatistiky a blížiace sa pripomienky z Omni Notes Nastavenia @@ -361,7 +362,7 @@ Navigujte Navigačná ponuka umožňuje prechádzať medzi poznámkami pomocou filtrov a značiek Značky - Pridávajte farebné značky pre rýchle nájdenie poznámok + Add colored categories to organize notes at-a-glance Zlepšite Pridajte mnoho rôznych typov príloh do vašich poznámok! Urobte viac diff --git a/omniNotes/src/main/res/values-sl-rSI/strings.xml b/omniNotes/src/main/res/values-sl-rSI/strings.xml index b8c7f541d4..a0530b10a4 100644 --- a/omniNotes/src/main/res/values-sl-rSI/strings.xml +++ b/omniNotes/src/main/res/values-sl-rSI/strings.xml @@ -200,6 +200,7 @@ Checklist Besedilna opomba Slika + Incompleted checklists Prikaz nekaterih statistik in bližnjih opomnikov iz Omni Notes Nastavitve @@ -361,7 +362,7 @@ Navigacija Navigacijski meni omogoča premikanje med beležkami s filtri in značkami Značke - Za boljšo preglednost dodaj obarvene značke + Add colored categories to organize notes at-a-glance Izboljšave Vašim beležkam lahko dodate več vrst priponk! Še več diff --git a/omniNotes/src/main/res/values-sr-rSP/strings.xml b/omniNotes/src/main/res/values-sr-rSP/strings.xml index ca50976e09..d645fbc388 100644 --- a/omniNotes/src/main/res/values-sr-rSP/strings.xml +++ b/omniNotes/src/main/res/values-sr-rSP/strings.xml @@ -200,6 +200,7 @@ Списак Текст Фото + Incompleted checklists Приказује статистику и истекле подсетнике из Омни белешки Поставке @@ -361,7 +362,7 @@ Крећите се Навигациони мени омогућава кретање кроз белешке помоћу филтера и ознака Ознаке - Обојите ознаке да бисте препознали белешке на први поглед + Add colored categories to organize notes at-a-glance Побољшајте Додајте разноврсне прилоге вашим белешкама! Урадите више diff --git a/omniNotes/src/main/res/values-sv-rSE/strings.xml b/omniNotes/src/main/res/values-sv-rSE/strings.xml index e499fa2d7c..8c8a2a5d5d 100644 --- a/omniNotes/src/main/res/values-sv-rSE/strings.xml +++ b/omniNotes/src/main/res/values-sv-rSE/strings.xml @@ -200,6 +200,7 @@ Checklista Textanteckning Bild + Incompleted checklists Visar statistik och närliggande påminnelser från Omni Tools Inställningar @@ -361,7 +362,7 @@ Navigera Navigeringsmenyn låter dig bläddra igenom anteckningar med filter och etiketter Ettiktetter - Lägg till färgade etiketter göra dina tankar alltid effektiva + Add colored categories to organize notes at-a-glance Förbättra Lägg till en mängd olika typer av bifogningar till dina anteckningar! Gör mer diff --git a/omniNotes/src/main/res/values-tr-rTR/strings.xml b/omniNotes/src/main/res/values-tr-rTR/strings.xml index e841162527..7f44fd4ee4 100644 --- a/omniNotes/src/main/res/values-tr-rTR/strings.xml +++ b/omniNotes/src/main/res/values-tr-rTR/strings.xml @@ -200,6 +200,7 @@ Yapılacaklar listesi Metin Notu Fotoğraf + Incompleted checklists Yaklaşan hatırlatmalarınızı ve not sayılarınızı görüntüleyebirsiniz Ayarlar @@ -361,7 +362,7 @@ Ana Menü Ana Menü sayesinde not ve etiketlere kolayca ulaşabilirsiniz Etiketler - Notlarını verimli kullanmak için etiketle ve renklindir + Add colored categories to organize notes at-a-glance Geliştir Notlarınıza farklı ekler ekliyebilirsiniz Daha fazla diff --git a/omniNotes/src/main/res/values-uk-rUA/strings.xml b/omniNotes/src/main/res/values-uk-rUA/strings.xml index 68f8b7e093..84ab9c9318 100644 --- a/omniNotes/src/main/res/values-uk-rUA/strings.xml +++ b/omniNotes/src/main/res/values-uk-rUA/strings.xml @@ -200,6 +200,7 @@ Список Текстова нотатка Фото + Incompleted checklists Відображає деяку статистику і найближчі події в Omni Notes Налаштування @@ -366,7 +367,7 @@ Навігація Меню навігації дозволяє вам переглядати нотатки за допомогою фільтрів та ярличків Ярлички - Додавайте кольорові ярлички, щоб зберігати ваші думки ефективно + Add colored categories to organize notes at-a-glance Покращення Додавайте різноманітні вкладення до ваших нотаток! Ще більше diff --git a/omniNotes/src/main/res/values-zh-rCN/strings.xml b/omniNotes/src/main/res/values-zh-rCN/strings.xml index 2352f6ab00..c338552c3b 100644 --- a/omniNotes/src/main/res/values-zh-rCN/strings.xml +++ b/omniNotes/src/main/res/values-zh-rCN/strings.xml @@ -200,6 +200,7 @@ 待办事项列表 文本注释 照片 + Incompleted checklists 显示Omni Notes统计数据及最近提醒 设置 @@ -361,7 +362,7 @@ 导航 使用导航菜单筛选并分类查看记事 标签 - 添加不同颜色的标签以便更加有效的管理您的记事 + Add colored categories to organize notes at-a-glance 改进 为您的记事添加不同类型的附件! 更多功能 diff --git a/omniNotes/src/main/res/values-zh-rTW/strings.xml b/omniNotes/src/main/res/values-zh-rTW/strings.xml index ccbf13cb76..04a87b356e 100644 --- a/omniNotes/src/main/res/values-zh-rTW/strings.xml +++ b/omniNotes/src/main/res/values-zh-rTW/strings.xml @@ -200,6 +200,7 @@ 清單 文本注釋 照片 + Incompleted checklists 显示Omni Notes统计数据及最近提醒 设置 @@ -361,7 +362,7 @@ 导航 使用导航菜单筛选并分类查看记事 标签 - 添加不同颜色的标签以便更加有效的管理您的记事 + Add colored categories to organize notes at-a-glance 改进 为您的记事添加不同类型的附件! 更多功能 From 51b481071d06d46a245286a4a540230e5b8a5dac Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Wed, 18 Apr 2018 23:26:19 +0200 Subject: [PATCH 21/37] Faster password validation using keyboard (closes #476) --- .../omninotes/utils/PasswordHelper.java | 32 +++++++++++++++---- omniNotes/src/main/res/raw/changelog.xml | 3 +- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/utils/PasswordHelper.java b/omniNotes/src/main/java/it/feio/android/omninotes/utils/PasswordHelper.java index 2451e51b7c..25392a2b8b 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/utils/PasswordHelper.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/utils/PasswordHelper.java @@ -22,7 +22,9 @@ import android.os.Handler; import android.view.LayoutInflater; import android.view.View; +import android.view.inputmethod.EditorInfo; import android.widget.EditText; +import com.afollestad.materialdialogs.DialogAction; import com.afollestad.materialdialogs.MaterialDialog; import de.greenrobot.event.EventBus; import it.feio.android.omninotes.OmniNotes; @@ -82,36 +84,54 @@ public static void requestPassword(final Activity mActivity, final PasswordValid mPasswordValidator.onPasswordValidated(false); }); + passwordEditText.setOnEditorActionListener((textView, actionId, keyEvent) -> { + if (actionId == EditorInfo.IME_ACTION_DONE) { + dialog.getActionButton(DialogAction.POSITIVE).callOnClick(); + return true; + } + return false; + }); + dialog.show(); - // Force focus and shows soft keyboard new Handler().postDelayed(() -> KeyboardUtils.showKeyboard(passwordEditText), 100); } public static void resetPassword(final Activity mActivity) { View layout = mActivity.getLayoutInflater().inflate(R.layout.password_reset_dialog_layout, null); - final EditText answerEditText = (EditText) layout.findViewById(R.id.reset_password_answer); + final EditText answerEditText = layout.findViewById(R.id.reset_password_answer); - new MaterialDialog.Builder(mActivity) + MaterialDialog dialog = new MaterialDialog.Builder(mActivity) .title(OmniNotes.getSharedPreferences().getString(Constants.PREF_PASSWORD_QUESTION, "")) .customView(layout, false) .autoDismiss(false) .contentColorRes(R.color.text_color) .positiveText(R.string.ok) - .onPositive((dialog, which) -> { + .onPositive((dialogElement, which) -> { // When positive button is pressed answer correctness is checked String oldAnswer = OmniNotes.getSharedPreferences().getString(Constants.PREF_PASSWORD_ANSWER, ""); String answer1 = answerEditText.getText().toString(); // The check is done on password's hash stored in preferences boolean result = Security.md5(answer1).equals(oldAnswer); if (result) { - dialog.dismiss(); + dialogElement.dismiss(); removePassword(); } else { answerEditText.setError(mActivity.getString(R.string.wrong_answer)); } - }).build().show(); + }).build(); + dialog.show(); + + answerEditText.setOnEditorActionListener((textView, actionId, keyEvent) -> { + if (actionId == EditorInfo.IME_ACTION_DONE) { + dialog.getActionButton(DialogAction.POSITIVE).callOnClick(); + return true; + } + return false; + }); + + new Handler().postDelayed(() -> KeyboardUtils.showKeyboard(answerEditText), 100); } diff --git a/omniNotes/src/main/res/raw/changelog.xml b/omniNotes/src/main/res/raw/changelog.xml index a7fdb0b64c..cb99f837ed 100644 --- a/omniNotes/src/main/res/raw/changelog.xml +++ b/omniNotes/src/main/res/raw/changelog.xml @@ -17,13 +17,14 @@ --> - + [b]New![/b] Rapidly search your unfinished to-do lists [b]New![/b] New "attachment" available to easily add the current timestamp [b]New![/b] Now an option is available into the editor to check currently edited note's informations [b]New![/b] Persian translation [i]Improved![/i] Removed outdated transparent navigation bar: this will save a lot of CPU avoiding calculating dynamic layout, after all today all devides are very much bigger than when this optimization has been introduced [i]Improved![/i] Removed semi-transparent overlay when using floating action button to speed-up the flow + [i]Improved![/i] Faster password and security question validations by using the keyboard "done" button [u]Fix[/u] Notes list update after password reset and password request bypass using swipe actions [u]Fix[/u] Language switching on Android Oreo and later versions [u]Fix[/u] First title duplication during notes' merging From 59ef9068b1e63552048a919a953b0006f01f378f Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Wed, 18 Apr 2018 23:29:21 +0200 Subject: [PATCH 22/37] Upgraded Gradle build tools version to 3.1.1 --- build.gradle | 2 +- .../android/omninotes/DetailFragment.java | 130 +++--------------- 2 files changed, 18 insertions(+), 114 deletions(-) diff --git a/build.gradle b/build.gradle index 6c46fdaa46..15593172d6 100644 --- a/build.gradle +++ b/build.gradle @@ -21,7 +21,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.0' + classpath 'com.android.tools.build:gradle:3.1.1' classpath 'me.tatarka:gradle-retrolambda:3.2.5' classpath 'me.tatarka.retrolambda.projectlombok:lombok.ast:0.2.3.a2' classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.6" 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 4c112defc9..c3dbb2780e 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java @@ -209,14 +209,12 @@ public class DetailFragment extends BaseFragment implements OnReminderPickedList private MainActivity mainActivity; private boolean activityPausing; - @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mFragment = this; } - @Override public void onStart() { super.onStart(); @@ -224,7 +222,6 @@ public void onStart() { EventBus.getDefault().register(this); } - @Override public void onStop() { super.onStop(); @@ -232,14 +229,12 @@ public void onStop() { GeocodeHelper.stop(); } - @Override public void onResume() { super.onResume(); activityPausing = false; } - @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_detail, container, false); @@ -247,7 +242,6 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa return view; } - @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); @@ -293,7 +287,6 @@ public void onActivityCreated(Bundle savedInstanceState) { setRetainInstance(false); } - @Override public void onSaveInstanceState(Bundle outState) { if (noteTmp != null) { @@ -308,7 +301,6 @@ public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); } - @SuppressLint("NewApi") @SuppressWarnings("deprecation") @Override @@ -333,7 +325,6 @@ public void onPause() { } } - @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); @@ -342,7 +333,6 @@ public void onConfigurationChanged(Configuration newConfig) { } } - private void init() { // Handling of Intent actions @@ -368,7 +358,6 @@ private void init() { initViews(); } - /** * Checks note lock and password before showing note content */ @@ -392,7 +381,6 @@ private void checkNoteLock(Note note) { } } - private void handleIntents() { Intent i = mainActivity.getIntent(); @@ -454,10 +442,7 @@ private void handleIntents() { takePhoto(); } - - /** - * Handles third party apps requests of sharing - */ + // Handles third party apps requests of sharing if (IntentChecker.checkAction(i, Intent.ACTION_SEND, Intent.ACTION_SEND_MULTIPLE, Constants.INTENT_GOOGLE_NOW) && i.getType() != null) { @@ -504,7 +489,6 @@ private void handleIntents() { i.setAction(null); } - @SuppressLint("NewApi") private void initViews() { @@ -530,7 +514,6 @@ private void initViews() { initViewFooter(); } - private void initViewFooter() { // Footer dates of creation... String creation = DateHelper.getFormattedDate(noteTmp.getCreation(), prefs.getBoolean(Constants @@ -548,7 +531,6 @@ private void initViewFooter() { lastModificationTextView.setVisibility(View.GONE); } - private void initViewReminder() { // Preparation for reminder icon @@ -587,7 +569,6 @@ public void onPositive(MaterialDialog materialDialog) { } } - private void initViewLocation() { DetailFragment detailFragment = this; @@ -607,7 +588,6 @@ private void initViewLocation() { getLocation(detailFragment); } - locationTextView.setOnClickListener(v -> { String uriString = "geo:" + noteTmp.getLatitude() + ',' + noteTmp.getLongitude() + "?q=" + noteTmp.getLatitude() + ',' + noteTmp.getLongitude(); @@ -637,13 +617,12 @@ public void onPositive(MaterialDialog materialDialog) { }); } - private void getLocation(OnGeoUtilResultListener onGeoUtilResultListener) { PermissionsHelper.requestPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION, R.string - .permission_coarse_location, snackBarPlaceholder, () -> GeocodeHelper.getLocation(onGeoUtilResultListener)); + .permission_coarse_location, snackBarPlaceholder, () -> GeocodeHelper.getLocation + (onGeoUtilResultListener)); } - private void initViewAttachments() { // Attachments position based on preferences @@ -733,7 +712,6 @@ private void initViewAttachments() { }); } - /** * Performs an action when long-click option is selected * @@ -774,9 +752,8 @@ private void performAttachmentAction(int attachmentPosition, int i) { } } - private void initViewTitle() { - title.setText(noteTmp.getTitle()); + title.setText(noteTmp.getTitle()); title.gatherLinksForText(); title.setOnTextLinkClickListener(textLinkClickListener); // To avoid dropping here the dragged checklist items @@ -793,7 +770,6 @@ private void initViewTitle() { requestFocus(title); } - private void initViewContent() { content.setText(noteTmp.getContent()); @@ -811,7 +787,6 @@ private void initViewContent() { } } - /** * Force focus and shows soft keyboard. Only happens if it's a new note, without shared content. * {@link showKeyboard} is used to check if the note is created from shared content. @@ -823,7 +798,6 @@ private void requestFocus(final EditText view) { } } - /** * Colors tag marker in note's title and content elements */ @@ -856,7 +830,6 @@ private void setTagMarkerColor(Category tag) { } } - private void displayLocationDialog() { getLocation(new OnGeoUtilResultListenerImpl(mainActivity, mFragment, noteTmp)); } @@ -867,7 +840,6 @@ private static class OnGeoUtilResultListenerImpl implements OnGeoUtilResultListe private final WeakReference detailFragmentWeakReference; private final WeakReference noteTmpWeakReference; - OnGeoUtilResultListenerImpl(MainActivity activity, DetailFragment mFragment, Note noteTmp) { this.mainActivityWeakReference = new WeakReference<>(activity); this.detailFragmentWeakReference = new WeakReference<>(mFragment); @@ -878,18 +850,15 @@ private static class OnGeoUtilResultListenerImpl implements OnGeoUtilResultListe public void onAddressResolved(String address) { } - @Override public void onCoordinatesResolved(Location location, String address) { } - @Override public void onLocationUnavailable() { mainActivityWeakReference.get().showMessage(R.string.location_not_found, ONStyle.ALERT); } - @Override public void onLocationRetrieved(Location location) { @@ -935,18 +904,18 @@ public void onPositive(MaterialDialog materialDialog) { public void beforeTextChanged(CharSequence s, int start, int count, int after) { } - @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if (s.length() != 0) { - dialog.setActionButton(DialogAction.POSITIVE, mainActivityWeakReference.get().getString(R.string.confirm)); + dialog.setActionButton(DialogAction.POSITIVE, mainActivityWeakReference.get().getString(R + .string.confirm)); } else { - dialog.setActionButton(DialogAction.POSITIVE, mainActivityWeakReference.get().getString(R.string + dialog.setActionButton(DialogAction.POSITIVE, mainActivityWeakReference.get().getString(R + .string .use_current_location)); } } - @Override public void afterTextChanged(Editable s) { } @@ -954,14 +923,12 @@ public void afterTextChanged(Editable s) { dialog.show(); } - private boolean checkWeakReferences() { return mainActivityWeakReference.get() != null && !mainActivityWeakReference.get().isFinishing() && detailFragmentWeakReference.get() != null && noteTmpWeakReference.get() != null; } } - @Override public void onLocationRetrieved(Location location) { if (location == null) { @@ -979,13 +946,11 @@ public void onLocationRetrieved(Location location) { } } - @Override public void onLocationUnavailable() { mainActivity.showMessage(R.string.location_not_found, ONStyle.ALERT); } - @Override public void onAddressResolved(String address) { if (TextUtils.isEmpty(address)) { @@ -1003,7 +968,6 @@ public void onAddressResolved(String address) { fade(locationTextView, true); } - @Override public void onCoordinatesResolved(Location location, String address) { if (location != null) { @@ -1018,14 +982,12 @@ public void onCoordinatesResolved(Location location, String address) { } } - @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.menu_detail, menu); super.onCreateOptionsMenu(menu, inflater); } - @Override public void onPrepareOptionsMenu(Menu menu) { @@ -1054,7 +1016,6 @@ public void onPrepareOptionsMenu(Menu menu) { } } - @SuppressLint("NewApi") public boolean goHome() { stopPlaying(); @@ -1089,7 +1050,6 @@ public boolean goHome() { return true; } - @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { @@ -1141,10 +1101,12 @@ public boolean onOptionsItemSelected(MenuItem item) { case R.id.menu_note_info: showNoteInfo(); break; - default: Log.w(Constants.TAG, "Invalid menu option selected"); + default: + Log.w(Constants.TAG, "Invalid menu option selected"); } - ((OmniNotes)getActivity().getApplication()).getAnalyticsHelper().trackActionFromResourceId(getActivity(), item.getItemId()); + ((OmniNotes) getActivity().getApplication()).getAnalyticsHelper().trackActionFromResourceId(getActivity(), + item.getItemId()); return super.onOptionsItemSelected(item); } @@ -1153,7 +1115,7 @@ private void showNoteInfo() { noteTmp.setTitle(getNoteTitle()); noteTmp.setContent(getNoteContent()); Intent intent = new Intent(getContext(), NoteInfosActivity.class); - intent.putExtra(Constants.INTENT_NOTE, (android.os.Parcelable)noteTmp); + intent.putExtra(Constants.INTENT_NOTE, (android.os.Parcelable) noteTmp); startActivity(intent); } @@ -1163,7 +1125,6 @@ private void navigateUp() { saveAndExit(this); } - /** * */ @@ -1209,7 +1170,6 @@ public void onPositive(MaterialDialog materialDialog) { }).build().show(); } - /** * Toggles checklist view */ @@ -1219,7 +1179,6 @@ private void toggleChecklist2() { toggleChecklist2(keepChecked, showChecks); } - @SuppressLint("NewApi") private void toggleChecklist2(final boolean keepChecked, final boolean showChecks) { // Get instance and set options to convert EditText to CheckListView @@ -1256,7 +1215,6 @@ private void toggleChecklist2(final boolean keepChecked, final boolean showCheck } } - /** * Categorize note choosing from a list of previously created categories */ @@ -1281,7 +1239,6 @@ public void onPositive(MaterialDialog dialog) { startActivityForResult(intent, CATEGORY); } - @Override public void onNegative(MaterialDialog dialog) { noteTmp.setCategory(null); @@ -1299,7 +1256,6 @@ public void onNegative(MaterialDialog dialog) { dialog.show(); } - // The method that displays the popup. @SuppressWarnings("deprecation") private void showPopup(View anchor) { @@ -1363,7 +1319,6 @@ private void showPopup(View anchor) { } } - private void takePhoto() { // Checks for camera app available Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); @@ -1384,7 +1339,6 @@ private void takePhoto() { startActivityForResult(intent, TAKE_PHOTO); } - private void takeVideo() { Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); if (!IntentChecker.isAvailable(mainActivity, takeVideoIntent, new String[]{PackageManager.FEATURE_CAMERA})) { @@ -1410,7 +1364,6 @@ private void takeVideo() { startActivityForResult(takeVideoIntent, TAKE_VIDEO); } - private void takeSketch(Attachment attachment) { File f = StorageHelper.createNewAttachmentFile(mainActivity, Constants.MIME_TYPE_SKETCH_EXT); @@ -1457,7 +1410,6 @@ private void addTimestamp() { Selection.setSelection(editable, position + dateStamp.length()); } - @SuppressLint("NewApi") @Override public void onActivityResult(int requestCode, int resultCode, Intent intent) { @@ -1510,7 +1462,6 @@ public void onActivityResult(int requestCode, int resultCode, Intent intent) { } } - private void onActivityResultManageReceivedFiles(Intent intent) { List uris = new ArrayList<>(); if (Build.VERSION.SDK_INT > 16 && intent.getClipData() != null) { @@ -1555,7 +1506,6 @@ private void discard() { } } - @SuppressLint("NewApi") private void archiveNote(boolean archive) { // Simply go back if is a new note @@ -1571,7 +1521,6 @@ private void archiveNote(boolean archive) { saveNote(this); } - @SuppressLint("NewApi") private void trashNote(boolean trash) { // Simply go back if is a new note @@ -1593,7 +1542,6 @@ private void trashNote(boolean trash) { saveNote(this); } - private void deleteNote() { new MaterialDialog.Builder(mainActivity) .content(R.string.delete_note_confirmation) @@ -1609,7 +1557,6 @@ public void onPositive(MaterialDialog materialDialog) { }).build().show(); } - public void saveAndExit(OnNoteSaved mOnNoteSaved) { if (isAdded()) { exitMessage = getString(R.string.note_updated); @@ -1619,7 +1566,6 @@ public void saveAndExit(OnNoteSaved mOnNoteSaved) { } } - /** * Save new notes, modify them or archive */ @@ -1653,7 +1599,6 @@ void saveNote(OnNoteSaved mOnNoteSaved) { .THREAD_POOL_EXECUTOR, noteTmp); } - /** * Checks if nothing is changed to avoid committing if possible (check) */ @@ -1665,7 +1610,6 @@ private boolean saveNotNeeded() { return !noteTmp.isChanged(note) || (noteTmp.isLocked() && !noteTmp.isPasswordChecked()); } - /** * Checks if only tag, archive or trash status have been changed * and then force to not update last modification date* @@ -1678,7 +1622,6 @@ private boolean lastModificationUpdatedNeeded() { return noteTmp.isChanged(note); } - @Override public void onNoteSaved(Note noteSaved) { MainActivity.notifyAppWidgets(OmniNotes.getAppContext()); @@ -1695,7 +1638,6 @@ public void onNoteSaved(Note noteSaved) { } } - private void deleteMergedNotes(List mergedNotesIds) { ArrayList notesToDelete = new ArrayList(); if (mergedNotesIds != null) { @@ -1708,7 +1650,6 @@ private void deleteMergedNotes(List mergedNotesIds) { } } - private String getNoteTitle() { if (title != null && !TextUtils.isEmpty(title.getText())) { return title.getText().toString(); @@ -1717,7 +1658,6 @@ private String getNoteTitle() { } } - private String getNoteContent() { String contentText = ""; if (!noteTmp.isChecklist()) { @@ -1738,7 +1678,6 @@ private String getNoteContent() { return contentText; } - /** * Updates share intent */ @@ -1749,7 +1688,6 @@ private void shareNote() { mainActivity.shareNote(sharedNote); } - /** * Notes locking with security password to avoid viewing, editing or deleting from unauthorized */ @@ -1777,7 +1715,6 @@ private void lockNote() { }); } - private void lockUnlock() { // Empty password has been set if (prefs.getString(Constants.PREF_PASSWORD, null) == null) { @@ -1790,7 +1727,6 @@ private void lockUnlock() { noteTmp.setPasswordChecked(true); } - /** * Used to set actual reminder state when initializing a note to be edited */ @@ -1807,7 +1743,6 @@ private String initReminder(Note note) { } } - /** * Audio recordings playback */ @@ -1832,7 +1767,6 @@ private void playback(View v, Uri uri) { } } - private void replacePlayingAudioBitmap(View v) { Drawable d = ((ImageView) v.findViewById(R.id.gridview_item_picture)).getDrawable(); if (BitmapDrawable.class.isAssignableFrom(d.getClass())) { @@ -1845,7 +1779,6 @@ private void replacePlayingAudioBitmap(View v) { R.drawable.stop), Constants.THUMBNAIL_SIZE, Constants.THUMBNAIL_SIZE)); } - private void startPlaying(Uri uri) { if (mPlayer == null) { mPlayer = new MediaPlayer(); @@ -1869,7 +1802,6 @@ private void startPlaying(Uri uri) { } } - private void stopPlaying() { if (mPlayer != null) { if (isPlayingView != null) { @@ -1882,7 +1814,6 @@ private void stopPlaying() { } } - private void startRecording(View v) { PermissionsHelper.requestPermission(getActivity(), Manifest.permission.RECORD_AUDIO, R.string.permission_audio_recording, snackBarPlaceholder, () -> { @@ -1919,7 +1850,6 @@ private void startRecording(View v) { }); } - private void stopRecording() { if (mRecorder != null) { mRecorder.stop(); @@ -1929,13 +1859,11 @@ private void stopRecording() { } } - private void fade(final View v, boolean fadeIn) { int anim = R.animator.fade_out_support; int visibilityTemp = View.GONE; - if (fadeIn) { anim = R.animator.fade_in_support; visibilityTemp = View.VISIBLE; @@ -1952,13 +1880,11 @@ public void onAnimationStart(Animation animation) { // Nothing to do } - @Override public void onAnimationRepeat(Animation animation) { // Nothing to do } - @Override public void onAnimationEnd(Animation animation) { v.setVisibility(visibility); @@ -1968,7 +1894,6 @@ public void onAnimationEnd(Animation animation) { } } - /** * Adding shortcut on Home screen */ @@ -1977,7 +1902,6 @@ private void addShortcut() { mainActivity.showMessage(R.string.shortcut_added, ONStyle.INFO); } - TextLinkClickListener textLinkClickListener = new TextLinkClickListener() { @Override public void onTextLinkClick(View view, final String clickedString, final String url) { @@ -2014,7 +1938,6 @@ public void onPositive(MaterialDialog dialog) { } } - @Override public void onNegative(MaterialDialog dialog) { android.content.ClipboardManager clipboard = (android.content.ClipboardManager) @@ -2035,7 +1958,6 @@ public void onNegative(MaterialDialog dialog) { } }; - @SuppressLint("NewApi") @Override public boolean onTouch(View v, MotionEvent event) { @@ -2099,22 +2021,18 @@ public void onAttachingFileErrorOccurred(Attachment mAttachment) { } } - private void addAttachment(Attachment attachment) { noteTmp.addAttachment(attachment); } - private void removeAttachment(Attachment mAttachment) { noteTmp.removeAttachment(mAttachment); } - private void removeAttachment(int position) { noteTmp.removeAttachment(noteTmp.getAttachmentsList().get(position)); } - private void removeAllAttachments() { noteTmp.setAttachmentsList(new ArrayList<>()); mAttachmentAdapter = new AttachmentAdapter(mainActivity, new ArrayList<>(), mGridView); @@ -2122,7 +2040,6 @@ private void removeAllAttachments() { mGridView.setAdapter(mAttachmentAdapter); } - @Override public void onAttachingFileFinished(Attachment mAttachment) { addAttachment(mAttachment); @@ -2130,7 +2047,6 @@ public void onAttachingFileFinished(Attachment mAttachment) { mGridView.autoresize(); } - @Override public void onReminderPicked(long reminder) { noteTmp.setAlarm(reminder); @@ -2140,7 +2056,6 @@ public void onReminderPicked(long reminder) { } } - @Override public void onRecurrenceReminderPicked(String recurrenceRule) { noteTmp.setRecurrenceRule(recurrenceRule); @@ -2151,31 +2066,26 @@ public void onRecurrenceReminderPicked(String recurrenceRule) { } } - @Override public void onTextChanged(CharSequence s, int start, int before, int count) { scrollContent(); } - @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // Nothing to do } - @Override public void afterTextChanged(Editable s) { // Nothing to do } - @Override public void onCheckListChanged() { scrollContent(); } - private void scrollContent() { if (noteTmp.isChecklist()) { if (mChecklistManager.getCount() > contentLineCounter) { @@ -2190,7 +2100,6 @@ private void scrollContent() { } } - /** * Add previously created tags to content */ @@ -2224,7 +2133,6 @@ private void addTags() { dialog.show(); } - private void tagNote(List tags, Integer[] selectedTags, Note note) { Pair> taggingResult = TagsHelper.addTagToNote(tags, selectedTags, note); @@ -2271,7 +2179,6 @@ private void tagNote(List tags, Integer[] selectedTags, Note note) { } } - private int getCursorIndex() { if (!noteTmp.isChecklist()) { return content.getSelectionStart(); @@ -2285,7 +2192,6 @@ private int getCursorIndex() { } } - /** * Used to check currently opened note from activity to avoid openind multiple times the same one */ @@ -2293,7 +2199,6 @@ public Note getCurrentNote() { return note; } - private boolean isNoteLocationValid() { return noteTmp.getLatitude() != null && noteTmp.getLatitude() != 0 @@ -2301,7 +2206,6 @@ private boolean isNoteLocationValid() { && noteTmp.getLongitude() != 0; } - /** * Manages clicks on attachment dialog */ @@ -2322,7 +2226,8 @@ public void onClick(View v) { } else { isRecording = false; stopRecording(); - Attachment attachment = new Attachment(Uri.fromFile(new File(recordName)), Constants.MIME_TYPE_AUDIO); + Attachment attachment = new Attachment(Uri.fromFile(new File(recordName)), Constants + .MIME_TYPE_AUDIO); attachment.setLength(audioRecordingTime); addAttachment(attachment); mAttachmentAdapter.notifyDataSetChanged(); @@ -2359,7 +2264,7 @@ public void onClick(View v) { default: Log.e(Constants.TAG, "Wrong element choosen: " + v.getId()); } - if(!isRecording)attachmentDialog.dismiss(); + if (!isRecording) attachmentDialog.dismiss(); } } @@ -2372,13 +2277,12 @@ public void startGetContentAction() { startActivityForResult(filesIntent, FILES); } - private void askReadExternalStoragePermission(){ + private void askReadExternalStoragePermission() { PermissionsHelper.requestPermission(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE, R.string.permission_external_storage_detail_attachment, snackBarPlaceholder, this::startGetContentAction); } - public void onEventMainThread(PushbulletReplyEvent pushbulletReplyEvent) { String text = getNoteContent() + System.getProperty("line.separator") + pushbulletReplyEvent.message; content.setText(text); From c98c7d3eeb45c25b8eede4715f525fcb9aa3f502 Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Wed, 18 Apr 2018 23:49:23 +0200 Subject: [PATCH 23/37] Updated copyright of all the files to 2018 --- build.gradle | 2 +- etc/translations/arrays.xml | 2 +- etc/translations/strings.xml | 2 +- gradle.properties | 6 ++-- gradle/wrapper/gradle-wrapper.properties | 17 +++++++++++ omniNotes/build.gradle | 2 +- omniNotes/lint.xml | 6 ++-- .../omninotes/BaseAndroidTestCase.java | 4 +-- .../android/omninotes/BaseEspressoTest.java | 17 +++++++++++ .../omninotes/CategoryLifecycleTest.java | 17 +++++++++++ .../android/omninotes/FabCameraNoteTest.java | 17 +++++++++++ .../android/omninotes/FabLifecycleTest.java | 17 +++++++++++ .../omninotes/RemindersLifecycleTest.java | 17 +++++++++++ .../android/omninotes/db/DbHelperTest.java | 4 +-- .../helpers/AppVersionHelperTest.java | 4 +-- .../omninotes/helpers/LanguageHelperTest.java | 4 +-- .../omninotes/utils/GeocodeHelperTest.java | 2 +- .../omninotes/utils/ReminderHelperTest.java | 4 +-- .../android/omninotes/utils/SecurityTest.java | 2 +- .../omninotes/utils/date/DateHelperTest.java | 2 +- omniNotes/src/foss/res/values/strings.xml | 2 +- omniNotes/src/main/AndroidManifest.xml | 2 +- omniNotes/src/main/assets/html/about.html | 2 +- .../feio/android/omninotes/AboutActivity.java | 2 +- .../feio/android/omninotes/BaseActivity.java | 2 +- .../feio/android/omninotes/BaseFragment.java | 17 +++++++++++ .../android/omninotes/CategoryActivity.java | 2 +- .../android/omninotes/DetailFragment.java | 2 +- .../omninotes/FontSizeListPreference.java | 17 +++++++++++ .../android/omninotes/GalleryActivity.java | 2 +- .../feio/android/omninotes/ListFragment.java | 2 +- .../feio/android/omninotes/MainActivity.java | 2 +- .../omninotes/NavigationDrawerFragment.java | 4 +-- .../android/omninotes/NoteInfosActivity.java | 2 +- .../it/feio/android/omninotes/OmniNotes.java | 2 +- .../android/omninotes/PasswordActivity.java | 2 +- .../android/omninotes/SettingsActivity.java | 17 +++++++++++ .../android/omninotes/SettingsFragment.java | 25 ++++++++-------- .../android/omninotes/ShortcutActivity.java | 4 +-- .../android/omninotes/SketchFragment.java | 2 +- .../android/omninotes/SnoozeActivity.java | 2 +- .../feio/android/omninotes/StatsActivity.java | 2 +- .../async/AlarmRestoreOnRebootService.java | 2 +- .../omninotes/async/AttachmentTask.java | 4 +-- .../omninotes/async/CategoryMenuTask.java | 4 +-- .../async/DataBackupIntentService.java | 2 +- .../android/omninotes/async/MainMenuTask.java | 4 +-- .../omninotes/async/TextWorkerTask.java | 4 +-- .../omninotes/async/UpdateWidgetsTask.java | 17 +++++++++++ .../android/omninotes/async/UpdaterTask.java | 2 +- .../async/bus/CategoriesUpdatedEvent.java | 17 +++++++++++ .../bus/DynamicNavigationReadyEvent.java | 17 +++++++++++ .../async/bus/NavigationUpdatedEvent.java | 17 +++++++++++ ...NavigationUpdatedNavDrawerClosedEvent.java | 17 +++++++++++ .../omninotes/async/bus/NotesLoadedEvent.java | 17 +++++++++++ .../omninotes/async/bus/NotesMergeEvent.java | 17 +++++++++++ .../async/bus/NotesUpdatedEvent.java | 17 +++++++++++ .../async/bus/NotificationRemovedEvent.java | 2 +- .../async/bus/PasswordRemovedEvent.java | 4 +-- .../async/bus/PushbulletReplyEvent.java | 17 +++++++++++ .../async/bus/SwitchFragmentEvent.java | 17 +++++++++++ .../omninotes/async/notes/NoteLoaderTask.java | 2 +- .../omninotes/async/notes/NoteProcessor.java | 2 +- .../async/notes/NoteProcessorArchive.java | 2 +- .../async/notes/NoteProcessorCategorize.java | 2 +- .../async/notes/NoteProcessorDelete.java | 2 +- .../async/notes/NoteProcessorTrash.java | 2 +- .../omninotes/async/notes/SaveNoteTask.java | 2 +- .../async/upgrade/UpgradeProcessor.java | 2 +- .../feio/android/omninotes/db/DbHelper.java | 2 +- .../feio/android/omninotes/db/SqlParser.java | 2 +- .../exceptions/NotesLoadingException.java | 2 +- .../extensions/ONDashClockExtension.java | 2 +- .../extensions/PushBulletExtension.java | 2 +- .../omninotes/factory/MediaStoreFactory.java | 17 +++++++++++ .../omninotes/helpers/AppVersionHelper.java | 4 +-- .../omninotes/helpers/AttachmentsHelper.java | 4 +-- .../omninotes/helpers/LanguageHelper.java | 4 +-- .../omninotes/helpers/NotesHelper.java | 17 +++++++++++ .../omninotes/helpers/PermissionsHelper.java | 4 +-- .../omninotes/helpers/date/DateHelper.java | 4 +-- .../omninotes/intro/IntroActivity.java | 19 +++++++++++- .../omninotes/intro/IntroFragment.java | 19 +++++++++++- .../android/omninotes/intro/IntroSlide1.java | 19 +++++++++++- .../android/omninotes/intro/IntroSlide2.java | 19 +++++++++++- .../android/omninotes/intro/IntroSlide3.java | 19 +++++++++++- .../android/omninotes/intro/IntroSlide4.java | 19 +++++++++++- .../android/omninotes/intro/IntroSlide5.java | 19 +++++++++++- .../android/omninotes/intro/IntroSlide6.java | 17 +++++++++++ .../android/omninotes/models/Attachment.java | 2 +- .../android/omninotes/models/Category.java | 2 +- .../omninotes/models/NavigationItem.java | 2 +- .../feio/android/omninotes/models/Note.java | 2 +- .../android/omninotes/models/ONStyle.java | 4 +-- .../omninotes/models/PasswordValidator.java | 2 +- .../omninotes/models/PushBulletMessage.java | 4 +-- .../feio/android/omninotes/models/Stats.java | 2 +- .../omninotes/models/StatsSingleNote.java | 2 +- .../it/feio/android/omninotes/models/Tag.java | 2 +- .../omninotes/models/ThumbnailLruCache.java | 2 +- .../omninotes/models/UndoBarController.java | 2 +- .../models/adapters/AttachmentAdapter.java | 2 +- .../models/adapters/ImageAndTextAdapter.java | 2 +- .../models/adapters/NavDrawerAdapter.java | 2 +- .../adapters/NavDrawerCategoryAdapter.java | 2 +- .../models/adapters/NoteAdapter.java | 2 +- .../adapters/PlacesAutoCompleteAdapter.java | 4 +-- .../models/holders/ImageAndTextItem.java | 2 +- .../models/holders/NoteViewHolder.java | 4 +-- .../listeners/AbsListViewScrollDetector.java | 2 +- .../listeners/OnAttachingFileListener.java | 2 +- .../listeners/OnCABItemClickedListener.java | 2 +- .../listeners/OnDrawChangedListener.java | 2 +- .../listeners/OnFabItemClickedListener.java | 2 +- .../listeners/OnGeoUtilResultListener.java | 4 +-- .../models/listeners/OnNoteSaved.java | 2 +- .../OnPermissionRequestedListener.java | 2 +- .../listeners/OnReminderPickedListener.java | 2 +- .../listeners/OnViewTouchedListener.java | 2 +- .../misc/DynamicNavigationLookupTable.java | 4 +-- .../misc/PlayStoreMetadataFetcherResult.java | 4 +-- .../views/ExpandableHeightGridView.java | 2 +- .../android/omninotes/models/views/Fab.java | 17 +++++++++++ .../models/views/InterceptorFrameLayout.java | 2 +- .../models/views/InterceptorLinearLayout.java | 2 +- .../models/views/NonScrollableListView.java | 2 +- .../omninotes/models/views/SketchView.java | 4 +-- .../models/views/SquareImageView.java | 4 +-- .../models/views/VerticalSeekBar.java | 4 +-- .../omninotes/receiver/AlarmReceiver.java | 2 +- .../receiver/BootCompleteReceiver.java | 2 +- .../services/NotificationListener.java | 19 +++++++++++- .../android/omninotes/utils/AlphaManager.java | 2 +- .../omninotes/utils/AnimationsHelper.java | 2 +- .../android/omninotes/utils/AssetUtils.java | 2 +- .../android/omninotes/utils/BitmapHelper.java | 2 +- .../android/omninotes/utils/ColorsUtil.java | 2 +- .../omninotes/utils/ConnectionManager.java | 2 +- .../omninotes/utils/ConstantsBase.java | 2 +- .../feio/android/omninotes/utils/Display.java | 2 +- .../android/omninotes/utils/FileHelper.java | 2 +- .../feio/android/omninotes/utils/Fonts.java | 2 +- .../omninotes/utils/GeocodeHelper.java | 2 +- .../omninotes/utils/IntentChecker.java | 2 +- .../omninotes/utils/KeyboardUtils.java | 2 +- .../omninotes/utils/LoadingDialog.java | 2 +- .../android/omninotes/utils/Navigation.java | 2 +- .../omninotes/utils/NotificationsHelper.java | 2 +- .../omninotes/utils/ParcelableUtil.java | 4 +-- .../omninotes/utils/PasswordHelper.java | 4 +-- .../omninotes/utils/ReminderHelper.java | 2 +- .../omninotes/utils/ResourcesUtils.java | 2 +- .../android/omninotes/utils/Security.java | 2 +- .../omninotes/utils/ShortcutHelper.java | 2 +- .../omninotes/utils/StorageHelper.java | 2 +- .../android/omninotes/utils/SystemHelper.java | 17 +++++++++++ .../android/omninotes/utils/TagsHelper.java | 2 +- .../android/omninotes/utils/TextHelper.java | 2 +- .../utils/date/DatePickerDialogFragment.java | 2 +- .../omninotes/utils/date/DateUtils.java | 2 +- .../omninotes/utils/date/ReminderPickers.java | 4 +-- .../utils/date/TimePickerFragment.java | 2 +- .../widget/ListRemoteViewsFactory.java | 2 +- .../omninotes/widget/ListWidgetProvider.java | 2 +- .../omninotes/widget/ListWidgetService.java | 2 +- .../widget/SimpleWidgetProvider.java | 4 +-- .../widget/WidgetConfigurationActivity.java | 2 +- .../omninotes/widget/WidgetProvider.java | 2 +- omniNotes/src/main/res/anim/anim_in.xml | 4 +-- omniNotes/src/main/res/anim/anim_in_pop.xml | 4 +-- omniNotes/src/main/res/anim/anim_out.xml | 4 +-- omniNotes/src/main/res/anim/anim_out_pop.xml | 4 +-- omniNotes/src/main/res/anim/fade_in.xml | 4 +-- .../src/main/res/anim/fade_in_support.xml | 2 +- omniNotes/src/main/res/anim/fade_out.xml | 4 +-- .../src/main/res/anim/fade_out_support.xml | 2 +- omniNotes/src/main/res/animator/fade_in.xml | 4 +-- .../src/main/res/animator/fade_in_support.xml | 2 +- omniNotes/src/main/res/animator/fade_out.xml | 4 +-- .../main/res/animator/fade_out_support.xml | 2 +- .../src/main/res/animator/slide_back_left.xml | 2 +- .../main/res/animator/slide_back_right.xml | 2 +- .../src/main/res/animator/slide_left.xml | 2 +- .../src/main/res/animator/slide_right.xml | 2 +- omniNotes/src/main/res/drawable/bg_card.xml | 2 +- .../main/res/drawable/branded_background.xml | 4 +-- .../main/res/drawable/category_count_bg.xml | 19 +++++++++++- omniNotes/src/main/res/drawable/circle.xml | 4 +-- .../src/main/res/drawable/gray_circle.xml | 19 +++++++++++- .../drawable/ic_access_time_black_24px.xml | 17 +++++++++++ .../src/main/res/drawable/icon_selector.xml | 2 +- .../src/main/res/drawable/image_borders.xml | 4 +-- .../main/res/drawable/jingles_animation.xml | 6 ++-- .../res/drawable/list_selector_focused.xml | 4 +-- .../res/drawable/list_selector_pressed.xml | 4 +-- .../src/main/res/drawable/note_selector.xml | 2 +- .../src/main/res/drawable/scroll_bar.xml | 4 +-- omniNotes/src/main/res/drawable/square.xml | 4 +-- .../main/res/drawable/toolbar_dropshadow.xml | 4 +-- .../src/main/res/drawable/undobar_button.xml | 4 +-- .../res/layout-sw600dp/password_buttons.xml | 4 +-- .../settings_font_size_dialog_item.xml | 19 +++++++++++- .../src/main/res/layout/activity_about.xml | 2 +- .../src/main/res/layout/activity_category.xml | 4 +-- .../main/res/layout/activity_changelog.xml | 2 +- .../src/main/res/layout/activity_gallery.xml | 2 +- .../src/main/res/layout/activity_main.xml | 2 +- .../main/res/layout/activity_note_infos.xml | 2 +- .../src/main/res/layout/activity_password.xml | 4 +-- .../src/main/res/layout/activity_settings.xml | 19 +++++++++++- .../src/main/res/layout/activity_stats.xml | 2 +- .../main/res/layout/activity_stats_note.xml | 2 +- .../layout/activity_widget_configuration.xml | 2 +- .../src/main/res/layout/attachment_dialog.xml | 4 +-- .../src/main/res/layout/crouton_handle.xml | 4 +-- .../main/res/layout/dialog_backup_layout.xml | 4 +-- .../src/main/res/layout/dialog_location.xml | 4 +-- .../layout/dialog_remove_checklist_layout.xml | 4 +-- .../layout/drawer_category_list_footer.xml | 4 +-- .../layout/drawer_category_list_header.xml | 4 +-- .../src/main/res/layout/drawer_list_item.xml | 2 +- omniNotes/src/main/res/layout/fab.xml | 4 +-- .../src/main/res/layout/fragment_detail.xml | 2 +- .../layout/fragment_detail_attachments.xml | 4 +-- .../res/layout/fragment_detail_content.xml | 19 +++++++++++- .../src/main/res/layout/fragment_list.xml | 2 +- .../res/layout/fragment_navigation_drawer.xml | 4 +-- .../src/main/res/layout/fragment_sketch.xml | 4 +-- .../src/main/res/layout/gridview_item.xml | 2 +- .../main/res/layout/image_and_text_item.xml | 4 +-- omniNotes/src/main/res/layout/intro_slide.xml | 19 +++++++++++- .../res/layout/intro_slide_communities.xml | 2 +- omniNotes/src/main/res/layout/note_layout.xml | 4 +-- .../main/res/layout/note_layout_expanded.xml | 4 +-- .../main/res/layout/note_layout_widget.xml | 2 +- .../src/main/res/layout/password_buttons.xml | 4 +-- .../layout/password_request_dialog_layout.xml | 4 +-- .../layout/password_reset_dialog_layout.xml | 4 +-- .../main/res/layout/popup_sketch_eraser.xml | 4 +-- .../main/res/layout/popup_sketch_stroke.xml | 4 +-- .../res/layout/rate_app_dialog_layout.xml | 4 +-- omniNotes/src/main/res/layout/row.xml | 4 +-- .../layout/settings_font_size_dialog_item.xml | 17 +++++++++++ .../res/layout/settings_font_size_item.xml | 17 +++++++++++ .../main/res/layout/simple_text_layout.xml | 4 +-- omniNotes/src/main/res/layout/toolbar.xml | 2 +- omniNotes/src/main/res/layout/undobar.xml | 4 +-- .../src/main/res/layout/widget_layout.xml | 4 +-- .../main/res/layout/widget_layout_list.xml | 2 +- .../main/res/layout/widget_layout_small.xml | 4 +-- .../main/res/layout/widget_layout_toolbar.xml | 4 +-- omniNotes/src/main/res/menu/menu_detail.xml | 2 +- omniNotes/src/main/res/menu/menu_gallery.xml | 4 +-- omniNotes/src/main/res/menu/menu_list.xml | 2 +- omniNotes/src/main/res/raw/changelog.xml | 2 +- .../src/main/res/values-ar-rSA/arrays.xml | 6 ++-- .../src/main/res/values-ar-rSA/strings.xml | 6 ++-- .../src/main/res/values-ca-rES/arrays.xml | 6 ++-- .../src/main/res/values-ca-rES/strings.xml | 6 ++-- .../src/main/res/values-cs-rCZ/arrays.xml | 6 ++-- .../src/main/res/values-cs-rCZ/strings.xml | 6 ++-- .../src/main/res/values-de-rDE/arrays.xml | 6 ++-- .../src/main/res/values-de-rDE/strings.xml | 6 ++-- .../src/main/res/values-el-rGR/arrays.xml | 6 ++-- .../src/main/res/values-el-rGR/strings.xml | 6 ++-- .../src/main/res/values-en-rUS/arrays.xml | 6 ++-- .../src/main/res/values-en-rUS/strings.xml | 6 ++-- .../src/main/res/values-es-rES/arrays.xml | 6 ++-- .../src/main/res/values-es-rES/strings.xml | 6 ++-- .../src/main/res/values-es-rXA/arrays.xml | 6 ++-- .../src/main/res/values-es-rXA/strings.xml | 6 ++-- .../src/main/res/values-eu-rES/arrays.xml | 6 ++-- .../src/main/res/values-eu-rES/strings.xml | 6 ++-- .../src/main/res/values-fa-rIR/arrays.xml | 6 ++-- .../src/main/res/values-fa-rIR/strings.xml | 6 ++-- .../src/main/res/values-fr-rFR/arrays.xml | 6 ++-- .../src/main/res/values-fr-rFR/strings.xml | 6 ++-- .../src/main/res/values-gl-rES/arrays.xml | 6 ++-- .../src/main/res/values-gl-rES/strings.xml | 6 ++-- omniNotes/src/main/res/values-hdpi/dimens.xml | 4 +-- .../src/main/res/values-hi-rIN/arrays.xml | 6 ++-- .../src/main/res/values-hi-rIN/strings.xml | 6 ++-- .../src/main/res/values-hr-rHR/arrays.xml | 6 ++-- .../src/main/res/values-hr-rHR/strings.xml | 6 ++-- .../src/main/res/values-hu-rHU/arrays.xml | 6 ++-- .../src/main/res/values-hu-rHU/strings.xml | 6 ++-- .../src/main/res/values-in-rID/arrays.xml | 6 ++-- .../src/main/res/values-in-rID/strings.xml | 6 ++-- .../src/main/res/values-it-rIT/arrays.xml | 6 ++-- .../src/main/res/values-it-rIT/strings.xml | 6 ++-- .../src/main/res/values-iw-rIL/arrays.xml | 6 ++-- .../src/main/res/values-iw-rIL/strings.xml | 6 ++-- .../src/main/res/values-ja-rJP/arrays.xml | 6 ++-- .../src/main/res/values-ja-rJP/strings.xml | 6 ++-- .../src/main/res/values-km-rKH/arrays.xml | 6 ++-- .../src/main/res/values-km-rKH/strings.xml | 6 ++-- .../src/main/res/values-land-v19/bools.xml | 4 +-- omniNotes/src/main/res/values-land/dimens.xml | 4 +-- .../src/main/res/values-lo-rLA/arrays.xml | 6 ++-- .../src/main/res/values-lo-rLA/strings.xml | 6 ++-- .../src/main/res/values-lv-rLV/arrays.xml | 6 ++-- .../src/main/res/values-lv-rLV/strings.xml | 6 ++-- .../src/main/res/values-nl-rNL/arrays.xml | 6 ++-- .../src/main/res/values-nl-rNL/strings.xml | 6 ++-- .../src/main/res/values-pl-rPL/arrays.xml | 6 ++-- .../src/main/res/values-pl-rPL/strings.xml | 6 ++-- .../src/main/res/values-pt-rBR/arrays.xml | 6 ++-- .../src/main/res/values-pt-rBR/strings.xml | 6 ++-- .../src/main/res/values-pt-rPT/arrays.xml | 6 ++-- .../src/main/res/values-pt-rPT/strings.xml | 6 ++-- .../src/main/res/values-ru-rRU/arrays.xml | 6 ++-- .../src/main/res/values-ru-rRU/strings.xml | 6 ++-- .../src/main/res/values-sk-rSK/arrays.xml | 6 ++-- .../src/main/res/values-sk-rSK/strings.xml | 6 ++-- .../src/main/res/values-sl-rSI/arrays.xml | 6 ++-- .../src/main/res/values-sl-rSI/strings.xml | 6 ++-- .../src/main/res/values-sr-rSP/arrays.xml | 6 ++-- .../src/main/res/values-sr-rSP/strings.xml | 6 ++-- .../src/main/res/values-sv-rSE/arrays.xml | 6 ++-- .../src/main/res/values-sv-rSE/strings.xml | 6 ++-- .../src/main/res/values-sw360dp/dimens.xml | 19 +++++++++++- .../src/main/res/values-sw384dp/dimens.xml | 19 +++++++++++- .../main/res/values-sw600dp-land/dimens.xml | 2 +- .../src/main/res/values-sw600dp/dimens.xml | 2 +- .../src/main/res/values-sw600dp/integers.xml | 4 +-- .../res/values-sw720dp-land-v19/dimens.xml | 2 +- .../res/values-sw720dp-land-v21/dimens.xml | 2 +- .../main/res/values-sw720dp-land/dimens.xml | 2 +- .../src/main/res/values-tr-rTR/arrays.xml | 6 ++-- .../src/main/res/values-tr-rTR/strings.xml | 6 ++-- .../src/main/res/values-uk-rUA/arrays.xml | 6 ++-- .../src/main/res/values-uk-rUA/strings.xml | 6 ++-- omniNotes/src/main/res/values-v19/bools.xml | 4 +-- omniNotes/src/main/res/values-v19/dimens.xml | 4 +-- omniNotes/src/main/res/values-v19/styles.xml | 2 +- omniNotes/src/main/res/values-v21/styles.xml | 2 +- omniNotes/src/main/res/values-v23/styles.xml | 2 +- .../src/main/res/values-xhdpi/dimens.xml | 4 +-- .../src/main/res/values-zh-rCN/arrays.xml | 6 ++-- .../src/main/res/values-zh-rCN/strings.xml | 6 ++-- .../src/main/res/values-zh-rTW/arrays.xml | 6 ++-- .../src/main/res/values-zh-rTW/strings.xml | 6 ++-- omniNotes/src/main/res/values/analytics.xml | 2 +- omniNotes/src/main/res/values/arrays.xml | 2 +- omniNotes/src/main/res/values/colors.xml | 2 +- omniNotes/src/main/res/values/dimens.xml | 2 +- omniNotes/src/main/res/values/integers.xml | 2 +- omniNotes/src/main/res/values/strings.xml | 2 +- omniNotes/src/main/res/values/styles.xml | 2 +- omniNotes/src/main/res/xml/appwidget_list.xml | 4 +-- .../src/main/res/xml/appwidget_simple.xml | 4 +-- omniNotes/src/main/res/xml/searchable.xml | 2 +- omniNotes/src/main/res/xml/settings.xml | 4 +-- .../src/main/res/xml/settings_behaviors.xml | 2 +- omniNotes/src/main/res/xml/settings_data.xml | 29 ++++++++++--------- .../src/main/res/xml/settings_interface.xml | 2 +- .../src/main/res/xml/settings_navigation.xml | 2 +- .../main/res/xml/settings_notifications.xml | 2 +- .../src/main/res/xml/settings_privacy.xml | 4 +-- .../res/xml/settings_sync_import_export.xml | 2 +- .../helpers/GeoCodeProviderFactory.java | 19 +++++++++++- .../android/omninotes/utils/Constants.java | 4 +-- omniNotes/src/play/res/values/strings.xml | 2 +- .../android/omninotes/ResourceAwareTest.java | 4 +-- .../omninotes/helpers/NotesHelperTest.java | 4 +-- .../omninotes/utils/TagsHelperTest.java | 4 +-- .../omninotes/utils/date/DateUtilsTest.java | 4 +-- project.properties | 4 +-- settings.gradle | 2 +- sonar-project.properties | 2 +- 370 files changed, 1428 insertions(+), 538 deletions(-) diff --git a/build.gradle b/build.gradle index 15593172d6..8679eef6dc 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015 Federico Iosue (federico.iosue@gmail.com) + * Copyright (C) 2018 Federico Iosue (federico.iosue@gmail.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/etc/translations/arrays.xml b/etc/translations/arrays.xml index 38233db88d..81ffa8992b 100644 --- a/etc/translations/arrays.xml +++ b/etc/translations/arrays.xml @@ -1,6 +1,6 @@ + - \ No newline at end of file + diff --git a/omniNotes/src/main/res/drawable/circle.xml b/omniNotes/src/main/res/drawable/circle.xml index 0fbf0bf911..2d78ced982 100644 --- a/omniNotes/src/main/res/drawable/circle.xml +++ b/omniNotes/src/main/res/drawable/circle.xml @@ -1,6 +1,6 @@ + - \ No newline at end of file + diff --git a/omniNotes/src/main/res/drawable/ic_access_time_black_24px.xml b/omniNotes/src/main/res/drawable/ic_access_time_black_24px.xml index 1ac9c48040..06fe2a8647 100644 --- a/omniNotes/src/main/res/drawable/ic_access_time_black_24px.xml +++ b/omniNotes/src/main/res/drawable/ic_access_time_black_24px.xml @@ -1,3 +1,20 @@ + + > - \ No newline at end of file + diff --git a/omniNotes/src/main/res/drawable/list_selector_pressed.xml b/omniNotes/src/main/res/drawable/list_selector_pressed.xml index 2203dd5fad..7faddee9f3 100644 --- a/omniNotes/src/main/res/drawable/list_selector_pressed.xml +++ b/omniNotes/src/main/res/drawable/list_selector_pressed.xml @@ -1,5 +1,5 @@ > - \ No newline at end of file + diff --git a/omniNotes/src/main/res/drawable/note_selector.xml b/omniNotes/src/main/res/drawable/note_selector.xml index 8eeea8e2ef..92a4a4d99d 100644 --- a/omniNotes/src/main/res/drawable/note_selector.xml +++ b/omniNotes/src/main/res/drawable/note_selector.xml @@ -1,6 +1,6 @@ - \ No newline at end of file + diff --git a/omniNotes/src/main/res/drawable/square.xml b/omniNotes/src/main/res/drawable/square.xml index 5b29c17da2..83e56778c4 100644 --- a/omniNotes/src/main/res/drawable/square.xml +++ b/omniNotes/src/main/res/drawable/square.xml @@ -1,6 +1,6 @@ + \ No newline at end of file + android:textAppearance="?android:attr/textAppearanceListItemSmall" /> diff --git a/omniNotes/src/main/res/layout/activity_about.xml b/omniNotes/src/main/res/layout/activity_about.xml index 76f01ff3fd..d7c8b8d84a 100644 --- a/omniNotes/src/main/res/layout/activity_about.xml +++ b/omniNotes/src/main/res/layout/activity_about.xml @@ -1,6 +1,6 @@ + - \ No newline at end of file + diff --git a/omniNotes/src/main/res/layout/activity_stats.xml b/omniNotes/src/main/res/layout/activity_stats.xml index 2fcde673ad..22d960db9d 100644 --- a/omniNotes/src/main/res/layout/activity_stats.xml +++ b/omniNotes/src/main/res/layout/activity_stats.xml @@ -1,6 +1,6 @@ + - \ No newline at end of file + diff --git a/omniNotes/src/main/res/layout/fragment_list.xml b/omniNotes/src/main/res/layout/fragment_list.xml index f5f5560727..c2572d754b 100644 --- a/omniNotes/src/main/res/layout/fragment_list.xml +++ b/omniNotes/src/main/res/layout/fragment_list.xml @@ -1,5 +1,5 @@ + - \ No newline at end of file + diff --git a/omniNotes/src/main/res/layout/intro_slide_communities.xml b/omniNotes/src/main/res/layout/intro_slide_communities.xml index 9d84efc29b..3cde5b74d3 100644 --- a/omniNotes/src/main/res/layout/intro_slide_communities.xml +++ b/omniNotes/src/main/res/layout/intro_slide_communities.xml @@ -4,7 +4,7 @@ ~ ~ This program is free software: you can redistribute it and/or modify ~ it under the terms of the GNU General Public License as published by - ~ the Free Software Foundatibehaon, either version 3 of the License, or + ~ 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, diff --git a/omniNotes/src/main/res/layout/note_layout.xml b/omniNotes/src/main/res/layout/note_layout.xml index 7617f600c9..52e49a16bd 100644 --- a/omniNotes/src/main/res/layout/note_layout.xml +++ b/omniNotes/src/main/res/layout/note_layout.xml @@ -1,6 +1,6 @@ + + + + + + نقط diff --git a/omniNotes/src/main/res/values-ar-rSA/strings.xml b/omniNotes/src/main/res/values-ar-rSA/strings.xml index 3ab86151c1..a1f5da890b 100644 --- a/omniNotes/src/main/res/values-ar-rSA/strings.xml +++ b/omniNotes/src/main/res/values-ar-rSA/strings.xml @@ -1,7 +1,6 @@ - + + + ملاحظات diff --git a/omniNotes/src/main/res/values-ca-rES/arrays.xml b/omniNotes/src/main/res/values-ca-rES/arrays.xml index 8e61fe84ae..f19a9b13c4 100644 --- a/omniNotes/src/main/res/values-ca-rES/arrays.xml +++ b/omniNotes/src/main/res/values-ca-rES/arrays.xml @@ -1,7 +1,6 @@ - + + + Notes diff --git a/omniNotes/src/main/res/values-ca-rES/strings.xml b/omniNotes/src/main/res/values-ca-rES/strings.xml index 4a48e4a705..a5296688c0 100644 --- a/omniNotes/src/main/res/values-ca-rES/strings.xml +++ b/omniNotes/src/main/res/values-ca-rES/strings.xml @@ -1,7 +1,6 @@ - + + + Notes diff --git a/omniNotes/src/main/res/values-cs-rCZ/arrays.xml b/omniNotes/src/main/res/values-cs-rCZ/arrays.xml index f7264c73a7..a3383eb806 100644 --- a/omniNotes/src/main/res/values-cs-rCZ/arrays.xml +++ b/omniNotes/src/main/res/values-cs-rCZ/arrays.xml @@ -1,7 +1,6 @@ - + + + Poznámky diff --git a/omniNotes/src/main/res/values-cs-rCZ/strings.xml b/omniNotes/src/main/res/values-cs-rCZ/strings.xml index 2c02e54929..f84a22072a 100644 --- a/omniNotes/src/main/res/values-cs-rCZ/strings.xml +++ b/omniNotes/src/main/res/values-cs-rCZ/strings.xml @@ -1,7 +1,6 @@ - + + + Poznámky diff --git a/omniNotes/src/main/res/values-de-rDE/arrays.xml b/omniNotes/src/main/res/values-de-rDE/arrays.xml index 0062b8243d..b4f8ccfc7c 100644 --- a/omniNotes/src/main/res/values-de-rDE/arrays.xml +++ b/omniNotes/src/main/res/values-de-rDE/arrays.xml @@ -1,7 +1,6 @@ - + + + Notizen diff --git a/omniNotes/src/main/res/values-de-rDE/strings.xml b/omniNotes/src/main/res/values-de-rDE/strings.xml index e66329ce41..73cebca79f 100644 --- a/omniNotes/src/main/res/values-de-rDE/strings.xml +++ b/omniNotes/src/main/res/values-de-rDE/strings.xml @@ -1,7 +1,6 @@ - + + + Notizen diff --git a/omniNotes/src/main/res/values-el-rGR/arrays.xml b/omniNotes/src/main/res/values-el-rGR/arrays.xml index c325869484..22f371ee0c 100644 --- a/omniNotes/src/main/res/values-el-rGR/arrays.xml +++ b/omniNotes/src/main/res/values-el-rGR/arrays.xml @@ -1,7 +1,6 @@ - + + + Σημειώσεις diff --git a/omniNotes/src/main/res/values-el-rGR/strings.xml b/omniNotes/src/main/res/values-el-rGR/strings.xml index 445d1a1604..c794b92cef 100644 --- a/omniNotes/src/main/res/values-el-rGR/strings.xml +++ b/omniNotes/src/main/res/values-el-rGR/strings.xml @@ -1,7 +1,6 @@ - + + + Σημειώσεις diff --git a/omniNotes/src/main/res/values-en-rUS/arrays.xml b/omniNotes/src/main/res/values-en-rUS/arrays.xml index 700cb9cc69..c22f42a0ab 100644 --- a/omniNotes/src/main/res/values-en-rUS/arrays.xml +++ b/omniNotes/src/main/res/values-en-rUS/arrays.xml @@ -1,7 +1,6 @@ - + + + Notes diff --git a/omniNotes/src/main/res/values-en-rUS/strings.xml b/omniNotes/src/main/res/values-en-rUS/strings.xml index 91497978be..ddabaaeab2 100644 --- a/omniNotes/src/main/res/values-en-rUS/strings.xml +++ b/omniNotes/src/main/res/values-en-rUS/strings.xml @@ -1,7 +1,6 @@ - + + + Notes diff --git a/omniNotes/src/main/res/values-es-rES/arrays.xml b/omniNotes/src/main/res/values-es-rES/arrays.xml index 07efa04d9f..1f41ffba97 100644 --- a/omniNotes/src/main/res/values-es-rES/arrays.xml +++ b/omniNotes/src/main/res/values-es-rES/arrays.xml @@ -1,7 +1,6 @@ - + + + Notas diff --git a/omniNotes/src/main/res/values-es-rES/strings.xml b/omniNotes/src/main/res/values-es-rES/strings.xml index aab4b5d58f..623e0e1469 100644 --- a/omniNotes/src/main/res/values-es-rES/strings.xml +++ b/omniNotes/src/main/res/values-es-rES/strings.xml @@ -1,7 +1,6 @@ - + + + Notas diff --git a/omniNotes/src/main/res/values-es-rXA/arrays.xml b/omniNotes/src/main/res/values-es-rXA/arrays.xml index 25651e90ae..4e07fedccf 100644 --- a/omniNotes/src/main/res/values-es-rXA/arrays.xml +++ b/omniNotes/src/main/res/values-es-rXA/arrays.xml @@ -1,7 +1,6 @@ - + + + Notes diff --git a/omniNotes/src/main/res/values-es-rXA/strings.xml b/omniNotes/src/main/res/values-es-rXA/strings.xml index e78e32bf4f..496acccfa4 100644 --- a/omniNotes/src/main/res/values-es-rXA/strings.xml +++ b/omniNotes/src/main/res/values-es-rXA/strings.xml @@ -1,7 +1,6 @@ - + + + Notes diff --git a/omniNotes/src/main/res/values-eu-rES/arrays.xml b/omniNotes/src/main/res/values-eu-rES/arrays.xml index 12372170cf..d101a158f3 100644 --- a/omniNotes/src/main/res/values-eu-rES/arrays.xml +++ b/omniNotes/src/main/res/values-eu-rES/arrays.xml @@ -1,7 +1,6 @@ - + + + Oharrak diff --git a/omniNotes/src/main/res/values-eu-rES/strings.xml b/omniNotes/src/main/res/values-eu-rES/strings.xml index 4c26f04e74..dcab2e418c 100644 --- a/omniNotes/src/main/res/values-eu-rES/strings.xml +++ b/omniNotes/src/main/res/values-eu-rES/strings.xml @@ -1,7 +1,6 @@ - + + + Oharrak diff --git a/omniNotes/src/main/res/values-fa-rIR/arrays.xml b/omniNotes/src/main/res/values-fa-rIR/arrays.xml index 6f5f97c4bc..258d405721 100644 --- a/omniNotes/src/main/res/values-fa-rIR/arrays.xml +++ b/omniNotes/src/main/res/values-fa-rIR/arrays.xml @@ -1,7 +1,6 @@ - + + + \"یادداشت‌ها\" diff --git a/omniNotes/src/main/res/values-fa-rIR/strings.xml b/omniNotes/src/main/res/values-fa-rIR/strings.xml index 0d38757fe5..4eb6dd0678 100644 --- a/omniNotes/src/main/res/values-fa-rIR/strings.xml +++ b/omniNotes/src/main/res/values-fa-rIR/strings.xml @@ -1,7 +1,6 @@ - + + + یادداشت‌ها diff --git a/omniNotes/src/main/res/values-fr-rFR/arrays.xml b/omniNotes/src/main/res/values-fr-rFR/arrays.xml index 2009e4e44f..9320ed4050 100644 --- a/omniNotes/src/main/res/values-fr-rFR/arrays.xml +++ b/omniNotes/src/main/res/values-fr-rFR/arrays.xml @@ -1,7 +1,6 @@ - + + + Notes diff --git a/omniNotes/src/main/res/values-fr-rFR/strings.xml b/omniNotes/src/main/res/values-fr-rFR/strings.xml index 6559eee327..e9ae6c8d69 100644 --- a/omniNotes/src/main/res/values-fr-rFR/strings.xml +++ b/omniNotes/src/main/res/values-fr-rFR/strings.xml @@ -1,7 +1,6 @@ - + + + Notes diff --git a/omniNotes/src/main/res/values-gl-rES/arrays.xml b/omniNotes/src/main/res/values-gl-rES/arrays.xml index 106aab0b2c..78b283155d 100644 --- a/omniNotes/src/main/res/values-gl-rES/arrays.xml +++ b/omniNotes/src/main/res/values-gl-rES/arrays.xml @@ -1,7 +1,6 @@ - + + + Notas diff --git a/omniNotes/src/main/res/values-gl-rES/strings.xml b/omniNotes/src/main/res/values-gl-rES/strings.xml index 2df3220a55..232cbd8569 100644 --- a/omniNotes/src/main/res/values-gl-rES/strings.xml +++ b/omniNotes/src/main/res/values-gl-rES/strings.xml @@ -1,7 +1,6 @@ - + + + Notas diff --git a/omniNotes/src/main/res/values-hdpi/dimens.xml b/omniNotes/src/main/res/values-hdpi/dimens.xml index 8e311cc060..626b2b0b37 100644 --- a/omniNotes/src/main/res/values-hdpi/dimens.xml +++ b/omniNotes/src/main/res/values-hdpi/dimens.xml @@ -1,5 +1,5 @@ + + + नोट्स diff --git a/omniNotes/src/main/res/values-hi-rIN/strings.xml b/omniNotes/src/main/res/values-hi-rIN/strings.xml index 347611fa35..91a81708c8 100644 --- a/omniNotes/src/main/res/values-hi-rIN/strings.xml +++ b/omniNotes/src/main/res/values-hi-rIN/strings.xml @@ -1,7 +1,6 @@ - + + + नोट्स diff --git a/omniNotes/src/main/res/values-hr-rHR/arrays.xml b/omniNotes/src/main/res/values-hr-rHR/arrays.xml index 7e28aa5d2e..9d05baa214 100644 --- a/omniNotes/src/main/res/values-hr-rHR/arrays.xml +++ b/omniNotes/src/main/res/values-hr-rHR/arrays.xml @@ -1,7 +1,6 @@ - + + + Bilješke diff --git a/omniNotes/src/main/res/values-hr-rHR/strings.xml b/omniNotes/src/main/res/values-hr-rHR/strings.xml index ec9d73fcfa..e2d729eb02 100644 --- a/omniNotes/src/main/res/values-hr-rHR/strings.xml +++ b/omniNotes/src/main/res/values-hr-rHR/strings.xml @@ -1,7 +1,6 @@ - + + + Bilješke diff --git a/omniNotes/src/main/res/values-hu-rHU/arrays.xml b/omniNotes/src/main/res/values-hu-rHU/arrays.xml index 64c6151d1f..982d11c887 100644 --- a/omniNotes/src/main/res/values-hu-rHU/arrays.xml +++ b/omniNotes/src/main/res/values-hu-rHU/arrays.xml @@ -1,7 +1,6 @@ - + + + Jegyzetek diff --git a/omniNotes/src/main/res/values-hu-rHU/strings.xml b/omniNotes/src/main/res/values-hu-rHU/strings.xml index ed12716896..1467dfe611 100644 --- a/omniNotes/src/main/res/values-hu-rHU/strings.xml +++ b/omniNotes/src/main/res/values-hu-rHU/strings.xml @@ -1,7 +1,6 @@ - + + + Jegyzetek diff --git a/omniNotes/src/main/res/values-in-rID/arrays.xml b/omniNotes/src/main/res/values-in-rID/arrays.xml index b3ee152e21..41552a0a7b 100644 --- a/omniNotes/src/main/res/values-in-rID/arrays.xml +++ b/omniNotes/src/main/res/values-in-rID/arrays.xml @@ -1,7 +1,6 @@ - + + + Catatan diff --git a/omniNotes/src/main/res/values-in-rID/strings.xml b/omniNotes/src/main/res/values-in-rID/strings.xml index 26e567b670..72d39d18a0 100644 --- a/omniNotes/src/main/res/values-in-rID/strings.xml +++ b/omniNotes/src/main/res/values-in-rID/strings.xml @@ -1,7 +1,6 @@ - + + + Catatan diff --git a/omniNotes/src/main/res/values-it-rIT/arrays.xml b/omniNotes/src/main/res/values-it-rIT/arrays.xml index c64d798fad..d4e0b4846e 100644 --- a/omniNotes/src/main/res/values-it-rIT/arrays.xml +++ b/omniNotes/src/main/res/values-it-rIT/arrays.xml @@ -1,7 +1,6 @@ - + + + Note diff --git a/omniNotes/src/main/res/values-it-rIT/strings.xml b/omniNotes/src/main/res/values-it-rIT/strings.xml index 971ac16063..b5913842bd 100644 --- a/omniNotes/src/main/res/values-it-rIT/strings.xml +++ b/omniNotes/src/main/res/values-it-rIT/strings.xml @@ -1,7 +1,6 @@ - + + + Note diff --git a/omniNotes/src/main/res/values-iw-rIL/arrays.xml b/omniNotes/src/main/res/values-iw-rIL/arrays.xml index b1e200687b..a13a16fe2c 100644 --- a/omniNotes/src/main/res/values-iw-rIL/arrays.xml +++ b/omniNotes/src/main/res/values-iw-rIL/arrays.xml @@ -1,7 +1,6 @@ - + + + הערות diff --git a/omniNotes/src/main/res/values-iw-rIL/strings.xml b/omniNotes/src/main/res/values-iw-rIL/strings.xml index 1e7d65f9e0..26eea4a9ee 100644 --- a/omniNotes/src/main/res/values-iw-rIL/strings.xml +++ b/omniNotes/src/main/res/values-iw-rIL/strings.xml @@ -1,7 +1,6 @@ - + + + הערות diff --git a/omniNotes/src/main/res/values-ja-rJP/arrays.xml b/omniNotes/src/main/res/values-ja-rJP/arrays.xml index 103624ad3c..d9a579cc9e 100644 --- a/omniNotes/src/main/res/values-ja-rJP/arrays.xml +++ b/omniNotes/src/main/res/values-ja-rJP/arrays.xml @@ -1,7 +1,6 @@ - + + + ノート diff --git a/omniNotes/src/main/res/values-ja-rJP/strings.xml b/omniNotes/src/main/res/values-ja-rJP/strings.xml index aece2e70fa..acc55fa741 100644 --- a/omniNotes/src/main/res/values-ja-rJP/strings.xml +++ b/omniNotes/src/main/res/values-ja-rJP/strings.xml @@ -1,7 +1,6 @@ - + + + ノート diff --git a/omniNotes/src/main/res/values-km-rKH/arrays.xml b/omniNotes/src/main/res/values-km-rKH/arrays.xml index 2d974ac518..5fb5d6c358 100644 --- a/omniNotes/src/main/res/values-km-rKH/arrays.xml +++ b/omniNotes/src/main/res/values-km-rKH/arrays.xml @@ -1,7 +1,6 @@ - + + + កំណត់ហេតុ diff --git a/omniNotes/src/main/res/values-km-rKH/strings.xml b/omniNotes/src/main/res/values-km-rKH/strings.xml index fc52326c3c..832f9f8355 100644 --- a/omniNotes/src/main/res/values-km-rKH/strings.xml +++ b/omniNotes/src/main/res/values-km-rKH/strings.xml @@ -1,7 +1,6 @@ - + + + កំណត់ត្រា diff --git a/omniNotes/src/main/res/values-land-v19/bools.xml b/omniNotes/src/main/res/values-land-v19/bools.xml index ef58e34eac..9ff55f6cb2 100644 --- a/omniNotes/src/main/res/values-land-v19/bools.xml +++ b/omniNotes/src/main/res/values-land-v19/bools.xml @@ -1,6 +1,6 @@ + + + ບັນທຶກ diff --git a/omniNotes/src/main/res/values-lo-rLA/strings.xml b/omniNotes/src/main/res/values-lo-rLA/strings.xml index 4492098268..3ef41e4dda 100644 --- a/omniNotes/src/main/res/values-lo-rLA/strings.xml +++ b/omniNotes/src/main/res/values-lo-rLA/strings.xml @@ -1,7 +1,6 @@ - + + + ບັນທຶກ diff --git a/omniNotes/src/main/res/values-lv-rLV/arrays.xml b/omniNotes/src/main/res/values-lv-rLV/arrays.xml index 60688d2878..3844c06745 100644 --- a/omniNotes/src/main/res/values-lv-rLV/arrays.xml +++ b/omniNotes/src/main/res/values-lv-rLV/arrays.xml @@ -1,7 +1,6 @@ - + + + Piezīmes diff --git a/omniNotes/src/main/res/values-lv-rLV/strings.xml b/omniNotes/src/main/res/values-lv-rLV/strings.xml index 23be612bd0..52e3ab3676 100644 --- a/omniNotes/src/main/res/values-lv-rLV/strings.xml +++ b/omniNotes/src/main/res/values-lv-rLV/strings.xml @@ -1,7 +1,6 @@ - + + + Piezīmes diff --git a/omniNotes/src/main/res/values-nl-rNL/arrays.xml b/omniNotes/src/main/res/values-nl-rNL/arrays.xml index 53a448145a..fd23d13107 100644 --- a/omniNotes/src/main/res/values-nl-rNL/arrays.xml +++ b/omniNotes/src/main/res/values-nl-rNL/arrays.xml @@ -1,7 +1,6 @@ - + + + Notities diff --git a/omniNotes/src/main/res/values-nl-rNL/strings.xml b/omniNotes/src/main/res/values-nl-rNL/strings.xml index f60c5c7189..7895dc644e 100644 --- a/omniNotes/src/main/res/values-nl-rNL/strings.xml +++ b/omniNotes/src/main/res/values-nl-rNL/strings.xml @@ -1,7 +1,6 @@ - + + + Notities diff --git a/omniNotes/src/main/res/values-pl-rPL/arrays.xml b/omniNotes/src/main/res/values-pl-rPL/arrays.xml index e3367ed028..62bf49d133 100644 --- a/omniNotes/src/main/res/values-pl-rPL/arrays.xml +++ b/omniNotes/src/main/res/values-pl-rPL/arrays.xml @@ -1,7 +1,6 @@ - + + + Notes diff --git a/omniNotes/src/main/res/values-pl-rPL/strings.xml b/omniNotes/src/main/res/values-pl-rPL/strings.xml index 9c630611f8..6620b6aff1 100644 --- a/omniNotes/src/main/res/values-pl-rPL/strings.xml +++ b/omniNotes/src/main/res/values-pl-rPL/strings.xml @@ -1,7 +1,6 @@ - + + + Notes diff --git a/omniNotes/src/main/res/values-pt-rBR/arrays.xml b/omniNotes/src/main/res/values-pt-rBR/arrays.xml index d7f281975d..0f963ef6a1 100644 --- a/omniNotes/src/main/res/values-pt-rBR/arrays.xml +++ b/omniNotes/src/main/res/values-pt-rBR/arrays.xml @@ -1,7 +1,6 @@ - + + + Notas diff --git a/omniNotes/src/main/res/values-pt-rBR/strings.xml b/omniNotes/src/main/res/values-pt-rBR/strings.xml index b537436e15..ceefb4878c 100644 --- a/omniNotes/src/main/res/values-pt-rBR/strings.xml +++ b/omniNotes/src/main/res/values-pt-rBR/strings.xml @@ -1,7 +1,6 @@ - + + + Notas diff --git a/omniNotes/src/main/res/values-pt-rPT/arrays.xml b/omniNotes/src/main/res/values-pt-rPT/arrays.xml index d09adf2a4b..aa73c84543 100644 --- a/omniNotes/src/main/res/values-pt-rPT/arrays.xml +++ b/omniNotes/src/main/res/values-pt-rPT/arrays.xml @@ -1,7 +1,6 @@ - + + + Notas diff --git a/omniNotes/src/main/res/values-pt-rPT/strings.xml b/omniNotes/src/main/res/values-pt-rPT/strings.xml index 5357e5ef04..74504ccf31 100644 --- a/omniNotes/src/main/res/values-pt-rPT/strings.xml +++ b/omniNotes/src/main/res/values-pt-rPT/strings.xml @@ -1,7 +1,6 @@ - + + + Notas diff --git a/omniNotes/src/main/res/values-ru-rRU/arrays.xml b/omniNotes/src/main/res/values-ru-rRU/arrays.xml index 5510dc8857..198b0d1eac 100644 --- a/omniNotes/src/main/res/values-ru-rRU/arrays.xml +++ b/omniNotes/src/main/res/values-ru-rRU/arrays.xml @@ -1,7 +1,6 @@ - + + + Заметки diff --git a/omniNotes/src/main/res/values-ru-rRU/strings.xml b/omniNotes/src/main/res/values-ru-rRU/strings.xml index 77539aca03..934d47dad8 100644 --- a/omniNotes/src/main/res/values-ru-rRU/strings.xml +++ b/omniNotes/src/main/res/values-ru-rRU/strings.xml @@ -1,7 +1,6 @@ - + + + Заметки diff --git a/omniNotes/src/main/res/values-sk-rSK/arrays.xml b/omniNotes/src/main/res/values-sk-rSK/arrays.xml index 3fe4ed3ee6..286e28db97 100644 --- a/omniNotes/src/main/res/values-sk-rSK/arrays.xml +++ b/omniNotes/src/main/res/values-sk-rSK/arrays.xml @@ -1,7 +1,6 @@ - + + + Poznámky diff --git a/omniNotes/src/main/res/values-sk-rSK/strings.xml b/omniNotes/src/main/res/values-sk-rSK/strings.xml index 12bd139723..5fc2760bd7 100644 --- a/omniNotes/src/main/res/values-sk-rSK/strings.xml +++ b/omniNotes/src/main/res/values-sk-rSK/strings.xml @@ -1,7 +1,6 @@ - + + + Poznámky diff --git a/omniNotes/src/main/res/values-sl-rSI/arrays.xml b/omniNotes/src/main/res/values-sl-rSI/arrays.xml index 702f6640ec..68b4e403b5 100644 --- a/omniNotes/src/main/res/values-sl-rSI/arrays.xml +++ b/omniNotes/src/main/res/values-sl-rSI/arrays.xml @@ -1,7 +1,6 @@ - + + + Beležke diff --git a/omniNotes/src/main/res/values-sl-rSI/strings.xml b/omniNotes/src/main/res/values-sl-rSI/strings.xml index a0530b10a4..4c1363ad2d 100644 --- a/omniNotes/src/main/res/values-sl-rSI/strings.xml +++ b/omniNotes/src/main/res/values-sl-rSI/strings.xml @@ -1,7 +1,6 @@ - + + + Beležke diff --git a/omniNotes/src/main/res/values-sr-rSP/arrays.xml b/omniNotes/src/main/res/values-sr-rSP/arrays.xml index 402c168232..0e2c17b54c 100644 --- a/omniNotes/src/main/res/values-sr-rSP/arrays.xml +++ b/omniNotes/src/main/res/values-sr-rSP/arrays.xml @@ -1,7 +1,6 @@ - + + + Белешке diff --git a/omniNotes/src/main/res/values-sr-rSP/strings.xml b/omniNotes/src/main/res/values-sr-rSP/strings.xml index d645fbc388..cc47c2ebc0 100644 --- a/omniNotes/src/main/res/values-sr-rSP/strings.xml +++ b/omniNotes/src/main/res/values-sr-rSP/strings.xml @@ -1,7 +1,6 @@ - + + + Белешке diff --git a/omniNotes/src/main/res/values-sv-rSE/arrays.xml b/omniNotes/src/main/res/values-sv-rSE/arrays.xml index 3978239008..324e61c9ae 100644 --- a/omniNotes/src/main/res/values-sv-rSE/arrays.xml +++ b/omniNotes/src/main/res/values-sv-rSE/arrays.xml @@ -1,7 +1,6 @@ - + + + Anteckningar diff --git a/omniNotes/src/main/res/values-sv-rSE/strings.xml b/omniNotes/src/main/res/values-sv-rSE/strings.xml index 8c8a2a5d5d..bcf63f704e 100644 --- a/omniNotes/src/main/res/values-sv-rSE/strings.xml +++ b/omniNotes/src/main/res/values-sv-rSE/strings.xml @@ -1,7 +1,6 @@ - + + + Anteckningar diff --git a/omniNotes/src/main/res/values-sw360dp/dimens.xml b/omniNotes/src/main/res/values-sw360dp/dimens.xml index a3d1d52a14..5ee10dd7ac 100644 --- a/omniNotes/src/main/res/values-sw360dp/dimens.xml +++ b/omniNotes/src/main/res/values-sw360dp/dimens.xml @@ -1,4 +1,21 @@ + + 304dp - \ No newline at end of file + diff --git a/omniNotes/src/main/res/values-sw384dp/dimens.xml b/omniNotes/src/main/res/values-sw384dp/dimens.xml index e2b38dc8a5..4314fd6519 100644 --- a/omniNotes/src/main/res/values-sw384dp/dimens.xml +++ b/omniNotes/src/main/res/values-sw384dp/dimens.xml @@ -1,4 +1,21 @@ + + 320dp - \ No newline at end of file + diff --git a/omniNotes/src/main/res/values-sw600dp-land/dimens.xml b/omniNotes/src/main/res/values-sw600dp-land/dimens.xml index 54db344508..b6d42c5d18 100644 --- a/omniNotes/src/main/res/values-sw600dp-land/dimens.xml +++ b/omniNotes/src/main/res/values-sw600dp-land/dimens.xml @@ -1,5 +1,5 @@ + + + Notlar diff --git a/omniNotes/src/main/res/values-tr-rTR/strings.xml b/omniNotes/src/main/res/values-tr-rTR/strings.xml index 7f44fd4ee4..431f5395ac 100644 --- a/omniNotes/src/main/res/values-tr-rTR/strings.xml +++ b/omniNotes/src/main/res/values-tr-rTR/strings.xml @@ -1,7 +1,6 @@ - + + + Notlar diff --git a/omniNotes/src/main/res/values-uk-rUA/arrays.xml b/omniNotes/src/main/res/values-uk-rUA/arrays.xml index b582a2bc20..9bc6795f00 100644 --- a/omniNotes/src/main/res/values-uk-rUA/arrays.xml +++ b/omniNotes/src/main/res/values-uk-rUA/arrays.xml @@ -1,7 +1,6 @@ - + + + Нотатки diff --git a/omniNotes/src/main/res/values-uk-rUA/strings.xml b/omniNotes/src/main/res/values-uk-rUA/strings.xml index 84ab9c9318..e1f0528110 100644 --- a/omniNotes/src/main/res/values-uk-rUA/strings.xml +++ b/omniNotes/src/main/res/values-uk-rUA/strings.xml @@ -1,7 +1,6 @@ - + + + Нотатки diff --git a/omniNotes/src/main/res/values-v19/bools.xml b/omniNotes/src/main/res/values-v19/bools.xml index 696941b504..c2fcb6d7a6 100644 --- a/omniNotes/src/main/res/values-v19/bools.xml +++ b/omniNotes/src/main/res/values-v19/bools.xml @@ -1,6 +1,6 @@ + + + 记事 diff --git a/omniNotes/src/main/res/values-zh-rCN/strings.xml b/omniNotes/src/main/res/values-zh-rCN/strings.xml index c338552c3b..6853b4e2ba 100644 --- a/omniNotes/src/main/res/values-zh-rCN/strings.xml +++ b/omniNotes/src/main/res/values-zh-rCN/strings.xml @@ -1,7 +1,6 @@ - + + + 记事 diff --git a/omniNotes/src/main/res/values-zh-rTW/arrays.xml b/omniNotes/src/main/res/values-zh-rTW/arrays.xml index ccd508e49b..63428091ee 100644 --- a/omniNotes/src/main/res/values-zh-rTW/arrays.xml +++ b/omniNotes/src/main/res/values-zh-rTW/arrays.xml @@ -1,7 +1,6 @@ - + + + 記事 diff --git a/omniNotes/src/main/res/values-zh-rTW/strings.xml b/omniNotes/src/main/res/values-zh-rTW/strings.xml index 04a87b356e..1611239900 100644 --- a/omniNotes/src/main/res/values-zh-rTW/strings.xml +++ b/omniNotes/src/main/res/values-zh-rTW/strings.xml @@ -1,7 +1,6 @@ - + + + 筆記 diff --git a/omniNotes/src/main/res/values/analytics.xml b/omniNotes/src/main/res/values/analytics.xml index a612686c23..2e30e0a06e 100644 --- a/omniNotes/src/main/res/values/analytics.xml +++ b/omniNotes/src/main/res/values/analytics.xml @@ -1,6 +1,6 @@ + ~ Copyright (C) 2018 Federico Iosue (federico.iosue@gmail.com) + ~ + ~ This program is free software: you can redistribute it and/or modify + ~ it under the terms of the GNU General Public License as published by + ~ the Free Software Foundation, either version 3 of the License, or + ~ (at your option) any later version. + ~ + ~ This program is distributed in the hope that it will be useful, + ~ but WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ~ GNU General Public License for more details. + ~ + ~ You should have received a copy of the GNU General Public License + ~ along with this program. If not, see . + --> diff --git a/omniNotes/src/main/res/xml/settings_interface.xml b/omniNotes/src/main/res/xml/settings_interface.xml index e46942d619..24c834ee53 100644 --- a/omniNotes/src/main/res/xml/settings_interface.xml +++ b/omniNotes/src/main/res/xml/settings_interface.xml @@ -1,5 +1,5 @@ عرض بعض الاحصائيات و المذكرات المنتهية من مدونات أومني إعدادات @@ -340,7 +342,7 @@ ملاحظات محذوفة التنبيهات تذكيرات مستقبلية - قوائم مرجعية + قوائم التدقيق ملاحظات مقفلة فئات الوسوم @@ -364,17 +366,17 @@ الإجراءات أنشئ ملاحظات جديدة ، رتبها أو تصفح الخيارات الملاحة - قائمة التصفح تتيح لك التنقل بين الملاحظات واستخدام المرشحات والوسوم + Navigation menu allows you to move through notes with filters and categories الوسوم - Add colored categories to organize notes at-a-glance + أضف تلوين الفئات لتنظيم الملاحظات بلمحة تحسين إضافة مرفق من عدة أنواع لملاحظاتك! القيام بالمزيد مشاركة، علامة، أرشيف، حماية، والمزيد… أنقر فقط - تحتلف الضغطة القصيرة على عنصر ما (المرفق ، المكان أو التنبيه) عن الضغطة الطويلة! + تختلف الضغطة القصيرة على عنصر ما (المرفق ، المكان أو التنبيه) عن الضغطة الطويلة! روابط - انقر فوق عنوان الويب أو البريد, لنسخه أو لفتحه + URL, e-mail addresses and telephone numbers recognition تمرير أنشئ ملاحظات جديدة\nدون ترك الملاحظة التي تحررها حالياً حفظ diff --git a/omniNotes/src/main/res/values-ca-rES/strings.xml b/omniNotes/src/main/res/values-ca-rES/strings.xml index a5296688c0..483491752d 100644 --- a/omniNotes/src/main/res/values-ca-rES/strings.xml +++ b/omniNotes/src/main/res/values-ca-rES/strings.xml @@ -195,7 +195,7 @@ Amaga les notes arxivades Mostra les notes arxivades Cal permís d\'escriptura a l\'emmagatzematge extern per crear còpies de seguretat en carpetes públiques - Permission to read on external storage is needed to allow attaching files from there + Cal permís per a llegir l\'emmagatzematge extern per a permetre adjuntar fitxers des d\'aquí Cal permís d\'ús del micròfon per a enregistrar notes d\'àudio Cal permís d\'accés a la ubicació per afegir la informació de la posició a les notes No s\'ha concedit el permís @@ -203,6 +203,8 @@ Nota de text Foto Llistes incompletes + Informació + Completades Mostra algunes estadístiques i recordatoris expirats de l\'Omni Notes Configuració @@ -362,7 +364,7 @@ Accions Creeu notes noves, ordeneu-les, accediu a les preferències Navega - El menú de navegació us permet moure per les notes amb filtres i etiquetes + El menú de navegació us permet moure per les notes amb filtres i categories Etiquetes Afegiu categories amb colors per organitzar les notes fàcilment Millora @@ -372,7 +374,7 @@ Només cal que pitgeu Un toc llarg té efectes diferents en un objecte (adjunt, ubicació, recordatori) que no pas un toc cur! Enllaços - Feu clic a l\'URL o adreça de correu, per copiar-lo o obrir-lo + Reconeixement d\'URL, correus electrònics i números de telèfon Llisqueu Crea notes noves sense \n deixar la que esteu editant Desa diff --git a/omniNotes/src/main/res/values-cs-rCZ/strings.xml b/omniNotes/src/main/res/values-cs-rCZ/strings.xml index f84a22072a..0d2e532876 100644 --- a/omniNotes/src/main/res/values-cs-rCZ/strings.xml +++ b/omniNotes/src/main/res/values-cs-rCZ/strings.xml @@ -203,6 +203,8 @@ Textová poznámka Fotka Incompleted checklists + Informace + Completed Zobrazí statistiky a připomenutí kterým brzy vyprší platnost z Omni Notes Nastavení @@ -362,7 +364,7 @@ Akce Vytváření nových poznámek, řazení a vlastnosti Navigace - Navigační menu umožňuje procházení poznámek pomocí filtrů a značek + Navigation menu allows you to move through notes with filters and categories Značky Add colored categories to organize notes at-a-glance Vylepšení @@ -372,7 +374,7 @@ Stačí stisknout Podržení má na objekt (příloha, poloha, připomenutí) jiné účinky, než krátké stisknutí! Odkazy - Kliknout na URL, nebo emailovou adresu pro její zkopírování, nebo otevření + URL, e-mail addresses and telephone numbers recognition Tažení prstem Vytvořte novou poznámku \nbez opuštění té, kterou \nprávě upravujete Uložit diff --git a/omniNotes/src/main/res/values-de-rDE/strings.xml b/omniNotes/src/main/res/values-de-rDE/strings.xml index 73cebca79f..0ab947e367 100644 --- a/omniNotes/src/main/res/values-de-rDE/strings.xml +++ b/omniNotes/src/main/res/values-de-rDE/strings.xml @@ -203,6 +203,8 @@ Notiz Foto Unvollständige Checkliste + Info + Erledigt Zeige Statistiken und sich nähernde Errinerungen Einstellungen @@ -362,7 +364,7 @@ Aktionsleiste Neue Notizen erstellen, sortieren und suchen. Zugang zu den Einstellungen Navigationsmenü - Das Navigationsmenü erlaubt es Ihnen zwischen Stichwortlisten zu wechseln, archivierte Notizen und angelegte Erinnerungen aufzurufen + Navigation menu allows you to move through notes with filters and categories Stichwort hinzufügen Fügen Sie Farben zu Kategorien hinzu, um Ihre Notizen besser sortieren zu können Anhänge @@ -372,7 +374,7 @@ Spezielle Aktionen Kurzes oder langes Drücken auf ein Objekt (Anhänge, Standort, Erinnerung) haben unterschiedliche Effekte! Links - Klicken Sie auf einen Link oder E-Mail-Adresse zum kopieren oder öffnen + URL, E-Mail und Telefonnummern Erkennung Wischgesten Neue Notiz erstellen, ohne\ndie Aktuelle zu verlassen Speichern diff --git a/omniNotes/src/main/res/values-el-rGR/strings.xml b/omniNotes/src/main/res/values-el-rGR/strings.xml index c794b92cef..0fd4d7577e 100644 --- a/omniNotes/src/main/res/values-el-rGR/strings.xml +++ b/omniNotes/src/main/res/values-el-rGR/strings.xml @@ -195,14 +195,16 @@ Απόκρυψη αρχειοθετημένων σημειώσεων Εμφάνιση αρχειοθετημένων σημειώσεων Δικαίωμα εγγραφής σε εξωτερικό χώρο αποθήκευσης είναι απαραίτητη για να επιτρέψει τα αντίγραφα ασφαλείας σε δημόσιους φακέλους - Permission to read on external storage is needed to allow attaching files from there + Η άδεια ανάγνωσης σε εξωτερικό χώρο αποθήκευσης είναι απαραίτητη για να επιτρέψει την επισύναψη αρχείων από εκεί Απαιτείται άδεια για να χρησιμοποιήσετε μικρόφωνο για την καταγραφή σημειώσεων ήχου Άδεια πρόσβασης στην τοποθεσία είναι απαραίτητη για να προσθέσετε πληροφορίες θέσης στις σημειώσεις σας Δεν χορηγήθηκαν δικαιώματα Λίστα ελέγχου Σημείωση κειμένου Φωτογραφία - Incompleted checklists + Μη ολοκληρωμένες λίστες + Πληροφορίες + Ολοκληρωμένες Εμφανίζει κάποια στατιστικά στοιχεία και ληγμένες υπενθυμίσεις από τις σημειώσεις Omni Ρυθμίσεις @@ -248,7 +250,7 @@ Εισαγάγετε ένα νέο κωδικό πρόσβασης Επιβεβαιώστε το νέο κωδικό πρόσβασης Ο κωδικός πρόσβασης άλλαξε επιτυχώς - Password removed: all notes have been unlocked + Ο κωδικός αφαιρέθηκε: Όλες οι σημειώσεις έχουν ξεκλειδωθεί Λάθος κωδικός Ο κωδικός πρόσβασης είναι κενός Αφαίρεση κωδικού και\n ξεκλείδωμα όλων των κλειδωμένων σημειώσεων; @@ -362,9 +364,9 @@ Ενέργειες Δημιουργία νέων σημειώσεων, ταξινόμησή τους, πρόσβαση στις προτιμήσεις Πλοήγηση - Το μενού πλοήγησης σας επιτρέπει να μετακινηθείτε μεταξύ σημειώσεων με φίλτρα και Ετικετών + Το μενού πλοήγησης σας επιτρέπει να μετακινηθείτε μεταξύ σημειώσεων με φίλτρα και κατηγοριών Ετικέτες - Add colored categories to organize notes at-a-glance + Προσθήκη έγχρωμων κατηγοριών για να βρίσκετε σημειώσεις με μια ματιά Βελτίωση Προσθήκη συνημμένων διαφόρων ειδών στις σημειώσεις σας! Κάντε περισσότερα @@ -372,7 +374,7 @@ Απλά πατήστε το πλήκτρο Το παρατεταμένο πάτημα έχει διαφορετικό αποτέλεσμα σε ένα αντικείμενο(συννημένο, τοποθεσία, υπενθύμιση) από το απλό πάτημα! Σύνδεσμοι - Κάντε κλικ σε μια διεύθυνση URL ή ηλεκτρονικού ταχυδρομείου για αντιγραφή ή άνοιγμα + Αναγνώριση διευθύνσεων URL, email και τηλεφ. αριθμών Σύρσιμο Δημιουργία νέων σημειώσεων χωρίς \n να αφήσετε αυτο που επεξεργάζεστε Αποθήκευση diff --git a/omniNotes/src/main/res/values-en-rUS/strings.xml b/omniNotes/src/main/res/values-en-rUS/strings.xml index ddabaaeab2..dbd15e73f8 100644 --- a/omniNotes/src/main/res/values-en-rUS/strings.xml +++ b/omniNotes/src/main/res/values-en-rUS/strings.xml @@ -203,6 +203,8 @@ Text note Photo Incompleted checklists + Info + Completed Displays some statistics and expiring reminders from Omni Notes Settings @@ -362,7 +364,7 @@ Actions Create new notes, sort them, access to preferences Navigate - Navigation menu allows you to move through notes with filters and tags + Navigation menu allows you to move through notes with filters and categories Tags Add colored categories to organize notes at-a-glance Improve @@ -372,7 +374,7 @@ Just press Long presses have different effects on an object (attachment, location, reminder) than short ones! Links - Click on an URL or e-mail address to copy or open it + URL, e-mail addresses and telephone numbers recognition Swipe Create new notes without \n leaving the one you\'re editing Save diff --git a/omniNotes/src/main/res/values-es-rES/strings.xml b/omniNotes/src/main/res/values-es-rES/strings.xml index 623e0e1469..fdc3e2bb40 100644 --- a/omniNotes/src/main/res/values-es-rES/strings.xml +++ b/omniNotes/src/main/res/values-es-rES/strings.xml @@ -204,6 +204,8 @@ Nota de texto Foto Incompleted checklists + Información + Completed Muestra algunas estadísticas y recordatorios cercanos de Omni Notes Configuración @@ -363,7 +365,7 @@ Acciones Crear nuevas notas, ordenarlas, acceder a las preferencias Navegar - El menú de navegación le permite moverse a través de las notas con etiquetas y filtros + Navigation menu allows you to move through notes with filters and categories Etiquetas Add colored categories to organize notes at-a-glance Mejorar @@ -373,7 +375,7 @@ Solo presione Presiones cortas o largas en los objetos (archivos adjuntos, ubicación, recordatorio) tienen efecto diferente! Enlaces - Haga clic en una URL o correo electrónico para copiar o abrirlo + URL, e-mail addresses and telephone numbers recognition Deslizar Crear notas sin dejar \n la que estás editando Guardar diff --git a/omniNotes/src/main/res/values-es-rXA/strings.xml b/omniNotes/src/main/res/values-es-rXA/strings.xml index 496acccfa4..27ee6c3735 100644 --- a/omniNotes/src/main/res/values-es-rXA/strings.xml +++ b/omniNotes/src/main/res/values-es-rXA/strings.xml @@ -203,6 +203,8 @@ Nota de testu Semeya Incompleted checklists + Información + Completed Amuesa dalgunes estadístiques y avisos cercanos d\'Omni Notes Axustes @@ -362,7 +364,7 @@ Aiciones Crear notes nueves, ordenales, acceder a les preferencies Navegar - El menú de navegación permítete movete al traviés de les notes con etiquetes y filtros + Navigation menu allows you to move through notes with filters and categories Etiquetes Add colored categories to organize notes at-a-glance Ameyora @@ -372,7 +374,7 @@ Namái toca Presiones curties o llargues nos oxetos (axuntos, allugamientos, avisos) tienen efeutos distintos! Enllaces - Fai clic nuna URL o corréu-e pa copiar o abrilu + URL, e-mail addresses and telephone numbers recognition Eslizar Crea notes nueves ensin \ndexar la que tas editando Guardar diff --git a/omniNotes/src/main/res/values-eu-rES/strings.xml b/omniNotes/src/main/res/values-eu-rES/strings.xml index dcab2e418c..eb161642d3 100644 --- a/omniNotes/src/main/res/values-eu-rES/strings.xml +++ b/omniNotes/src/main/res/values-eu-rES/strings.xml @@ -195,14 +195,16 @@ Ezkutatu artxibatutako oharrak Erakutsi artxibatutako oharrak Kanpo biltegiratzean idazteko baimena behar da babeskopiak karpeta publikoetan egin ahal izateko - Permission to read on external storage is needed to allow attaching files from there + Kanpo biltegiratzea atzitzeko baimena behar da hortik fitxategiak erantsi ahal izateko Mikrofonoa erabiltzeko baimena behar da audio-oharrak grabatzeko Kokapena atzitzeko baimena behar da kokalekuaren informazioa oharretara gehitu ahal izateko Baimena ukatuta Egiaztapen-zerrenda Testu-oharra Argazkia - Incompleted checklists + Osatu gabeko egiaztaketak + Informazioa + Osatuta Erakutsi Omni Notes aplikazioko estatistika batzuk eta iraungitze datak Ezarpenak @@ -362,9 +364,9 @@ Ekintzak Sortu ohar berriak, ordenatu itzazu, sartu hobespenetan Nabigatu - Nabigazio menuak oharretatik mugitzea ahalbidetzen dizu iragazki eta etiketen bidez + Nabigazio menuak oharretatik mugitzea ahalbidetzen dizu iragazki eta kategorien bidez Etiketak - Add colored categories to organize notes at-a-glance + Gehitu kolorezko kategoriak oharrak atoan antolatzeko Hobetu Gehitu mota desberdinetako eranskinak zure oharretara! Egin gehiago @@ -372,7 +374,7 @@ Sakatu besterik gabe Objektu batean (eranskina, kokalekua, oroigarria) luze sakatzeak eta labur sakatzeak emaitza desberdinak dute! Estekak - Sakatu URL edo e-mail helbide bat kopiatu edo irekitzeko + URL, e-mail helbideak eta telefono zenbakiak antzematea Pasatu hatza Sortu ohar berriak \naldatzen ari zarena utzi gabe Gorde diff --git a/omniNotes/src/main/res/values-fa-rIR/strings.xml b/omniNotes/src/main/res/values-fa-rIR/strings.xml index 4eb6dd0678..0be4488dbb 100644 --- a/omniNotes/src/main/res/values-fa-rIR/strings.xml +++ b/omniNotes/src/main/res/values-fa-rIR/strings.xml @@ -203,6 +203,8 @@ یادداشت متنی تصویر چک لیست‌های کامل نشده + اطلاعات + کامل شد برخی آمارها و یادآورهای منقضی از یادداشت های Omni را نمایش می دهد تنظیمات @@ -362,7 +364,7 @@ عملیات ایجاد یادداشت جدید، مرتب کردن آنها، دسترسی به تنظیمات پیمایش - منوی تنظیمات اجازه می دهد تا از طریق یادداشت ها با فیلتر ها و برچسب ها حرکت کنید + منو امکان جابجایی بین یادداشت با فیلترها و موضوع‌ها را میدهد برچسب‌ها افزودن دسته های رنگی برای سازماندهی یادداشت در--نگاه بهبود @@ -372,7 +374,7 @@ فقط بفشارید لمس طولانی تاثیر متفاوتی روی هر شی(پیوست،مکان،یادآور) در قیاس با لمس کوتاه دارد! پیوند‌ها - روی آدرس سایت یا ایمیل آدرس کلیک کنید تا آن را باز یا کپی کنید + تشخیص آدرس سایت ،شماره تلفن و آدرس های ایمیل کشیدن ایجاد یادداشت جدید بدون \n ترک یادداشتی که در حال ویرایش هستید ذخیره diff --git a/omniNotes/src/main/res/values-fr-rFR/strings.xml b/omniNotes/src/main/res/values-fr-rFR/strings.xml index e9ae6c8d69..40165ec247 100644 --- a/omniNotes/src/main/res/values-fr-rFR/strings.xml +++ b/omniNotes/src/main/res/values-fr-rFR/strings.xml @@ -203,6 +203,8 @@ Note Photo Listes à cocher incomplètes + Informations + Terminées Affiche des statistiques et des rappels à venir de Omni Notes. Paramètres @@ -362,7 +364,7 @@ Actions Créer de nouvelles notes, les trier, accès aux préférences Naviguer - Le menu de navigation vous permet de parcourir les notes grâce aux filtres et aux mots-clés + Le menu de navigation vous permet de parcourir les notes grâce aux filtres et aux catégories Mots-clés Ajouter des catégories colorées pour organiser vos notes en un coup d\'œil Améliorer @@ -372,7 +374,7 @@ Appuyez juste Des appuis courts ou longs sur un élément (pièce jointe, localisation, rappel) ont des effets différents ! Liens - Appuyer sur une adresse internet ou courriel pour la copier ou l\'ouvrir + URL, adresses courriel et reconnaissance de numéros de téléphone Glisser Créer de nouvelles notes sans \nquitter celle que vous modifiez Enregistrer diff --git a/omniNotes/src/main/res/values-gl-rES/strings.xml b/omniNotes/src/main/res/values-gl-rES/strings.xml index 232cbd8569..801d7a9930 100644 --- a/omniNotes/src/main/res/values-gl-rES/strings.xml +++ b/omniNotes/src/main/res/values-gl-rES/strings.xml @@ -203,6 +203,8 @@ Nota de texto Foto Listaxes de verificación incompletas + Información + Completadas Mostrar algunhas estatísticas e recordatorios próximos de Omni Notes Axustes @@ -362,7 +364,7 @@ Accións Crear novas notas, ordenalas, acceder ás preferencias Navegar - O menú de navegación permite moverse a través das notas con etiquetas e filtros + O menú de navegación permite moverse polas notas con filtros e categorías Etiquetas Engadir categorías de cores para organizar as notas cunha ollada Melloras @@ -372,7 +374,7 @@ Abonda con tocar Un toque normal ou longo nos diferentes obxectos (anexos, localización, recordatorio) ten efectos diferentes! Ligazóns - Toca no URL ou no enderezo electrónico para copialo ou abrilo + Recoñecemento de URL, enderezos electrónicos e números de teléfono Pasar o dedo Crear novas notas sen\n deixar a que estás a editar Gardar diff --git a/omniNotes/src/main/res/values-hi-rIN/strings.xml b/omniNotes/src/main/res/values-hi-rIN/strings.xml index 91a81708c8..b41488a40e 100644 --- a/omniNotes/src/main/res/values-hi-rIN/strings.xml +++ b/omniNotes/src/main/res/values-hi-rIN/strings.xml @@ -205,6 +205,8 @@ टेक्स्ट नोट तस्वीरें Incompleted checklists + जानकारी + Completed रिमाइंडर और कुछ आंकड़े ओमनी नोटस कि और से दिखाए सेटिंग्स @@ -365,7 +367,7 @@ क्रियाएँ नए नोट्स बनाये, उन्हें सॉर्ट करे, जरुरत अनुसार इस्तेमाल करे नेविगेट करें - नेविगेशन मेनू आप नोट्स के माध्यम से फिल्टर और टैग के साथ ले जाने के लिए अनुमति देता है + Navigation menu allows you to move through notes with filters and categories टैग Add colored categories to organize notes at-a-glance सुधार @@ -375,7 +377,7 @@ बस दबाये छोटे या बड़े प्रेशन्स का वस्तु(अटैचमेंट, जगह, रिमाइंडर) पर अलग प्रभाव होता हे कड़ियाँ - यूआरएल या ई-मेल पते पर कॉपी या खोलने के लिए क्लिक करें + URL, e-mail addresses and telephone numbers recognition उंगली गुमाईए नयी नोट बनाये \nअभी खुली नोट को छोड़े बिना सेव diff --git a/omniNotes/src/main/res/values-hr-rHR/strings.xml b/omniNotes/src/main/res/values-hr-rHR/strings.xml index e2d729eb02..273c11eea6 100644 --- a/omniNotes/src/main/res/values-hr-rHR/strings.xml +++ b/omniNotes/src/main/res/values-hr-rHR/strings.xml @@ -203,6 +203,8 @@ Tekstualna bilješka Fotografija Incompleted checklists + Informacije + Completed Prikazuje neke statistike i podsjetnike koji istječu u aplikaciji Omni bilješke Postavke @@ -362,7 +364,7 @@ Radnje Stvorite nove bilješke, sortirajte ih, prema osobnim postavkama Navigacija - Navigacijski izbornik omogućuje vam navigaciju kroz bilješke pomoću filtera i tagova + Navigation menu allows you to move through notes with filters and categories Tagovi Add colored categories to organize notes at-a-glance Poboljšanja @@ -372,7 +374,7 @@ Samo pritisnite Dugi pritisak prstom ima različite efekte na stavku (privitak, lokacija, podsjetnik) nego kratak pritisak! Linkovi - Kliknite na URL link ili e-mail adresu kako biste ih kopirali ili otvorili + URL, e-mail addresses and telephone numbers recognition Swipe Stvori novu bilješku bez \n napuštanja trenutne Spremi diff --git a/omniNotes/src/main/res/values-hu-rHU/strings.xml b/omniNotes/src/main/res/values-hu-rHU/strings.xml index 1467dfe611..315034b173 100644 --- a/omniNotes/src/main/res/values-hu-rHU/strings.xml +++ b/omniNotes/src/main/res/values-hu-rHU/strings.xml @@ -203,6 +203,8 @@ Szöveges megjegyzés Fénykép Befejezetlen feladatlisták + Információ + Kész Statisztikák és lejáró emlékeztetők megjelenítése az Omni Notes-ból Beállítások @@ -362,7 +364,7 @@ Műveletek Hozzon létre új jegyzeteket, rendezze őket, férjen hozzá a beállításokhoz Navigáció - A navigációs menü lehetővé teszi a jegyzetek közötti mozgást kategóriák és címkék segítségével + A navigációs menü lehetővé teszi a jegyzetek átnézését szűrők és kategóriák segítségével Címkék Használjon színekkel jelölt kategóriákat a jegyzetek villámgyors szervezéséhez Javítás @@ -372,7 +374,7 @@ Csak nyomja meg A hosszú érintés más műveletet eredményez az objektumokon (csatolmány, hely, emlékeztető), mint a rövid érintés! Linkek - Kattintson egy URL-re vagy e-mail címre a másolásához vagy megnyitásához + URL címek, e-mail címek és telefonszámok felismerése Húzás Hozzon létre új jegyzeteket\n az éppen szerkesztett elhagyása nélkül diff --git a/omniNotes/src/main/res/values-in-rID/strings.xml b/omniNotes/src/main/res/values-in-rID/strings.xml index 72d39d18a0..2bc8e609e5 100644 --- a/omniNotes/src/main/res/values-in-rID/strings.xml +++ b/omniNotes/src/main/res/values-in-rID/strings.xml @@ -203,6 +203,8 @@ Catatan teks Foto Incompleted checklists + Info + Completed Tampilkan beberapa statistik dan mengakhiri pengingat dari Omni Notes Setelan @@ -362,7 +364,7 @@ Tindakan Buat catatan baru, urutkan, dan akses ke preferensi Navigasi - Menu navigasi memungkinkan anda untuk bergerak di catatan dengan filter dan tag + Navigation menu allows you to move through notes with filters and categories Tag Add colored categories to organize notes at-a-glance Tingkatkan @@ -372,7 +374,7 @@ Hanya klik Menekan lama mempunyai banyak fungsi pada sebuah objek (lampiran, lokasi, pengingat) daripada menekan singkat! Tautan - Klik di URL atau alamat surel untuk menyalin atau membukanya + URL, e-mail addresses and telephone numbers recognition Geser Buat catatan baru tanpa \n meninggalkan apa yang anda ubah Simpan diff --git a/omniNotes/src/main/res/values-it-rIT/strings.xml b/omniNotes/src/main/res/values-it-rIT/strings.xml index b5913842bd..f3422ab152 100644 --- a/omniNotes/src/main/res/values-it-rIT/strings.xml +++ b/omniNotes/src/main/res/values-it-rIT/strings.xml @@ -204,6 +204,8 @@ Vuoi inviare una segnalazione allo sviluppatore? Nota testuale Foto Liste di controllo incomplete + Info + Completate Mostra alcune statistiche e i promemoria di Omni Notes Impostazioni @@ -363,7 +365,7 @@ Vuoi inviare una segnalazione allo sviluppatore? Azioni Crea nuove note, ordinale, accedi alle preferenze Naviga - Il menu di navigazione consente di spostarsi attraverso le note con filtri e tag + Il menu di navigazione consente di spostarsi attraverso le note con filtri e categorie Tag Aggiungi categorie colorate per mantenere sempre organizzati i tuoi pensieri Migliora @@ -373,7 +375,7 @@ Vuoi inviare una segnalazione allo sviluppatore? Basta premere Pressioni brevi o lunghe sugli oggetti (allegati, località, promemoria) hanno effetti diverso! Links - Fai click su un URL o un indirizzo e-mail per copiarlo o aprirlo + Riconoscimento di URL, indirizzi di posta elettronica e il numeri di telefono Scorrimento Crea nuove note senza \n lasciare quella che stai modificando Salva diff --git a/omniNotes/src/main/res/values-iw-rIL/strings.xml b/omniNotes/src/main/res/values-iw-rIL/strings.xml index 26eea4a9ee..5b5cae9d7c 100644 --- a/omniNotes/src/main/res/values-iw-rIL/strings.xml +++ b/omniNotes/src/main/res/values-iw-rIL/strings.xml @@ -203,6 +203,8 @@ Text note Photo Incompleted checklists + מידע + Completed הצגת נתונים סטטיסטיים ותזכורות שתוקפן עומד לפוג מ-Omni Notes הגדרות @@ -362,7 +364,7 @@ פעולות יצירת הערות חדשות, סידורן, גישה להעדפות ניווט - תפריט ניווט מאפשר לכם לנוע מבעד להערות עם מסננים ותגיות + Navigation menu allows you to move through notes with filters and categories תגיות Add colored categories to organize notes at-a-glance שיפור @@ -372,7 +374,7 @@ פשוט לחצו ללחיצה ארוכה ישנה השפעה שונה על אובייקטים (קבצים מצורפים, מיקום, תזכורות) מאשר לחיצה קצרה! קישורים - Click on an URL or e-mail address to copy or open it + URL, e-mail addresses and telephone numbers recognition סחיבה (swipe) יצירת הערות חדשות מבלי \n לעזוב את אלו שאתם עורכים שמירה diff --git a/omniNotes/src/main/res/values-ja-rJP/strings.xml b/omniNotes/src/main/res/values-ja-rJP/strings.xml index acc55fa741..6a5587d423 100644 --- a/omniNotes/src/main/res/values-ja-rJP/strings.xml +++ b/omniNotes/src/main/res/values-ja-rJP/strings.xml @@ -203,6 +203,8 @@ テキスト ノート 写真 チェックリストが未完です + 情報 + 完了 統計情報と Omni Notes から期限切れのアラームを表示します 設定 @@ -362,7 +364,7 @@ アクション 新しいノートの作成、並べ替え、プリファレンスにアクセス ナビゲーション - ナビゲーション メニューでは、フィルターとタグでノートを移動することができます + ナビゲーション メニューでは、フィルターとカテゴリーでノートを移動することができます タグ 色付きのカテゴリーを追加してノートを一目で整理します 改善 @@ -372,7 +374,7 @@ 押すだけで オブジェクトで長押しすると、短く押した時と異なる効果があります (添付、場所、アラーム) リンク - URL や電子メール アドレスををクリックすると、コピーまたは開きます + URL、メールアドレス、電話番号の認識 スワイプ 編集中のノートから離れることなく\n新しいノートを作成することができます 保存 diff --git a/omniNotes/src/main/res/values-km-rKH/strings.xml b/omniNotes/src/main/res/values-km-rKH/strings.xml index 832f9f8355..2dd46492b7 100644 --- a/omniNotes/src/main/res/values-km-rKH/strings.xml +++ b/omniNotes/src/main/res/values-km-rKH/strings.xml @@ -206,6 +206,8 @@ Send automatic report to developer?\" Text note Photo Incompleted checklists + អំពី + Completed Displays some statistics and expiring reminders from Khmer Notes ការកំណត់ @@ -365,7 +367,7 @@ Send automatic report to developer?\" Actions Create new notes, sort them, access to preferences Navigate - Navigation menu allows you to move through notes with filters and tags + Navigation menu allows you to move through notes with filters and categories ពាក្យគន្លឺះ Add colored categories to organize notes at-a-glance Improve @@ -375,7 +377,7 @@ Send automatic report to developer?\" Just press Long pression have different effects on an object (attachment, location, reminder) than short pression! Links - Click on an URL or e-mail address to copy or open it + URL, e-mail addresses and telephone numbers recognition Swipe \"Create new notes without leaving the one you\'re editing\" diff --git a/omniNotes/src/main/res/values-lo-rLA/strings.xml b/omniNotes/src/main/res/values-lo-rLA/strings.xml index 3ef41e4dda..8d4afef2fb 100644 --- a/omniNotes/src/main/res/values-lo-rLA/strings.xml +++ b/omniNotes/src/main/res/values-lo-rLA/strings.xml @@ -203,6 +203,8 @@ Text note Photo Incompleted checklists + ຂໍ້​ມູນ + Completed ສະແດງສະຖິຕິຈຳນວນໜຶ່ງ ແລະ ເຂົ້າເຖິງໂຕເຕືອນຄວາມຈຳຈາກ Omni Notes ການ​ຕັ້ງຄ່າ @@ -362,7 +364,7 @@ ການດຳເນີນການ ສ້າວບັນທຶກໃໝ່, ຈັດລຽງ, ເຂົ້າສູ່ການຕັ້ງຄ່າ ການຄວບຄຸມ - ເມນູການຄວບຄຸມເຮັດໃຫ້ທ່ານສາມາດຈັດການບັນທຶກດ້ວຍໂຕຄັດກອງ ແລະ ປ້າຍ + Navigation menu allows you to move through notes with filters and categories ປ້າຍ Add colored categories to organize notes at-a-glance ປັບປຸງ @@ -372,7 +374,7 @@ ກົດເລີຍ ການກົດໄລຍະສັ້ນ ຫຼື ຍາວໃສ່ສິ່ງຕ່າງໆ (ໄຟລ໌ແນບ, ສະຖານທີ່, ໂຕເຕືອນຄວາມຈຳ) ມີຜົນໄດ້ຮັບແຕກຕ່າງກັນ! ລິ້ງ - Click on an URL or e-mail address to copy or open it + URL, e-mail addresses and telephone numbers recognition Swipe Create new notes without \n leaving the one you\'re editing ຈັດເກັບ diff --git a/omniNotes/src/main/res/values-lv-rLV/strings.xml b/omniNotes/src/main/res/values-lv-rLV/strings.xml index 52e3ab3676..ca11a06737 100644 --- a/omniNotes/src/main/res/values-lv-rLV/strings.xml +++ b/omniNotes/src/main/res/values-lv-rLV/strings.xml @@ -203,6 +203,8 @@ Teksta piezīme Fotoattēls Incompleted checklists + Informācija + Completed Parāda nedaudz statistikas un izbeigušos atgādinājumus no Omni Notes Iestatījumi @@ -362,7 +364,7 @@ Darbības Veidojiet jaunas piezīmes, kārtojiet tās, piekļūstiet iestatījumiem Navigate - Navigation menu allows you to move through notes with filters and tags + Navigation menu allows you to move through notes with filters and categories Birkas Add colored categories to organize notes at-a-glance Improve @@ -372,7 +374,7 @@ Just press Long pression have different effects on an object (attachment, location, reminder) than short pression! Links - Click on an URL or e-mail address to copy or open it + URL, e-mail addresses and telephone numbers recognition Swipe Create new notes without \n leaving the one you\'re editing Saglabāt diff --git a/omniNotes/src/main/res/values-nl-rNL/strings.xml b/omniNotes/src/main/res/values-nl-rNL/strings.xml index 7895dc644e..25bc78dad3 100644 --- a/omniNotes/src/main/res/values-nl-rNL/strings.xml +++ b/omniNotes/src/main/res/values-nl-rNL/strings.xml @@ -203,6 +203,8 @@ Tekstnotitie Foto Incompleted checklists + Info + Completed Sommige statistieken en de naderende herinneringen van Omni notities worden weergegeven Instellingen @@ -362,7 +364,7 @@ acties Nieuwe notities maken, ze sorteren, toegang tot Voorkeuren Navigatie - Navigatie-menu laat toe u te verplaatsen door notities met filters en labels + Navigation menu allows you to move through notes with filters and categories Tags Add colored categories to organize notes at-a-glance Verbeteren @@ -372,7 +374,7 @@ Druk gewoon op Korte of lange drukken op objecten (bijlagen, locatie, herinnering) hebben verschillende effecten! Links - Klik op een URL of e-mailadres om het te kopiëren of te openen + URL, e-mail addresses and telephone numbers recognition Veeg Nieuwe notities maken zonder\ndegene die u aan het bewerken\n bent te verlaten Opslaan diff --git a/omniNotes/src/main/res/values-pl-rPL/strings.xml b/omniNotes/src/main/res/values-pl-rPL/strings.xml index 6620b6aff1..3922624c9e 100644 --- a/omniNotes/src/main/res/values-pl-rPL/strings.xml +++ b/omniNotes/src/main/res/values-pl-rPL/strings.xml @@ -203,6 +203,8 @@ Notatka tekstowa Zdjęcie Incompleted checklists + Info + Completed Wyświetla niektóre statystyki i wygasłe przypomnienia z Omni Notes Ustawienia @@ -362,7 +364,7 @@ Działania Tworzenie nowych notatek, sortowanie ich, dostęp do preferencji Nawiguj - Menu nawigacji pozwala poruszać się wśród notatek z filtrami i znacznikami + Navigation menu allows you to move through notes with filters and categories Znaczniki Add colored categories to organize notes at-a-glance Ulepszenia @@ -372,7 +374,7 @@ Po prostu naciśnij Długi nacisk ma inne działanie na obiekt (załącznik, lokalizacja, przypomnienie) niż krótki nacisk! Linki - Kliknij na adres URL lub e-mail, aby go skopiować lub otworzyć + URL, e-mail addresses and telephone numbers recognition Przeciągnij Tworzenie nowych notatek bez \n pozostawiając jedną, którą edytujesz Zapisz diff --git a/omniNotes/src/main/res/values-pt-rBR/strings.xml b/omniNotes/src/main/res/values-pt-rBR/strings.xml index ceefb4878c..e96447fa41 100644 --- a/omniNotes/src/main/res/values-pt-rBR/strings.xml +++ b/omniNotes/src/main/res/values-pt-rBR/strings.xml @@ -195,14 +195,16 @@ Ocultar notas arquivadas Mostrar notas arquivadas Permissão para escrever no armazenamento externo é necessária para permitir cópias de segurança em pastas públicas - Permission to read on external storage is needed to allow attaching files from there + A permissão para ler a partir do armazenamento externo é necessária para anexar ficheiros dessa localização Permissão para utilizar o microfone é necessária para gravar notas de áudio Permissão para aceder à localização é necessária para adicionar informações de posição nas notas Permissão não concedida Lista de verificação Nota de texto Foto - Incompleted checklists + Listas de verificação incompletas + Informação + Concluído Mostra algumas estatísticas e próximos alertas do Omni Notes Configurações @@ -248,7 +250,7 @@ Insira uma nova senha Confirme a nova senha Senha alterada com sucesso - Password removed: all notes have been unlocked + Palavra-passe removida: todas as notas foram desbloqueadas Senha incorreta A senha está vazia Remover senha\ne desbloquear todas as notas bloqueadas? @@ -362,9 +364,9 @@ Ações Crie novas notas, ordene-as, acesse as preferências Navegar - O menu de navegação permite que você se mova através de notas com marcas e filtros + O menu de navegação permite-lhe mover-se entre notas usando filtros e categorias Marcas - Add colored categories to organize notes at-a-glance + Defina cores para as categorias para organizar notas facilmente Aprimore Adicione vários tipos diferentes de anexos a suas notas! Faça mais @@ -372,7 +374,7 @@ Basta tocar Toques curtos ou longos em objetos (anexos, locais, lembretes) têm funções diferentes! Links - Clique em uma URL ou endereço de email para copiar ou abrir + Reconhecimento de URLs, endereços de correio electrónico e números de telefone Deslize Crie novas notas sem \n sair daquela que você \n diff --git a/omniNotes/src/main/res/values-pt-rPT/strings.xml b/omniNotes/src/main/res/values-pt-rPT/strings.xml index 74504ccf31..009352fc7c 100644 --- a/omniNotes/src/main/res/values-pt-rPT/strings.xml +++ b/omniNotes/src/main/res/values-pt-rPT/strings.xml @@ -195,14 +195,16 @@ Ocultar notas arquivadas Mostrar notas arquivadas Permissão para escrever no armazenamento externo é necessária para permitir cópias de segurança em pastas públicas - Permission to read on external storage is needed to allow attaching files from there + A permissão para ler a partir do armazenamento externo é necessária para anexar ficheiros dessa localização Permissão para utilizar o microfone é necessária para gravar notas de áudio Permissão para aceder à localização é necessária para adicionar informações de posição nas notas Permissão não concedida Lista de verificação Nota de texto Fotografia - Incompleted checklists + Listas de verificação incompletas + Informações + Concluído Mostra algumas estatísticas e próximos alertas do Omni Notes Definições @@ -248,7 +250,7 @@ Insira uma nova palavra-passe Confirme a nova palavra-passe Palavra-passe alterada com sucesso - Password removed: all notes have been unlocked + Palavra-passe removida: todas as notas foram desbloqueadas Palavra-passe errada A palavra-passe está vazia Remover a palavra-passe\ne desbloquear todas as notas? @@ -362,9 +364,9 @@ Acções Criar novas notas, ordená-las, aceder às preferências Navegue - O menu de navegação permite-lhe mover-se entre notas com filtros e etiquetas + O menu de navegação permite-lhe mover-se entre notas usando filtros e categorias Classifique - Add colored categories to organize notes at-a-glance + Defina cores para as categorias para organizar notas facilmente Melhore Adicione muitos anexos de diferentes tipos às suas notas! Faça mais @@ -372,7 +374,7 @@ Basta pressionar Um toque curto ou longo em objectos (anexos, localização, alerta) tem efeitos diferentes! Ligações - Clique num URL ou endereço de email para o copiar ou abrir + Reconhecimento de URLs, endereços de correio electrónico e números de telefone Deslizar Crie novas notas sem sair \n daquela que está a editar Guarde diff --git a/omniNotes/src/main/res/values-ru-rRU/strings.xml b/omniNotes/src/main/res/values-ru-rRU/strings.xml index 934d47dad8..d56420d2f6 100644 --- a/omniNotes/src/main/res/values-ru-rRU/strings.xml +++ b/omniNotes/src/main/res/values-ru-rRU/strings.xml @@ -203,6 +203,8 @@ Запись Фотография Неполные списки + Информация + Завершенные Отображает некоторую статистику и ближайшие напоминания из Omni Notes Настройки @@ -362,7 +364,7 @@ Операции Создавайте новые заметки, сортируйте их и настраивайте под себя Навигация - Меню навигации позволит перейти к группированным и помеченным заметкам + Меню навигации упрощает переход между заметками по фильтрам и категориям Категории Создайте цветные категории, чтобы не терять заметки из виду Дополняйте @@ -372,7 +374,7 @@ Просто коснитесь Короткие или длительные нажатия на объектах (вложениях, размещениях, напоминаниях) действуют по-разному! Ссылки - Нажмите на URL или почтовый адрес, чтобы скопировать или открыть его + Распознавание ссылок, эл. адресов и телефонных номеров Жесты Создавайте новые заметки, не прекращая изменять предыдущие Сохранение diff --git a/omniNotes/src/main/res/values-sk-rSK/strings.xml b/omniNotes/src/main/res/values-sk-rSK/strings.xml index 5fc2760bd7..70cbf9fb64 100644 --- a/omniNotes/src/main/res/values-sk-rSK/strings.xml +++ b/omniNotes/src/main/res/values-sk-rSK/strings.xml @@ -203,6 +203,8 @@ Textová poznámka Fotografia Incompleted checklists + Informácie + Completed Zobrazí niektoré štatistiky a blížiace sa pripomienky z Omni Notes Nastavenia @@ -362,7 +364,7 @@ Akcie Vytvárajte nové poznámky, zoradujte ich, pristupujte k nastaveniam Navigujte - Navigačná ponuka umožňuje prechádzať medzi poznámkami pomocou filtrov a značiek + Navigation menu allows you to move through notes with filters and categories Značky Add colored categories to organize notes at-a-glance Zlepšite @@ -372,7 +374,7 @@ Stačí stlačiť Krátke alebo dlhé stlačenie objektov (prílohy, poloha, pripomienky) má odlišný efekt! Odkazy - Kliknite na URL alebo e-mailovú adresu pre jej skopírovanie alebo otvorenie + URL, e-mail addresses and telephone numbers recognition Potiahnite Vytvorte nové poznámky bez \n opustenia tej, ktorú upravujete Ukladajte diff --git a/omniNotes/src/main/res/values-sl-rSI/strings.xml b/omniNotes/src/main/res/values-sl-rSI/strings.xml index 4c1363ad2d..5a8b6691b1 100644 --- a/omniNotes/src/main/res/values-sl-rSI/strings.xml +++ b/omniNotes/src/main/res/values-sl-rSI/strings.xml @@ -105,10 +105,10 @@ Kategorizira kot Urejanje kategorije Potrdi brisanje kategorije? - This category is used by some notes.\nConfirm notes un-categorization and category deletion? + To kategorijo uporabljajo nekatere beležke.\nPotrdi izbris kategorije? Zavrzi Odstranite kategorijo - No tags available yet\nCreate them by writing hashtags into your notes + Na voljo ni oznak\nUstvari jih s pisanjem # pred besedo v beležke Brez kategorije ustvarile še Kategorije, ki se odstrani iz beležke Beležke, ki so kategorizirane kot @@ -157,7 +157,7 @@ Gradnik s pomakljivim seznamom beležke Pokaži predogledno sličico priponke - Show timestamps + Prikaži časovne žige Izberi željeno ravnanje Uredi opomniki @@ -194,15 +194,17 @@ Prikaži stare opomnike Skrij arhivirane opombe Prikaži arhivirane opombe - Permission to write on external storage is needed to allow backups on public folders - Permission to read on external storage is needed to allow attaching files from there - Permission to use microphone is needed to record audio notes - Permission to access to location is needed to add position informations to your notes + Dovoljenje za pisanje na zunanjo shrambo je potrebno za ustvarjanje varnostnih kopij na javnih mapah + Dovoljenje za branje zunanje shrambe je potrebno za dodajanje prilog iz shrambe + Dovoljenje za uporabo mikrofona je potrebno za snemanje zvočnih beležk + Dovoljenje za dostop do lokacije je potrebno za dodajanje informacij o lokaciji k beležkam Dovoljenje ni odobreno - Checklist + Seznam Besedilna opomba Slika - Incompleted checklists + Nedokončani seznami + Info + Dokončano Prikaz nekaterih statistik in bližnjih opomnikov iz Omni Notes Nastavitve @@ -234,7 +236,7 @@ Obvestila Vibriranje Omogoči obstojnost obvestil - Allow the app to access notifications to make they survive to reboots + Aplikaciji omogočite dostop do obvestil, da se bodo ta ohranila po vnovičnem zagonu Krmarjenje Seznam sprememb Potrditev povezav @@ -248,7 +250,7 @@ Vnseite novo geslo Potrdite izbrano geslo Geslo uspešno spremenjeno - Password removed: all notes have been unlocked + Geslo odstranjeno: vse beležke so odklenjene Napačno geslo Geslo je prazno Odstranite geslo \n in odkleniti vse zaklenjeno ugotavlja? @@ -268,7 +270,7 @@ Beta O aplikaciji Google+ - Subscribe to the beta program to keep up to date with the latest features + Naročite se na beta program za uporabo najnovejših funkcij Doniraj Podpirati razvoj te vloge z neprofitno darovanja Jezik @@ -302,9 +304,9 @@ Nujen \"nazaj\" v seznam zapiskov odpira menije namesto izhoda Velikost pisave Vedenje - Swipe notes - Swipe on notes to perform actions - Swipe to trash + Podrsaj po beležkah + Podrsajte po beležkah za izvedbo dejanja + Podrsaj za izbris Drsna ugotavlja s prstom, bo shranjevanje Drsna beležke s prstom, bodo premaknjeni v koš Skupina ni kategorizirana @@ -318,43 +320,43 @@ Plavajočo vrstico z dejanji Kratek dotik izvede dejanje Kratek stik vklopi možnosti - Attachments on bottom - Shows attachments below note content - Shows attachments above note content - Prettified dates - Dates are shown in a simplier format - Dates are shown in a more detailed format - Privacy + Priponke na dnu + Priloge prikaži na dnu beležke + Priloge prikaži na vrhu beležke + Olepšani datumi + Datumi so prikazani v preprostejši obliki + Datumi so prikazani v bolj podrobni obliki + Zasebnost Poročanje o napakah Čas uporaba tresk razvijalec boste obveščeni, da vam pomaga Poročila ne tresk hoteti obstati odposlati. Se ne pritožujejo, če gre kaj narobe! - Share anonymous data - Help the developer by sending non-sensitive data like device model, language, frequently used app\'s features. This data are used only to improve the open-source app. + Deli anonimne podatke + Pomagajte razvijalcem s pošiljanjem neobčutljivih podatkov kot na primer model naprave, jezik, pogosto uporabljene funkcije. Ti podatki so uporabljeni izključno za izboljšanje odprtokodne aplikacije. Statistika - Total notes - Active notes - Archived notes - Trashed notes + Skupaj beležk + Aktivne beležke + Arhivirane beležke + Izbrisane beležke Opomniki - Future reminders + Opomniki v prihodnosti Seznami - Locked notes + Zaklenjene opombe Kategorije Značke Priključki Slike Videi - Audio recordings + Zvočni posnetki Skice Datoteke - Locations - Words - Max words - Average words - Chars - Max chars - Average chars + Lokacije + Besede + Največ besed + Povprečno besed + Znakov + Največ znakov + Povprečno znakov Si želite ob prvem zagonu ogledati krajšo predstavitev aplikacije? Dobrodošli v Omni Notes! @@ -362,9 +364,9 @@ Ravnanja Ustvarjanje beležk, razvrščanje, dostop do nastavitev Navigacija - Navigacijski meni omogoča premikanje med beležkami s filtri in značkami + Navigacijski meni vam omogoča, da se po beležkah premikate preko filtrov in kategorij Značke - Add colored categories to organize notes at-a-glance + Dodajte barvne kategorije za pregledno organizacijo Izboljšave Vašim beležkam lahko dodate več vrst priponk! Še več @@ -372,14 +374,14 @@ Samo pritisnite Kratki in dolgi pritiski na objekte (priponke, lokacije, opomnike) učinkujejo različno! Povezave - Click on an URL or e-mail address to copy or open it + Prepoznava telefonskih številk, e-poštnih in URL naslovov Močan Ustvarite nove opombe brez \n zapušča tistega, ki ga urejate Shranjevanje Preprosto pritisnite navigacijsko ikono \"gor\" ali pojdite nazaj z navigacijsko tipko Uživajte - Thanks for using Omni Notes \nThe opensource alternative for productivity and leisure note-taking! - Subscribe to the community to participate! + Zahvaljujemo se vam za uporabo Omni Notes\nOdprtokodne alternative za produktivnost in shranjevanje raznih beležk! + Prijavite se v skupnost, da boste sodelovali! poteznik odprt poteznik zaprt diff --git a/omniNotes/src/main/res/values-sr-rSP/strings.xml b/omniNotes/src/main/res/values-sr-rSP/strings.xml index cc47c2ebc0..8aa8a44e79 100644 --- a/omniNotes/src/main/res/values-sr-rSP/strings.xml +++ b/omniNotes/src/main/res/values-sr-rSP/strings.xml @@ -195,14 +195,16 @@ Сакриј архивиране белешке Прикажи архивиране белешке Дозвола за упис на спољно складиште је потребна за прављење резервне копије - Permission to read on external storage is needed to allow attaching files from there + Дозвола за читање спољног складишта је неопходна како би се прилози могли узимати одатле Дозвола за микрофон је потребна за снимање звучних белешки Дозвола за приступ локацији је потребна за додавање позиције у ваше белешке Дозволе нису добијене Списак Текст Фото - Incompleted checklists + Незавршени спискови + Инфо + Завршени Приказује статистику и истекле подсетнике из Омни белешки Поставке @@ -362,9 +364,9 @@ Радње Направи нове белешке, сортирај, приступи подешавањима Крећите се - Навигациони мени омогућава кретање кроз белешке помоћу филтера и ознака + Навигациони мени омогућава кретање кроз белешке помоћу филтера и категорија Ознаке - Add colored categories to organize notes at-a-glance + Обојене категорије помажу у организовању белешки Побољшајте Додајте разноврсне прилоге вашим белешкама! Урадите више @@ -372,7 +374,7 @@ Само притисните Дуг додир има различито деловање на објекте (прилоге, локацију, подсетник) од кратког додира! Везе - Додирните УРЛ или адресу е-поште да је копирате или отворите + Препознавање УРЛ, е-поште и телефонских бројева Превлачење Направите нове белешке\nбез напуштања текуће Сачувај diff --git a/omniNotes/src/main/res/values-sv-rSE/strings.xml b/omniNotes/src/main/res/values-sv-rSE/strings.xml index bcf63f704e..378b55ec8a 100644 --- a/omniNotes/src/main/res/values-sv-rSE/strings.xml +++ b/omniNotes/src/main/res/values-sv-rSE/strings.xml @@ -203,6 +203,8 @@ Textanteckning Bild Incompleted checklists + Information + Completed Visar statistik och närliggande påminnelser från Omni Tools Inställningar @@ -362,7 +364,7 @@ Val Skapa nya anteckningar, sortera dem, kom åt preferenserna Navigera - Navigeringsmenyn låter dig bläddra igenom anteckningar med filter och etiketter + Navigation menu allows you to move through notes with filters and categories Ettiktetter Add colored categories to organize notes at-a-glance Förbättra @@ -372,7 +374,7 @@ Bara tryck Korta eller långa funktioner på objekt (bifogningar, plats, påminnelse) har ny effekt! Länkar - Klicka på en URL eller e-postadress för att kopiera eller öppna den + URL, e-mail addresses and telephone numbers recognition Dra Skapa nya anteckningar \n utan att stänga den du skriver Spara diff --git a/omniNotes/src/main/res/values-tr-rTR/strings.xml b/omniNotes/src/main/res/values-tr-rTR/strings.xml index 431f5395ac..b3afa6cd58 100644 --- a/omniNotes/src/main/res/values-tr-rTR/strings.xml +++ b/omniNotes/src/main/res/values-tr-rTR/strings.xml @@ -203,6 +203,8 @@ Metin Notu Fotoğraf Incompleted checklists + Omni Notes\'a Katkı Yapanlar + Completed Yaklaşan hatırlatmalarınızı ve not sayılarınızı görüntüleyebirsiniz Ayarlar @@ -362,7 +364,7 @@ Eylemler Yeni not oluştur, sırala ve tercihlere git Ana Menü - Ana Menü sayesinde not ve etiketlere kolayca ulaşabilirsiniz + Navigation menu allows you to move through notes with filters and categories Etiketler Add colored categories to organize notes at-a-glance Geliştir @@ -372,7 +374,7 @@ Sadece dokunun Uzun veya kısa dokunuşlar farklı işlevlere sahiptir(konum, hatırlatma) Bağlantılar - URL veya e-posta adresini kopyalamak veya açmak için tıklayın + URL, e-mail addresses and telephone numbers recognition Kaydır Düzenlediğiniz bir nottan ayrılmadan \n yeni notlar oluştur Kaydet diff --git a/omniNotes/src/main/res/values-uk-rUA/strings.xml b/omniNotes/src/main/res/values-uk-rUA/strings.xml index e1f0528110..d8db599c5e 100644 --- a/omniNotes/src/main/res/values-uk-rUA/strings.xml +++ b/omniNotes/src/main/res/values-uk-rUA/strings.xml @@ -203,6 +203,8 @@ Текстова нотатка Фото Incompleted checklists + Інформація + Completed Відображає деяку статистику і найближчі події в Omni Notes Налаштування @@ -367,7 +369,7 @@ Дії Створюйте нові нотатки, сортуйте їх, налаштовуйте Навігація - Меню навігації дозволяє вам переглядати нотатки за допомогою фільтрів та ярличків + Navigation menu allows you to move through notes with filters and categories Ярлички Add colored categories to organize notes at-a-glance Покращення @@ -377,7 +379,7 @@ Просто натисніть Короткі або тривалі натискання по елементах (вкладення, розташування, нагадування) мають різний ефект! Посилання - Двічі торкніться веб-посилання чи адреси електронної пошти, щоб скопіювати чи відкрити їх + URL, e-mail addresses and telephone numbers recognition Провести пальцем Створюйте нові нататки \n без потреби збереження попередньої Збереження diff --git a/omniNotes/src/main/res/values-zh-rCN/strings.xml b/omniNotes/src/main/res/values-zh-rCN/strings.xml index 6853b4e2ba..2300422641 100644 --- a/omniNotes/src/main/res/values-zh-rCN/strings.xml +++ b/omniNotes/src/main/res/values-zh-rCN/strings.xml @@ -203,6 +203,8 @@ 文本注释 照片 Incompleted checklists + 信息 + Completed 显示Omni Notes统计数据及最近提醒 设置 @@ -362,7 +364,7 @@ 操作 创建新记事并排序,访问首选项 导航 - 使用导航菜单筛选并分类查看记事 + Navigation menu allows you to move through notes with filters and categories 标签 Add colored categories to organize notes at-a-glance 改进 @@ -372,7 +374,7 @@ 只需点击 在附件,地点及提醒上点击或长按会有不同的效果! 链接 - 点击网址或邮箱链接来复制或者打开它 + URL, e-mail addresses and telephone numbers recognition 滑动手势 在当前记事编辑视图下 \n 创建新记事 保存 diff --git a/omniNotes/src/main/res/values-zh-rTW/strings.xml b/omniNotes/src/main/res/values-zh-rTW/strings.xml index 1611239900..b199e57d31 100644 --- a/omniNotes/src/main/res/values-zh-rTW/strings.xml +++ b/omniNotes/src/main/res/values-zh-rTW/strings.xml @@ -203,6 +203,8 @@ 文本注釋 照片 Incompleted checklists + 信息 + Completed 显示Omni Notes统计数据及最近提醒 设置 @@ -362,7 +364,7 @@ 操作 创建新记事并排序,访问首选项 导航 - 使用导航菜单筛选并分类查看记事 + Navigation menu allows you to move through notes with filters and categories 标签 Add colored categories to organize notes at-a-glance 改进 @@ -372,7 +374,7 @@ 只需点击 在附件,地点及提醒上点击或长按会有不同的效果! 链接 - 點擊網址或電子郵件地址來複製或打開它 + URL, e-mail addresses and telephone numbers recognition 滑动手势 在当前记事编辑视图下 \n 创建新记事 保存 From 7331077854c831de62a598cda7a270c0384e82b4 Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Sun, 22 Apr 2018 23:10:56 +0200 Subject: [PATCH 30/37] Updated version code to 242 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index c3b8766b2a..6b499660ae 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,7 +16,7 @@ # VERSION_NAME=5.5.0 -VERSION_CODE=241 +VERSION_CODE=242 PACKAGE=it.feio.android.omninotes MIN_SDK=16 From 8d4926be1d2e38b8e2fc6c609bed3b8067694645 Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Mon, 23 Apr 2018 23:25:29 +0200 Subject: [PATCH 31/37] Attachment's menu graphical overhaul Attachment's menu graphical overhaul . --- gradle.properties | 2 +- .../android/omninotes/DetailFragment.java | 72 ++---- .../src/main/res/layout/attachment_dialog.xml | 221 +++++++++--------- omniNotes/src/main/res/raw/changelog.xml | 1 + 4 files changed, 135 insertions(+), 161 deletions(-) diff --git a/gradle.properties b/gradle.properties index 6b499660ae..858ddc1d64 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,7 +16,7 @@ # VERSION_NAME=5.5.0 -VERSION_CODE=242 +VERSION_CODE=243 PACKAGE=it.feio.android.omninotes MIN_SDK=16 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 cebbe3adf3..fb96854161 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java @@ -52,7 +52,6 @@ import android.text.Selection; import android.text.TextUtils; import android.text.TextWatcher; -import android.util.DisplayMetrics; import android.util.Log; import android.view.*; import android.view.View.OnClickListener; @@ -106,11 +105,7 @@ import java.io.IOException; import java.lang.ref.WeakReference; import java.text.DateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Calendar; -import java.util.Date; -import java.util.List; +import java.util.*; import static com.nineoldandroids.view.ViewPropertyAnimator.animate; import static java.lang.Integer.parseInt; @@ -176,7 +171,7 @@ public class DetailFragment extends BaseFragment implements OnReminderPickedList View toggleChecklistView; private Uri attachmentUri; private AttachmentAdapter mAttachmentAdapter; - private PopupWindow attachmentDialog; + private MaterialDialog attachmentDialog; private Note note; private Note noteTmp; private Note noteOriginal; @@ -1054,7 +1049,7 @@ public boolean goHome() { public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_attachment: - showPopup(mainActivity.findViewById(R.id.menu_attachment)); + showAttachmentsPopup(); break; case R.id.menu_tag: addTags(); @@ -1256,31 +1251,13 @@ public void onNegative(MaterialDialog dialog) { dialog.show(); } - // The method that displays the popup. - @SuppressWarnings("deprecation") - private void showPopup(View anchor) { - DisplayMetrics metrics = new DisplayMetrics(); - mainActivity.getWindowManager().getDefaultDisplay().getMetrics(metrics); - - // Inflate the popup_layout.xml - LayoutInflater inflater = (LayoutInflater) mainActivity.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); - View layout = inflater.inflate(R.layout.attachment_dialog, null); - - // Creating the PopupWindow - attachmentDialog = new PopupWindow(mainActivity); - attachmentDialog.setContentView(layout); - attachmentDialog.setWidth(WindowManager.LayoutParams.WRAP_CONTENT); - attachmentDialog.setHeight(WindowManager.LayoutParams.WRAP_CONTENT); - attachmentDialog.setFocusable(true); - attachmentDialog.setOnDismissListener(() -> { - if (isRecording) { - isRecording = false; - stopRecording(); - } - }); + private void showAttachmentsPopup() { + LayoutInflater inflater = mainActivity.getLayoutInflater(); + final View layout = inflater.inflate(R.layout.attachment_dialog, null); - // Clear the default translucent background - attachmentDialog.setBackgroundDrawable(new BitmapDrawable()); + attachmentDialog = new MaterialDialog.Builder(mainActivity) + .customView(layout, false).build(); + attachmentDialog.show(); // Camera android.widget.TextView cameraSelection = (android.widget.TextView) layout.findViewById(R.id.camera); @@ -1304,19 +1281,9 @@ private void showPopup(View anchor) { android.widget.TextView timeStampSelection = (android.widget.TextView) layout.findViewById(R.id.timestamp); timeStampSelection.setOnClickListener(new AttachmentOnClickListener()); // Desktop note with PushBullet - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { - android.widget.TextView pushbulletSelection = (android.widget.TextView) layout.findViewById(R.id - .pushbullet); - pushbulletSelection.setVisibility(View.VISIBLE); - pushbulletSelection.setOnClickListener(new AttachmentOnClickListener()); - } - - try { - attachmentDialog.showAsDropDown(anchor); - } catch (Exception e) { - mainActivity.showMessage(R.string.error, ONStyle.ALERT); - - } + android.widget.TextView pushbulletSelection = (android.widget.TextView) layout.findViewById(R.id.pushbullet); + pushbulletSelection.setVisibility(View.VISIBLE); + pushbulletSelection.setOnClickListener(new AttachmentOnClickListener()); } private void takePhoto() { @@ -1347,16 +1314,13 @@ private void takeVideo() { return; } // File is stored in custom ON folder to speedup the attachment - if (Build.VERSION.SDK_INT > Build.VERSION_CODES.GINGERBREAD_MR1) { - File f = StorageHelper.createNewAttachmentFile(mainActivity, Constants.MIME_TYPE_VIDEO_EXT); - if (f == null) { - mainActivity.showMessage(R.string.error, ONStyle.ALERT); - - return; - } - attachmentUri = Uri.fromFile(f); - takeVideoIntent.putExtra(MediaStore.EXTRA_OUTPUT, attachmentUri); + File f = StorageHelper.createNewAttachmentFile(mainActivity, Constants.MIME_TYPE_VIDEO_EXT); + if (f == null) { + mainActivity.showMessage(R.string.error, ONStyle.ALERT); + return; } + attachmentUri = Uri.fromFile(f); + takeVideoIntent.putExtra(MediaStore.EXTRA_OUTPUT, attachmentUri); String maxVideoSizeStr = "".equals(prefs.getString("settings_max_video_size", "")) ? "0" : prefs.getString("settings_max_video_size", ""); long maxVideoSize = parseLong(maxVideoSizeStr) * 1024L * 1024L; diff --git a/omniNotes/src/main/res/layout/attachment_dialog.xml b/omniNotes/src/main/res/layout/attachment_dialog.xml index 45ee28ead2..5be8c09953 100644 --- a/omniNotes/src/main/res/layout/attachment_dialog.xml +++ b/omniNotes/src/main/res/layout/attachment_dialog.xml @@ -16,130 +16,139 @@ ~ along with this program. If not, see . --> + xmlns:pixlui="http://schemas.android.com/apk/com.neopixl.pixlui" + android:id="@+id/attachment_dialog_root" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingBottom="8dp" + android:paddingLeft="8dp" + android:paddingRight="16dp" + android:paddingStart="8dp" + android:paddingEnd="16dp" + android:paddingTop="8dp" + android:scrollbarSize="4dp" + android:scrollbarStyle="insideInset" + android:scrollbarThumbVertical="@drawable/scroll_bar"> + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="vertical" + android:gravity="start"> + android:id="@+id/camera" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/icon_selector" + android:drawableLeft="@drawable/ic_photo_camera_black_24dp" + android:drawableStart="@drawable/ic_photo_camera_black_24dp" + android:drawablePadding="@dimen/attachment_dialog_drawable_padding" + android:padding="6dp" + android:text="@string/camera" + android:textSize="@dimen/attachment_dialog_text_size" + pixlui:typeface="Roboto-Regular.ttf" + android:textColor="@color/text_gray"/> + android:id="@+id/video" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/icon_selector" + android:drawableLeft="@drawable/ic_videocam_black_24dp" + android:drawableStart="@drawable/ic_videocam_black_24dp" + android:drawablePadding="@dimen/attachment_dialog_drawable_padding" + android:padding="@dimen/attachment_dialog_items_padding" + android:text="@string/video" + android:textSize="@dimen/attachment_dialog_text_size" + pixlui:typeface="Roboto-Regular.ttf" + android:textColor="@color/text_gray"/> + android:id="@+id/files" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/icon_selector" + android:drawableLeft="@drawable/ic_insert_drive_file_black_24dp" + android:drawableStart="@drawable/ic_insert_drive_file_black_24dp" + android:drawablePadding="@dimen/attachment_dialog_drawable_padding" + android:padding="@dimen/attachment_dialog_items_padding" + android:text="@string/files" + android:textSize="@dimen/attachment_dialog_text_size" + pixlui:typeface="Roboto-Regular.ttf" + android:textColor="@color/text_gray"/> + android:id="@+id/recording" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/icon_selector" + android:drawableLeft="@drawable/ic_mic_black_24dp" + android:drawableStart="@drawable/ic_mic_black_24dp" + android:drawablePadding="@dimen/attachment_dialog_drawable_padding" + android:padding="@dimen/attachment_dialog_items_padding" + android:text="@string/record" + android:textSize="@dimen/attachment_dialog_text_size" + pixlui:typeface="Roboto-Regular.ttf" + android:textColor="@color/text_gray"/> + android:id="@+id/sketch" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/icon_selector" + android:drawableLeft="@drawable/ic_action_draw" + android:drawableStart="@drawable/ic_action_draw" + android:drawablePadding="@dimen/attachment_dialog_drawable_padding" + android:padding="@dimen/attachment_dialog_items_padding" + android:text="@string/sketch" + android:textSize="@dimen/attachment_dialog_text_size" + pixlui:typeface="Roboto-Regular.ttf" + android:textColor="@color/text_gray"/> + android:id="@+id/location" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/icon_selector" + android:drawableLeft="@drawable/ic_pin_drop_black_24dp" + android:drawableStart="@drawable/ic_pin_drop_black_24dp" + android:drawablePadding="@dimen/attachment_dialog_drawable_padding" + android:padding="@dimen/attachment_dialog_items_padding" + android:text="@string/location" + android:textSize="@dimen/attachment_dialog_text_size" + pixlui:typeface="Roboto-Regular.ttf" + android:textColor="@color/text_gray"/> + android:id="@+id/timestamp" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/icon_selector" + android:drawableLeft="@drawable/ic_access_time_black_24px" + android:drawableStart="@drawable/ic_access_time_black_24px" + android:drawablePadding="@dimen/attachment_dialog_drawable_padding" + android:padding="@dimen/attachment_dialog_items_padding" + android:text="@string/timestamp" + android:textSize="@dimen/attachment_dialog_text_size" + pixlui:typeface="Roboto-Regular.ttf" + android:textColor="@color/text_gray"/> + android:id="@+id/pushbullet" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/icon_selector" + android:drawableLeft="@drawable/ic_laptop_black_24dp" + android:drawableStart="@drawable/ic_laptop_black_24dp" + android:drawablePadding="@dimen/attachment_dialog_drawable_padding" + android:padding="@dimen/attachment_dialog_items_padding" + android:text="@string/pushbullet" + android:visibility="gone" + android:textSize="@dimen/attachment_dialog_text_size" + pixlui:typeface="Roboto-Regular.ttf" + android:textColor="@color/text_gray"/> diff --git a/omniNotes/src/main/res/raw/changelog.xml b/omniNotes/src/main/res/raw/changelog.xml index 410489a5b7..cf860725a5 100644 --- a/omniNotes/src/main/res/raw/changelog.xml +++ b/omniNotes/src/main/res/raw/changelog.xml @@ -22,6 +22,7 @@ [b]New![/b] New "attachment" available to easily add the current timestamp [b]New![/b] Now an option is available into the editor to check currently edited note's informations [b]New![/b] Persian translation + [i]Improved![/i] Attachment's menu graphical overhaul [i]Improved![/i] Removed outdated transparent navigation bar: this will save a lot of CPU avoiding calculating dynamic layout, after all today all devides are very much bigger than when this optimization has been introduced [i]Improved![/i] Removed semi-transparent overlay when using floating action button to speed-up the flow [i]Improved![/i] Faster password and security question validations by using the keyboard "done" button From aa6d092370d9d3a0a734f68e9061862fb13bac23 Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Mon, 23 Apr 2018 23:36:50 +0200 Subject: [PATCH 32/37] Updated translations --- omniNotes/src/main/res/values-ar-rSA/arrays.xml | 4 +--- omniNotes/src/main/res/values-ar-rSA/strings.xml | 4 +--- omniNotes/src/main/res/values-ca-rES/arrays.xml | 4 +--- omniNotes/src/main/res/values-ca-rES/strings.xml | 4 +--- omniNotes/src/main/res/values-cs-rCZ/arrays.xml | 4 +--- omniNotes/src/main/res/values-cs-rCZ/strings.xml | 4 +--- omniNotes/src/main/res/values-de-rDE/arrays.xml | 4 +--- omniNotes/src/main/res/values-de-rDE/strings.xml | 4 +--- omniNotes/src/main/res/values-el-rGR/arrays.xml | 4 +--- omniNotes/src/main/res/values-el-rGR/strings.xml | 4 +--- omniNotes/src/main/res/values-en-rUS/arrays.xml | 4 +--- omniNotes/src/main/res/values-en-rUS/strings.xml | 4 +--- omniNotes/src/main/res/values-es-rES/arrays.xml | 4 +--- omniNotes/src/main/res/values-es-rES/strings.xml | 4 +--- omniNotes/src/main/res/values-es-rXA/arrays.xml | 4 +--- omniNotes/src/main/res/values-es-rXA/strings.xml | 4 +--- omniNotes/src/main/res/values-eu-rES/arrays.xml | 4 +--- omniNotes/src/main/res/values-eu-rES/strings.xml | 4 +--- omniNotes/src/main/res/values-fa-rIR/arrays.xml | 4 +--- omniNotes/src/main/res/values-fa-rIR/strings.xml | 4 +--- omniNotes/src/main/res/values-fr-rFR/arrays.xml | 4 +--- omniNotes/src/main/res/values-fr-rFR/strings.xml | 4 +--- omniNotes/src/main/res/values-gl-rES/arrays.xml | 4 +--- omniNotes/src/main/res/values-gl-rES/strings.xml | 4 +--- omniNotes/src/main/res/values-hi-rIN/arrays.xml | 4 +--- omniNotes/src/main/res/values-hi-rIN/strings.xml | 4 +--- omniNotes/src/main/res/values-hr-rHR/arrays.xml | 4 +--- omniNotes/src/main/res/values-hr-rHR/strings.xml | 4 +--- omniNotes/src/main/res/values-hu-rHU/arrays.xml | 4 +--- omniNotes/src/main/res/values-hu-rHU/strings.xml | 4 +--- omniNotes/src/main/res/values-in-rID/arrays.xml | 4 +--- omniNotes/src/main/res/values-in-rID/strings.xml | 4 +--- omniNotes/src/main/res/values-it-rIT/arrays.xml | 4 +--- omniNotes/src/main/res/values-it-rIT/strings.xml | 4 +--- omniNotes/src/main/res/values-iw-rIL/arrays.xml | 10 ++++------ omniNotes/src/main/res/values-iw-rIL/strings.xml | 4 +--- omniNotes/src/main/res/values-ja-rJP/arrays.xml | 4 +--- omniNotes/src/main/res/values-ja-rJP/strings.xml | 4 +--- omniNotes/src/main/res/values-km-rKH/arrays.xml | 4 +--- omniNotes/src/main/res/values-km-rKH/strings.xml | 4 +--- omniNotes/src/main/res/values-lo-rLA/arrays.xml | 10 ++++------ omniNotes/src/main/res/values-lo-rLA/strings.xml | 4 +--- omniNotes/src/main/res/values-lv-rLV/arrays.xml | 4 +--- omniNotes/src/main/res/values-lv-rLV/strings.xml | 4 +--- omniNotes/src/main/res/values-nl-rNL/arrays.xml | 4 +--- omniNotes/src/main/res/values-nl-rNL/strings.xml | 4 +--- omniNotes/src/main/res/values-pl-rPL/arrays.xml | 4 +--- omniNotes/src/main/res/values-pl-rPL/strings.xml | 4 +--- omniNotes/src/main/res/values-pt-rBR/arrays.xml | 4 +--- omniNotes/src/main/res/values-pt-rBR/strings.xml | 4 +--- omniNotes/src/main/res/values-pt-rPT/arrays.xml | 4 +--- omniNotes/src/main/res/values-pt-rPT/strings.xml | 4 +--- omniNotes/src/main/res/values-ru-rRU/arrays.xml | 4 +--- omniNotes/src/main/res/values-ru-rRU/strings.xml | 4 +--- omniNotes/src/main/res/values-sk-rSK/arrays.xml | 4 +--- omniNotes/src/main/res/values-sk-rSK/strings.xml | 4 +--- omniNotes/src/main/res/values-sl-rSI/arrays.xml | 4 +--- omniNotes/src/main/res/values-sl-rSI/strings.xml | 4 +--- omniNotes/src/main/res/values-sr-rSP/arrays.xml | 4 +--- omniNotes/src/main/res/values-sr-rSP/strings.xml | 4 +--- omniNotes/src/main/res/values-sv-rSE/arrays.xml | 4 +--- omniNotes/src/main/res/values-sv-rSE/strings.xml | 4 +--- omniNotes/src/main/res/values-tr-rTR/arrays.xml | 4 +--- omniNotes/src/main/res/values-tr-rTR/strings.xml | 4 +--- omniNotes/src/main/res/values-uk-rUA/arrays.xml | 4 +--- omniNotes/src/main/res/values-uk-rUA/strings.xml | 4 +--- omniNotes/src/main/res/values-zh-rCN/arrays.xml | 4 +--- omniNotes/src/main/res/values-zh-rCN/strings.xml | 4 +--- omniNotes/src/main/res/values-zh-rTW/arrays.xml | 4 +--- omniNotes/src/main/res/values-zh-rTW/strings.xml | 4 +--- 70 files changed, 76 insertions(+), 216 deletions(-) diff --git a/omniNotes/src/main/res/values-ar-rSA/arrays.xml b/omniNotes/src/main/res/values-ar-rSA/arrays.xml index e9b0be4025..c15d9dd014 100644 --- a/omniNotes/src/main/res/values-ar-rSA/arrays.xml +++ b/omniNotes/src/main/res/values-ar-rSA/arrays.xml @@ -1,4 +1,5 @@ + - - - نقط diff --git a/omniNotes/src/main/res/values-ar-rSA/strings.xml b/omniNotes/src/main/res/values-ar-rSA/strings.xml index 5d8a77a5eb..9534f77459 100644 --- a/omniNotes/src/main/res/values-ar-rSA/strings.xml +++ b/omniNotes/src/main/res/values-ar-rSA/strings.xml @@ -1,4 +1,5 @@ + - - - ملاحظات diff --git a/omniNotes/src/main/res/values-ca-rES/arrays.xml b/omniNotes/src/main/res/values-ca-rES/arrays.xml index f19a9b13c4..72728382ec 100644 --- a/omniNotes/src/main/res/values-ca-rES/arrays.xml +++ b/omniNotes/src/main/res/values-ca-rES/arrays.xml @@ -1,4 +1,5 @@ + - - - Notes diff --git a/omniNotes/src/main/res/values-ca-rES/strings.xml b/omniNotes/src/main/res/values-ca-rES/strings.xml index 483491752d..69c0f0b07f 100644 --- a/omniNotes/src/main/res/values-ca-rES/strings.xml +++ b/omniNotes/src/main/res/values-ca-rES/strings.xml @@ -1,4 +1,5 @@ + - - - Notes diff --git a/omniNotes/src/main/res/values-cs-rCZ/arrays.xml b/omniNotes/src/main/res/values-cs-rCZ/arrays.xml index a3383eb806..2e6b7b251c 100644 --- a/omniNotes/src/main/res/values-cs-rCZ/arrays.xml +++ b/omniNotes/src/main/res/values-cs-rCZ/arrays.xml @@ -1,4 +1,5 @@ + - - - Poznámky diff --git a/omniNotes/src/main/res/values-cs-rCZ/strings.xml b/omniNotes/src/main/res/values-cs-rCZ/strings.xml index 0d2e532876..4df9023cf9 100644 --- a/omniNotes/src/main/res/values-cs-rCZ/strings.xml +++ b/omniNotes/src/main/res/values-cs-rCZ/strings.xml @@ -1,4 +1,5 @@ + - - - Poznámky diff --git a/omniNotes/src/main/res/values-de-rDE/arrays.xml b/omniNotes/src/main/res/values-de-rDE/arrays.xml index b4f8ccfc7c..54e81b1ebd 100644 --- a/omniNotes/src/main/res/values-de-rDE/arrays.xml +++ b/omniNotes/src/main/res/values-de-rDE/arrays.xml @@ -1,4 +1,5 @@ + - - - Notizen diff --git a/omniNotes/src/main/res/values-de-rDE/strings.xml b/omniNotes/src/main/res/values-de-rDE/strings.xml index 0ab947e367..d00f7db0f4 100644 --- a/omniNotes/src/main/res/values-de-rDE/strings.xml +++ b/omniNotes/src/main/res/values-de-rDE/strings.xml @@ -1,4 +1,5 @@ + - - - Notizen diff --git a/omniNotes/src/main/res/values-el-rGR/arrays.xml b/omniNotes/src/main/res/values-el-rGR/arrays.xml index 22f371ee0c..008bd0834b 100644 --- a/omniNotes/src/main/res/values-el-rGR/arrays.xml +++ b/omniNotes/src/main/res/values-el-rGR/arrays.xml @@ -1,4 +1,5 @@ + - - - Σημειώσεις diff --git a/omniNotes/src/main/res/values-el-rGR/strings.xml b/omniNotes/src/main/res/values-el-rGR/strings.xml index 0fd4d7577e..03305a6196 100644 --- a/omniNotes/src/main/res/values-el-rGR/strings.xml +++ b/omniNotes/src/main/res/values-el-rGR/strings.xml @@ -1,4 +1,5 @@ + - - - Σημειώσεις diff --git a/omniNotes/src/main/res/values-en-rUS/arrays.xml b/omniNotes/src/main/res/values-en-rUS/arrays.xml index c22f42a0ab..b5107f4441 100644 --- a/omniNotes/src/main/res/values-en-rUS/arrays.xml +++ b/omniNotes/src/main/res/values-en-rUS/arrays.xml @@ -1,4 +1,5 @@ + - - - Notes diff --git a/omniNotes/src/main/res/values-en-rUS/strings.xml b/omniNotes/src/main/res/values-en-rUS/strings.xml index dbd15e73f8..75d77927b5 100644 --- a/omniNotes/src/main/res/values-en-rUS/strings.xml +++ b/omniNotes/src/main/res/values-en-rUS/strings.xml @@ -1,4 +1,5 @@ + - - - Notes diff --git a/omniNotes/src/main/res/values-es-rES/arrays.xml b/omniNotes/src/main/res/values-es-rES/arrays.xml index 1f41ffba97..325ebdde54 100644 --- a/omniNotes/src/main/res/values-es-rES/arrays.xml +++ b/omniNotes/src/main/res/values-es-rES/arrays.xml @@ -1,4 +1,5 @@ + - - - Notas diff --git a/omniNotes/src/main/res/values-es-rES/strings.xml b/omniNotes/src/main/res/values-es-rES/strings.xml index fdc3e2bb40..2eaa40889d 100644 --- a/omniNotes/src/main/res/values-es-rES/strings.xml +++ b/omniNotes/src/main/res/values-es-rES/strings.xml @@ -1,4 +1,5 @@ + - - - Notas diff --git a/omniNotes/src/main/res/values-es-rXA/arrays.xml b/omniNotes/src/main/res/values-es-rXA/arrays.xml index 4e07fedccf..6753a69e05 100644 --- a/omniNotes/src/main/res/values-es-rXA/arrays.xml +++ b/omniNotes/src/main/res/values-es-rXA/arrays.xml @@ -1,4 +1,5 @@ + - - - Notes diff --git a/omniNotes/src/main/res/values-es-rXA/strings.xml b/omniNotes/src/main/res/values-es-rXA/strings.xml index 27ee6c3735..eb3f59933a 100644 --- a/omniNotes/src/main/res/values-es-rXA/strings.xml +++ b/omniNotes/src/main/res/values-es-rXA/strings.xml @@ -1,4 +1,5 @@ + - - - Notes diff --git a/omniNotes/src/main/res/values-eu-rES/arrays.xml b/omniNotes/src/main/res/values-eu-rES/arrays.xml index d101a158f3..6879913dab 100644 --- a/omniNotes/src/main/res/values-eu-rES/arrays.xml +++ b/omniNotes/src/main/res/values-eu-rES/arrays.xml @@ -1,4 +1,5 @@ + - - - Oharrak diff --git a/omniNotes/src/main/res/values-eu-rES/strings.xml b/omniNotes/src/main/res/values-eu-rES/strings.xml index eb161642d3..0571b96f5e 100644 --- a/omniNotes/src/main/res/values-eu-rES/strings.xml +++ b/omniNotes/src/main/res/values-eu-rES/strings.xml @@ -1,4 +1,5 @@ + - - - Oharrak diff --git a/omniNotes/src/main/res/values-fa-rIR/arrays.xml b/omniNotes/src/main/res/values-fa-rIR/arrays.xml index 258d405721..dbe8eb66fd 100644 --- a/omniNotes/src/main/res/values-fa-rIR/arrays.xml +++ b/omniNotes/src/main/res/values-fa-rIR/arrays.xml @@ -1,4 +1,5 @@ + - - - \"یادداشت‌ها\" diff --git a/omniNotes/src/main/res/values-fa-rIR/strings.xml b/omniNotes/src/main/res/values-fa-rIR/strings.xml index 0be4488dbb..384c12fe3e 100644 --- a/omniNotes/src/main/res/values-fa-rIR/strings.xml +++ b/omniNotes/src/main/res/values-fa-rIR/strings.xml @@ -1,4 +1,5 @@ + - - - یادداشت‌ها diff --git a/omniNotes/src/main/res/values-fr-rFR/arrays.xml b/omniNotes/src/main/res/values-fr-rFR/arrays.xml index 9320ed4050..cf5b411570 100644 --- a/omniNotes/src/main/res/values-fr-rFR/arrays.xml +++ b/omniNotes/src/main/res/values-fr-rFR/arrays.xml @@ -1,4 +1,5 @@ + - - - Notes diff --git a/omniNotes/src/main/res/values-fr-rFR/strings.xml b/omniNotes/src/main/res/values-fr-rFR/strings.xml index 40165ec247..98db22512b 100644 --- a/omniNotes/src/main/res/values-fr-rFR/strings.xml +++ b/omniNotes/src/main/res/values-fr-rFR/strings.xml @@ -1,4 +1,5 @@ + - - - Notes diff --git a/omniNotes/src/main/res/values-gl-rES/arrays.xml b/omniNotes/src/main/res/values-gl-rES/arrays.xml index 78b283155d..f6c7b28b0f 100644 --- a/omniNotes/src/main/res/values-gl-rES/arrays.xml +++ b/omniNotes/src/main/res/values-gl-rES/arrays.xml @@ -1,4 +1,5 @@ + - - - Notas diff --git a/omniNotes/src/main/res/values-gl-rES/strings.xml b/omniNotes/src/main/res/values-gl-rES/strings.xml index 801d7a9930..1d902d9e90 100644 --- a/omniNotes/src/main/res/values-gl-rES/strings.xml +++ b/omniNotes/src/main/res/values-gl-rES/strings.xml @@ -1,4 +1,5 @@ + - - - Notas diff --git a/omniNotes/src/main/res/values-hi-rIN/arrays.xml b/omniNotes/src/main/res/values-hi-rIN/arrays.xml index 609312fc83..98b1699675 100644 --- a/omniNotes/src/main/res/values-hi-rIN/arrays.xml +++ b/omniNotes/src/main/res/values-hi-rIN/arrays.xml @@ -1,4 +1,5 @@ + - - - नोट्स diff --git a/omniNotes/src/main/res/values-hi-rIN/strings.xml b/omniNotes/src/main/res/values-hi-rIN/strings.xml index b41488a40e..fef6026a78 100644 --- a/omniNotes/src/main/res/values-hi-rIN/strings.xml +++ b/omniNotes/src/main/res/values-hi-rIN/strings.xml @@ -1,4 +1,5 @@ + - - - नोट्स diff --git a/omniNotes/src/main/res/values-hr-rHR/arrays.xml b/omniNotes/src/main/res/values-hr-rHR/arrays.xml index 9d05baa214..bc3e6895b3 100644 --- a/omniNotes/src/main/res/values-hr-rHR/arrays.xml +++ b/omniNotes/src/main/res/values-hr-rHR/arrays.xml @@ -1,4 +1,5 @@ + - - - Bilješke diff --git a/omniNotes/src/main/res/values-hr-rHR/strings.xml b/omniNotes/src/main/res/values-hr-rHR/strings.xml index 273c11eea6..604038764f 100644 --- a/omniNotes/src/main/res/values-hr-rHR/strings.xml +++ b/omniNotes/src/main/res/values-hr-rHR/strings.xml @@ -1,4 +1,5 @@ + - - - Bilješke diff --git a/omniNotes/src/main/res/values-hu-rHU/arrays.xml b/omniNotes/src/main/res/values-hu-rHU/arrays.xml index 982d11c887..ec72e6f131 100644 --- a/omniNotes/src/main/res/values-hu-rHU/arrays.xml +++ b/omniNotes/src/main/res/values-hu-rHU/arrays.xml @@ -1,4 +1,5 @@ + - - - Jegyzetek diff --git a/omniNotes/src/main/res/values-hu-rHU/strings.xml b/omniNotes/src/main/res/values-hu-rHU/strings.xml index 315034b173..86133733a4 100644 --- a/omniNotes/src/main/res/values-hu-rHU/strings.xml +++ b/omniNotes/src/main/res/values-hu-rHU/strings.xml @@ -1,4 +1,5 @@ + - - - Jegyzetek diff --git a/omniNotes/src/main/res/values-in-rID/arrays.xml b/omniNotes/src/main/res/values-in-rID/arrays.xml index 41552a0a7b..c823d28a84 100644 --- a/omniNotes/src/main/res/values-in-rID/arrays.xml +++ b/omniNotes/src/main/res/values-in-rID/arrays.xml @@ -1,4 +1,5 @@ + - - - Catatan diff --git a/omniNotes/src/main/res/values-in-rID/strings.xml b/omniNotes/src/main/res/values-in-rID/strings.xml index 2bc8e609e5..fd50282018 100644 --- a/omniNotes/src/main/res/values-in-rID/strings.xml +++ b/omniNotes/src/main/res/values-in-rID/strings.xml @@ -1,4 +1,5 @@ + - - - Catatan diff --git a/omniNotes/src/main/res/values-it-rIT/arrays.xml b/omniNotes/src/main/res/values-it-rIT/arrays.xml index d4e0b4846e..ce6f349d14 100644 --- a/omniNotes/src/main/res/values-it-rIT/arrays.xml +++ b/omniNotes/src/main/res/values-it-rIT/arrays.xml @@ -1,4 +1,5 @@ + - - - Note diff --git a/omniNotes/src/main/res/values-it-rIT/strings.xml b/omniNotes/src/main/res/values-it-rIT/strings.xml index f3422ab152..8b260d1ba9 100644 --- a/omniNotes/src/main/res/values-it-rIT/strings.xml +++ b/omniNotes/src/main/res/values-it-rIT/strings.xml @@ -1,4 +1,5 @@ + - - - Note diff --git a/omniNotes/src/main/res/values-iw-rIL/arrays.xml b/omniNotes/src/main/res/values-iw-rIL/arrays.xml index a13a16fe2c..fd9dfd5c91 100644 --- a/omniNotes/src/main/res/values-iw-rIL/arrays.xml +++ b/omniNotes/src/main/res/values-iw-rIL/arrays.xml @@ -1,4 +1,5 @@ + - - - הערות @@ -56,9 +54,9 @@ גדול ביותר - Share - Delete + שיתוף + מחיקה Delete All - Edit + עריכה diff --git a/omniNotes/src/main/res/values-iw-rIL/strings.xml b/omniNotes/src/main/res/values-iw-rIL/strings.xml index 5b5cae9d7c..3322ca4c9f 100644 --- a/omniNotes/src/main/res/values-iw-rIL/strings.xml +++ b/omniNotes/src/main/res/values-iw-rIL/strings.xml @@ -1,4 +1,5 @@ + - - - הערות diff --git a/omniNotes/src/main/res/values-ja-rJP/arrays.xml b/omniNotes/src/main/res/values-ja-rJP/arrays.xml index d9a579cc9e..1e0d708d30 100644 --- a/omniNotes/src/main/res/values-ja-rJP/arrays.xml +++ b/omniNotes/src/main/res/values-ja-rJP/arrays.xml @@ -1,4 +1,5 @@ + - - - ノート diff --git a/omniNotes/src/main/res/values-ja-rJP/strings.xml b/omniNotes/src/main/res/values-ja-rJP/strings.xml index 6a5587d423..0ab2fb0703 100644 --- a/omniNotes/src/main/res/values-ja-rJP/strings.xml +++ b/omniNotes/src/main/res/values-ja-rJP/strings.xml @@ -1,4 +1,5 @@ + - - - ノート diff --git a/omniNotes/src/main/res/values-km-rKH/arrays.xml b/omniNotes/src/main/res/values-km-rKH/arrays.xml index 5fb5d6c358..3bbd668b4b 100644 --- a/omniNotes/src/main/res/values-km-rKH/arrays.xml +++ b/omniNotes/src/main/res/values-km-rKH/arrays.xml @@ -1,4 +1,5 @@ + - - - កំណត់ហេតុ diff --git a/omniNotes/src/main/res/values-km-rKH/strings.xml b/omniNotes/src/main/res/values-km-rKH/strings.xml index 2dd46492b7..45f2af5622 100644 --- a/omniNotes/src/main/res/values-km-rKH/strings.xml +++ b/omniNotes/src/main/res/values-km-rKH/strings.xml @@ -1,4 +1,5 @@ + - - - កំណត់ត្រា diff --git a/omniNotes/src/main/res/values-lo-rLA/arrays.xml b/omniNotes/src/main/res/values-lo-rLA/arrays.xml index 48dcba75f4..5f5d031c24 100644 --- a/omniNotes/src/main/res/values-lo-rLA/arrays.xml +++ b/omniNotes/src/main/res/values-lo-rLA/arrays.xml @@ -1,4 +1,5 @@ + - - - ບັນທຶກ @@ -56,9 +54,9 @@ Largest - Share - Delete + ແບ່ງປັນ + ລຶບ Delete All - Edit + ແກ້ໄຂ diff --git a/omniNotes/src/main/res/values-lo-rLA/strings.xml b/omniNotes/src/main/res/values-lo-rLA/strings.xml index 8d4afef2fb..d2ab143d6e 100644 --- a/omniNotes/src/main/res/values-lo-rLA/strings.xml +++ b/omniNotes/src/main/res/values-lo-rLA/strings.xml @@ -1,4 +1,5 @@ + - - - ບັນທຶກ diff --git a/omniNotes/src/main/res/values-lv-rLV/arrays.xml b/omniNotes/src/main/res/values-lv-rLV/arrays.xml index 3844c06745..9ce577c5e1 100644 --- a/omniNotes/src/main/res/values-lv-rLV/arrays.xml +++ b/omniNotes/src/main/res/values-lv-rLV/arrays.xml @@ -1,4 +1,5 @@ + - - - Piezīmes diff --git a/omniNotes/src/main/res/values-lv-rLV/strings.xml b/omniNotes/src/main/res/values-lv-rLV/strings.xml index ca11a06737..f1d3bb62e4 100644 --- a/omniNotes/src/main/res/values-lv-rLV/strings.xml +++ b/omniNotes/src/main/res/values-lv-rLV/strings.xml @@ -1,4 +1,5 @@ + - - - Piezīmes diff --git a/omniNotes/src/main/res/values-nl-rNL/arrays.xml b/omniNotes/src/main/res/values-nl-rNL/arrays.xml index fd23d13107..9f5b6e3b4c 100644 --- a/omniNotes/src/main/res/values-nl-rNL/arrays.xml +++ b/omniNotes/src/main/res/values-nl-rNL/arrays.xml @@ -1,4 +1,5 @@ + - - - Notities diff --git a/omniNotes/src/main/res/values-nl-rNL/strings.xml b/omniNotes/src/main/res/values-nl-rNL/strings.xml index 25bc78dad3..0d823213f5 100644 --- a/omniNotes/src/main/res/values-nl-rNL/strings.xml +++ b/omniNotes/src/main/res/values-nl-rNL/strings.xml @@ -1,4 +1,5 @@ + - - - Notities diff --git a/omniNotes/src/main/res/values-pl-rPL/arrays.xml b/omniNotes/src/main/res/values-pl-rPL/arrays.xml index 62bf49d133..585c712683 100644 --- a/omniNotes/src/main/res/values-pl-rPL/arrays.xml +++ b/omniNotes/src/main/res/values-pl-rPL/arrays.xml @@ -1,4 +1,5 @@ + - - - Notes diff --git a/omniNotes/src/main/res/values-pl-rPL/strings.xml b/omniNotes/src/main/res/values-pl-rPL/strings.xml index 3922624c9e..049e2c21b5 100644 --- a/omniNotes/src/main/res/values-pl-rPL/strings.xml +++ b/omniNotes/src/main/res/values-pl-rPL/strings.xml @@ -1,4 +1,5 @@ + - - - Notes diff --git a/omniNotes/src/main/res/values-pt-rBR/arrays.xml b/omniNotes/src/main/res/values-pt-rBR/arrays.xml index 0f963ef6a1..403692e436 100644 --- a/omniNotes/src/main/res/values-pt-rBR/arrays.xml +++ b/omniNotes/src/main/res/values-pt-rBR/arrays.xml @@ -1,4 +1,5 @@ + - - - Notas diff --git a/omniNotes/src/main/res/values-pt-rBR/strings.xml b/omniNotes/src/main/res/values-pt-rBR/strings.xml index e96447fa41..460694093d 100644 --- a/omniNotes/src/main/res/values-pt-rBR/strings.xml +++ b/omniNotes/src/main/res/values-pt-rBR/strings.xml @@ -1,4 +1,5 @@ + - - - Notas diff --git a/omniNotes/src/main/res/values-pt-rPT/arrays.xml b/omniNotes/src/main/res/values-pt-rPT/arrays.xml index aa73c84543..0b68f22a2a 100644 --- a/omniNotes/src/main/res/values-pt-rPT/arrays.xml +++ b/omniNotes/src/main/res/values-pt-rPT/arrays.xml @@ -1,4 +1,5 @@ + - - - Notas diff --git a/omniNotes/src/main/res/values-pt-rPT/strings.xml b/omniNotes/src/main/res/values-pt-rPT/strings.xml index 009352fc7c..b50c63f0cf 100644 --- a/omniNotes/src/main/res/values-pt-rPT/strings.xml +++ b/omniNotes/src/main/res/values-pt-rPT/strings.xml @@ -1,4 +1,5 @@ + - - - Notas diff --git a/omniNotes/src/main/res/values-ru-rRU/arrays.xml b/omniNotes/src/main/res/values-ru-rRU/arrays.xml index 198b0d1eac..cb7fcf9588 100644 --- a/omniNotes/src/main/res/values-ru-rRU/arrays.xml +++ b/omniNotes/src/main/res/values-ru-rRU/arrays.xml @@ -1,4 +1,5 @@ + - - - Заметки diff --git a/omniNotes/src/main/res/values-ru-rRU/strings.xml b/omniNotes/src/main/res/values-ru-rRU/strings.xml index d56420d2f6..220f9b2660 100644 --- a/omniNotes/src/main/res/values-ru-rRU/strings.xml +++ b/omniNotes/src/main/res/values-ru-rRU/strings.xml @@ -1,4 +1,5 @@ + - - - Заметки diff --git a/omniNotes/src/main/res/values-sk-rSK/arrays.xml b/omniNotes/src/main/res/values-sk-rSK/arrays.xml index 286e28db97..b4c0f3136b 100644 --- a/omniNotes/src/main/res/values-sk-rSK/arrays.xml +++ b/omniNotes/src/main/res/values-sk-rSK/arrays.xml @@ -1,4 +1,5 @@ + - - - Poznámky diff --git a/omniNotes/src/main/res/values-sk-rSK/strings.xml b/omniNotes/src/main/res/values-sk-rSK/strings.xml index 70cbf9fb64..6ecbe4ee6b 100644 --- a/omniNotes/src/main/res/values-sk-rSK/strings.xml +++ b/omniNotes/src/main/res/values-sk-rSK/strings.xml @@ -1,4 +1,5 @@ + - - - Poznámky diff --git a/omniNotes/src/main/res/values-sl-rSI/arrays.xml b/omniNotes/src/main/res/values-sl-rSI/arrays.xml index 68b4e403b5..3b1d85b443 100644 --- a/omniNotes/src/main/res/values-sl-rSI/arrays.xml +++ b/omniNotes/src/main/res/values-sl-rSI/arrays.xml @@ -1,4 +1,5 @@ + - - - Beležke diff --git a/omniNotes/src/main/res/values-sl-rSI/strings.xml b/omniNotes/src/main/res/values-sl-rSI/strings.xml index 5a8b6691b1..68a78fdec9 100644 --- a/omniNotes/src/main/res/values-sl-rSI/strings.xml +++ b/omniNotes/src/main/res/values-sl-rSI/strings.xml @@ -1,4 +1,5 @@ + - - - Beležke diff --git a/omniNotes/src/main/res/values-sr-rSP/arrays.xml b/omniNotes/src/main/res/values-sr-rSP/arrays.xml index 0e2c17b54c..300d59b7f7 100644 --- a/omniNotes/src/main/res/values-sr-rSP/arrays.xml +++ b/omniNotes/src/main/res/values-sr-rSP/arrays.xml @@ -1,4 +1,5 @@ + - - - Белешке diff --git a/omniNotes/src/main/res/values-sr-rSP/strings.xml b/omniNotes/src/main/res/values-sr-rSP/strings.xml index 8aa8a44e79..e85a120c6e 100644 --- a/omniNotes/src/main/res/values-sr-rSP/strings.xml +++ b/omniNotes/src/main/res/values-sr-rSP/strings.xml @@ -1,4 +1,5 @@ + - - - Белешке diff --git a/omniNotes/src/main/res/values-sv-rSE/arrays.xml b/omniNotes/src/main/res/values-sv-rSE/arrays.xml index 324e61c9ae..c21eeca0b9 100644 --- a/omniNotes/src/main/res/values-sv-rSE/arrays.xml +++ b/omniNotes/src/main/res/values-sv-rSE/arrays.xml @@ -1,4 +1,5 @@ + - - - Anteckningar diff --git a/omniNotes/src/main/res/values-sv-rSE/strings.xml b/omniNotes/src/main/res/values-sv-rSE/strings.xml index 378b55ec8a..e2ba6f02c5 100644 --- a/omniNotes/src/main/res/values-sv-rSE/strings.xml +++ b/omniNotes/src/main/res/values-sv-rSE/strings.xml @@ -1,4 +1,5 @@ + - - - Anteckningar diff --git a/omniNotes/src/main/res/values-tr-rTR/arrays.xml b/omniNotes/src/main/res/values-tr-rTR/arrays.xml index ceca895874..ae12ec41e3 100644 --- a/omniNotes/src/main/res/values-tr-rTR/arrays.xml +++ b/omniNotes/src/main/res/values-tr-rTR/arrays.xml @@ -1,4 +1,5 @@ + - - - Notlar diff --git a/omniNotes/src/main/res/values-tr-rTR/strings.xml b/omniNotes/src/main/res/values-tr-rTR/strings.xml index b3afa6cd58..d29db47ce9 100644 --- a/omniNotes/src/main/res/values-tr-rTR/strings.xml +++ b/omniNotes/src/main/res/values-tr-rTR/strings.xml @@ -1,4 +1,5 @@ + - - - Notlar diff --git a/omniNotes/src/main/res/values-uk-rUA/arrays.xml b/omniNotes/src/main/res/values-uk-rUA/arrays.xml index 9bc6795f00..1f76eab17c 100644 --- a/omniNotes/src/main/res/values-uk-rUA/arrays.xml +++ b/omniNotes/src/main/res/values-uk-rUA/arrays.xml @@ -1,4 +1,5 @@ + - - - Нотатки diff --git a/omniNotes/src/main/res/values-uk-rUA/strings.xml b/omniNotes/src/main/res/values-uk-rUA/strings.xml index d8db599c5e..9895f5238c 100644 --- a/omniNotes/src/main/res/values-uk-rUA/strings.xml +++ b/omniNotes/src/main/res/values-uk-rUA/strings.xml @@ -1,4 +1,5 @@ + - - - Нотатки diff --git a/omniNotes/src/main/res/values-zh-rCN/arrays.xml b/omniNotes/src/main/res/values-zh-rCN/arrays.xml index af0ab0de53..4d6701b7df 100644 --- a/omniNotes/src/main/res/values-zh-rCN/arrays.xml +++ b/omniNotes/src/main/res/values-zh-rCN/arrays.xml @@ -1,4 +1,5 @@ + - - - 记事 diff --git a/omniNotes/src/main/res/values-zh-rCN/strings.xml b/omniNotes/src/main/res/values-zh-rCN/strings.xml index 2300422641..5db586a31f 100644 --- a/omniNotes/src/main/res/values-zh-rCN/strings.xml +++ b/omniNotes/src/main/res/values-zh-rCN/strings.xml @@ -1,4 +1,5 @@ + - - - 记事 diff --git a/omniNotes/src/main/res/values-zh-rTW/arrays.xml b/omniNotes/src/main/res/values-zh-rTW/arrays.xml index 63428091ee..8e92643f5f 100644 --- a/omniNotes/src/main/res/values-zh-rTW/arrays.xml +++ b/omniNotes/src/main/res/values-zh-rTW/arrays.xml @@ -1,4 +1,5 @@ + - - - 記事 diff --git a/omniNotes/src/main/res/values-zh-rTW/strings.xml b/omniNotes/src/main/res/values-zh-rTW/strings.xml index b199e57d31..4b577cac76 100644 --- a/omniNotes/src/main/res/values-zh-rTW/strings.xml +++ b/omniNotes/src/main/res/values-zh-rTW/strings.xml @@ -1,4 +1,5 @@ + - - - 筆記 From 083b4a6187c91a774525123a9af73f681ceccfeb Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Wed, 25 Apr 2018 11:30:59 +0200 Subject: [PATCH 33/37] Attachment's menu graphical overhaul - pt2 --- gradle.properties | 2 +- .../android/omninotes/DetailFragment.java | 25 +- .../src/main/res/layout/attachment_dialog.xml | 262 +++++++++--------- omniNotes/src/main/res/values/dimens.xml | 4 +- 4 files changed, 151 insertions(+), 142 deletions(-) diff --git a/gradle.properties b/gradle.properties index 858ddc1d64..601ec7ee79 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,7 +16,7 @@ # VERSION_NAME=5.5.0 -VERSION_CODE=243 +VERSION_CODE=244 PACKAGE=it.feio.android.omninotes MIN_SDK=16 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 fb96854161..9809106ac4 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java @@ -296,8 +296,6 @@ public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); } - @SuppressLint("NewApi") - @SuppressWarnings("deprecation") @Override public void onPause() { super.onPause(); @@ -309,11 +307,6 @@ public void onPause() { saveNote(this); } - if (mRecorder != null) { - mRecorder.release(); - mRecorder = null; - } - if (toggleChecklistView != null) { KeyboardUtils.hideKeyboard(toggleChecklistView); content.clearFocus(); @@ -1256,7 +1249,9 @@ private void showAttachmentsPopup() { final View layout = inflater.inflate(R.layout.attachment_dialog, null); attachmentDialog = new MaterialDialog.Builder(mainActivity) - .customView(layout, false).build(); + .autoDismiss(false) + .customView(layout, false) + .build(); attachmentDialog.show(); // Camera @@ -1264,6 +1259,7 @@ private void showAttachmentsPopup() { cameraSelection.setOnClickListener(new AttachmentOnClickListener()); // Audio recording android.widget.TextView recordingSelection = (android.widget.TextView) layout.findViewById(R.id.recording); + toggleAudioRecordingStop(recordingSelection); recordingSelection.setOnClickListener(new AttachmentOnClickListener()); // Video recording android.widget.TextView videoSelection = (android.widget.TextView) layout.findViewById(R.id.video); @@ -1783,9 +1779,7 @@ private void startRecording(View v) { R.string.permission_audio_recording, snackBarPlaceholder, () -> { isRecording = true; - android.widget.TextView mTextView = (android.widget.TextView) v; - mTextView.setText(getString(R.string.stop)); - mTextView.setTextColor(Color.parseColor("#ff0000")); + toggleAudioRecordingStop(v); File f = StorageHelper.createNewAttachmentFile(mainActivity, Constants.MIME_TYPE_AUDIO_EXT); if (f == null) { @@ -1814,7 +1808,15 @@ private void startRecording(View v) { }); } + private void toggleAudioRecordingStop(View v) { + if (isRecording) { + ((android.widget.TextView) v).setText(getString(R.string.stop)); + ((android.widget.TextView) v).setTextColor(Color.parseColor("#ff0000")); + } + } + private void stopRecording() { + isRecording = false; if (mRecorder != null) { mRecorder.stop(); audioRecordingTime = Calendar.getInstance().getTimeInMillis() - audioRecordingTimeStart; @@ -2188,7 +2190,6 @@ public void onClick(View v) { if (!isRecording) { startRecording(v); } else { - isRecording = false; stopRecording(); Attachment attachment = new Attachment(Uri.fromFile(new File(recordName)), Constants .MIME_TYPE_AUDIO); diff --git a/omniNotes/src/main/res/layout/attachment_dialog.xml b/omniNotes/src/main/res/layout/attachment_dialog.xml index 5be8c09953..b9f6ae5e97 100644 --- a/omniNotes/src/main/res/layout/attachment_dialog.xml +++ b/omniNotes/src/main/res/layout/attachment_dialog.xml @@ -15,140 +15,148 @@ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . --> - + - - - + android:background="@drawable/icon_selector" + android:drawableLeft="@drawable/ic_photo_camera_black_24dp" + android:drawableStart="@drawable/ic_photo_camera_black_24dp" + android:drawablePadding="@dimen/attachment_dialog_drawable_padding" + android:padding="@dimen/attachment_dialog_items_padding" + android:paddingStart="@dimen/horizontal_margin" + android:paddingLeft="@dimen/horizontal_margin" + android:paddingEnd="@dimen/horizontal_margin" + android:text="@string/camera" + android:textSize="@dimen/attachment_dialog_text_size" + pixlui:typeface="Roboto-Regular.ttf" + android:textColor="@color/text_gray"/> - + - + - + - + - + - + - - + - + diff --git a/omniNotes/src/main/res/values/dimens.xml b/omniNotes/src/main/res/values/dimens.xml index 23ef8bc81c..856e00f991 100644 --- a/omniNotes/src/main/res/values/dimens.xml +++ b/omniNotes/src/main/res/values/dimens.xml @@ -62,8 +62,8 @@ 16sp - 10dp - 10dp + 12dp + 12dp 8dp From fe8b26e64d8247eef47b2d8e4eeafe083f5cdb74 Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Wed, 25 Apr 2018 11:57:27 +0200 Subject: [PATCH 34/37] Added more informations to note statistics --- .../android/omninotes/NoteInfosActivity.java | 16 +++++- .../omninotes/helpers/NotesHelper.java | 4 ++ .../omninotes/models/StatsSingleNote.java | 9 ++++ .../main/res/layout/activity_note_infos.xml | 50 +++++++++++++++++++ 4 files changed, 77 insertions(+), 2 deletions(-) diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/NoteInfosActivity.java b/omniNotes/src/main/java/it/feio/android/omninotes/NoteInfosActivity.java index a0e89cd9f2..a09052b3ac 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/NoteInfosActivity.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/NoteInfosActivity.java @@ -27,12 +27,17 @@ import it.feio.android.omninotes.models.Note; import it.feio.android.omninotes.models.StatsSingleNote; import it.feio.android.omninotes.utils.Constants; +import org.apache.commons.lang.StringUtils; import java.util.Objects; public class NoteInfosActivity extends Activity { + @BindView(R.id.note_infos_category) + TextView category; + @BindView(R.id.note_infos_tags) + TextView tags; @BindView(R.id.note_infos_chars) TextView chars; @BindView(R.id.note_infos_words) @@ -63,6 +68,8 @@ protected void onCreate(Bundle savedInstanceState) { private void populateViews(Note note) { StatsSingleNote infos = NotesHelper.getNoteInfos(note); + populateView(category, infos.getCategoryName()); + populateView(tags, infos.getTags()); populateView(chars, infos.getChars()); populateView(words, infos.getWords()); populateView(checklistItems, infos.getChecklistItemsNumber()); @@ -75,8 +82,13 @@ private void populateViews(Note note) { } private void populateView(TextView textView, int numberValue) { - if (numberValue > 0) { - textView.setText(String.valueOf(numberValue)); + String stringValue = numberValue > 0 ? String.valueOf(numberValue) : ""; + populateView(textView, stringValue); + } + + private void populateView(TextView textView, String value) { + if (!StringUtils.isEmpty(value)) { + textView.setText(value); } else { ((View) textView.getParent()).setVisibility(View.GONE); } diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NotesHelper.java b/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NotesHelper.java index 6599e193d5..acb3d1efce 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NotesHelper.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/helpers/NotesHelper.java @@ -153,6 +153,10 @@ public static StatsSingleNote getNoteInfos(Note note) { infos.setSketches(sketches); infos.setFiles(files); + if (note.getCategory() != null) { + infos.setCategoryName(note.getCategory().getName()); + } + return infos; } diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/models/StatsSingleNote.java b/omniNotes/src/main/java/it/feio/android/omninotes/models/StatsSingleNote.java index 3ee179194a..a094f1dec2 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/models/StatsSingleNote.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/models/StatsSingleNote.java @@ -27,6 +27,7 @@ public class StatsSingleNote { protected int audioRecordings; protected int sketches; protected int files; + protected String categoryName; protected int words; protected int chars; @@ -106,6 +107,14 @@ public void setFiles(int files) { this.files = files; } + public String getCategoryName() { + return categoryName; + } + + public void setCategoryName(String categoryName) { + this.categoryName = categoryName; + } + public int getChecklistItemsNumber() { return checklistItemsNumber; } diff --git a/omniNotes/src/main/res/layout/activity_note_infos.xml b/omniNotes/src/main/res/layout/activity_note_infos.xml index 2584dfde45..e175ee3c64 100644 --- a/omniNotes/src/main/res/layout/activity_note_infos.xml +++ b/omniNotes/src/main/res/layout/activity_note_infos.xml @@ -38,6 +38,56 @@ android:focusable="true" android:focusableInTouchMode="true"> + + + + + + + + + + + + + + + + + + Date: Wed, 25 Apr 2018 12:40:43 +0200 Subject: [PATCH 35/37] Ops, I forgot to reactivate the debug flag to make automatic test work --- .../src/main/java/it/feio/android/omninotes/OmniNotes.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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 f81978dd15..ebe7a8edcd 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/OmniNotes.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/OmniNotes.java @@ -85,8 +85,7 @@ protected Void doInBackground(Void... params) { @NonNull public static boolean isDebugBuild() { -// return BuildConfig.BUILD_TYPE.equals("debug"); - return false; + return BuildConfig.BUILD_TYPE.equals("debug"); } @Override From 30efb35bb233f2be23d0b044b767e87008d559cb Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Wed, 25 Apr 2018 12:42:50 +0200 Subject: [PATCH 36/37] Should fix NullPointerException when adding note note from wiget (fix #487) --- .../feio/android/omninotes/MainActivity.java | 54 ++++++++++--------- 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/MainActivity.java b/omniNotes/src/main/java/it/feio/android/omninotes/MainActivity.java index d924ba2c63..b59c804b82 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/MainActivity.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/MainActivity.java @@ -148,26 +148,32 @@ public void onEvent(PasswordRemovedEvent passwordRemovedEvent) { private void init() { isPasswordAccepted = true; - mFragmentManager = getSupportFragmentManager(); - - NavigationDrawerFragment mNavigationDrawerFragment = (NavigationDrawerFragment) mFragmentManager + getFragmentManagerInstance(); + + NavigationDrawerFragment mNavigationDrawerFragment = (NavigationDrawerFragment) getFragmentManagerInstance() .findFragmentById(R.id.navigation_drawer); if (mNavigationDrawerFragment == null) { - FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction(); + FragmentTransaction fragmentTransaction = getFragmentManagerInstance().beginTransaction(); fragmentTransaction.replace(R.id.navigation_drawer, new NavigationDrawerFragment(), FRAGMENT_DRAWER_TAG).commit(); } - if (mFragmentManager.findFragmentByTag(FRAGMENT_LIST_TAG) == null) { - FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction(); + if (getFragmentManagerInstance().findFragmentByTag(FRAGMENT_LIST_TAG) == null) { + FragmentTransaction fragmentTransaction = getFragmentManagerInstance().beginTransaction(); fragmentTransaction.add(R.id.fragment_container, new ListFragment(), FRAGMENT_LIST_TAG).commit(); } handleIntents(); } + private FragmentManager getFragmentManagerInstance() { + if (mFragmentManager == null) { + mFragmentManager = getSupportFragmentManager(); + } + return mFragmentManager; + } - @Override + @Override protected void onNewIntent(Intent intent) { if (intent.getAction() == null) { intent.setAction(Constants.ACTION_START_APP); @@ -219,12 +225,10 @@ public void commitPending() { */ private Fragment checkFragmentInstance(int id, Object instanceClass) { Fragment result = null; - if (mFragmentManager != null) { - Fragment fragment = mFragmentManager.findFragmentById(id); - if (instanceClass.equals(fragment.getClass())) { - result = fragment; - } - } + Fragment fragment = getFragmentManagerInstance().findFragmentById(id); + if (instanceClass.equals(fragment.getClass())) { + result = fragment; + } return result; } @@ -246,7 +250,7 @@ public void onBackPressed() { setRequestedOrientation( ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); - mFragmentManager.popBackStack(); + getFragmentManagerInstance().popBackStack(); return; } @@ -300,8 +304,8 @@ public DrawerLayout getDrawerLayout() { public ActionBarDrawerToggle getDrawerToggle() { - if (mFragmentManager != null && mFragmentManager.findFragmentById(R.id.navigation_drawer) != null) { - return ((NavigationDrawerFragment) mFragmentManager.findFragmentById(R.id.navigation_drawer)).mDrawerToggle; + if (getFragmentManagerInstance().findFragmentById(R.id.navigation_drawer) != null) { + return ((NavigationDrawerFragment) getFragmentManagerInstance().findFragmentById(R.id.navigation_drawer)).mDrawerToggle; } else { return null; } @@ -312,7 +316,7 @@ public ActionBarDrawerToggle getDrawerToggle() { * Finishes multiselection mode started by ListFragment */ public void finishActionMode() { - ListFragment fragment = (ListFragment) mFragmentManager.findFragmentByTag(FRAGMENT_LIST_TAG); + ListFragment fragment = (ListFragment) getFragmentManagerInstance().findFragmentByTag(FRAGMENT_LIST_TAG); if (fragment != null) { fragment.finishActionMode(); } @@ -396,13 +400,13 @@ private boolean receivedIntent(Intent i) { private boolean noteAlreadyOpened(Note note) { - DetailFragment detailFragment = (DetailFragment) mFragmentManager.findFragmentByTag(FRAGMENT_DETAIL_TAG); + DetailFragment detailFragment = (DetailFragment) getFragmentManagerInstance().findFragmentByTag(FRAGMENT_DETAIL_TAG); return detailFragment != null && NotesHelper.haveSameId(note, detailFragment.getCurrentNote()); } public void switchToList() { - FragmentTransaction transaction = mFragmentManager.beginTransaction(); + FragmentTransaction transaction = getFragmentManagerInstance().beginTransaction(); animateTransition(transaction, TRANSITION_HORIZONTAL); ListFragment mListFragment = new ListFragment(); transaction.replace(R.id.fragment_container, mListFragment, FRAGMENT_LIST_TAG).addToBackStack @@ -410,24 +414,24 @@ public void switchToList() { if (getDrawerToggle() != null) { getDrawerToggle().setDrawerIndicatorEnabled(false); } - mFragmentManager.getFragments(); + getFragmentManagerInstance().getFragments(); EventBus.getDefault().post(new SwitchFragmentEvent(SwitchFragmentEvent.Direction.PARENT)); } public void switchToDetail(Note note) { - FragmentTransaction transaction = mFragmentManager.beginTransaction(); + FragmentTransaction transaction = getFragmentManagerInstance().beginTransaction(); animateTransition(transaction, TRANSITION_HORIZONTAL); DetailFragment mDetailFragment = new DetailFragment(); Bundle b = new Bundle(); b.putParcelable(Constants.INTENT_NOTE, note); mDetailFragment.setArguments(b); - if (mFragmentManager.findFragmentByTag(FRAGMENT_DETAIL_TAG) == null) { + if (getFragmentManagerInstance().findFragmentByTag(FRAGMENT_DETAIL_TAG) == null) { transaction.replace(R.id.fragment_container, mDetailFragment, FRAGMENT_DETAIL_TAG) .addToBackStack(FRAGMENT_LIST_TAG) .commitAllowingStateLoss(); } else { - mFragmentManager.popBackStackImmediate(); + getFragmentManagerInstance().popBackStackImmediate(); transaction.replace(R.id.fragment_container, mDetailFragment, FRAGMENT_DETAIL_TAG) .addToBackStack(FRAGMENT_DETAIL_TAG) .commitAllowingStateLoss(); @@ -516,7 +520,7 @@ public void showMessage(String message, Style style) { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { - DetailFragment f = (DetailFragment) mFragmentManager.findFragmentByTag(FRAGMENT_DETAIL_TAG); + DetailFragment f = (DetailFragment) getFragmentManagerInstance().findFragmentByTag(FRAGMENT_DETAIL_TAG); if (f != null && f.isAdded()) { f.onTimeSetListener.onTimeSet(view, hourOfDay, minute); } @@ -526,7 +530,7 @@ public void onTimeSet(TimePicker view, int hourOfDay, int minute) { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { - DetailFragment f = (DetailFragment) mFragmentManager.findFragmentByTag(FRAGMENT_DETAIL_TAG); + DetailFragment f = (DetailFragment) getFragmentManagerInstance().findFragmentByTag(FRAGMENT_DETAIL_TAG); if (f != null && f.isAdded() && f.onDateSetListener != null) { f.onDateSetListener.onDateSet(view, year, monthOfYear, dayOfMonth); } From cedca2aa7719ea702e7e27602809c67a41322060 Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Wed, 25 Apr 2018 21:03:49 +0200 Subject: [PATCH 37/37] Ready for release 5.5.0? Updated changelog and version code --- gradle.properties | 2 +- omniNotes/src/main/res/raw/changelog.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 601ec7ee79..09675fdef5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,7 +16,7 @@ # VERSION_NAME=5.5.0 -VERSION_CODE=244 +VERSION_CODE=245 PACKAGE=it.feio.android.omninotes MIN_SDK=16 diff --git a/omniNotes/src/main/res/raw/changelog.xml b/omniNotes/src/main/res/raw/changelog.xml index cf860725a5..94e54062d6 100644 --- a/omniNotes/src/main/res/raw/changelog.xml +++ b/omniNotes/src/main/res/raw/changelog.xml @@ -17,7 +17,7 @@ --> - + [b]New![/b] Rapidly search your unfinished to-do lists [b]New![/b] New "attachment" available to easily add the current timestamp [b]New![/b] Now an option is available into the editor to check currently edited note's informations