diff options
author | stefan-niedermann <info@niedermann.it> | 2019-02-07 23:27:26 +0300 |
---|---|---|
committer | stefan-niedermann <info@niedermann.it> | 2019-02-07 23:27:26 +0300 |
commit | c221aa1329f6cf19cfe4c5efb24f545d70b6ca15 (patch) | |
tree | 24547a167e755aab116f82c3144e8b04b3a6c7f2 /app/src | |
parent | f7ab04e209d0b4acc6419063220a24f4e35d3bfe (diff) | |
parent | 58e663b30f2e435f0591fbd9eea5a8b83b95df7d (diff) |
Merge branch 'master' into monospace-font
# Conflicts:
# app/src/main/java/it/niedermann/owncloud/notes/android/fragment/NoteEditFragment.java
# app/src/main/java/it/niedermann/owncloud/notes/android/fragment/NotePreviewFragment.java
Diffstat (limited to 'app/src')
85 files changed, 1326 insertions, 415 deletions
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 02252a7e..58eddca6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -70,6 +70,12 @@ <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/plain" /> </intent-filter> + <!-- Voice command "note to self" in google search --> + <intent-filter android:label="@string/action_create"> + <action android:name="com.google.android.gm.action.AUTO_SEND"/> + <category android:name="android.intent.category.DEFAULT"/> + <data android:mimeType="text/plain"/> + </intent-filter> </activity> <activity diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/AlwaysAutoCompleteTextView.java b/app/src/main/java/it/niedermann/owncloud/notes/android/AlwaysAutoCompleteTextView.java index 3255633a..6a6a312b 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/AlwaysAutoCompleteTextView.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/AlwaysAutoCompleteTextView.java @@ -1,7 +1,7 @@ package it.niedermann.owncloud.notes.android; import android.content.Context; -import android.support.v7.widget.AppCompatAutoCompleteTextView; +import androidx.appcompat.widget.AppCompatAutoCompleteTextView; import android.util.AttributeSet; import android.util.Log; import android.view.WindowManager; diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/AboutActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/AboutActivity.java index e7296491..937d2a20 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/AboutActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/AboutActivity.java @@ -1,12 +1,12 @@ package it.niedermann.owncloud.notes.android.activity; import android.os.Bundle; -import android.support.design.widget.TabLayout; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentPagerAdapter; -import android.support.v4.view.ViewPager; -import android.support.v7.app.AppCompatActivity; +import com.google.android.material.tabs.TabLayout; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentPagerAdapter; +import androidx.viewpager.widget.ViewPager; +import androidx.appcompat.app.AppCompatActivity; import butterknife.BindView; import butterknife.ButterKnife; diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/EditNoteActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/EditNoteActivity.java index 43ffd59b..9b781db6 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/EditNoteActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/EditNoteActivity.java @@ -5,8 +5,8 @@ import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; -import android.support.v7.app.ActionBar; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AppCompatActivity; import android.util.Log; import android.view.Menu; import android.view.MenuItem; @@ -115,6 +115,7 @@ public class EditNoteActivity extends AppCompatActivity implements BaseNoteFragm } else { fragment = NotePreviewFragment.newInstance(noteId); } + if (savedState != null) { fragment.setInitialSavedState(savedState); } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java index 71d3c6d4..14e9e213 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java @@ -10,20 +10,20 @@ import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.preference.PreferenceManager; -import android.support.annotation.Nullable; -import android.support.design.widget.FloatingActionButton; -import android.support.design.widget.Snackbar; -import android.support.v4.widget.DrawerLayout; -import android.support.v4.widget.SwipeRefreshLayout; -import android.support.v7.app.ActionBarDrawerToggle; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.view.ActionMode; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.support.v7.widget.SearchView; -import android.support.v7.widget.Toolbar; -import android.support.v7.widget.helper.ItemTouchHelper; -import android.support.v7.widget.helper.ItemTouchHelper.SimpleCallback; +import androidx.annotation.Nullable; +import com.google.android.material.floatingactionbutton.FloatingActionButton; +import com.google.android.material.snackbar.Snackbar; +import androidx.drawerlayout.widget.DrawerLayout; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; +import androidx.appcompat.app.ActionBarDrawerToggle; +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.view.ActionMode; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.appcompat.widget.SearchView; +import androidx.appcompat.widget.Toolbar; +import androidx.recyclerview.widget.ItemTouchHelper; +import androidx.recyclerview.widget.ItemTouchHelper.SimpleCallback; import android.util.Log; import android.view.Menu; import android.view.MenuItem; @@ -369,10 +369,7 @@ public class NotesListViewActivity extends AppCompatActivity implements ItemAdap }); - SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); - String username = preferences.getString(SettingsActivity.SETTINGS_USERNAME, SettingsActivity.DEFAULT_SETTINGS); - String url = preferences.getString(SettingsActivity.SETTINGS_URL, SettingsActivity.DEFAULT_SETTINGS).replace("https://", "").replace("http://", ""); - this.account.setText(username + "@" + url.substring(0, url.length() - 1)); + this.updateUsernameInDrawer(); final NotesListViewActivity that = this; this.account.setOnClickListener(new View.OnClickListener() { @Override @@ -520,7 +517,7 @@ public class NotesListViewActivity extends AppCompatActivity implements ItemAdap final MenuItem item = menu.findItem(R.id.search); searchView = (SearchView) item.getActionView(); - final LinearLayout searchEditFrame = searchView.findViewById(android.support.v7.appcompat.R.id + final LinearLayout searchEditFrame = searchView.findViewById(R.id .search_edit_frame); searchEditFrame.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @@ -593,6 +590,7 @@ public class NotesListViewActivity extends AppCompatActivity implements ItemAdap // Create new Instance with new URL and credentials db = NoteSQLiteOpenHelper.getInstance(this); if (db.getNoteServerSyncHelper().isSyncPossible()) { + this.updateUsernameInDrawer(); adapter.removeAll(); synchronize(); } else { @@ -601,6 +599,15 @@ public class NotesListViewActivity extends AppCompatActivity implements ItemAdap } } + private void updateUsernameInDrawer() { + SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); + String username = preferences.getString(SettingsActivity.SETTINGS_USERNAME, SettingsActivity.DEFAULT_SETTINGS); + String url = preferences.getString(SettingsActivity.SETTINGS_URL, SettingsActivity.DEFAULT_SETTINGS).replace("https://", "").replace("http://", ""); + if(!SettingsActivity.DEFAULT_SETTINGS.equals(username) && !SettingsActivity.DEFAULT_SETTINGS.equals(url)) { + this.account.setText(username + "@" + url.substring(0, url.length() - 1)); + } + } + @Override public void onNoteClick(int position, View v) { if (mActionMode != null) { diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/PreferencesActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/PreferencesActivity.java index 1bb54f1e..2d64d596 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/PreferencesActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/PreferencesActivity.java @@ -1,8 +1,8 @@ package it.niedermann.owncloud.notes.android.activity; import android.os.Bundle; -import android.support.annotation.Nullable; -import android.support.v7.app.AppCompatActivity; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; import it.niedermann.owncloud.notes.android.fragment.PreferencesFragment; diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/SelectSingleNoteActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/SelectSingleNoteActivity.java index 2de33504..2e1e1d86 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/SelectSingleNoteActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/SelectSingleNoteActivity.java @@ -6,7 +6,7 @@ import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; -import android.support.v4.widget.SwipeRefreshLayout; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import android.view.Menu; import android.view.View; @@ -17,6 +17,7 @@ import it.niedermann.owncloud.notes.android.appwidget.SingleNoteWidget; import it.niedermann.owncloud.notes.model.DBNote; import it.niedermann.owncloud.notes.model.Item; import it.niedermann.owncloud.notes.model.ItemAdapter; +import it.niedermann.owncloud.notes.util.Notes; public class SelectSingleNoteActivity extends NotesListViewActivity { @@ -26,15 +27,14 @@ public class SelectSingleNoteActivity extends NotesListViewActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setResult(Activity.RESULT_CANCELED); SwipeRefreshLayout swipeRefreshLayout = getSwipeRefreshLayout(); - setResult(Activity.RESULT_CANCELED); - ButterKnife.bind(this); fabCreate.setVisibility(View.GONE); - android.support.v7.app.ActionBar ab = getSupportActionBar(); + androidx.appcompat.app.ActionBar ab = getSupportActionBar(); if (ab != null) { ab.setTitle(R.string.activity_select_single_note); } @@ -53,33 +53,24 @@ public class SelectSingleNoteActivity extends NotesListViewActivity { Item item = adapter.getItem(position); DBNote note = (DBNote) item; long noteID = note.getId(); - Intent intent = getIntent(); - Bundle extras = intent.getExtras(); - int mAppWidgetId = -1; + final Bundle extras = getIntent().getExtras(); - if (extras != null) { - mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); + if (extras == null) { + finish(); } + int appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); SharedPreferences.Editor sp = PreferenceManager.getDefaultSharedPreferences(this).edit(); - sp.putLong(SingleNoteWidget.WIDGET_KEY + mAppWidgetId, noteID); + sp.putLong(SingleNoteWidget.WIDGET_KEY + appWidgetId, noteID); + sp.putBoolean(SingleNoteWidget.DARK_THEME_KEY + appWidgetId, Notes.getAppTheme(getApplicationContext())); sp.apply(); - Intent retIntent = new Intent(this, SingleNoteWidget.class); - retIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId); - retIntent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE); - sendBroadcast(retIntent); - setResult(RESULT_OK, retIntent); + Intent updateIntent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE, null, + getApplicationContext(), SingleNoteWidget.class); + updateIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); + setResult(RESULT_OK, updateIntent); + getApplicationContext().sendBroadcast(updateIntent); finish(); } - - @Override - public boolean onNoteLongClick(int position, View v) { - return false; - } - - @Override - public void onNoteFavoriteClick(int position, View view) { - } } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/SettingsActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/SettingsActivity.java index 756f482b..ea9d1777 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/SettingsActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/SettingsActivity.java @@ -6,9 +6,9 @@ import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.os.Bundle; import android.preference.PreferenceManager; -import android.support.design.widget.TextInputLayout; -import android.support.v4.content.ContextCompat; -import android.support.v7.app.AppCompatActivity; +import com.google.android.material.textfield.TextInputLayout; +import androidx.core.content.ContextCompat; +import androidx.appcompat.app.AppCompatActivity; import android.text.Editable; import android.text.TextWatcher; import android.util.Log; diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/SplashscreenActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/SplashscreenActivity.java index 14195efc..295cd193 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/SplashscreenActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/SplashscreenActivity.java @@ -2,7 +2,7 @@ package it.niedermann.owncloud.notes.android.activity; import android.content.Intent; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; /** * Created by stefan on 18.04.17. diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidget.java b/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidget.java index f2daca58..034fbb18 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidget.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidget.java @@ -15,75 +15,100 @@ import it.niedermann.owncloud.notes.R; import it.niedermann.owncloud.notes.android.activity.EditNoteActivity; import it.niedermann.owncloud.notes.android.activity.NotesListViewActivity; -import static android.appwidget.AppWidgetManager.ACTION_APPWIDGET_UPDATE; - public class NoteListWidget extends AppWidgetProvider { public static final String WIDGET_MODE_KEY = "NLW_mode"; public static final String WIDGET_CATEGORY_KEY = "NLW_cat"; + public static final String DARK_THEME_KEY = "NLW_darkTheme"; public static final int NLW_DISPLAY_ALL = 0; public static final int NLW_DISPLAY_STARRED = 1; public static final int NLW_DISPLAY_CATEGORY = 2; - @Override - public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { - super.onUpdate(context, appWidgetManager, appWidgetIds); + static void updateAppWidget(Context context, AppWidgetManager awm, int[] appWidgetIds) { + RemoteViews views; + boolean darkTheme; for (int appWidgetId : appWidgetIds) { SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context); int displayMode = sp.getInt(NoteListWidget.WIDGET_MODE_KEY + appWidgetId, -1); + + // onUpdate has been triggered before the user finished configuring the widget + if (displayMode == -1) { + return; + } + String category = sp.getString(NoteListWidget.WIDGET_CATEGORY_KEY + appWidgetId, null); - Intent serviceIntent = new Intent(context, NoteListWidgetService.class); - RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_note_list); + darkTheme = sp.getBoolean(NoteListWidget.DARK_THEME_KEY + appWidgetId, false); + Intent serviceIntent = new Intent(context, NoteListWidgetService.class); serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); serviceIntent.putExtra(NoteListWidget.WIDGET_MODE_KEY + appWidgetId, displayMode); + serviceIntent.putExtra(NoteListWidget.DARK_THEME_KEY + appWidgetId, darkTheme); + serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME))); + + if (displayMode == NLW_DISPLAY_CATEGORY) { + serviceIntent.putExtra(NoteListWidget.WIDGET_CATEGORY_KEY + appWidgetId, category); + } // Launch application when user taps the header icon or app title Intent intent = new Intent("android.intent.action.MAIN"); intent.setComponent(new ComponentName(context.getPackageName(), NotesListViewActivity.class.getName())); - PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, - intent, - PendingIntent.FLAG_UPDATE_CURRENT); - - views.setOnClickPendingIntent(R.id.widget_note_header_icon, pendingIntent); - views.setOnClickPendingIntent(R.id.widget_note_list_title_tv, pendingIntent); - - // Launch create note activity if user taps "+" sign in header - intent = new Intent(context, EditNoteActivity.class); - pendingIntent = PendingIntent.getActivity(context,0, - intent, - PendingIntent.FLAG_UPDATE_CURRENT); + // Open the main app if the user taps the widget header + PendingIntent openAppI = PendingIntent.getActivity( context, 0, intent, + PendingIntent.FLAG_UPDATE_CURRENT); - views.setOnClickPendingIntent(R.id.widget_note_list_create_icon, pendingIntent); + // Launch create note activity if user taps "+" icon on header + PendingIntent newNoteI = PendingIntent.getActivity( context,0, + (new Intent(context, EditNoteActivity.class)), + PendingIntent.FLAG_UPDATE_CURRENT); - Intent templateIntent = new Intent(context, EditNoteActivity.class); - PendingIntent templatePI = PendingIntent.getActivity(context, - 0, templateIntent, + PendingIntent templatePI = PendingIntent.getActivity(context,0, + (new Intent(context, EditNoteActivity.class)), PendingIntent.FLAG_UPDATE_CURRENT); - if (displayMode == NLW_DISPLAY_CATEGORY) { - serviceIntent.putExtra(NoteListWidget.WIDGET_CATEGORY_KEY + appWidgetId, category); + if (darkTheme) { + views = new RemoteViews(context.getPackageName(), R.layout.widget_note_list_dark); + views.setTextViewText(R.id.widget_note_list_title_tv_dark, getWidgetTitle(context, displayMode, category)); + views.setOnClickPendingIntent(R.id.widget_note_header_icon_dark, openAppI); + views.setOnClickPendingIntent(R.id.widget_note_list_title_tv_dark, openAppI); + views.setOnClickPendingIntent(R.id.widget_note_list_create_icon_dark, newNoteI); + views.setPendingIntentTemplate(R.id.note_list_widget_lv_dark, templatePI); + views.setRemoteAdapter(appWidgetId, R.id.note_list_widget_lv_dark, serviceIntent); + views.setEmptyView(R.id.note_list_widget_lv_dark, R.id.widget_note_list_placeholder_tv_dark); + awm.notifyAppWidgetViewDataChanged(appWidgetId, R.id.note_list_widget_lv_dark); + } else { + views = new RemoteViews(context.getPackageName(), R.layout.widget_note_list); + views.setTextViewText(R.id.widget_note_list_title_tv, getWidgetTitle(context, displayMode, category)); + views.setOnClickPendingIntent(R.id.widget_note_header_icon, openAppI); + views.setOnClickPendingIntent(R.id.widget_note_list_title_tv, openAppI); + views.setOnClickPendingIntent(R.id.widget_note_list_create_icon, newNoteI); + views.setPendingIntentTemplate(R.id.note_list_widget_lv, templatePI); + views.setRemoteAdapter(appWidgetId, R.id.note_list_widget_lv, serviceIntent); + views.setEmptyView(R.id.note_list_widget_lv, R.id.widget_note_list_placeholder_tv); + awm.notifyAppWidgetViewDataChanged(appWidgetId, R.id.note_list_widget_lv); } - serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME))); - views.setPendingIntentTemplate(R.id.note_list_widget_lv, templatePI); - views.setRemoteAdapter(appWidgetId, R.id.note_list_widget_lv, serviceIntent); - views.setEmptyView(R.id.note_list_widget_lv, R.id.widget_note_list_placeholder_tv); - appWidgetManager.updateAppWidget(appWidgetId, views); + + awm.updateAppWidget(appWidgetId, views); } } @Override + public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { + super.onUpdate(context, appWidgetManager, appWidgetIds); + updateAppWidget(context, appWidgetManager, appWidgetIds); + } + + @Override public void onReceive(Context context, Intent intent) { super.onReceive(context, intent); - AppWidgetManager awm = AppWidgetManager.getInstance(context); - int appWidgetIds[] = awm.getAppWidgetIds(new ComponentName(context, NoteListWidget.class)); - for (int appWidgetId : appWidgetIds) { - if (ACTION_APPWIDGET_UPDATE.equals(intent.getAction())) { - awm.notifyAppWidgetViewDataChanged(appWidgetId, R.id.note_list_widget_lv); + if (intent.getAction().equals(awm.ACTION_APPWIDGET_UPDATE)) { + if (intent.hasExtra(AppWidgetManager.EXTRA_APPWIDGET_ID)) { + updateAppWidget(context, awm, new int[] { intent.getExtras().getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, -1) }); + } else { + updateAppWidget(context, awm, awm.getAppWidgetIds(new ComponentName(context, NoteListWidget.class))); } } } @@ -92,14 +117,30 @@ public class NoteListWidget extends AppWidgetProvider { public void onDeleted(Context context, int[] appWidgetIds) { super.onDeleted(context, appWidgetIds); - SharedPreferences.Editor editor = PreferenceManager - .getDefaultSharedPreferences(context).edit(); + SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(context).edit(); for (int appWidgetId : appWidgetIds) { editor.remove(WIDGET_MODE_KEY + appWidgetId); editor.remove(WIDGET_CATEGORY_KEY + appWidgetId); + editor.remove(DARK_THEME_KEY + appWidgetId); } editor.apply(); } + + private static String getWidgetTitle(Context context, int displayMode, String category) { + switch (displayMode) + { + case NoteListWidget.NLW_DISPLAY_ALL: return context.getString(R.string.app_name); + case NoteListWidget.NLW_DISPLAY_STARRED: return context.getString(R.string.label_favorites); + case NoteListWidget.NLW_DISPLAY_CATEGORY: + if (category.equals("")) { + return context.getString(R.string.action_uncategorized); + } else { + return category; + } + } + + return null; + } } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidgetConfiguration.java b/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidgetConfiguration.java index 7b56b7bb..92fda731 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidgetConfiguration.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidgetConfiguration.java @@ -7,10 +7,10 @@ import android.content.SharedPreferences; import android.os.AsyncTask; import android.os.Bundle; import android.preference.PreferenceManager; -import android.support.annotation.Nullable; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import android.util.Log; import android.widget.Toast; @@ -23,11 +23,12 @@ import it.niedermann.owncloud.notes.android.activity.NotesListViewActivity; import it.niedermann.owncloud.notes.model.NavigationAdapter; import it.niedermann.owncloud.notes.persistence.NoteSQLiteOpenHelper; import it.niedermann.owncloud.notes.persistence.NoteServerSyncHelper; +import it.niedermann.owncloud.notes.util.Notes; public class NoteListWidgetConfiguration extends AppCompatActivity { private static final String TAG = Activity.class.getSimpleName(); - private int mAppWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID; + private int appWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID; private NavigationAdapter adapterCategories; private NavigationAdapter.NavigationItem itemRecent, itemFavorites; @@ -45,18 +46,18 @@ public class NoteListWidgetConfiguration extends AppCompatActivity { // TODO Present user with app login screen Log.w(TAG, "onCreate: user not logged in"); finish(); - } db = NoteSQLiteOpenHelper.getInstance(this); final Bundle extras = getIntent().getExtras(); if (extras != null) { - mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, + appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); } - if (mAppWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) { + if (appWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) { + Log.d(TAG, "INVALID_APPWIDGET_ID"); finish(); } @@ -77,30 +78,26 @@ public class NoteListWidgetConfiguration extends AppCompatActivity { SharedPreferences.Editor sp = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit(); if (item == itemRecent) { - sp.putInt(NoteListWidget.WIDGET_MODE_KEY + - mAppWidgetId, NoteListWidget.NLW_DISPLAY_ALL); + sp.putInt(NoteListWidget.WIDGET_MODE_KEY + appWidgetId, NoteListWidget.NLW_DISPLAY_ALL); } else if (item == itemFavorites) { - sp.putInt(NoteListWidget.WIDGET_MODE_KEY + - mAppWidgetId, NoteListWidget.NLW_DISPLAY_STARRED); + sp.putInt(NoteListWidget.WIDGET_MODE_KEY + appWidgetId, NoteListWidget.NLW_DISPLAY_STARRED); } else { String category = ""; if (!item.label.equals(getString(R.string.action_uncategorized))) { category = item.label; } - sp.putInt(NoteListWidget.WIDGET_MODE_KEY + - mAppWidgetId, NoteListWidget.NLW_DISPLAY_CATEGORY); - sp.putString(NoteListWidget.WIDGET_CATEGORY_KEY + - mAppWidgetId, category); + sp.putInt(NoteListWidget.WIDGET_MODE_KEY + appWidgetId, NoteListWidget.NLW_DISPLAY_CATEGORY); + sp.putString(NoteListWidget.WIDGET_CATEGORY_KEY + appWidgetId, category); } + sp.putBoolean(NoteListWidget.DARK_THEME_KEY + appWidgetId, Notes.getAppTheme(getApplicationContext())); sp.apply(); - Intent updateIntent = new Intent(getApplicationContext(), NoteListWidget.class); - - updateIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId); - updateIntent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE); - sendBroadcast(updateIntent); + Intent updateIntent = new Intent( AppWidgetManager.ACTION_APPWIDGET_UPDATE, null, + getApplicationContext(), NoteListWidget.class); + updateIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); setResult(RESULT_OK, updateIntent); + getApplicationContext().sendBroadcast(updateIntent); finish(); } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidgetFactory.java b/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidgetFactory.java index de30cfcf..4776acfa 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidgetFactory.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidgetFactory.java @@ -7,7 +7,6 @@ import android.content.SharedPreferences; import android.net.Uri; import android.os.Bundle; import android.preference.PreferenceManager; -import android.view.View; import android.widget.RemoteViews; import android.widget.RemoteViewsService; @@ -22,6 +21,7 @@ public class NoteListWidgetFactory implements RemoteViewsService.RemoteViewsFact private final Context context; private final int displayMode; private final int appWidgetId; + private final boolean darkTheme; private String category; private final SharedPreferences sp; private NoteSQLiteOpenHelper db; @@ -33,33 +33,13 @@ public class NoteListWidgetFactory implements RemoteViewsService.RemoteViewsFact AppWidgetManager.INVALID_APPWIDGET_ID); sp = PreferenceManager.getDefaultSharedPreferences(this.context); displayMode = sp.getInt(NoteListWidget.WIDGET_MODE_KEY + appWidgetId, -1); + darkTheme = sp.getBoolean(NoteListWidget.DARK_THEME_KEY + appWidgetId, false); + category = sp.getString(NoteListWidget.WIDGET_CATEGORY_KEY + appWidgetId, ""); } @Override public void onCreate() { db = NoteSQLiteOpenHelper.getInstance(context); - RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_note_list); - - switch (displayMode) - { - case NoteListWidget.NLW_DISPLAY_ALL: - views.setTextViewText(R.id.widget_note_list_title_tv, context.getString(R.string.app_name)); - break; - case NoteListWidget.NLW_DISPLAY_STARRED: - views.setTextViewText(R.id.widget_note_list_title_tv, "Starred"); - break; - case NoteListWidget.NLW_DISPLAY_CATEGORY: - category = sp.getString(NoteListWidget.WIDGET_CATEGORY_KEY + appWidgetId, null); - if (category.equals("")) { - views.setTextViewText(R.id.widget_note_list_title_tv, context.getString(R.string.action_uncategorized)); - } else { - views.setTextViewText(R.id.widget_note_list_title_tv, category); - } - break; - } - - AppWidgetManager awm = AppWidgetManager.getInstance(context); - awm.updateAppWidget(appWidgetId, views); } @Override @@ -94,12 +74,12 @@ public class NoteListWidgetFactory implements RemoteViewsService.RemoteViewsFact @Override public RemoteViews getViewAt(int i) { + RemoteViews note_content; + if (dbNotes == null || dbNotes.get(i) == null) { return null; } - RemoteViews note_content = new RemoteViews(context.getPackageName(), - R.layout.widget_entry); DBNote note = dbNotes.get(i); final Intent fillInIntent = new Intent(); final Bundle extras = new Bundle(); @@ -107,16 +87,31 @@ public class NoteListWidgetFactory implements RemoteViewsService.RemoteViewsFact extras.putLong(EditNoteActivity.PARAM_NOTE_ID, note.getId()); fillInIntent.putExtras(extras); fillInIntent.setData(Uri.parse(fillInIntent.toUri(Intent.URI_INTENT_SCHEME))); - note_content.setOnClickFillInIntent(R.id.widget_note_list_entry, fillInIntent); - if (note.isFavorite()) { - note_content.setViewVisibility(R.id.widget_entry_fav_icon, View.VISIBLE); + if (darkTheme) { + note_content = new RemoteViews(context.getPackageName(), R.layout.widget_entry_dark); + note_content.setOnClickFillInIntent(R.id.widget_note_list_entry_dark, fillInIntent); + note_content.setTextViewText(R.id.widget_entry_content_tv_dark, note.getTitle()); + + if (note.isFavorite()) { + note_content.setImageViewResource(R.id.widget_entry_fav_icon_dark, R.drawable.ic_star_yellow_24dp); + } else { + note_content.setImageViewResource(R.id.widget_entry_fav_icon_dark, R.drawable.ic_star_grey_ccc_24dp); + } } else { - note_content.setViewVisibility(R.id.widget_entry_fav_icon, View.INVISIBLE); + note_content = new RemoteViews(context.getPackageName(), R.layout.widget_entry); + note_content.setOnClickFillInIntent(R.id.widget_note_list_entry, fillInIntent); + note_content.setTextViewText(R.id.widget_entry_content_tv, note.getTitle()); + + if (note.isFavorite()) { + note_content.setImageViewResource(R.id.widget_entry_fav_icon, R.drawable.ic_star_yellow_24dp); + } else { + note_content.setImageViewResource(R.id.widget_entry_fav_icon, R.drawable.ic_star_grey_ccc_24dp); + } } - note_content.setTextViewText(R.id.widget_entry_content_tv, note.getTitle()); return note_content; + } @Override diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/SingleNoteWidget.java b/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/SingleNoteWidget.java index cd1d52b7..d9ac9fae 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/SingleNoteWidget.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/SingleNoteWidget.java @@ -14,66 +14,78 @@ import android.widget.RemoteViews; import it.niedermann.owncloud.notes.R; import it.niedermann.owncloud.notes.android.activity.EditNoteActivity; -import static android.appwidget.AppWidgetManager.ACTION_APPWIDGET_UPDATE; - public class SingleNoteWidget extends AppWidgetProvider { + private static boolean darkTheme; + public static final String DARK_THEME_KEY = "SNW_darkTheme"; public static final String WIDGET_KEY = "single_note_widget"; - @Override - public void onDeleted(Context context, int[] appWidgetIds) { - SharedPreferences.Editor editor = PreferenceManager - .getDefaultSharedPreferences(context).edit(); + static void updateAppWidget(Context context, AppWidgetManager awm, int[] appWidgetIds) { + SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context); + Intent templateIntent = new Intent(context, EditNoteActivity.class); + templateIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); for (int appWidgetId : appWidgetIds) { - editor.remove(WIDGET_KEY + appWidgetId); - } - - editor.apply(); - super.onDeleted(context, appWidgetIds); - } + // onUpdate has been triggered before the user finished configuring the widget + if ((sp.getLong(WIDGET_KEY + appWidgetId, -1)) == -1) { + return; + } - @Override - public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { - for (int appWidgetId : appWidgetIds) { - Intent templateIntent = new Intent(context, EditNoteActivity.class); - templateIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); + darkTheme = sp.getBoolean(DARK_THEME_KEY + appWidgetId, false); - PendingIntent templatePendingIntent = PendingIntent.getActivity( - context, - appWidgetId, - templateIntent, - PendingIntent.FLAG_UPDATE_CURRENT); + PendingIntent templatePendingIntent = PendingIntent.getActivity(context, appWidgetId, templateIntent, + PendingIntent.FLAG_UPDATE_CURRENT); Intent serviceIntent = new Intent(context, SingleNoteWidgetService.class); - RemoteViews views = new RemoteViews(context.getPackageName(), - R.layout.widget_single_note); - serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME))); - views.setPendingIntentTemplate(R.id.single_note_widget_lv, templatePendingIntent); - views.setRemoteAdapter(R.id.single_note_widget_lv, serviceIntent); - views.setEmptyView(R.id.single_note_widget_lv, R.id.widget_single_note_placeholder_tv); - appWidgetManager.updateAppWidget(appWidgetId, views); + RemoteViews views; + + if (darkTheme) { + views = new RemoteViews(context.getPackageName(), R.layout.widget_single_note_dark); + views.setPendingIntentTemplate(R.id.single_note_widget_lv_dark, templatePendingIntent); + views.setRemoteAdapter(R.id.single_note_widget_lv_dark, serviceIntent); + views.setEmptyView(R.id.single_note_widget_lv_dark, R.id.widget_single_note_placeholder_tv_dark); + awm.notifyAppWidgetViewDataChanged(appWidgetId, R.id.single_note_widget_lv_dark); + } else { + views = new RemoteViews(context.getPackageName(), R.layout.widget_single_note); + views.setPendingIntentTemplate(R.id.single_note_widget_lv, templatePendingIntent); + views.setRemoteAdapter(R.id.single_note_widget_lv, serviceIntent); + views.setEmptyView(R.id.single_note_widget_lv, R.id.widget_single_note_placeholder_tv); + awm.notifyAppWidgetViewDataChanged(appWidgetId, R.id.single_note_widget_lv); + } + + awm.updateAppWidget(appWidgetId, views); } + } + @Override + public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { super.onUpdate(context, appWidgetManager, appWidgetIds); + updateAppWidget(context, appWidgetManager, appWidgetIds); } @Override public void onReceive(Context context, Intent intent) { - AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); - int ids[] = appWidgetManager.getAppWidgetIds(new ComponentName(context, - SingleNoteWidget.class)); - - for (int appWidgetId : ids) { - if (ACTION_APPWIDGET_UPDATE.equals(intent.getAction())) { - appWidgetManager.notifyAppWidgetViewDataChanged(appWidgetId, - R.id.single_note_widget_lv); - } + super.onReceive(context, intent); + AppWidgetManager awm = AppWidgetManager.getInstance(context); + + updateAppWidget(context, AppWidgetManager.getInstance(context), + (awm.getAppWidgetIds(new ComponentName(context, SingleNoteWidget.class)))); + } + + @Override + public void onDeleted(Context context, int[] appWidgetIds) { + SharedPreferences.Editor editor = PreferenceManager + .getDefaultSharedPreferences(context).edit(); + + for (int appWidgetId : appWidgetIds) { + editor.remove(WIDGET_KEY + appWidgetId); + editor.remove(NoteListWidget.DARK_THEME_KEY + appWidgetId); } - super.onReceive(context, intent); + editor.apply(); + super.onDeleted(context, appWidgetIds); } } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/SingleNoteWidgetFactory.java b/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/SingleNoteWidgetFactory.java index 8006b10e..9841d48c 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/SingleNoteWidgetFactory.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/SingleNoteWidgetFactory.java @@ -22,33 +22,36 @@ import it.niedermann.owncloud.notes.util.MarkDownUtil; public class SingleNoteWidgetFactory implements RemoteViewsService.RemoteViewsFactory { private MarkdownProcessor markdownProcessor; - private final Context mContext; - private final int mAppWidgetId; + private final Context context; + private final int appWidgetId; private NoteSQLiteOpenHelper db; private DBNote note; + private SharedPreferences sp; + private static Boolean darkTheme; private static final String TAG = SingleNoteWidget.class.getSimpleName(); SingleNoteWidgetFactory(Context context, Intent intent) { - mContext = context; - markdownProcessor = new MarkdownProcessor(mContext); + this.context = context; + appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, + AppWidgetManager.INVALID_APPWIDGET_ID); + sp = PreferenceManager.getDefaultSharedPreferences(this.context); + darkTheme = sp.getBoolean(SingleNoteWidget.DARK_THEME_KEY + appWidgetId, false); + markdownProcessor = new MarkdownProcessor(this.context); markdownProcessor.factory(TextFactory.create()); - markdownProcessor.config(MarkDownUtil.getMarkDownConfiguration(mContext).build()); - mAppWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, - AppWidgetManager.INVALID_APPWIDGET_ID); + markdownProcessor.config(MarkDownUtil.getMarkDownConfiguration(this.context, darkTheme).build()); } @Override public void onCreate() { - db = NoteSQLiteOpenHelper.getInstance(mContext); + db = NoteSQLiteOpenHelper.getInstance(context); } @Override public void onDataSetChanged() { - SharedPreferences sharedprefs = PreferenceManager.getDefaultSharedPreferences(mContext); - long noteID = sharedprefs.getLong(SingleNoteWidget.WIDGET_KEY + mAppWidgetId, -1); + long noteID = sp.getLong(SingleNoteWidget.WIDGET_KEY + appWidgetId, -1); if (noteID >= 0) { note = db.getNote(noteID); @@ -86,16 +89,24 @@ public class SingleNoteWidgetFactory implements RemoteViewsService.RemoteViewsFa return null; } - RemoteViews note_content = new RemoteViews(mContext.getPackageName(), - R.layout.widget_single_note_content); + RemoteViews note_content; + final Intent fillInIntent = new Intent(); final Bundle extras = new Bundle(); extras.putLong(EditNoteActivity.PARAM_NOTE_ID, note.getId()); fillInIntent.putExtras(extras); fillInIntent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); - note_content.setOnClickFillInIntent(R.id.single_note_content_tv, fillInIntent); - note_content.setTextViewText(R.id.single_note_content_tv, markdownProcessor.parse(note.getContent())); + if (darkTheme) { + note_content = new RemoteViews(context.getPackageName(), R.layout.widget_single_note_content_dark); + note_content.setOnClickFillInIntent(R.id.single_note_content_tv_dark, fillInIntent); + note_content.setTextViewText(R.id.single_note_content_tv_dark, markdownProcessor.parse(note.getContent())); + + } else { + note_content = new RemoteViews(context.getPackageName(), R.layout.widget_single_note_content); + note_content.setOnClickFillInIntent(R.id.single_note_content_tv, fillInIntent); + note_content.setTextViewText(R.id.single_note_content_tv, markdownProcessor.parse(note.getContent())); + } return note_content; } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/BaseNoteFragment.java b/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/BaseNoteFragment.java index e46092a9..aee5bc9e 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/BaseNoteFragment.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/BaseNoteFragment.java @@ -6,18 +6,27 @@ import android.app.FragmentManager; import android.content.Intent; import android.os.Build; import android.os.Bundle; -import android.support.annotation.Nullable; -import android.support.v4.view.MenuItemCompat; -import android.support.v7.widget.ShareActionProvider; +import android.text.SpannableString; +import android.text.TextUtils; import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; +import android.view.View; +import android.view.ViewTreeObserver; +import android.widget.LinearLayout; +import android.widget.TextView; +import androidx.annotation.Nullable; +import androidx.appcompat.widget.SearchView; +import androidx.appcompat.widget.ShareActionProvider; +import androidx.core.view.MenuItemCompat; +import androidx.core.view.ViewCompat; import it.niedermann.owncloud.notes.R; import it.niedermann.owncloud.notes.model.CloudNote; import it.niedermann.owncloud.notes.model.DBNote; import it.niedermann.owncloud.notes.persistence.NoteSQLiteOpenHelper; +import it.niedermann.owncloud.notes.util.DisplayUtils; import it.niedermann.owncloud.notes.util.ICallback; public abstract class BaseNoteFragment extends Fragment implements CategoryDialogFragment.CategoryDialogListener { @@ -33,16 +42,39 @@ public abstract class BaseNoteFragment extends Fragment implements CategoryDialo private static final String SAVEDKEY_NOTE = "note"; private static final String SAVEDKEY_ORIGINAL_NOTE = "original_note"; + protected SearchView searchView; + protected MenuItem searchMenuItem; + + protected String searchQuery = null; + protected DBNote note; @Nullable private DBNote originalNote; private NoteSQLiteOpenHelper db; private NoteFragmentListener listener; + private TextView activeTextView; + private boolean isNew; + + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + + if (savedInstanceState != null) { + searchQuery = savedInstanceState.getString("searchQuery", ""); + } + + } + + protected void setActiveTextView(TextView textView) { + activeTextView = textView; + } + @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState == null) { + isNew = true; long id = getArguments().getLong(PARAM_NOTE_ID); if (id > 0) { note = originalNote = db.getNote(id); @@ -55,6 +87,7 @@ public abstract class BaseNoteFragment extends Fragment implements CategoryDialo originalNote = null; } } else { + isNew = false; note = (DBNote) savedInstanceState.getSerializable(SAVEDKEY_NOTE); originalNote = (DBNote) savedInstanceState.getSerializable(SAVEDKEY_ORIGINAL_NOTE); } @@ -96,6 +129,18 @@ public abstract class BaseNoteFragment extends Fragment implements CategoryDialo saveNote(null); outState.putSerializable(SAVEDKEY_NOTE, note); outState.putSerializable(SAVEDKEY_ORIGINAL_NOTE, originalNote); + + if (searchView != null && !TextUtils.isEmpty(searchView.getQuery().toString())) { + outState.putString("searchQuery", searchView.getQuery().toString()); + } + } + + private void colorWithText(String newText) { + if (activeTextView != null && ViewCompat.isAttachedToWindow(activeTextView)) { + activeTextView.setText(DisplayUtils.searchAndColor(activeTextView.getText().toString(), new SpannableString + (activeTextView.getText()), newText, getResources().getColor(R.color.primary)), + TextView.BufferType.SPANNABLE); + } } @Override @@ -108,6 +153,54 @@ public abstract class BaseNoteFragment extends Fragment implements CategoryDialo super.onPrepareOptionsMenu(menu); MenuItem itemFavorite = menu.findItem(R.id.menu_favorite); prepareFavoriteOption(itemFavorite); + + searchMenuItem = menu.findItem(R.id.search); + searchView = (SearchView) searchMenuItem.getActionView(); + + if (!TextUtils.isEmpty(searchQuery) && isNew) { + searchMenuItem.expandActionView(); + searchView.setQuery(searchQuery, true); + searchView.clearFocus(); + } else { + searchMenuItem.collapseActionView(); + } + + + final LinearLayout searchEditFrame = searchView.findViewById(R.id + .search_edit_frame); + + searchEditFrame.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { + int oldVisibility = -1; + @Override + public void onGlobalLayout() { + int currentVisibility = searchEditFrame.getVisibility(); + + if (currentVisibility != oldVisibility) { + if (currentVisibility != View.VISIBLE) { + colorWithText(""); + searchQuery = ""; + } + + oldVisibility = currentVisibility; + } + } + + }); + + searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { + @Override + public boolean onQueryTextSubmit(String query) { + return false; + } + + @Override + public boolean onQueryTextChange(String newText) { + searchQuery = newText; + colorWithText(newText); + return true; + } + }); + } private void prepareFavoriteOption(MenuItem item) { diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/CategoryDialogFragment.java b/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/CategoryDialogFragment.java index 283782a1..7d6f7d83 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/CategoryDialogFragment.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/CategoryDialogFragment.java @@ -8,7 +8,7 @@ import android.content.Context; import android.content.DialogInterface; import android.os.AsyncTask; import android.os.Bundle; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import android.view.View; import android.view.WindowManager; import android.widget.ArrayAdapter; diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/NoteEditFragment.java b/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/NoteEditFragment.java index ee724378..c5c727b7 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/NoteEditFragment.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/NoteEditFragment.java @@ -21,12 +21,14 @@ import com.yydcdut.markdown.syntax.edit.EditFactory; import com.yydcdut.rxmarkdown.RxMDEditText; import com.yydcdut.rxmarkdown.RxMarkdown; +import androidx.annotation.Nullable; import butterknife.BindView; import butterknife.ButterKnife; import it.niedermann.owncloud.notes.R; import it.niedermann.owncloud.notes.model.CloudNote; import it.niedermann.owncloud.notes.util.ICallback; import it.niedermann.owncloud.notes.util.MarkDownUtil; +import it.niedermann.owncloud.notes.util.StyleCallback; import rx.Subscriber; public class NoteEditFragment extends BaseNoteFragment { @@ -35,12 +37,39 @@ public class NoteEditFragment extends BaseNoteFragment { private static final long DELAY = 2000; // Wait for this time after typing before saving private static final long DELAY_AFTER_SYNC = 5000; // Wait for this time after saving before checking for next save - + @BindView(R.id.editContent) + RxMDEditText editContent; private Handler handler; private boolean saveActive, unsavedEdit; + private final Runnable runAutoSave = new Runnable() { + @Override + public void run() { + if (unsavedEdit) { + Log.d(LOG_TAG_AUTOSAVE, "runAutoSave: start AutoSave"); + autoSave(); + } else { + Log.d(LOG_TAG_AUTOSAVE, "runAutoSave: nothing changed"); + } + } + }; + private final TextWatcher textWatcher = new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + } - @BindView(R.id.editContent) - RxMDEditText editContent; + @Override + public void onTextChanged(final CharSequence s, int start, int before, int count) { + } + + @Override + public void afterTextChanged(final Editable s) { + unsavedEdit = true; + if (!saveActive) { + handler.removeCallbacks(runAutoSave); + handler.postDelayed(runAutoSave, DELAY); + } + } + }; public static NoteEditFragment newInstance(long noteId) { NoteEditFragment f = new NoteEditFragment(); @@ -83,6 +112,8 @@ public class NoteEditFragment extends BaseNoteFragment { ButterKnife.bind(this, getView()); + setActiveTextView(editContent); + if (note.getContent().isEmpty()) { getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); } @@ -94,17 +125,17 @@ public class NoteEditFragment extends BaseNoteFragment { editContent.setEnabled(true); RxMarkdown.live(editContent) - .config(MarkDownUtil.getMarkDownConfiguration(getActivity().getApplicationContext()).build()) - .factory(EditFactory.create()) - .intoObservable() - .subscribe(new Subscriber<CharSequence>() { - @Override - public void onCompleted() { - } - - @Override - public void onError(Throwable e) { - } + .config(MarkDownUtil.getMarkDownConfiguration(getActivity().getApplicationContext()).build()) + .factory(EditFactory.create()) + .intoObservable() + .subscribe(new Subscriber<CharSequence>() { + @Override + public void onCompleted() { + } + + @Override + public void onError(Throwable e) { + } @Override public void onNext(CharSequence charSequence) { @@ -112,6 +143,7 @@ public class NoteEditFragment extends BaseNoteFragment { } }); + editContent.setCustomSelectionActionModeCallback(new StyleCallback(this.editContent)); SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()); if(sp.getBoolean("font", false)) { editContent.setTypeface(Typeface.MONOSPACE); diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/NotePreviewFragment.java b/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/NotePreviewFragment.java index a3465b24..da108de0 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/NotePreviewFragment.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/NotePreviewFragment.java @@ -17,16 +17,14 @@ import android.view.View; import android.view.ViewGroup; import android.widget.TextView; -import com.yydcdut.markdown.callback.OnTodoClickCallback; import com.yydcdut.markdown.syntax.text.TextFactory; -import com.yydcdut.rxmarkdown.RxMDConfiguration; import com.yydcdut.rxmarkdown.RxMDTextView; import com.yydcdut.rxmarkdown.RxMarkdown; +import androidx.annotation.Nullable; import butterknife.BindView; import butterknife.ButterKnife; import it.niedermann.owncloud.notes.R; -import it.niedermann.owncloud.notes.util.ICallback; import it.niedermann.owncloud.notes.util.MarkDownUtil; import rx.Subscriber; import rx.android.schedulers.AndroidSchedulers; @@ -63,6 +61,8 @@ public class NotePreviewFragment extends BaseNoteFragment { super.onActivityCreated(savedInstanceState); ButterKnife.bind(this, getView()); + setActiveTextView(noteContent); + String content = note.getContent(); RxMarkdown.with(content, getActivity()) diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/PreferencesFragment.java b/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/PreferencesFragment.java index 9dc9ce9b..e3cb0a6f 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/PreferencesFragment.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/PreferencesFragment.java @@ -7,7 +7,7 @@ import android.preference.Preference; import android.preference.PreferenceFragment; import android.preference.PreferenceManager; import android.preference.SwitchPreference; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import android.widget.Toast; import at.bitfire.cert4android.CustomCertManager; @@ -30,11 +30,11 @@ public class PreferencesFragment extends PreferenceFragment { } }); - final SwitchPreference themePref = (SwitchPreference) findPreference("darkTheme"); + final SwitchPreference themePref = (SwitchPreference) findPreference(getString(R.string.pref_key_theme)); SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()); - Boolean darkTheme = sp.getBoolean(getString(R.string.pref_key_theme), false); - setThemePreferenceSummary(themePref, darkTheme); + themePref.setSummary(sp.getBoolean(getString(R.string.pref_key_theme), false) ? + getString(R.string.pref_value_theme_dark) : getString(R.string.pref_value_theme_light)); themePref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { @@ -47,12 +47,4 @@ public class PreferencesFragment extends PreferenceFragment { } }); } - - private void setThemePreferenceSummary(SwitchPreference themePref, Boolean darkTheme) { - if (darkTheme) { - themePref.setSummary(getString(R.string.pref_value_theme_dark)); - } else { - themePref.setSummary(getString(R.string.pref_value_theme_light)); - } - } } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/about/AboutFragmentContributingTab.java b/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/about/AboutFragmentContributingTab.java index ea439116..3d4358d7 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/about/AboutFragmentContributingTab.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/about/AboutFragmentContributingTab.java @@ -1,7 +1,7 @@ package it.niedermann.owncloud.notes.android.fragment.about; import android.os.Bundle; -import android.support.v4.app.Fragment; +import androidx.fragment.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/about/AboutFragmentCreditsTab.java b/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/about/AboutFragmentCreditsTab.java index 91ac1570..f725393c 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/about/AboutFragmentCreditsTab.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/about/AboutFragmentCreditsTab.java @@ -1,7 +1,7 @@ package it.niedermann.owncloud.notes.android.fragment.about; import android.os.Bundle; -import android.support.v4.app.Fragment; +import androidx.fragment.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/about/AboutFragmentLicenseTab.java b/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/about/AboutFragmentLicenseTab.java index 1093269e..cf8fe07b 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/about/AboutFragmentLicenseTab.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/about/AboutFragmentLicenseTab.java @@ -3,7 +3,7 @@ package it.niedermann.owncloud.notes.android.fragment.about; import android.content.Intent; import android.net.Uri; import android.os.Bundle; -import android.support.v4.app.Fragment; +import androidx.fragment.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/app/src/main/java/it/niedermann/owncloud/notes/model/Category.java b/app/src/main/java/it/niedermann/owncloud/notes/model/Category.java index 336ce23f..72f176c8 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/model/Category.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/model/Category.java @@ -1,6 +1,6 @@ package it.niedermann.owncloud.notes.model; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import java.io.Serializable; diff --git a/app/src/main/java/it/niedermann/owncloud/notes/model/ItemAdapter.java b/app/src/main/java/it/niedermann/owncloud/notes/model/ItemAdapter.java index 9dd9e693..dc80dbba 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/model/ItemAdapter.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/model/ItemAdapter.java @@ -1,7 +1,7 @@ package it.niedermann.owncloud.notes.model; -import android.support.annotation.NonNull; -import android.support.v7.widget.RecyclerView; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; import android.text.Html; import android.view.LayoutInflater; import android.view.View; @@ -16,7 +16,7 @@ import butterknife.BindView; import butterknife.ButterKnife; import it.niedermann.owncloud.notes.R; -import static android.support.v7.widget.RecyclerView.NO_POSITION; +import static androidx.recyclerview.widget.RecyclerView.NO_POSITION; public class ItemAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { diff --git a/app/src/main/java/it/niedermann/owncloud/notes/model/NavigationAdapter.java b/app/src/main/java/it/niedermann/owncloud/notes/model/NavigationAdapter.java index bf8c08e6..a59a6bcf 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/model/NavigationAdapter.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/model/NavigationAdapter.java @@ -1,10 +1,10 @@ package it.niedermann.owncloud.notes.model; import android.graphics.Color; -import android.support.annotation.DrawableRes; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v7.widget.RecyclerView; +import androidx.annotation.DrawableRes; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/app/src/main/java/it/niedermann/owncloud/notes/persistence/LoadNotesListTask.java b/app/src/main/java/it/niedermann/owncloud/notes/persistence/LoadNotesListTask.java index af50f9ec..ac4a9278 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/persistence/LoadNotesListTask.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/persistence/LoadNotesListTask.java @@ -2,9 +2,9 @@ package it.niedermann.owncloud.notes.persistence; import android.content.Context; import android.os.AsyncTask; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.WorkerThread; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.WorkerThread; import android.text.Html; import android.text.SpannableString; import android.text.TextUtils; diff --git a/app/src/main/java/it/niedermann/owncloud/notes/persistence/NoteSQLiteOpenHelper.java b/app/src/main/java/it/niedermann/owncloud/notes/persistence/NoteSQLiteOpenHelper.java index 812cdbe9..b92d29cc 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/persistence/NoteSQLiteOpenHelper.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/persistence/NoteSQLiteOpenHelper.java @@ -6,9 +6,9 @@ import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.WorkerThread; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.WorkerThread; import android.text.TextUtils; import android.util.Log; diff --git a/app/src/main/java/it/niedermann/owncloud/notes/util/DisplayUtils.java b/app/src/main/java/it/niedermann/owncloud/notes/util/DisplayUtils.java new file mode 100644 index 00000000..53d58bac --- /dev/null +++ b/app/src/main/java/it/niedermann/owncloud/notes/util/DisplayUtils.java @@ -0,0 +1,62 @@ +/* + * Nextcloud Notes application + * + * @author Mario Danic + * Copyright (C) 2018 Mario Danic <mario@lovelyhq.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 <http://www.gnu.org/licenses/>. + */ +package it.niedermann.owncloud.notes.util; + +import android.graphics.Typeface; +import android.text.Spannable; +import android.text.TextUtils; +import android.text.style.CharacterStyle; +import android.text.style.ForegroundColorSpan; +import android.text.style.StyleSpan; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import androidx.annotation.ColorInt; + +public class DisplayUtils { + + public static Spannable searchAndColor(String text, Spannable spannable, String searchText, @ColorInt int color) { + + Object spansToRemove[] = spannable.getSpans(0, text.length(), Object.class); + for(Object span: spansToRemove){ + if(span instanceof CharacterStyle) + spannable.removeSpan(span); + } + + if (TextUtils.isEmpty(text) || TextUtils.isEmpty(searchText)) { + return spannable; + } + + Matcher m = Pattern.compile(searchText, Pattern.CASE_INSENSITIVE | Pattern.LITERAL) + .matcher(text); + + + while (m.find()) { + int start = m.start(); + int end = m.end(); + spannable.setSpan(new ForegroundColorSpan(color), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + spannable.setSpan(new StyleSpan(Typeface.BOLD), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + } + + return spannable; + } + +} diff --git a/app/src/main/java/it/niedermann/owncloud/notes/util/MarkDownUtil.java b/app/src/main/java/it/niedermann/owncloud/notes/util/MarkDownUtil.java index b55b26ee..b1f8ff82 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/util/MarkDownUtil.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/util/MarkDownUtil.java @@ -1,7 +1,7 @@ package it.niedermann.owncloud.notes.util; import android.content.Context; -import android.support.v4.content.res.ResourcesCompat; +import androidx.core.content.res.ResourcesCompat; import com.yydcdut.rxmarkdown.RxMDConfiguration; import com.yydcdut.rxmarkdown.RxMDConfiguration.Builder; @@ -31,4 +31,17 @@ public class MarkDownUtil { .setHorizontalRulesHeight(2) .setLinkFontColor(ResourcesCompat.getColor(context.getResources(), R.color.primary, null)); } + + public static Builder getMarkDownConfiguration(Context context, Boolean darkTheme) { + return new RxMDConfiguration.Builder(context) + .setUnOrderListColor(ResourcesCompat.getColor(context.getResources(), + darkTheme ? R.color.widget_fg_dark_theme : R.color.widget_fg_default, null)) + .setHeader2RelativeSize(1.35f) + .setHeader3RelativeSize(1.25f) + .setHeader4RelativeSize(1.15f) + .setHeader5RelativeSize(1.1f) + .setHeader6RelativeSize(1.05f) + .setHorizontalRulesHeight(2) + .setLinkFontColor(ResourcesCompat.getColor(context.getResources(), R.color.primary, null)); + } } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/util/NoteUtil.java b/app/src/main/java/it/niedermann/owncloud/notes/util/NoteUtil.java index 99bdb847..47c0a58f 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/util/NoteUtil.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/util/NoteUtil.java @@ -1,8 +1,8 @@ package it.niedermann.owncloud.notes.util; import android.content.Context; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import java.util.regex.Pattern; diff --git a/app/src/main/java/it/niedermann/owncloud/notes/util/Notes.java b/app/src/main/java/it/niedermann/owncloud/notes/util/Notes.java index 0b6015d1..75f43f05 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/util/Notes.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/util/Notes.java @@ -4,7 +4,7 @@ import android.app.Application; import android.content.Context; import android.content.SharedPreferences; import android.preference.PreferenceManager; -import android.support.v7.app.AppCompatDelegate; +import androidx.appcompat.app.AppCompatDelegate; public class Notes extends Application { private static final String DARK_THEME = "darkTheme"; diff --git a/app/src/main/java/it/niedermann/owncloud/notes/util/NotesClient.java b/app/src/main/java/it/niedermann/owncloud/notes/util/NotesClient.java index aab3c1c2..87c3b6e5 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/util/NotesClient.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/util/NotesClient.java @@ -1,6 +1,6 @@ package it.niedermann.owncloud.notes.util; -import android.support.annotation.WorkerThread; +import androidx.annotation.WorkerThread; import android.util.Base64; import android.util.Log; diff --git a/app/src/main/java/it/niedermann/owncloud/notes/util/NotesClientUtil.java b/app/src/main/java/it/niedermann/owncloud/notes/util/NotesClientUtil.java index 242d17e5..ef192eae 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/util/NotesClientUtil.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/util/NotesClientUtil.java @@ -1,6 +1,6 @@ package it.niedermann.owncloud.notes.util; -import android.support.annotation.StringRes; +import androidx.annotation.StringRes; import android.util.Base64; import android.util.Log; diff --git a/app/src/main/java/it/niedermann/owncloud/notes/util/StyleCallback.java b/app/src/main/java/it/niedermann/owncloud/notes/util/StyleCallback.java new file mode 100644 index 00000000..50fea152 --- /dev/null +++ b/app/src/main/java/it/niedermann/owncloud/notes/util/StyleCallback.java @@ -0,0 +1,98 @@ +package it.niedermann.owncloud.notes.util; + +import android.graphics.Typeface; +import android.text.SpannableStringBuilder; +import android.text.style.StyleSpan; +import android.view.ActionMode; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.widget.EditText; + +import it.niedermann.owncloud.notes.R; + +public class StyleCallback implements ActionMode.Callback { + + private EditText editText; + + public StyleCallback(EditText editText) { + this.editText = editText; + } + + @Override + public boolean onCreateActionMode(ActionMode mode, Menu menu) { + MenuInflater inflater = mode.getMenuInflater(); + inflater.inflate(R.menu.style, menu); + menu.removeItem(android.R.id.selectAll); + return true; + } + + @Override + public boolean onPrepareActionMode(ActionMode mode, Menu menu) { + return false; + } + + @Override + public boolean onActionItemClicked(ActionMode mode, MenuItem item) { + int start = editText.getSelectionStart(); + int end = editText.getSelectionEnd(); + SpannableStringBuilder ssb = new SpannableStringBuilder(editText.getText()); + final String markdown; + + + switch(item.getItemId()) { + case R.id.bold: + markdown = "**"; + if (hasAlreadyMarkdown(start, end, markdown)) { + this.removeMarkdown(ssb, start, end, markdown); + } else { + this.addMarkdown(ssb, start, end, markdown, Typeface.BOLD); + } + editText.setText(ssb); + break; + case R.id.italic: + markdown = "*"; + if (hasAlreadyMarkdown(start, end, markdown)) { + this.removeMarkdown(ssb, start, end, markdown); + } else { + this.addMarkdown(ssb, start, end, markdown, Typeface.ITALIC); + } + editText.setText(ssb); + break; + case R.id.link: + ssb.insert(end, "]()"); + ssb.insert(start, "["); + end++; + ssb.setSpan(new StyleSpan(Typeface.NORMAL), start, end, 1); + editText.setText(ssb); + editText.setSelection(end + 2); // after <end>]( + return true; + } + return false; + } + + @Override + public void onDestroyActionMode(ActionMode mode) { + + } + + private boolean hasAlreadyMarkdown(int start, int end, String markdown) { + return start > markdown.length() && markdown.contentEquals(editText.getText().subSequence(start - markdown.length(), start)) && + editText.getText().length() > end + markdown.length() && markdown.contentEquals(editText.getText().subSequence(end, end + markdown.length())); + } + + private void removeMarkdown(SpannableStringBuilder ssb, int start, int end, String markdown) { + ssb.delete(start - markdown.length(), start); + ssb.delete(end - markdown.length(), end); + ssb.setSpan(new StyleSpan(Typeface.NORMAL), start, end, 1); + } + + private void addMarkdown(SpannableStringBuilder ssb, int start, int end, String markdown, int typeface) { + ssb.insert(end, markdown); + ssb.insert(start, markdown); + editText.getText().charAt(start); + editText.getText().charAt(start + 1); + end += markdown.length() * 2; + ssb.setSpan(new StyleSpan(typeface), start, end, 1); + } +} diff --git a/app/src/main/java/it/niedermann/owncloud/notes/util/SupportUtil.java b/app/src/main/java/it/niedermann/owncloud/notes/util/SupportUtil.java index 28ba7b75..48792a8a 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/util/SupportUtil.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/util/SupportUtil.java @@ -4,7 +4,7 @@ import android.content.Context; import android.content.SharedPreferences; import android.os.Build; import android.preference.PreferenceManager; -import android.support.annotation.WorkerThread; +import androidx.annotation.WorkerThread; import android.text.Html; import android.text.Spanned; import android.text.method.LinkMovementMethod; diff --git a/app/src/main/res/drawable/ic_format_bold_black_24dp.xml b/app/src/main/res/drawable/ic_format_bold_black_24dp.xml new file mode 100644 index 00000000..625077f9 --- /dev/null +++ b/app/src/main/res/drawable/ic_format_bold_black_24dp.xml @@ -0,0 +1,5 @@ +<vector android:autoMirrored="true" android:height="24dp" + android:tint="#666666" android:viewportHeight="24.0" + android:viewportWidth="24.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="#FF000000" android:pathData="M15.6,10.79c0.97,-0.67 1.65,-1.77 1.65,-2.79 0,-2.26 -1.75,-4 -4,-4L7,4v14h7.04c2.09,0 3.71,-1.7 3.71,-3.79 0,-1.52 -0.86,-2.82 -2.15,-3.42zM10,6.5h3c0.83,0 1.5,0.67 1.5,1.5s-0.67,1.5 -1.5,1.5h-3v-3zM13.5,15.5L10,15.5v-3h3.5c0.83,0 1.5,0.67 1.5,1.5s-0.67,1.5 -1.5,1.5z"/> +</vector> diff --git a/app/src/main/res/drawable/ic_format_italic_black_24dp.xml b/app/src/main/res/drawable/ic_format_italic_black_24dp.xml new file mode 100644 index 00000000..48f2605e --- /dev/null +++ b/app/src/main/res/drawable/ic_format_italic_black_24dp.xml @@ -0,0 +1,5 @@ +<vector android:autoMirrored="true" android:height="24dp" + android:tint="#666666" android:viewportHeight="24.0" + android:viewportWidth="24.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="#FF000000" android:pathData="M10,4v3h2.21l-3.42,8H6v3h8v-3h-2.21l3.42,-8H18V4z"/> +</vector> diff --git a/app/src/main/res/drawable/ic_insert_link_black_24dp.xml b/app/src/main/res/drawable/ic_insert_link_black_24dp.xml new file mode 100644 index 00000000..3672c276 --- /dev/null +++ b/app/src/main/res/drawable/ic_insert_link_black_24dp.xml @@ -0,0 +1,5 @@ +<vector android:autoMirrored="true" android:height="24dp" + android:tint="#666666" android:viewportHeight="24.0" + android:viewportWidth="24.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="#FF000000" android:pathData="M3.9,12c0,-1.71 1.39,-3.1 3.1,-3.1h4L11,7L7,7c-2.76,0 -5,2.24 -5,5s2.24,5 5,5h4v-1.9L7,15.1c-1.71,0 -3.1,-1.39 -3.1,-3.1zM8,13h8v-2L8,11v2zM17,7h-4v1.9h4c1.71,0 3.1,1.39 3.1,3.1s-1.39,3.1 -3.1,3.1h-4L13,17h4c2.76,0 5,-2.24 5,-5s-2.24,-5 -5,-5z"/> +</vector> diff --git a/app/src/main/res/drawable/ic_library_music_black_24dp.xml b/app/src/main/res/drawable/ic_library_music_black_24dp.xml new file mode 100644 index 00000000..e90b1c40 --- /dev/null +++ b/app/src/main/res/drawable/ic_library_music_black_24dp.xml @@ -0,0 +1,5 @@ +<vector android:height="24dp" android:tint="#757575" + android:viewportHeight="24.0" android:viewportWidth="24.0" + android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="#FF757575" android:pathData="M20,2L8,2c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM18,7h-3v5.5c0,1.38 -1.12,2.5 -2.5,2.5S10,13.88 10,12.5s1.12,-2.5 2.5,-2.5c0.57,0 1.08,0.19 1.5,0.51L14,5h4v2zM4,6L2,6v14c0,1.1 0.9,2 2,2h14v-2L4,20L4,6z"/> +</vector> diff --git a/app/src/main/res/drawable/single_note_widget.png b/app/src/main/res/drawable/single_note_widget.png Binary files differindex 7b1c2258..b6f02ff4 100644 --- a/app/src/main/res/drawable/single_note_widget.png +++ b/app/src/main/res/drawable/single_note_widget.png diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml index 00f694ef..78e17475 100644 --- a/app/src/main/res/layout/activity_about.xml +++ b/app/src/main/res/layout/activity_about.xml @@ -4,12 +4,12 @@ android:layout_height="match_parent" android:orientation="vertical"> - <android.support.design.widget.TabLayout + <com.google.android.material.tabs.TabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" /> - <android.support.v4.view.ViewPager + <androidx.viewpager.widget.ViewPager android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="wrap_content" /> diff --git a/app/src/main/res/layout/activity_note_list_configuration.xml b/app/src/main/res/layout/activity_note_list_configuration.xml index 596a6cbc..209ab66a 100644 --- a/app/src/main/res/layout/activity_note_list_configuration.xml +++ b/app/src/main/res/layout/activity_note_list_configuration.xml @@ -4,21 +4,10 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> - <android.support.v7.widget.RecyclerView + <androidx.recyclerview.widget.RecyclerView android:id="@+id/nlw_config_recyclerv" android:layout_width="match_parent" android:layout_height="match_parent" - app:layoutManager="android.support.v7.widget.LinearLayoutManager" - /> + app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" /> - <!-- - <Switch - android:id="@+id/nlw_config_theme_sw" - android:layout_width="match_parent" - android:layout_height="61dp" - android:padding="@dimen/widget_note_list_outer_padding" - android:text="Dark theme" - android:layout_alignParentBottom="true" - /> - --> -</RelativeLayout>
\ No newline at end of file +</RelativeLayout> diff --git a/app/src/main/res/layout/activity_notes_list_view.xml b/app/src/main/res/layout/activity_notes_list_view.xml index 4bfa1c02..816903ba 100644 --- a/app/src/main/res/layout/activity_notes_list_view.xml +++ b/app/src/main/res/layout/activity_notes_list_view.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" +<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> @@ -9,7 +9,7 @@ android:layout_height="match_parent" android:orientation="vertical"> - <android.support.v7.widget.Toolbar + <androidx.appcompat.widget.Toolbar android:id="@+id/notesListActivityActionBar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" @@ -17,7 +17,7 @@ android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:elevation="4dp" /> - <android.support.v4.widget.SwipeRefreshLayout xmlns:tools="http://schemas.android.com/tools" + <androidx.swiperefreshlayout.widget.SwipeRefreshLayout xmlns:tools="http://schemas.android.com/tools" android:id="@+id/swiperefreshlayout" android:layout_width="match_parent" android:layout_height="match_parent" @@ -25,22 +25,22 @@ tools:context="it.niedermann.owncloud.notes.android.activity.NotesListViewActivity" tools:ignore="MergeRootFrame"> - <android.support.v7.widget.RecyclerView + <androidx.recyclerview.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/bg_highlighted" android:scrollbars="vertical" /> - </android.support.v4.widget.SwipeRefreshLayout> + </androidx.swiperefreshlayout.widget.SwipeRefreshLayout> </LinearLayout> - <android.support.design.widget.FloatingActionButton + <com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/fab_create" style="@style/fab" android:src="@drawable/ic_add_white_24dp" android:title="@string/action_create" app:backgroundTint="@color/primary" app:rippleColor="@color/primary_dark" /> -</android.support.design.widget.CoordinatorLayout>
\ No newline at end of file +</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index ee39da1c..405b48b8 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -8,7 +8,7 @@ android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin"> - <android.support.design.widget.TextInputLayout + <com.google.android.material.textfield.TextInputLayout android:id="@+id/settings_url_wrapper" android:layout_width="match_parent" android:layout_height="wrap_content" @@ -21,7 +21,7 @@ android:hint="@string/settings_url" android:inputType="textUri" android:textColor="@color/fg_default" /> - </android.support.design.widget.TextInputLayout> + </com.google.android.material.textfield.TextInputLayout> <TextView android:id="@+id/settings_url_warn_http" @@ -35,7 +35,7 @@ android:textColor="@color/fg_contrast" android:visibility="gone" /> - <android.support.design.widget.TextInputLayout + <com.google.android.material.textfield.TextInputLayout android:id="@+id/settings_username_wrapper" android:layout_width="match_parent" android:layout_height="wrap_content"> @@ -47,9 +47,9 @@ android:hint="@string/settings_username" android:inputType="text" android:textColor="@color/fg_default" /> - </android.support.design.widget.TextInputLayout> + </com.google.android.material.textfield.TextInputLayout> - <android.support.design.widget.TextInputLayout + <com.google.android.material.textfield.TextInputLayout android:id="@+id/settings_password_wrapper" android:layout_width="match_parent" android:layout_height="wrap_content" @@ -62,7 +62,7 @@ android:hint="@string/settings_password" android:inputType="textPassword" android:textColor="@color/fg_default" /> - </android.support.design.widget.TextInputLayout> + </com.google.android.material.textfield.TextInputLayout> <Button android:id="@+id/settings_submit" diff --git a/app/src/main/res/layout/drawer_layout.xml b/app/src/main/res/layout/drawer_layout.xml index 7ef2c8f3..fa6a14ee 100644 --- a/app/src/main/res/layout/drawer_layout.xml +++ b/app/src/main/res/layout/drawer_layout.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" +<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/drawerLayout" android:layout_width="match_parent" @@ -11,14 +11,14 @@ android:layout_width="match_parent" android:layout_height="match_parent" /> - <android.support.design.widget.NavigationView + <com.google.android.material.navigation.NavigationView android:id="@+id/navigationView" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="true"> - <android.support.v4.widget.NestedScrollView + <androidx.core.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent"> @@ -27,58 +27,46 @@ android:layout_height="wrap_content" android:orientation="vertical"> - <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + <LinearLayout android:layout_width="match_parent" - android:layout_height="178dp" - android:background="@color/primary" - android:orientation="vertical" - android:weightSum="1"> + android:layout_height="wrap_content" + android:background="?attr/colorPrimary" + android:padding="10dp" + android:theme="@style/ThemeOverlay.AppCompat.Dark" + android:orientation="horizontal" + android:gravity="bottom"> + <ImageView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingTop="24dp" + android:layout_gravity="center_vertical" + android:src="@mipmap/ic_launcher" + android:contentDescription="@string/app_name" /> - <LinearLayout + <androidx.appcompat.widget.LinearLayoutCompat android:layout_width="match_parent" - android:layout_height="56dp" - android:orientation="vertical" - android:layout_alignParentBottom="true" - android:layout_alignParentLeft="true" - android:layout_alignParentStart="true"> - + android:layout_height="wrap_content" + android:layout_gravity="center_vertical" + android:paddingLeft="12dp" + android:paddingStart="12dp" + android:paddingTop="24dp" + android:orientation="vertical"> <TextView - android:id="@+id/name" - android:layout_width="wrap_content" + android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginLeft="16dp" - android:textColor="#ffffff" android:text="@string/app_name" - android:textSize="14sp" - android:textStyle="bold" - - /> + android:textAppearance="@style/TextAppearance.AppCompat.Title" /> <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textColor="#ffffff" - android:layout_marginLeft="16dp" - android:layout_marginTop="5dp" android:id="@+id/account" - android:textSize="14sp" - android:textStyle="normal" - - /> - </LinearLayout> - - <ImageView - android:layout_width="70dp" - android:layout_height="70dp" - android:layout_marginLeft="16dp" - android:layout_marginTop="38dp" - android:src="@mipmap/ic_launcher_round" - android:contentDescription="@string/app_name" /> - </RelativeLayout> + android:layout_width="match_parent" + android:layout_height="wrap_content"/> + </androidx.appcompat.widget.LinearLayoutCompat> + </LinearLayout> - <android.support.v7.widget.RecyclerView + <androidx.recyclerview.widget.RecyclerView android:id="@+id/navigationList" android:layout_width="match_parent" android:layout_height="wrap_content" @@ -92,7 +80,7 @@ android:layout_height="1dp" android:background="@color/separator" /> - <android.support.v7.widget.RecyclerView + <androidx.recyclerview.widget.RecyclerView android:id="@+id/navigationMenu" android:layout_width="match_parent" android:layout_height="wrap_content" @@ -103,8 +91,8 @@ </LinearLayout> - </android.support.v4.widget.NestedScrollView> + </androidx.core.widget.NestedScrollView> - </android.support.design.widget.NavigationView> + </com.google.android.material.navigation.NavigationView> -</android.support.v4.widget.DrawerLayout>
\ No newline at end of file +</androidx.drawerlayout.widget.DrawerLayout>
\ No newline at end of file diff --git a/app/src/main/res/layout/fragment_notes_list_note_item.xml b/app/src/main/res/layout/fragment_notes_list_note_item.xml index 75898a40..a1cc0a56 100644 --- a/app/src/main/res/layout/fragment_notes_list_note_item.xml +++ b/app/src/main/res/layout/fragment_notes_list_note_item.xml @@ -13,7 +13,7 @@ android:layout_marginLeft="@dimen/button_padding" android:layout_marginStart="@dimen/button_padding" android:contentDescription="@string/menu_favorite" - android:src="@drawable/ic_star_yellow_24dp" /> + android:src="@drawable/ic_star_white_24dp" /> <ImageView android:id="@+id/noteDeleteRight" @@ -25,7 +25,7 @@ android:contentDescription="@string/menu_delete" android:src="@drawable/ic_delete_white_32dp" /> - <android.support.v7.widget.LinearLayoutCompat + <androidx.appcompat.widget.LinearLayoutCompat android:id="@+id/noteSwipeable" android:layout_width="match_parent" android:layout_height="wrap_content" @@ -58,7 +58,7 @@ </FrameLayout> - <android.support.v7.widget.LinearLayoutCompat + <androidx.appcompat.widget.LinearLayoutCompat android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="wrap_content" @@ -68,7 +68,7 @@ android:orientation="vertical" android:background="@drawable/list_item_background_selector"> - <android.support.v7.widget.LinearLayoutCompat + <androidx.appcompat.widget.LinearLayoutCompat android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/list_item_background_selector"> @@ -81,10 +81,10 @@ android:layout_weight="1" android:textColor="@drawable/list_item_color_selector" android:textSize="@dimen/primary_font_size" /> - </android.support.v7.widget.LinearLayoutCompat> + </androidx.appcompat.widget.LinearLayoutCompat> - <android.support.v7.widget.LinearLayoutCompat + <androidx.appcompat.widget.LinearLayoutCompat android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/list_item_background_selector"> @@ -121,9 +121,9 @@ android:singleLine="true" android:textColor="@drawable/list_item_color_selector" android:textSize="@dimen/secondary_font_size" /> - </android.support.v7.widget.LinearLayoutCompat> - </android.support.v7.widget.LinearLayoutCompat> - </android.support.v7.widget.LinearLayoutCompat> + </androidx.appcompat.widget.LinearLayoutCompat> + </androidx.appcompat.widget.LinearLayoutCompat> + </androidx.appcompat.widget.LinearLayoutCompat> <ImageView android:layout_width="match_parent" diff --git a/app/src/main/res/layout/widget_entry.xml b/app/src/main/res/layout/widget_entry.xml index e89db4f0..b9cc5ee9 100644 --- a/app/src/main/res/layout/widget_entry.xml +++ b/app/src/main/res/layout/widget_entry.xml @@ -28,10 +28,9 @@ android:paddingEnd="@dimen/widget_note_list_outer_padding" android:paddingRight="@dimen/widget_note_list_outer_padding" android:layout_gravity="center_vertical" - android:gravity="center_vertical" android:layout_weight="1" android:textColor="@color/widget_fg_default" - android:lines="1" - android:ellipsize="end" /> + android:ellipsize="end" + android:lines="1" /> </LinearLayout> diff --git a/app/src/main/res/layout/widget_entry_dark.xml b/app/src/main/res/layout/widget_entry_dark.xml new file mode 100644 index 00000000..54cf8581 --- /dev/null +++ b/app/src/main/res/layout/widget_entry_dark.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/widget_note_list_entry_dark" + android:layout_height="wrap_content" + android:layout_width="match_parent" + android:orientation="horizontal" + android:padding="@dimen/widget_note_list_padding"> + + <ImageView + android:id="@+id/widget_entry_fav_icon_dark" + android:layout_width="@dimen/widget_note_list_fav_icon_width" + android:layout_height="@dimen/widget_note_list_fav_icon_height" + android:layout_gravity="center_vertical" + android:foregroundGravity="center_vertical" + android:paddingStart="@dimen/widget_note_list_inner_padding" + android:paddingLeft="@dimen/widget_note_list_inner_padding" + android:paddingEnd="@dimen/widget_note_list_outer_padding" + android:paddingRight="@dimen/widget_note_list_outer_padding" + android:src="@drawable/ic_star_yellow_24dp" + android:contentDescription="@string/widget_entry_fav_contentDescription" /> + + <TextView + android:id="@+id/widget_entry_content_tv_dark" + android:layout_width="0dp" + android:layout_height="match_parent" + android:paddingStart="@dimen/widget_note_list_inner_padding" + android:paddingLeft="@dimen/widget_note_list_inner_padding" + android:paddingEnd="@dimen/widget_note_list_outer_padding" + android:paddingRight="@dimen/widget_note_list_outer_padding" + android:layout_gravity="center_vertical" + android:layout_weight="1" + android:textColor="@color/fg_default_dark_theme" + android:lines="1" + android:ellipsize="end" /> + +</LinearLayout> diff --git a/app/src/main/res/layout/widget_note_list_dark.xml b/app/src/main/res/layout/widget_note_list_dark.xml new file mode 100644 index 00000000..a42bba18 --- /dev/null +++ b/app/src/main/res/layout/widget_note_list_dark.xml @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" + android:background="@color/widget_background_dark_theme"> + + <!-- Widget header --> + <RelativeLayout + android:layout_width="match_parent" + android:id="@+id/widget_note_list_hdr_dark" + android:layout_height="@dimen/widget_note_list_header_height" + android:background="@color/primary" + android:padding="@dimen/widget_note_list_hdr_padding"> + + <ImageView + android:id="@+id/widget_note_header_icon_dark" + android:layout_width="@dimen/widget_note_list_icon_width" + android:layout_height="match_parent" + android:src="@mipmap/ic_launcher" + android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" + android:layout_alignParentBottom="true" + android:paddingStart="4dp" + android:paddingEnd="@dimen/widget_note_list_inner_padding" + android:paddingLeft="4dp" + android:paddingRight="@dimen/widget_note_list_inner_padding" + android:contentDescription="@string/widget_app_launcher_contentDescription" /> + + <TextView + android:id="@+id/widget_note_list_title_tv_dark" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:textColor="@color/fg_default_dark_theme" + android:textStyle="bold" + android:textSize="18sp" + android:layout_toRightOf="@id/widget_note_header_icon_dark" + android:layout_toEndOf="@id/widget_note_header_icon_dark" + android:gravity="center_vertical" + android:paddingStart="@dimen/widget_note_list_outer_padding" + android:paddingEnd="@dimen/widget_note_list_inner_padding" + android:paddingLeft="@dimen/widget_note_list_outer_padding" + android:paddingRight="@dimen/widget_note_list_inner_padding" /> + + <ImageView + android:id="@+id/widget_note_list_create_icon_dark" + android:layout_width="@dimen/widget_note_list_icon_width" + android:layout_height="match_parent" + android:src="@drawable/ic_add_white_24dp" + android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" + android:paddingStart="@dimen/widget_note_list_inner_padding" + android:paddingEnd="@dimen/widget_note_list_outer_padding" + android:paddingLeft="@dimen/widget_note_list_inner_padding" + android:paddingRight="@dimen/widget_note_list_outer_padding" + android:contentDescription="@string/widget_create_note" /> + + </RelativeLayout> + <!-- End header --> + + <ListView + android:id="@+id/note_list_widget_lv_dark" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:textAppearance="?android:attr/textAppearanceMedium" + android:textColor="@color/fg_default_dark_theme" + android:divider="@color/fg_default_low_dark_theme"/> + + <TextView + android:id="@+id/widget_note_list_placeholder_tv_dark" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:gravity="center" + android:text="@string/widget_note_list_placeholder" + android:textColor="@color/fg_default_dark_theme" /> + +</LinearLayout> diff --git a/app/src/main/res/layout/widget_single_note.xml b/app/src/main/res/layout/widget_single_note.xml index 3332d256..b553c720 100644 --- a/app/src/main/res/layout/widget_single_note.xml +++ b/app/src/main/res/layout/widget_single_note.xml @@ -17,14 +17,8 @@ android:layout_height="match_parent" android:gravity="center" android:text="@string/widget_single_note_placeholder_tv" - android:textColor="@color/fg_default_high" + android:textColor="@color/fg_default_high_dark_theme" android:textAlignment="center" android:padding="@dimen/widget_single_note_padding" /> -</RelativeLayout><!-- - TODO: Markdown support - - <com.yydcdut.rxmarkdown.RxMDTextView - - - --> +</RelativeLayout> diff --git a/app/src/main/res/layout/widget_single_note_content_dark.xml b/app/src/main/res/layout/widget_single_note_content_dark.xml new file mode 100644 index 00000000..71aff8aa --- /dev/null +++ b/app/src/main/res/layout/widget_single_note_content_dark.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<TextView xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/single_note_content_tv_dark" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:textColor="@color/fg_default_dark_theme" /> diff --git a/app/src/main/res/layout/widget_single_note_dark.xml b/app/src/main/res/layout/widget_single_note_dark.xml new file mode 100644 index 00000000..47bf4d53 --- /dev/null +++ b/app/src/main/res/layout/widget_single_note_dark.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8"?> +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/widget_single_note_dark" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@color/widget_background_dark_theme"> + + <ListView + android:id="@+id/single_note_widget_lv_dark" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:padding="@dimen/widget_single_note_padding" /> + + <TextView + android:id="@+id/widget_single_note_placeholder_tv_dark" + android:background="@color/widget_background_dark_theme" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:gravity="center" + android:text="@string/widget_single_note_placeholder_tv" + android:textColor="@color/fg_default_high_dark_theme" + android:textAlignment="center" + android:padding="@dimen/widget_single_note_padding" /> + +</RelativeLayout> diff --git a/app/src/main/res/menu/menu_list_view.xml b/app/src/main/res/menu/menu_list_view.xml index 957c6574..70103414 100644 --- a/app/src/main/res/menu/menu_list_view.xml +++ b/app/src/main/res/menu/menu_list_view.xml @@ -7,6 +7,6 @@ android:id="@+id/search" android:title="@string/action_search" android:icon="@drawable/ic_search_white_24dp" - app:actionViewClass="android.support.v7.widget.SearchView" + app:actionViewClass="androidx.appcompat.widget.SearchView" app:showAsAction="collapseActionView|always" /> </menu>
\ No newline at end of file diff --git a/app/src/main/res/menu/menu_note_activity.xml b/app/src/main/res/menu/menu_note_activity.xml index 91ecfc23..311c5108 100644 --- a/app/src/main/res/menu/menu_note_activity.xml +++ b/app/src/main/res/menu/menu_note_activity.xml @@ -4,13 +4,13 @@ <item android:id="@+id/menu_preview" android:icon="@drawable/ic_eye_white_24dp" - android:orderInCategory="50" + android:orderInCategory="60" android:title="@string/menu_preview" app:showAsAction="ifRoom" /> <item android:id="@+id/menu_edit" android:icon="@drawable/ic_edit_white_24dp" - android:orderInCategory="50" + android:orderInCategory="60" android:title="@string/simple_edit" app:showAsAction="ifRoom" /> </menu>
\ No newline at end of file diff --git a/app/src/main/res/menu/menu_note_fragment.xml b/app/src/main/res/menu/menu_note_fragment.xml index 337b8ff3..17d42d3d 100644 --- a/app/src/main/res/menu/menu_note_fragment.xml +++ b/app/src/main/res/menu/menu_note_fragment.xml @@ -1,6 +1,15 @@ <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> + + <item + android:id="@+id/search" + android:title="@string/action_search" + android:icon="@drawable/ic_search_white_24dp" + android:orderInCategory="50" + app:actionViewClass="androidx.appcompat.widget.SearchView" + app:showAsAction="ifRoom|collapseActionView" /> + <item android:id="@+id/menu_favorite" android:orderInCategory="80" @@ -19,7 +28,7 @@ android:orderInCategory="100" android:title="@string/menu_share" app:showAsAction="never" - app:actionProviderClass="android.support.v7.widget.ShareActionProvider" /> + app:actionProviderClass="androidx.appcompat.widget.ShareActionProvider" /> <item android:id="@+id/menu_cancel" android:icon="@drawable/ic_clear_white_24dp" diff --git a/app/src/main/res/menu/style.xml b/app/src/main/res/menu/style.xml new file mode 100644 index 00000000..7d671bb1 --- /dev/null +++ b/app/src/main/res/menu/style.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:id="@+id/italic" + android:icon="@drawable/ic_format_italic_black_24dp" + android:title="@string/simple_italic" + app:showAsAction="ifRoom" /> + <item android:id="@+id/bold" + android:icon="@drawable/ic_format_bold_black_24dp" + android:title="@string/simple_bold" + app:showAsAction="ifRoom" /> + <item android:id="@+id/link" + android:icon="@drawable/ic_insert_link_black_24dp" + android:title="@string/simple_link" + app:showAsAction="ifRoom" /> +</menu>
\ No newline at end of file diff --git a/app/src/main/res/values-cs-rCZ/strings.xml b/app/src/main/res/values-cs-rCZ/strings.xml index bd127106..7597aa6e 100644 --- a/app/src/main/res/values-cs-rCZ/strings.xml +++ b/app/src/main/res/values-cs-rCZ/strings.xml @@ -7,6 +7,7 @@ <string name="label_favorites">Oblíbené</string> <string name="action_create">Nová poznámka</string> <string name="action_settings">Nastavení</string> + <string name="action_trashbin">Smazané poznámky</string> <string name="action_search">Hledat</string> <string name="action_create_save">Uložit</string> <string name="simple_cancel">Storno</string> @@ -42,7 +43,7 @@ <string name="settings_server_settings">Účet</string> <string name="settings_url">Adresa serveru</string> <string name="settings_url_check_description">Značí, zda lze adresu pingnout.</string> - <string name="settings_url_warn_http">POZOR: \"http\" není bezpečné. Prosím použijte \"https\"</string> + <string name="settings_url_warn_http">POZOR: „http„ není bezpečné. Prosím použijte „https“</string> <string name="settings_username">Uživatelské jméno</string> <string name="settings_password">Heslo</string> <string name="settings_password_unchanged">Heslo (nezměněno)</string> @@ -60,7 +61,7 @@ <string name="settings_cert_reset_toast">Všechny vlastní certifikáty byly odebrány</string> <!-- Certificates --> - <string name="certificate_notification_connection_security">Poznámky - Zabezpečení připojení</string> + <string name="certificate_notification_connection_security">Poznámky – Zabezpečení připojení</string> <string name="trust_certificate_unknown_certificate_found">Poznámky se setkaly s neznámým certifikátem. Chcete mu věřit?</string> <!-- Network --> @@ -69,14 +70,14 @@ <string name="network_disconnected">Síť není dostupná</string> <!-- Error --> - <string name="error_sync">Synchronizace selhala: %1$s</string> + <string name="error_sync">Synchronizace se nezdařila: %1$s</string> <string name="error_invalid_login">Neplatné přihlášení: %1$s</string> <string name="error_json">je aplikace Poznámky aktivní na serveru?</string> - <string name="error_io">spojení se serverem je nefunkční</string> + <string name="error_io">spojení se serverem není funkční</string> <string name="error_no_network">žádné síťové spojení</string> <string name="error_server">Chyby v URL/Serveru</string> - <string name="error_url_malformed">Špatná serverová adresa</string> - <string name="error_username_password_invalid">Špatné uživatelské jméno nebo heslo</string> + <string name="error_url_malformed">Chybná adresa serveru</string> + <string name="error_username_password_invalid">Chybné uživatelské jméno nebo heslo</string> <!-- Snackbar Actions --> <string name="snackbar_settings">Nastavení</string> @@ -89,12 +90,12 @@ <string name="about_translators_title">Překladatelé</string> <string name="about_translators_transifex">Nextcloud komunita na <a href=\"%1$s\">Transifex</a></string> <string name="about_testers_title">Testeři</string> - <string name="about_source_title">Zdrojový kód</string> + <string name="about_source_title">Zdrojové kódy</string> <string name="about_source">Tento projekt je hostován na GitHub: <a href=\"%1$s\">%1$s</a></string> <string name="about_issues_title">Problémy</string> <string name="about_issues">Můžete nahlásit chyby, návrhy a požadavky na zlepšení na GitHub issue tracker: <a href=\"%1$s\">%1$s</a></string> <string name="about_translate_title">Překládat</string> - <string name="about_translate">Připojte se ke komunitě na Transifex a pomozte nám přeložit tuto aplikaci: <a href=\"%1$s\">%1$s</a></string> + <string name="about_translate">Připojte se k týmu na službě Transifex a pomozte nám přelkládat tuto aplikaci: <a href=\"%1$s\">%1$s</a></string> <string name="about_app_license_title">Licence aplikace</string> <string name="about_app_license">Tato aplikace je licencována pod GNU GENERAL PUBLIC LICENSE v3+.</string> <string name="about_app_license_button">Zobrazit licenci</string> @@ -110,7 +111,7 @@ <string name="widget_single_note_title">Jedna poznámka</string> <string name="widget_single_note_placeholder_tv">Poznámka nenalezena</string> <string name="widget_create_note">Vytvořit poznámku</string> - <string name="widget_not_logged_in">Před použitím widgetu se, prosím, přihlašte do aplikace Poznámky</string> + <string name="widget_not_logged_in">Abyste mohli tento widget používat, přihlaste se do aplikacie Poznámky</string> <string name="widget_entry_fav_contentDescription">Ikonka hvězdy označí položku jako oblíbenou</string> <string name="widget_app_launcher_contentDescription">Spustí aplikaci</string> @@ -124,7 +125,7 @@ <!-- Array: note modes --> <string-array name="noteMode_entries"> - <item>Otevřít v editačním režimu</item> + <item>Otevřít v režimu úprav</item> <item>Otevřít v náhledovém režimu</item> <item>Zapamatovat si můj poslední výběr</item> </string-array> diff --git a/app/src/main/res/values-cy-rGB/strings.xml b/app/src/main/res/values-cy-rGB/strings.xml new file mode 100644 index 00000000..030a2b94 --- /dev/null +++ b/app/src/main/res/values-cy-rGB/strings.xml @@ -0,0 +1,140 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + + <string name="app_name">Nodiadau</string> + <string name="no_notes">Dim nodiadau eto</string> + <string name="label_all_notes">Pob nodyn</string> + <string name="label_favorites">Ffefrynnau</string> + <string name="action_create">Nodyn newydd</string> + <string name="action_settings">Gosodiadau</string> + <string name="action_trashbin">Nodau wedi\'u dileu</string> + <string name="action_search">Chwilio</string> + <string name="action_create_save">Cadw</string> + <string name="simple_cancel">Diddymu</string> + <string name="simple_edit">Golygu</string> + <string name="action_edit_save">Cadw</string> + <string name="action_edit_saving">Yn cadw …</string> + <string name="action_edit_saved">Wedi\'u cadw</string> + <string name="simple_about">Ynghylch</string> + <string name="action_select_note">Dewis nodyn</string> + <string name="action_note_deleted">Nodyn wedi\'i ddileu</string> + <string name="action_note_restored">Nodyn wedi\'i adfer</string> + <string name="action_undo">Dadwneud</string> + <string name="action_drawer_open">agor llywio</string> + <string name="action_drawer_close">cau llywio</string> + <string name="action_recent">Diweddar</string> + <string name="action_uncategorized">Dim categori</string> + <string name="menu_delete">Dileu</string> + <string name="menu_change_category">Categori</string> + <string name="menu_favorite">Ffefryn</string> + <string name="menu_preview">Rhagolwg</string> + <string name="menu_share">Rhannu</string> + <string name="menu_about">Ynghylch</string> + + <string name="change_category_title">Dewis categori</string> + + <string name="listview_updated_today">Heddiw</string> + <string name="listview_updated_yesterday">Ddoe</string> + <string name="listview_updated_this_week">Wythnos hon</string> + <string name="listview_updated_this_month">Mis yma</string> + <string name="listview_updated_earlier">Ynghynt</string> + + <!-- Settings --> + <string name="settings_server_settings">Cyfrif</string> + <string name="settings_url">Cyfeiriad gweinydd</string> + <string name="settings_url_check_description">Yn dangos p\'un ai mae modd pingio\'r cyfeiriad</string> + <string name="settings_url_warn_http">RHYBUDD: \"mae http\" yn anniogel. Defnyddiwch \"https\".</string> + <string name="settings_username">Enw defnyddiwr</string> + <string name="settings_password">Cyfrinair</string> + <string name="settings_password_unchanged">Cyfrinair (heb ei newid)</string> + <string name="settings_password_check_description">Yn dangos p\'un ai yw\'ch manylion yn gywir</string> + <string name="settings_submit">Cysylltu</string> + <string name="settings_submitting">Cysylltu i …</string> + <string name="settings_note_mode">Y modd dangos ar gyfer Notes</string> + <string name="settings_theme_title">Thema</string> + <string name="settings_cert_category">Rheoli tystysgrifau</string> + <string name="settings_cert_trust_system">Tysytysgrfiau\'r system ymddiriedaeth</string> + <string name="settings_cert_trust_system_on">CA\'r system a\'r rhai ychwanegwyd gan y defnyddiwr yn gymeradwy (argymell)</string> + <string name="settings_cert_trust_system_off">CA\'r system a\'r rhai ychwanegwyd gan y defnyddiwr ddim yn gymeradwy</string> + <string name="settings_cert_reset">Ailosod tystysgrifau cymeradwy/anghymeradwy</string> + <string name="settings_cert_reset_summary">Ailosod ymddiriedaeth pob tytysgrif gyfaddas</string> + <string name="settings_cert_reset_toast">Mae\'r holl dystysgrifau cyfaddas wedi eu clirio</string> + + <!-- Certificates --> + <string name="certificate_notification_connection_security">`Nodau - Diogelwch cysylltiad</string> + <string name="trust_certificate_unknown_certificate_found">Mae Nodau wedi canfod tystysgrif anhysbys. Ydych chi\'n ymddiried ynddi?</string> + + <!-- Network --> + <string name="network_connecting">Cysylltu</string> + <string name="network_connected">Wedi cysylltu</string> + <string name="network_disconnected">Dim rhwydwaith ar gael</string> + + <!-- Error --> + <string name="error_sync">Methodd y cydweddiad: %1$s</string> + <string name="error_invalid_login">Mewngofnod annilys: %1$s</string> + <string name="error_json">A yw\'r ap Nodau yn weithredol ar y gweinydd?</string> + <string name="error_io">mae cysylltiad y gweinydd wedi torri</string> + <string name="error_no_network">dim cysylltiad rthwydwaith</string> + <string name="error_server">Mae gan URL/gweinydd wallau</string> + <string name="error_url_malformed">Cyfeiriad gweinydd anghywir</string> + <string name="error_username_password_invalid">Enw defnyddiwr neu gyfrinair anghywir</string> + + <!-- Snackbar Actions --> + <string name="snackbar_settings">Gosodiadau</string> + + <!-- About --> + <string name="about_version_title">Fersiwn</string> + <string name="about_version">Ar hyn o bryd rydych yn defnyddio <strong>%1$s</strong></string> + <string name="about_maintainer_title">Gofalwr</string> + <string name="about_developers_title">Datblygwr</string> + <string name="about_translators_title">Cyfieithwyr</string> + <string name="about_translators_transifex">Cymuned Nextcloud ar <a href=\"%1$s\">Transifex</a></string> + <string name="about_testers_title">Profwyr</string> + <string name="about_source_title">Cod ffynhonnell</string> + <string name="about_source">Mae\'r project yn cael ei gynnal ar GitLab:<a href=\"%1$s\">%1$s</a></string> + <string name="about_issues_title">Materion</string> + <string name="about_issues">Gallwch adrodd ar wallau, gwelliannau a ceisiadau am nodweddion ar draciwr materion GitHub: <a href=\"%1$s\">%1$s</a></string> + <string name="about_translate_title">Cyfieithu</string> + <string name="about_translate">Ymunwch a thim Transifex a\'n cynorthwyo i gyfieithu\'r ap hwn: <a href=\"%1$s\">%1$s</a></string> + <string name="about_app_license_title">Trwydded yr ap</string> + <string name="about_app_license">Mae\'r ap wedi ei drwyddedu o dan yr GNU GENERAL PUBLIC LICENSE v3+.</string> + <string name="about_app_license_button">Gweld y drwydded</string> + <string name="about_icons_disclaimer_title">Eiconau</string> + <string name="about_icons_disclaimer"><p>Roedd yr eiconau gwreiddiol wedi eu gwneud gan %1$s</p><p>Mae\'r eiconau ychwanegol sy\'n cael eu defnyddio yn yr ap yn<a href=\"https://materialdesignicons.com/\">Eiconau Material Design/a> wedi eu creu gan Google Inc. ac wedi eu trwyddedu o dan yr Apache 2.0 License.</p></string> + <string name="about_credits_tab_title">Diolchiadau</string> + <string name="about_contribution_tab_title">Cyfraniadau</string> + <string name="about_license_tab_title">Trwydded</string> + + <!-- Widgets --> + <string name="widget_note_list_title">Rhestr nodau</string> + <string name="widget_note_list_placeholder">Dim nodau</string> + <string name="widget_single_note_title">Nodyn unigol</string> + <string name="widget_single_note_placeholder_tv">Heb ganfod nodyn</string> + <string name="widget_create_note">Creu Nodyn</string> + <string name="widget_not_logged_in">Mewngofnodwch i Nodyn cyn defnyddio\'r teclyn hwn</string> + <string name="widget_entry_fav_contentDescription">Mae eicon seren yn cael ei ddefnyddio i ddynodi eitem fel ffefryn</string> + <string name="widget_app_launcher_contentDescription">Yn cychwyn yr ap</string> + + <string name="activity_select_single_note">Dewis nodyn</string> + + <!-- Shortcuts --> + <string name="shortcut_create_long">Creu nodyn newydd</string> + + <string name="pref_value_theme_light">Golau</string> + <string name="pref_value_theme_dark">Tywyll</string> + + <!-- Array: note modes --> + <string-array name="noteMode_entries"> + <item>Agor yn y modd golygu</item> + <item>Agor yn y modd rhagolwg</item> + <item>Cofio fy newis olaf</item> + </string-array> + + <!-- Plurals --> + <plurals name="ab_selected"> + <item quantity="one">Wedi dewis %d</item> + <item quantity="two">Wedi dewis %d</item> + <item quantity="many">Wedi dewis %d</item> + <item quantity="other">Wedi dewis %d</item> + </plurals> +</resources> diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 7f8f724e..c26bfe02 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -45,7 +45,7 @@ <string name="settings_note_mode">Display tilstand for noter</string> <string name="settings_cert_trust_system">Stol på systemcertifikater</string> <string name="settings_cert_trust_system_on">System og bruger tilføjede CA\'er stoles der på (anbefalet)</string> - <string name="settings_cert_trust_system_off">System og bruger tilføjede CA\\'er stoles der ikke på</string> + <string name="settings_cert_trust_system_off">System og bruger tilføjede CA\'er stoles der ikke på</string> <string name="settings_cert_reset">Nulstil (ikke)betroede certifikater</string> <string name="settings_cert_reset_summary">Nulstiller alle brugerdefinerede certifikater</string> <string name="settings_cert_reset_toast">Alle brugerdefinerede certifikater er fjernet</string> diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index 04421cfd..7935a1f2 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -7,6 +7,7 @@ <string name="label_favorites">Favoriten</string> <string name="action_create">Neue Notiz</string> <string name="action_settings">Einstellungen</string> + <string name="action_trashbin">Gelöschte Notizen</string> <string name="action_search">Suche</string> <string name="action_create_save">Speichern</string> <string name="simple_cancel">Abbrechen</string> diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index dbd7a9c2..0e3d91be 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -7,6 +7,7 @@ <string name="label_favorites">Favoriten</string> <string name="action_create">Neue Notiz</string> <string name="action_settings">Einstellungen</string> + <string name="action_trashbin">Gelöschte Notizen</string> <string name="action_search">Suche</string> <string name="action_create_save">Speichern</string> <string name="simple_cancel">Abbrechen</string> @@ -76,7 +77,7 @@ <string name="error_no_network">keine Netzwerk-Verbindung</string> <string name="error_server">URL/Server fehlerhaft</string> <string name="error_url_malformed">URL nicht korrekt</string> - <string name="error_username_password_invalid">Benutzername / Passwort nicht korrekt</string> + <string name="error_username_password_invalid">Falscher Benutzername oder Passwort</string> <!-- Snackbar Actions --> <string name="snackbar_settings">Einstellungen</string> diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 3d470973..b597b3d0 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -7,11 +7,15 @@ <string name="label_favorites">Αγαπημένα</string> <string name="action_create">Νέα σημείωση</string> <string name="action_settings">Ρυθμίσεις</string> + <string name="action_trashbin">Διεγραμμένες σημειώσεις</string> <string name="action_search">Ψάχνει</string> <string name="action_create_save">Αποθήκευση</string> + <string name="simple_cancel">Άκυρο</string> + <string name="simple_edit">Επεξεργασία</string> <string name="action_edit_save">Αποθήκευση</string> <string name="action_edit_saving">Γίνεται αποθήκευση …</string> <string name="action_edit_saved">Αποθηκεύτηκε</string> + <string name="simple_about">Περί</string> <string name="action_select_note">Επιλογή σημείωσης</string> <string name="action_note_deleted">Η σημείωση διαγράφηκε.</string> <string name="action_note_restored">Έγινε επαναφορά της σημείωσης.</string> @@ -27,12 +31,16 @@ <string name="menu_share">Διαμοιρασμός</string> <string name="menu_about">Περί</string> + <string name="change_category_title">Επιλογή κατηγορίας</string> + <string name="listview_updated_today">Σήμερα</string> <string name="listview_updated_yesterday">Χθες</string> <string name="listview_updated_this_week">Αυτή την εβδομάδα</string> <string name="listview_updated_this_month">Αυτό το μήνα</string> <string name="listview_updated_earlier">Νωρίτερα</string> + <!-- Settings --> + <string name="settings_server_settings">Λογαριαμός</string> <string name="settings_url">Διεύθυνση διακομιστή</string> <string name="settings_url_warn_http">ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Το \"http\" δεν είναι ασφαλές. Παρακαλούμε χρησιμοποιήστε το \"https\".</string> <string name="settings_username">Όνομα χρήστη</string> @@ -41,6 +49,8 @@ <string name="settings_submit">Σύνδεση</string> <string name="settings_submitting">Συνδέεται …</string> <string name="settings_note_mode">Λειτουργία προβολής σημειώσεων</string> + <string name="settings_theme_title">Θέμα</string> + <string name="settings_cert_category">Διαχείριση πιστοποιητικών</string> <string name="settings_cert_trust_system">Εμπιστοσύνη πιστοποιητικών συστήματος.</string> <string name="settings_cert_reset">Επαναφορά (μη) έμπιστων πιστοποιητικών</string> <!-- Certificates --> @@ -101,6 +111,9 @@ <!-- Shortcuts --> <string name="shortcut_create_long">Δημιουργία νέας σημείωσης</string> + <string name="pref_value_theme_light">Φωτεινό</string> + <string name="pref_value_theme_dark">Σκοτεινό</string> + <!-- Array: note modes --> <string-array name="noteMode_entries"> <item>Άνοιγμα σε λειτουργία τροποποίησης</item> diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index a3d49acc..00b04fb9 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -7,6 +7,7 @@ <string name="label_favorites">Favoritos</string> <string name="action_create">Nueva nota</string> <string name="action_settings">Ajustes</string> + <string name="action_trashbin">Notas eliminadas</string> <string name="action_search">Buscar</string> <string name="action_create_save">Guardar</string> <string name="simple_cancel">Cancelar</string> diff --git a/app/src/main/res/values-fi-rFI/strings.xml b/app/src/main/res/values-fi-rFI/strings.xml index 36fcc673..23565df0 100644 --- a/app/src/main/res/values-fi-rFI/strings.xml +++ b/app/src/main/res/values-fi-rFI/strings.xml @@ -3,8 +3,11 @@ <string name="app_name">Muistiinpanot</string> <string name="no_notes">Ei muistiinpanoja</string> + <string name="label_all_notes">Kaikki muistiinpanot</string> + <string name="label_favorites">Suosikit</string> <string name="action_create">Uusi muistiinpano</string> <string name="action_settings">Asetukset</string> + <string name="action_trashbin">Poistetut muistiinpanot</string> <string name="action_search">Etsi</string> <string name="action_create_save">Tallenna</string> <string name="simple_cancel">Peruuta</string> @@ -12,7 +15,6 @@ <string name="action_edit_save">Tallenna</string> <string name="action_edit_saving">Tallennetaan...</string> <string name="action_edit_saved">Tallennettu</string> - <string name="action_edit_cancel">Peruuta</string> <string name="simple_about">Tietoja</string> <string name="action_select_note">Valitse muistiinpano</string> <string name="action_note_deleted">Muistiinpano poistettu</string> @@ -21,16 +23,13 @@ <string name="action_recent">Viimeisimmät</string> <string name="action_uncategorized">Luokittelemattomat</string> <string name="menu_delete">Poista</string> - <string name="menu_copy">Kopioi</string> - <string name="menu_edit">Muokkaa</string> - <string name="menu_cancel">Peruuta</string> <string name="menu_change_category">Luokka</string> <string name="menu_favorite">Suosikki</string> <string name="menu_preview">Esikatselu</string> <string name="menu_share">Jaa</string> <string name="menu_about">Tietoja</string> - <string name="copy">Kopioi</string> + <string name="change_category_title">Valitse luokka</string> <string name="listview_updated_today">Tänään</string> <string name="listview_updated_yesterday">Eilen</string> @@ -39,15 +38,17 @@ <string name="listview_updated_earlier">Aikaisemmat</string> <!-- Settings --> - <string name="settings_server_settings">Tilin asetukset</string> + <string name="settings_server_settings">Tili</string> <string name="settings_url">Palvelimen osoite</string> <string name="settings_url_warn_http">VAROITUS: \"http\" on suojaamaton. Käytä \"https\"-yhteyttä.</string> <string name="settings_username">Käyttäjätunnus</string> <string name="settings_password">Salasana</string> <string name="settings_password_unchanged">Salasana (ei muutettu)</string> + <string name="settings_password_check_description">Näyttää ovatko tilitiedot oikein.</string> <string name="settings_submit">Yhdistä</string> <string name="settings_submitting">Yhdistetään...</string> - <string name="settings_cert_category">Varmenteet</string> + <string name="settings_theme_title">Teema</string> + <string name="settings_cert_category">Hallitse varmenteita</string> <string name="settings_cert_trust_system">Luota järjestelmävarmenteisiin</string> <!-- Network --> <string name="network_connecting">Yhdistetään</string> @@ -89,12 +90,14 @@ <string name="widget_single_note_title">Yksittäinen muistiinpano</string> <string name="widget_single_note_placeholder_tv">Muistiinpanoa ei löytynyt</string> <string name="widget_create_note">Luo muistiinpano</string> - <string name="widget_entry_fav_contentDescription">Tähden kuvalla merkitään suosikki</string> <string name="activity_select_single_note">Valitse muistiinpano</string> <!-- Shortcuts --> <string name="shortcut_create_long">Luo uusi muistiinpano</string> + <string name="pref_value_theme_light">Vaalea</string> + <string name="pref_value_theme_dark">Tumma</string> + <!-- Array: note modes --> <string-array name="noteMode_entries"> <item>Avaa muokkaustilassa</item> diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 72613fa5..c8cfc6c9 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -7,6 +7,7 @@ <string name="label_favorites">Favoris</string> <string name="action_create">Nouvelle note</string> <string name="action_settings">Paramètres</string> + <string name="action_trashbin">Notes supprimées</string> <string name="action_search">Rechercher</string> <string name="action_create_save">Sauvegarder</string> <string name="simple_cancel">Annuler</string> diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml index ec3f470d..4bbe39a2 100644 --- a/app/src/main/res/values-he/strings.xml +++ b/app/src/main/res/values-he/strings.xml @@ -7,6 +7,7 @@ <string name="label_favorites">מועדפים</string> <string name="action_create">פתק חדש</string> <string name="action_settings">הגדרות</string> + <string name="action_trashbin">פתקים שנמחקו</string> <string name="action_search">חיפוש</string> <string name="action_create_save">שמירה</string> <string name="simple_cancel">ביטול</string> @@ -38,6 +39,8 @@ <string name="listview_updated_this_month">החודש</string> <string name="listview_updated_earlier">לפני כן</string> + <!-- Settings --> + <string name="settings_server_settings">חשבון</string> <string name="settings_url">כתובת שרת</string> <string name="settings_url_check_description">מציג אם ניתן לשלוח פינג לשרת.</string> <string name="settings_url_warn_http">אזהרה: „http” אינו מאובטח. נא להשתמש ב־„https”.</string> @@ -49,6 +52,7 @@ <string name="settings_submitting">מתבצעת התחברות …</string> <string name="settings_note_mode">מצב תצוגת פתקים</string> <string name="settings_theme_title">ערכת עיצוב</string> + <string name="settings_cert_category">ניהול אישורים</string> <string name="settings_cert_trust_system">מתן אמון באישורי המערכת</string> <string name="settings_cert_trust_system_on">מתן אמון אוטומטית ברשויות אישורים של המערכת ובאלו שנוספו על ידי המשתמש (מומלץ)</string> <string name="settings_cert_trust_system_off">לא לתת אמון ברשויות אישורים של המערכת ובאלו שנוספו על ידי המשתמש</string> diff --git a/app/src/main/res/values-hu-rHU/strings.xml b/app/src/main/res/values-hu-rHU/strings.xml index 04806614..971eb5d5 100644 --- a/app/src/main/res/values-hu-rHU/strings.xml +++ b/app/src/main/res/values-hu-rHU/strings.xml @@ -7,6 +7,7 @@ <string name="label_favorites">Kedvencek</string> <string name="action_create">Új jegyzet</string> <string name="action_settings">Beállítások</string> + <string name="action_trashbin">Törölt jegyzetek</string> <string name="action_search">Keresés</string> <string name="action_create_save">Mentés</string> <string name="simple_cancel">Mégsem</string> @@ -18,7 +19,7 @@ <string name="action_select_note">Jegyzet választás</string> <string name="action_note_deleted">Jegyzet törölve</string> <string name="action_note_restored">Jegyzet visszaállítva</string> - <string name="action_undo">Visszavon</string> + <string name="action_undo">Visszavonás</string> <string name="action_drawer_open">navigáció megnyitása</string> <string name="action_drawer_close">navigáció bezárása</string> <string name="action_recent">Friss</string> @@ -38,9 +39,11 @@ <string name="listview_updated_this_month">Ebben a hónapban</string> <string name="listview_updated_earlier">Korábban</string> + <!-- Settings --> + <string name="settings_server_settings">Fiók</string> <string name="settings_url">A szerver címe</string> - <string name="settings_url_check_description">Mutatja, hogy cím pingelhető-e.</string> - <string name="settings_url_warn_http">Figyelem: a \"http\" biztonságtalan. Kérjük használj \"https\"-t.</string> + <string name="settings_url_check_description">Mutatja, hogy a cím pingelhető-e.</string> + <string name="settings_url_warn_http">Figyelem: a \"http\" nem biztonságos. Kérjük használj \"https\"-t!</string> <string name="settings_username">Felhasználónév</string> <string name="settings_password">Jelszó</string> <string name="settings_password_unchanged">Jelszó (módosítatlan)</string> @@ -49,6 +52,7 @@ <string name="settings_submitting">Kapcsolódás …</string> <string name="settings_note_mode">Jegyzetmegjelenítési módok</string> <string name="settings_theme_title">Téma</string> + <string name="settings_cert_category">Tanúsítványok kezelése</string> <string name="settings_cert_trust_system">Megbízás a rendszertanúsítványokban</string> <string name="settings_cert_trust_system_on">A rendszer és felhasználó által hozzáadott CA-k megbízhatók (javasolt)</string> <string name="settings_cert_trust_system_off">A rendszer és felhasználó által hozzáadott CA-k nem megbízhatók</string> diff --git a/app/src/main/res/values-is/strings.xml b/app/src/main/res/values-is/strings.xml index 24192e2c..5c881743 100644 --- a/app/src/main/res/values-is/strings.xml +++ b/app/src/main/res/values-is/strings.xml @@ -7,6 +7,7 @@ <string name="label_favorites">Eftirlæti</string> <string name="action_create">Nýr minnispunktur</string> <string name="action_settings">Stillingar</string> + <string name="action_trashbin">Eyddir minnispunktar</string> <string name="action_search">Leita</string> <string name="action_create_save">Vista</string> <string name="simple_cancel">Hætta við</string> diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 79e389c6..3c06c4e6 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -7,6 +7,7 @@ <string name="label_favorites">Preferite</string> <string name="action_create">Nuova nota</string> <string name="action_settings">Impostazioni</string> + <string name="action_trashbin">Note eliminate</string> <string name="action_search">Cerca</string> <string name="action_create_save">Salva</string> <string name="simple_cancel">Annulla</string> diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index eced01d1..e8d5bbae 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -3,8 +3,11 @@ <string name="app_name">ノート</string> <string name="no_notes">まだノートはありません</string> + <string name="label_all_notes">すべてのノート</string> + <string name="label_favorites">お気に入り</string> <string name="action_create">新しいノート</string> <string name="action_settings">設定</string> + <string name="action_trashbin">ゴミ箱</string> <string name="action_search">検索</string> <string name="action_create_save">保存</string> <string name="simple_cancel">キャンセル</string> @@ -12,14 +15,16 @@ <string name="action_edit_save">保存</string> <string name="action_edit_saving">保存中…</string> <string name="action_edit_saved">保存しました</string> - <string name="action_edit_cancel">キャンセル</string> - <string name="simple_about">アプリについて</string> + <string name="simple_about">バージョン情報</string> <string name="action_select_note">ノートを選択</string> + <string name="action_note_deleted">削除されたノート</string> + <string name="action_note_restored">復元されたノート</string> <string name="action_undo">元に戻す</string> + <string name="action_drawer_open">ナビゲーションを開く</string> + <string name="action_drawer_close">ナビゲーションを閉じる</string> + <string name="action_recent">最新</string> + <string name="action_uncategorized">未分類</string> <string name="menu_delete">削除</string> - <string name="menu_copy">コピー</string> - <string name="menu_edit">編集</string> - <string name="menu_cancel">キャンセル</string> <string name="menu_change_category">カテゴリ</string> <string name="menu_favorite">お気に入り</string> <string name="menu_preview">プレビュー</string> @@ -27,7 +32,6 @@ <string name="menu_about">アプリについて</string> <string name="change_category_title">カテゴリを選択</string> - <string name="copy">コピー</string> <string name="listview_updated_today">今日</string> <string name="listview_updated_yesterday">昨日</string> @@ -36,15 +40,26 @@ <string name="listview_updated_earlier">早期</string> <!-- Settings --> - <string name="settings_server_settings">アカウント設定</string> + <string name="settings_server_settings">アカウント</string> <string name="settings_url">サーバーアドレス</string> + <string name="settings_url_check_description">アドレスにpingを実行できるかどうかを表示します。</string> <string name="settings_url_warn_http">警告: \"http\" は安全ではありません。 \"https\" を使用してください。</string> <string name="settings_username">ユーザー名</string> <string name="settings_password">パスワード</string> <string name="settings_password_unchanged">パスワード (変更されていません)</string> + <string name="settings_password_check_description">資格情報が正しいかどうかを表示します。</string> <string name="settings_submit">接続</string> <string name="settings_submitting">接続中…</string> - <string name="settings_cert_category">証明書</string> + <string name="settings_note_mode">ノートの表示モード</string> + <string name="settings_theme_title">テーマ</string> + <string name="settings_cert_category">証明書を管理する</string> + <string name="settings_cert_trust_system">システム証明書を信頼する</string> + <string name="settings_cert_trust_system_on">システムおよびユーザーが追加したCAは信頼される(推奨)</string> + <string name="settings_cert_trust_system_off">システムおよびユーザーが追加したCAは信頼されません</string> + <string name="settings_cert_reset">信頼できる(できない)証明書をリセットする</string> + <string name="settings_cert_reset_summary">すべてのカスタム証明書の信頼をリセットします。</string> + <string name="settings_cert_reset_toast">すべてのカスタム証明書がクリアされました</string> + <!-- Certificates --> <string name="certificate_notification_connection_security">ノート - セキュリティ接続</string> <string name="trust_certificate_unknown_certificate_found">ノートで未知の証明書が発見されました。これを信頼しますか?</string> @@ -89,8 +104,14 @@ <string name="about_contribution_tab_title">貢献</string> <string name="about_license_tab_title">ライセンス</string> + <!-- Widgets --> + <string name="widget_note_list_title">ノート一覧</string> + <string name="widget_note_list_placeholder">ノートがありません</string> <string name="widget_single_note_title">一つのノート</string> + <string name="widget_single_note_placeholder_tv">ノートが見つかりません</string> <string name="widget_create_note">ノートを作成</string> + <string name="widget_not_logged_in">このウィジェットを使用する前に、ノートにログインしてください</string> + <string name="widget_entry_fav_contentDescription">スターアイコンは、アイテムをお気に入りとして示すために使用されます</string> <string name="widget_app_launcher_contentDescription">アプリを起動する</string> <string name="activity_select_single_note">ノートを選択</string> @@ -98,6 +119,16 @@ <!-- Shortcuts --> <string name="shortcut_create_long">新しいノートを作成</string> + <string name="pref_value_theme_light">ライト</string> + <string name="pref_value_theme_dark">ダーク</string> + + <!-- Array: note modes --> + <string-array name="noteMode_entries"> + <item>編集モードで開く</item> + <item>プレビューモードで開く</item> + <item>最後の使用状態を覚えておく</item> + </string-array> + <!-- Plurals --> <plurals name="ab_selected"> <item quantity="other">%d 選択済</item> diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index d615f7c6..3a973e81 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -7,6 +7,7 @@ <string name="label_favorites">Favoritter</string> <string name="action_create">Nytt notat</string> <string name="action_settings">Innstillinger</string> + <string name="action_trashbin">Slettede notat</string> <string name="action_search">Søk</string> <string name="action_create_save">Lagre</string> <string name="simple_cancel">Avbryt</string> @@ -30,12 +31,16 @@ <string name="menu_share">Del</string> <string name="menu_about">Om</string> + <string name="change_category_title">Velg kategori</string> + <string name="listview_updated_today">Idag</string> - <string name="listview_updated_yesterday">Igår</string> + <string name="listview_updated_yesterday">I går</string> <string name="listview_updated_this_week">Denne uken</string> <string name="listview_updated_this_month">Denne måneden</string> <string name="listview_updated_earlier">Tidligere</string> + <!-- Settings --> + <string name="settings_server_settings">Konto</string> <string name="settings_url">Tjeneradresse</string> <string name="settings_url_check_description">Viser hvorvidt adressen kan pinges.</string> <string name="settings_url_warn_http">ADVARSEL: \"http\" er usikker. Bruk \"https\".</string> @@ -46,11 +51,13 @@ <string name="settings_submit">Koble til</string> <string name="settings_submitting">Kobler …</string> <string name="settings_note_mode">Visningsmodus for Notater</string> + <string name="settings_theme_title">Tema</string> + <string name="settings_cert_category">Administrer sertifikat</string> <string name="settings_cert_trust_system">Stol på systemets sertifikater</string> <string name="settings_cert_trust_system_on">System- og bruker -tillagte seritikatsmyndigheter vil stoles på (anbefalt)</string> - <string name="settings_cert_trust_system_off">Syste. og bruker -tillagte sertifikatsmyndigheter vil ikke bli stolt på</string> - <string name="settings_cert_reset">Tilbakestill (ikke)tiltrodde sertifikater</string> - <string name="settings_cert_reset_summary">Tilbakestill tillit til alle systemsertifikater</string> + <string name="settings_cert_trust_system_off">Sertifikatmyndighet fra system eller bruker vil ikke bli stolt på</string> + <string name="settings_cert_reset">Tilbakestill klarerte sertifikater</string> + <string name="settings_cert_reset_summary">Tilbakestiller tillit til alle tilpassede sertifikater</string> <string name="settings_cert_reset_toast">Alle egendefinerte sertifikater har blitt fjernet</string> <!-- Certificates --> @@ -105,6 +112,7 @@ <string name="widget_single_note_placeholder_tv">Notatet ble ikke funnet</string> <string name="widget_create_note">Opprett notat</string> <string name="widget_not_logged_in">Logg inn i Notater før du bruker dette miniprogrammet</string> + <string name="widget_entry_fav_contentDescription">Stjerne ikon er brukt for å angi et element som en favoritt</string> <string name="widget_app_launcher_contentDescription">Starter programmet</string> <string name="activity_select_single_note">Velg notat</string> @@ -112,6 +120,9 @@ <!-- Shortcuts --> <string name="shortcut_create_long">Opprett et nytt notat</string> + <string name="pref_value_theme_light">Lys</string> + <string name="pref_value_theme_dark">Mørk</string> + <!-- Array: note modes --> <string-array name="noteMode_entries"> <item>Åpne i redigeringsmodus</item> diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml index 8bd366f2..8b37c430 100644 --- a/app/src/main/res/values-night/colors.xml +++ b/app/src/main/res/values-night/colors.xml @@ -4,7 +4,7 @@ <color name="primary_dark">#286090</color> - <color name="separator">#444</color> + <color name="separator">#262626</color> <color name="bg_highlighted">#111</color> <color name="bg_normal">#222222</color> diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index c9211ba6..c0ac366c 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -7,6 +7,7 @@ <string name="label_favorites">Favorieten</string> <string name="action_create">Nieuwe notitie</string> <string name="action_settings">Instellingen</string> + <string name="action_trashbin">Verwijder notities</string> <string name="action_search">Zoeken</string> <string name="action_create_save">Opslaan</string> <string name="simple_cancel">Annuleren</string> @@ -22,7 +23,7 @@ <string name="action_drawer_open">open navigatie</string> <string name="action_drawer_close">sluit navigatie</string> <string name="action_recent">Recent</string> - <string name="action_uncategorized">Ongecategorizeerd</string> + <string name="action_uncategorized">Niet gecategoriseerd</string> <string name="menu_delete">Verwijderen</string> <string name="menu_change_category">Categorie</string> <string name="menu_favorite">Favoriet</string> diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 56ae93f5..9027db46 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -7,6 +7,7 @@ <string name="label_favorites">Ulubione</string> <string name="action_create">Nowa notatka</string> <string name="action_settings">Ustawienia</string> + <string name="action_trashbin">Usunięte notatki</string> <string name="action_search">Szukaj</string> <string name="action_create_save">Zapisz</string> <string name="simple_cancel">Anuluj</string> diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index f63a15df..4f2d6664 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -7,6 +7,7 @@ <string name="label_favorites">Favoritos</string> <string name="action_create">Nova nota</string> <string name="action_settings">Configurações</string> + <string name="action_trashbin">Anotações excluídas</string> <string name="action_search">Pesquisar</string> <string name="action_create_save">Salvar</string> <string name="simple_cancel">Cancelar</string> diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 1dd228f6..5669f3c0 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -7,6 +7,7 @@ <string name="label_favorites">Избранные</string> <string name="action_create">Новая заметка</string> <string name="action_settings">Настройки</string> + <string name="action_trashbin">Удалённые заметки</string> <string name="action_search">Поиск</string> <string name="action_create_save">Сохранить</string> <string name="simple_cancel">Отмена</string> @@ -79,7 +80,7 @@ <string name="error_username_password_invalid">Неправильный логин или пароль</string> <!-- Snackbar Actions --> - <string name="snackbar_settings">Настройки</string> + <string name="snackbar_settings">Параметры</string> <!-- About --> <string name="about_version_title">Версия</string> @@ -95,8 +96,8 @@ <string name="about_issues">Вы можете сообщить об ошибках, внести предложения об улучшениях и пожеланиях в системе тикетов GitHub: <a href=\"%1$s\">%1$s</a></string> <string name="about_translate_title">Перевести</string> <string name="about_translate">Включайтесь в команду Nextcloud на сайте Transifex и помогайте переводить это приложение: <a href=\"%1$s\">%1$s</a></string> - <string name="about_app_license_title">Лицензия программы</string> - <string name="about_app_license">Программа выпускается под лицензией GNU GENERAL PUBLIC LICENSE v3+.</string> + <string name="about_app_license_title">Лицензия приложения</string> + <string name="about_app_license">Лицензия на программу предоставляется в соответствии с условиями Открытого лицензионного соглашения GNU (GNU GPL) версии 3+.</string> <string name="about_app_license_button">Посмотреть лицензию</string> <string name="about_icons_disclaimer_title">Значки</string> <string name="about_icons_disclaimer"><p>Исходные значки были созданы %1$s</p><p>Все дальнейшие значки, которые используются в этой программе, являются <a href=\"https://materialdesignicons.com/\">Material Design Icons</a> от Google Inc. и защищены лицензией использования Apache 2.0. </p></string> diff --git a/app/src/main/res/values-sk-rSK/strings.xml b/app/src/main/res/values-sk-rSK/strings.xml index 269a706c..2b3c047c 100644 --- a/app/src/main/res/values-sk-rSK/strings.xml +++ b/app/src/main/res/values-sk-rSK/strings.xml @@ -7,6 +7,7 @@ <string name="label_favorites">Obľúbené</string> <string name="action_create">Nová poznámka</string> <string name="action_settings">Settings</string> + <string name="action_trashbin">Zmazané poznámky</string> <string name="action_search">Hľadať</string> <string name="action_create_save">Uložiť</string> <string name="simple_cancel">Zrušiť</string> diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index 54c523cd..0f6a02dd 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -1,10 +1,140 @@ <?xml version="1.0" encoding="utf-8"?> <resources> + + <string name="app_name">Beležka Notes</string> + <string name="no_notes">Ni še dodane nobene zabeležke</string> + <string name="label_all_notes">Vse zabeležke</string> + <string name="label_favorites">Priljubljene</string> + <string name="action_create">Nova zabeležka</string> + <string name="action_settings">Nastavitve</string> + <string name="action_trashbin">Izbrisane zabeležke</string> + <string name="action_search">Poišči</string> + <string name="action_create_save">Shrani</string> + <string name="simple_cancel">Prekliči</string> + <string name="simple_edit">Uredi</string> + <string name="action_edit_save">Shrani</string> + <string name="action_edit_saving">Poteka shranjevanje…</string> + <string name="action_edit_saved">Shranjeno</string> + <string name="simple_about">O programu</string> + <string name="action_select_note">Izbor zabeležke</string> + <string name="action_note_deleted">Zabeležka je izbrisana</string> + <string name="action_note_restored">Zabeležka je obnovljena</string> + <string name="action_undo">Razveljavi</string> + <string name="action_drawer_open">odpri iskalnik</string> + <string name="action_drawer_close">zapri iskalnik</string> + <string name="action_recent">Nedavno</string> + <string name="action_uncategorized">Neopredeljeno</string> + <string name="menu_delete">Izbriši</string> + <string name="menu_change_category">Kategorija</string> + <string name="menu_favorite">Priljubljena</string> + <string name="menu_preview">Predogled</string> + <string name="menu_share">Souporaba</string> + <string name="menu_about">O programu</string> + + <string name="change_category_title">Izbor kategorije</string> + + <string name="listview_updated_today">Danes</string> + <string name="listview_updated_yesterday">Včeraj</string> + <string name="listview_updated_this_week">Zadnji teden</string> + <string name="listview_updated_this_month">Zadnji mesec</string> + <string name="listview_updated_earlier">Starejše</string> + + <!-- Settings --> + <string name="settings_server_settings">Račun</string> + <string name="settings_url">Naslov strežnika</string> + <string name="settings_url_check_description">Pokaže, ali je naslov mogoče pripeti.</string> + <string name="settings_url_warn_http">OPOZORILO: protokol »http« ni varen. Priporočljivo je uporabiti protokol »https«.</string> + <string name="settings_username">Uporabniško ime</string> + <string name="settings_password">Geslo</string> + <string name="settings_password_unchanged">Geslo (ni spremenjeno)</string> + <string name="settings_password_check_description">Pokaže, ali so poverila pravilna.</string> + <string name="settings_submit">Poveži</string> + <string name="settings_submitting">Poteka vzpostavljanje povezave z…</string> + <string name="settings_note_mode">Prikazni način za zabeležke</string> + <string name="settings_theme_title">Tema</string> + <string name="settings_cert_category">Upravljanje s potrdili</string> + <string name="settings_cert_trust_system">Zaupaj sistemskim potrdilom</string> + <string name="settings_cert_trust_system_on">Sistemska in s strani uporabnika dodana potrdila CA bodo obravnavana kot varna (priporočljivo)</string> + <string name="settings_cert_trust_system_off">Sistemska in s strani uporabnika dodana potrdila CA ne bodo obravnavana kot varna</string> + <string name="settings_cert_reset">Ponastavi (ne)zaupanja vredna potrdila</string> + <string name="settings_cert_reset_summary">Ponastavi zaupanje vseh uporabniških potrdil</string> + <string name="settings_cert_reset_toast">Vsa uporabniška potrdila so počiščena.</string> + + <!-- Certificates --> + <string name="certificate_notification_connection_security">Beležka Notes – varnost povezave</string> + <string name="trust_certificate_unknown_certificate_found">Program je zaznal uporabo neznanega potrdila. Ali želite potrditi zaupanje v potrdilo?</string> + + <!-- Network --> + <string name="network_connecting">Poteka vzpostavljanje povezave ...</string> + <string name="network_connected">Povezano</string> + <string name="network_disconnected">Na voljo ni nobenega omrežja</string> + + <!-- Error --> + <string name="error_sync">Usklajevanje je spodletelo: %1$s</string> + <string name="error_invalid_login">Neveljavna prijava: %1$s</string> + <string name="error_json">Ali je program Beležka Notes nameščen na strežniku?</string> + <string name="error_io">povezava s strežnikom je okvarjena</string> + <string name="error_no_network">ni omrežne povezave</string> + <string name="error_server">naslov/strežnik je naveden napačno</string> + <string name="error_url_malformed">Napačen naslov strežnika</string> + <string name="error_username_password_invalid">Napačno uporabniško ime ali geslo</string> + + <!-- Snackbar Actions --> + <string name="snackbar_settings">Nastavitve</string> + + <!-- About --> + <string name="about_version_title">Različica</string> + <string name="about_version">Trenutno je v uporabi <strong>%1$s</strong></string> + <string name="about_maintainer_title">Vzdrževalec</string> + <string name="about_developers_title">Razvijalci</string> + <string name="about_translators_title">Prevajalci</string> + <string name="about_translators_transifex">Skupnost Nextcloud na <a href=\"%1$s\">Transifex</a></string> + <string name="about_testers_title">Preizkuševalci</string> + <string name="about_source_title">Izvorna koda</string> + <string name="about_source">Projekt uporablja okolje GitHub: <a href=\"%1$s\">%1$s</a></string> + <string name="about_issues_title">Odzivi</string> + <string name="about_issues">Poročila o hroščih, predloge za izboljšave in prošnje za nove programske zmožnosti je mogoče objaviti na sledilniku GitHub: <a href=\"%1$s\">%1$s</a></string> + <string name="about_translate_title">Prevodi</string> + <string name="about_translate">Za urejanje prevodov Projekta Nextcloud se uporablja spletno okolje Transifex: <a href=\"%1$s\">%1$s</a></string> + <string name="about_app_license_title">Dovoljenje za uporabo</string> + <string name="about_app_license">Program je objavljen pod pogoji Splošnega javnega dovoljenja (GNU GPL) različice 3 ali novejše.</string> + <string name="about_app_license_button">Podrobno besedilo dovoljenja</string> + <string name="about_icons_disclaimer_title">Ikone</string> + <string name="about_icons_disclaimer"><p>Ikono programa je ustvaril %1$s</p><p>Vse ostale ikone, uporabljene v programu, so del zbirke <a href=\"https://materialdesignicons.com/\">Material Design Icons</a>, ki jo je pod pogoji dovoljenja Apache 2.0 objavilo podjetje Google Inc.</p></string> + <string name="about_credits_tab_title">Zasluge</string> + <string name="about_contribution_tab_title">Skupnost</string> + <string name="about_license_tab_title">Dovoljenje</string> + + <!-- Widgets --> + <string name="widget_note_list_title">Seznam zabeležk</string> + <string name="widget_note_list_placeholder">Ni zabeležk</string> + <string name="widget_single_note_title">Samostojna zabeležka</string> + <string name="widget_single_note_placeholder_tv">Zabeležke ni mogoče najti</string> + <string name="widget_create_note">Ustvari zabeležko</string> + <string name="widget_not_logged_in">Pred uporabo gradnika se je treba prijaviti v program Beležka Notes</string> + <string name="widget_entry_fav_contentDescription">Zvezdica označuje priljubljene predmete</string> + <string name="widget_app_launcher_contentDescription">Zažene program</string> + + <string name="activity_select_single_note">Izbor zabeležke</string> + + <!-- Shortcuts --> + <string name="shortcut_create_long">Ustvari novo zabeležko</string> + + <string name="pref_value_theme_light">Svetla</string> + <string name="pref_value_theme_dark">Temna</string> + + <!-- Array: note modes --> + <string-array name="noteMode_entries"> + <item>Odpre se v urejevalnem načinu</item> + <item>Odpre se v predogledu</item> + <item>Zapomni si zadnjo izbiro</item> + </string-array> + <!-- Plurals --> <plurals name="ab_selected"> - <item quantity="one">%d izbran(a)</item> - <item quantity="two">%d izbrana(i)</item> - <item quantity="few">%d izbranih</item> + <item quantity="one">%d izbrana</item> + <item quantity="two">%d izbrani</item> + <item quantity="few">%d izbrane</item> <item quantity="other">%d izbranih</item> </plurals> -</resources>
\ No newline at end of file +</resources> diff --git a/app/src/main/res/values-sq/strings.xml b/app/src/main/res/values-sq/strings.xml index daa05be9..3f9f22ea 100644 --- a/app/src/main/res/values-sq/strings.xml +++ b/app/src/main/res/values-sq/strings.xml @@ -3,13 +3,19 @@ <string name="app_name">Shënime</string> <string name="no_notes">Nuk ka shënime</string> + <string name="label_all_notes">Të gjitha shënimet</string> + <string name="label_favorites">Të preferuarat</string> <string name="action_create">Shënim i ri</string> <string name="action_settings">Konfigurimet</string> + <string name="action_trashbin">Shënimet e fshira</string> <string name="action_search">Kërko</string> <string name="action_create_save">Ruaj</string> + <string name="simple_cancel">Anullo</string> + <string name="simple_edit">Redakto</string> <string name="action_edit_save">Ruaj</string> <string name="action_edit_saving">Duke ruajtur …</string> <string name="action_edit_saved">U ruajt</string> + <string name="simple_about">Rreth </string> <string name="action_select_note">Selekto shënimin</string> <string name="action_note_deleted">Shënimi u fshi</string> <string name="action_note_restored">Shënimi i rivendos</string> @@ -25,12 +31,16 @@ <string name="menu_share">Ndaj</string> <string name="menu_about">Rreth nesh</string> + <string name="change_category_title">Zgjidh një kategori</string> + <string name="listview_updated_today">Sot</string> <string name="listview_updated_yesterday">Dje</string> <string name="listview_updated_this_week">Këtë javë</string> <string name="listview_updated_this_month">Këtë muaj</string> <string name="listview_updated_earlier">Më herët</string> + <!-- Settings --> + <string name="settings_server_settings">Llogari</string> <string name="settings_url">Adresa e serverit</string> <string name="settings_url_check_description">Tregon nëse adresa mund të bëhet ping.</string> <string name="settings_url_warn_http">PARALAJMËRIM: \"http\" nuk është e sigurt. Ju lutemi përdorni \"https\".</string> @@ -41,6 +51,8 @@ <string name="settings_submit">Lidhu</string> <string name="settings_submitting">Duke u lidhur …</string> <string name="settings_note_mode">Mënyra e paraqitjes për Shënimet</string> + <string name="settings_theme_title">Temë</string> + <string name="settings_cert_category">Menaxhoni certifikatat</string> <string name="settings_cert_trust_system">Beso tek çertifikatat e sistemit</string> <string name="settings_cert_trust_system_on">Sistemi dhe përdoruesit e shtuar CAs do të besohen (rekomandohet)</string> <string name="settings_cert_trust_system_off">Sistemi dhe përdoruesit e shtuar CAs nuk do të besohen</string> @@ -100,6 +112,7 @@ <string name="widget_single_note_placeholder_tv">Shënimi nuk u gjet</string> <string name="widget_create_note">Krijoni shënim</string> <string name="widget_not_logged_in">Ju lutemi identifikohuni në aplikacion përpara se të përdorni këtë widget</string> + <string name="widget_entry_fav_contentDescription">Ikona e yllit përdoret për të treguar artikullin si të preferuar</string> <string name="widget_app_launcher_contentDescription">Hape aplikacionin</string> <string name="activity_select_single_note">Zgjidh shënimin</string> @@ -107,6 +120,9 @@ <!-- Shortcuts --> <string name="shortcut_create_long">Krijo një shënim të ri</string> + <string name="pref_value_theme_light">E çelët</string> + <string name="pref_value_theme_dark">E errët</string> + <!-- Array: note modes --> <string-array name="noteMode_entries"> <item>Hapur në modalitetin e redaktimit</item> diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 6217065f..b4f0f28a 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -7,6 +7,7 @@ <string name="label_favorites">Омиљене</string> <string name="action_create">Нова белешка</string> <string name="action_settings">Поставке</string> + <string name="action_trashbin">Обрисане белешке</string> <string name="action_search">Тражи</string> <string name="action_create_save">Сачувај</string> <string name="simple_cancel">Поништи</string> diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 0bfb16d0..767a0b5a 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -25,12 +25,16 @@ <string name="menu_share">Dela</string> <string name="menu_about">Om</string> + <string name="change_category_title">Välj en kategori</string> + <string name="listview_updated_today">Idag</string> <string name="listview_updated_yesterday">Igår</string> <string name="listview_updated_this_week">Denna vecka</string> <string name="listview_updated_this_month">Denna månad</string> <string name="listview_updated_earlier">Tidigare</string> + <!-- Settings --> + <string name="settings_server_settings">Konto</string> <string name="settings_url">Serveradress</string> <string name="settings_url_check_description">Visar om adressen kan pingas.</string> <string name="settings_url_warn_http">VARNING: \"http\" är osäkert. Vänligen använd \"https\".</string> @@ -41,6 +45,7 @@ <string name="settings_submit">Anslut</string> <string name="settings_submitting">Ansluter …</string> <string name="settings_note_mode">Visningslägen för Anteckningar</string> + <string name="settings_cert_category">Hantera certifikat</string> <string name="settings_cert_trust_system">Lita på systemcertifikat</string> <string name="settings_cert_trust_system_on">System- och användartillagda CAs kommer vara betrodda (rekommenderas)</string> <string name="settings_cert_trust_system_off">System- och användartillagda CAs kommer inte vara betrodda</string> @@ -76,7 +81,7 @@ <string name="about_maintainer_title">Underhållare</string> <string name="about_developers_title">Utvecklare</string> <string name="about_translators_title">Översättare</string> - <string name="about_translators_transifex">Nextcloud community på <a href=\"%1$s\">Transifex</a></string> + <string name="about_translators_transifex">Nextcloud-gemenskapen på <a href=\"%1$s\">Transifex</a></string> <string name="about_testers_title">Testare</string> <string name="about_source_title">Källkod</string> <string name="about_source">Detta projekt finns på GitHub: <a href=\"%1$s\">%1$s</a></string> @@ -100,6 +105,7 @@ <string name="widget_single_note_placeholder_tv">Anteckning hittades inte</string> <string name="widget_create_note">Skapa anteckning</string> <string name="widget_not_logged_in">Vänligen logga in i Anteckningar innan denna används</string> + <string name="widget_entry_fav_contentDescription">Stjärnan används för att beteckna ett objekt som favorit</string> <string name="widget_app_launcher_contentDescription">Startar app</string> <string name="activity_select_single_note">Välj anteckning</string> diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 59aae35a..3fb3e16f 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -7,6 +7,7 @@ <string name="label_favorites">Sık Kullanılanlar</string> <string name="action_create">Not ekle</string> <string name="action_settings">Ayarlar</string> + <string name="action_trashbin">Silinmiş notlar</string> <string name="action_search">Arama</string> <string name="action_create_save">Kaydet</string> <string name="simple_cancel">İptal</string> diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 4a2a0553..7ffe1499 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -1,23 +1,24 @@ <?xml version="1.0" encoding="utf-8"?> <resources> - <string name="app_name">便笺</string> - <string name="no_notes">没有便笺</string> - <string name="label_all_notes">所有便笺</string> + <string name="app_name">便签</string> + <string name="no_notes">还没有便签</string> + <string name="label_all_notes">所有便签</string> <string name="label_favorites">收藏</string> - <string name="action_create">新建便笺</string> + <string name="action_create">新建便签</string> <string name="action_settings">设置</string> + <string name="action_trashbin">已删除的笔记</string> <string name="action_search">搜索</string> <string name="action_create_save">保存</string> <string name="simple_cancel">取消</string> <string name="simple_edit">编辑</string> <string name="action_edit_save">保存</string> - <string name="action_edit_saving">保存 …</string> + <string name="action_edit_saving">正在保存 …</string> <string name="action_edit_saved">已保存</string> <string name="simple_about">关于</string> - <string name="action_select_note">选择便笺</string> - <string name="action_note_deleted">已删除的笔记</string> - <string name="action_note_restored">已恢复笔记</string> + <string name="action_select_note">选择便签</string> + <string name="action_note_deleted">已删除的便签</string> + <string name="action_note_restored">已恢复便签</string> <string name="action_undo">撤销</string> <string name="action_drawer_open">打开导航</string> <string name="action_drawer_close">关闭导航</string> @@ -27,7 +28,7 @@ <string name="menu_change_category">类别</string> <string name="menu_favorite">收藏</string> <string name="menu_preview">预览</string> - <string name="menu_share">分享</string> + <string name="menu_share">共享</string> <string name="menu_about">关于</string> <string name="change_category_title">选择一个分类</string> @@ -41,13 +42,17 @@ <!-- Settings --> <string name="settings_server_settings">账户设置</string> <string name="settings_url">服务器地址</string> + <string name="settings_url_check_description">测试服务器是否可Ping通.</string> <string name="settings_url_warn_http">警告:“http”是不安全的,请使用“https”。</string> <string name="settings_username">用户名</string> <string name="settings_password">密码</string> <string name="settings_password_unchanged">密码(没修改)</string> + <string name="settings_password_check_description">显示证书是否正确。</string> <string name="settings_submit">连接</string> <string name="settings_submitting">连接 …</string> <string name="settings_note_mode">笔记的显示模式</string> + <string name="settings_theme_title">主题</string> + <string name="settings_cert_category">管理证书</string> <string name="settings_cert_trust_system">信任系统证书</string> <string name="settings_cert_trust_system_on">系统和用户添加的 CAs 将被信任(推荐)</string> <string name="settings_cert_trust_system_off">系统和用户添加的 CAs 将不被信任</string> @@ -95,6 +100,7 @@ <string name="about_app_license">此程序通过GNU通用公共许可证V3+授权。</string> <string name="about_app_license_button">查看授权</string> <string name="about_icons_disclaimer_title">图标</string> + <string name="about_icons_disclaimer"><p>原创图标来自 %1$s</p><p>本应用中使用的其他图标来自 Google Inc. 基于创作共用协议提供的 <a href=\"https://materialdesignicons.com/\">Material Design Icons</a>.</p></string> <string name="about_credits_tab_title">致谢</string> <string name="about_contribution_tab_title">贡献</string> <string name="about_license_tab_title">授权</string> @@ -105,6 +111,8 @@ <string name="widget_single_note_title">单个便笺</string> <string name="widget_single_note_placeholder_tv">未找到笔记</string> <string name="widget_create_note">创建笔记</string> + <string name="widget_not_logged_in">请在使用此小部件之前登录Notes</string> + <string name="widget_entry_fav_contentDescription">标星项目为收藏</string> <string name="widget_app_launcher_contentDescription">启动应用程序</string> <string name="activity_select_single_note">选择笔记</string> @@ -112,6 +120,9 @@ <!-- Shortcuts --> <string name="shortcut_create_long">创建新便笺</string> + <string name="pref_value_theme_light">亮色主题</string> + <string name="pref_value_theme_dark">暗色主题</string> + <!-- Array: note modes --> <string-array name="noteMode_entries"> <item>以编辑模式打开</item> diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 84abe509..ef9efb0b 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -5,7 +5,7 @@ <color name="primary">#0082C9</color> <color name="primary_dark">#286090</color> - <color name="separator">#d2d2d2</color> + <color name="separator">#fbfbfb</color> <color name="bg_transparent">#aa000000</color> <color name="bg_highlighted">#f3f3f3</color> @@ -19,11 +19,26 @@ <color name="fg_contrast">#ffffff</color> <color name="icon_grey">#757575</color> - <color name="widget_background">#FFFFFF</color> + <color name="widget_background">#DFFFFFFF</color> + <color name="widget_fg_default">#000000</color> + <color name="widget_fg_contrast">#ffffff</color> <color name="category_background">#FFF</color> <color name="category_border">@color/primary</color> - <color name="widget_fg_default">#000000</color> - <color name="widget_fg_contrast">#ffffff</color> -</resources>
\ No newline at end of file + <!-- Dark Theme --> + <!-- Defined here until appwidgets can use night/colors --> + <color name="bg_transparent_dark_theme">#aa000000</color> + <color name="bg_highlighted_dark_theme">#f3f3f3</color> + <color name="bg_normal_dark_theme">#222</color> + <color name="bg_attention_dark_theme">#d40000</color> + <color name="bg_warning_dark_theme">#ffcc00</color> + <color name="fg_default_dark_theme">#eeeeee</color> + <color name="fg_default_selection_dark_theme">#333333</color> + <color name="fg_default_low_dark_theme">#666666</color> + <color name="fg_default_high_dark_theme">#cccccc</color> + <color name="fg_contrast_dark_theme">#ffffff</color> + + <color name="widget_background_dark_theme">#bf222222</color> + <color name="widget_fg_dark_theme">#ffffff</color> +</resources> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b850f096..cec5237e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -16,6 +16,9 @@ <string name="action_edit_saving">Saving …</string> <string name="action_edit_saved">Saved</string> <string name="simple_about">About</string> + <string name="simple_bold">Bold</string> + <string name="simple_link">Link</string> + <string name="simple_italic">Italic</string> <string name="action_select_note">Select note</string> <string name="action_note_deleted">Note deleted</string> <string name="action_note_restored">Note restored</string> |