合并了zhy的代码

ChiYanZhen_branch
CYZ 3 years ago
parent fe511e5632
commit 6cdee41c8f

@ -34,7 +34,17 @@
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS"
tools:ignore="ProtectedPermissions" />
<application
android:icon="@drawable/icon_app"
android:label="@string/app_name" >

@ -0,0 +1,190 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="net.micode.notes"
android:versionCode="1"
android:versionName="0.1" >
<<<<<<< HEAD
<uses-sdk android:minSdkVersion="16" />
=======
<uses-sdk android:minSdkVersion="19" />
>>>>>>> origin/ChiYanZhen_branch
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<<<<<<< HEAD
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS"
tools:ignore="ProtectedPermissions" />
=======
>>>>>>> origin/ChiYanZhen_branch
<application
android:icon="@drawable/icon_app"
android:label="@string/app_name" >
<activity
android:name=".ui.NotesListActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/app_name"
android:launchMode="singleTop"
android:theme="@style/NoteTheme"
android:windowSoftInputMode="adjustPan" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".ui.NoteEditActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:launchMode="singleTop"
android:theme="@style/NoteTheme" >
<intent-filter android:scheme="http"
tools:ignore="AppLinkUrlError">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.item/text_note" />
<data android:mimeType="vnd.android.cursor.item/call_note" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.INSERT_OR_EDIT" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.item/text_note" />
<data android:mimeType="vnd.android.cursor.item/call_note" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
<<<<<<< HEAD
=======
<activity
android:name=".ui.DrawActivity"
android:theme ="@android:style/Theme.NoTitleBar.Fullscreen"
/>
>>>>>>> origin/ChiYanZhen_branch
<provider
android:authorities="com.example.cameraalbumtest.fileprovider"
android:name="androidx.core.content.FileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"
/>
</provider>
<provider
android:name="net.micode.notes.data.NotesProvider"
android:authorities="micode_notes"
android:multiprocess="true" />
<receiver
android:name=".widget.NoteWidgetProvider_2x"
android:label="@string/app_widget2x2" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="android.appwidget.action.APPWIDGET_DELETED" />
<action android:name="android.intent.action.PRIVACY_MODE_CHANGED" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_2x_info" />
</receiver>
<receiver
android:name=".widget.NoteWidgetProvider_4x"
android:label="@string/app_widget4x4" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="android.appwidget.action.APPWIDGET_DELETED" />
<action android:name="android.intent.action.PRIVACY_MODE_CHANGED" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_4x_info" />
</receiver>
<receiver android:name=".ui.AlarmInitReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<receiver
android:name="net.micode.notes.ui.AlarmReceiver"
android:process=":remote" >
</receiver>
<activity
android:name=".ui.AlarmAlertActivity"
android:label="@string/app_name"
android:launchMode="singleInstance"
android:theme="@android:style/Theme.Holo.Wallpaper.NoTitleBar" >
</activity>
<activity
android:name="net.micode.notes.ui.NotesPreferenceActivity"
android:label="@string/preferences_title"
android:launchMode="singleTop"
android:theme="@android:style/Theme.Holo.Light" >
</activity>
<service
android:name="net.micode.notes.gtask.remote.GTaskSyncService"
android:exported="false" >
</service>
<meta-data
android:name="android.app.default_searchable"
android:value=".ui.NoteEditActivity" />
</application>
</manifest>

@ -165,6 +165,7 @@ public class Notes {
* <P> Type : INTEGER (long) </P>
*/
public static final String VERSION = "version";
public static final String GROUP = "group_num";
}
public interface DataColumns {

@ -165,6 +165,10 @@ public class Notes {
* <P> Type : INTEGER (long) </P>
*/
public static final String VERSION = "version";
<<<<<<< HEAD
public static final String GROUP = "group_num";
=======
>>>>>>> origin/ChiYanZhen_branch
}
public interface DataColumns {

@ -180,6 +180,29 @@ public class Task extends Node {
|| !js.has(GTaskStringUtils.META_HEAD_DATA)) {
Log.w(TAG, "setContentByLocalJSON: nothing is avaiable");
}
<<<<<<< HEAD
try {
JSONObject note = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE);
JSONArray dataArray = js.getJSONArray(GTaskStringUtils.META_HEAD_DATA);
if (note.getInt(NoteColumns.TYPE) != Notes.TYPE_NOTE) {
Log.e(TAG, "invalid type");
return;
}
for (int i = 0; i < dataArray.length(); i++) {
JSONObject data = dataArray.getJSONObject(i);
if (TextUtils.equals(data.getString(DataColumns.MIME_TYPE), DataConstants.NOTE)) {
setName(data.getString(DataColumns.CONTENT));
break;
}
}
} catch (JSONException e) {
Log.e(TAG, e.toString());
e.printStackTrace();
=======
if (js != null) {
try {
JSONObject note = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE);
@ -202,6 +225,7 @@ public class Task extends Node {
Log.e(TAG, e.toString());
e.printStackTrace();
}
>>>>>>> origin/ChiYanZhen_branch
}
}

@ -201,7 +201,13 @@ public class TaskList extends Node {
Log.e(TAG, "gtask id doesn't match");
return SYNC_ACTION_ERROR;
}
return SYNC_ACTION_UPDATE_REMOTE;
if (c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) {
// local modification only
return SYNC_ACTION_UPDATE_REMOTE;
} else {
// for folder conflicts, just apply local modification
return SYNC_ACTION_UPDATE_REMOTE;
}
}
} catch (Exception e) {
Log.e(TAG, e.toString());

@ -133,6 +133,32 @@ public class TaskList extends Node {
if (js == null || !js.has(GTaskStringUtils.META_HEAD_NOTE)) {
Log.w(TAG, "setContentByLocalJSON: nothing is avaiable");
}
<<<<<<< HEAD
try {
JSONObject folder = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE);
if (folder.getInt(NoteColumns.TYPE) == Notes.TYPE_FOLDER) {
String name = folder.getString(NoteColumns.SNIPPET);
setName(GTaskStringUtils.MIUI_FOLDER_PREFFIX + name);
} else if (folder.getInt(NoteColumns.TYPE) == Notes.TYPE_SYSTEM) {
if (folder.getLong(NoteColumns.ID) == Notes.ID_ROOT_FOLDER)
setName(GTaskStringUtils.MIUI_FOLDER_PREFFIX + GTaskStringUtils.FOLDER_DEFAULT);
else if (folder.getLong(NoteColumns.ID) == Notes.ID_CALL_RECORD_FOLDER)
setName(GTaskStringUtils.MIUI_FOLDER_PREFFIX
+ GTaskStringUtils.FOLDER_CALL_NOTE);
else
Log.e(TAG, "invalid system folder");
} else {
Log.e(TAG, "error type");
}
} catch (JSONException e) {
Log.e(TAG, e.toString());
e.printStackTrace();
}
}
=======
if (js != null) {
try {
JSONObject folder = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE);
@ -158,6 +184,7 @@ public class TaskList extends Node {
}
}
>>>>>>> origin/ChiYanZhen_branch
public JSONObject getLocalJSONFromContent() {
try {
JSONObject js = new JSONObject();
@ -201,7 +228,17 @@ public class TaskList extends Node {
Log.e(TAG, "gtask id doesn't match");
return SYNC_ACTION_ERROR;
}
<<<<<<< HEAD
if (c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) {
// local modification only
return SYNC_ACTION_UPDATE_REMOTE;
} else {
// for folder conflicts, just apply local modification
return SYNC_ACTION_UPDATE_REMOTE;
}
=======
return SYNC_ACTION_UPDATE_REMOTE;
>>>>>>> origin/ChiYanZhen_branch
}
} catch (Exception e) {
Log.e(TAG, e.toString());

@ -306,7 +306,8 @@ public class GTaskClient {
input = new InflaterInputStream(entity.getContent(), inflater);
}
try(InputStreamReader isr = new InputStreamReader(input)) {
try {
InputStreamReader isr = new InputStreamReader(input);
BufferedReader br = new BufferedReader(isr);
StringBuilder sb = new StringBuilder();

@ -112,7 +112,11 @@ public class GTaskClient {
public boolean login(Activity activity) {
// we suppose that the cookie would expire after 5 minutes
// then we need to re-login
<<<<<<< HEAD
final long interval = 1000 * 60 * 5;
=======
final long interval = 1000L * 60 * 5;
>>>>>>> origin/ChiYanZhen_branch
if (mLastLoginTime + interval < System.currentTimeMillis()) {
mLoggedin = false;
}
@ -306,7 +310,12 @@ public class GTaskClient {
input = new InflaterInputStream(entity.getContent(), inflater);
}
<<<<<<< HEAD
try {
InputStreamReader isr = new InputStreamReader(input);
=======
try(InputStreamReader isr = new InputStreamReader(input)) {
>>>>>>> origin/ChiYanZhen_branch
BufferedReader br = new BufferedReader(isr);
StringBuilder sb = new StringBuilder();

@ -333,7 +333,12 @@ public class GTaskManager {
}
// go through remaining items
Iterator<Map.Entry<String, Node>> iter = mGTaskHashMap.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry<String, Node> entry = iter.next();
node = entry.getValue();
doContentSync(Node.SYNC_ACTION_ADD_LOCAL, node, null);
}
// mCancelled can be set by another thread, so we neet to check one by
// one

@ -295,12 +295,15 @@ public class GTaskManager {
"(type=? AND parent_id<>?)", new String[] {
String.valueOf(Notes.TYPE_NOTE), String.valueOf(Notes.ID_TRASH_FOLER)
}, NoteColumns.TYPE + " DESC");
<<<<<<< HEAD
=======
Iterator<Map.Entry<String, Node>> iter = mGTaskHashMap.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry<String, Node> entry = iter.next();
node = entry.getValue();
doContentSync(Node.SYNC_ACTION_ADD_LOCAL, node, c);
}
>>>>>>> origin/ChiYanZhen_branch
if (c != null) {
while (c.moveToNext()) {
gid = c.getString(SqlNote.GTASK_ID_COLUMN);
@ -333,7 +336,16 @@ public class GTaskManager {
}
// go through remaining items
<<<<<<< HEAD
Iterator<Map.Entry<String, Node>> iter = mGTaskHashMap.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry<String, Node> entry = iter.next();
node = entry.getValue();
doContentSync(Node.SYNC_ACTION_ADD_LOCAL, node, null);
}
=======
>>>>>>> origin/ChiYanZhen_branch
// mCancelled can be set by another thread, so we neet to check one by
// one

@ -295,7 +295,8 @@ public class BackupUtils {
mFileName = file.getName();
mFileDirectory = mContext.getString(R.string.file_path);
PrintStream ps = null;
try (FileOutputStream fos = new FileOutputStream(file)){
try {
FileOutputStream fos = new FileOutputStream(file);
ps = new PrintStream(fos);
} catch (FileNotFoundException e) {
e.printStackTrace();
@ -303,10 +304,10 @@ public class BackupUtils {
} catch (NullPointerException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
} /*catch (IOException f) {
f.printStackTrace();
return null;
}
}*/
return ps;
}
}

@ -295,7 +295,12 @@ public class BackupUtils {
mFileName = file.getName();
mFileDirectory = mContext.getString(R.string.file_path);
PrintStream ps = null;
<<<<<<< HEAD
try {
FileOutputStream fos = new FileOutputStream(file);
=======
try (FileOutputStream fos = new FileOutputStream(file)){
>>>>>>> origin/ChiYanZhen_branch
ps = new PrintStream(fos);
} catch (FileNotFoundException e) {
e.printStackTrace();
@ -303,9 +308,12 @@ public class BackupUtils {
} catch (NullPointerException e) {
e.printStackTrace();
return null;
<<<<<<< HEAD
=======
} catch (IOException e) {
e.printStackTrace();
return null;
>>>>>>> origin/ChiYanZhen_branch
}
return ps;
}

@ -84,6 +84,10 @@ public class DataUtils {
long folderId) {
if (ids == null) {
Log.d(TAG, "the ids is null");
<<<<<<< HEAD
=======
>>>>>>> origin/ChiYanZhen_branch
return true;
}

@ -87,4 +87,4 @@ public class DateTimePickerDialog extends AlertDialog implements OnClickListener
}
}
}
}

@ -16,6 +16,7 @@
package net.micode.notes.ui;
import android.Manifest;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.AlertDialog;
@ -73,6 +74,8 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import android.graphics.Typeface;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
@ -91,10 +94,14 @@ import net.micode.notes.ui.NoteEditText.OnTextViewChangeListener;
import net.micode.notes.widget.NoteWidgetProvider_2x;
import net.micode.notes.widget.NoteWidgetProvider_4x;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;

@ -20,6 +20,7 @@ import android.Manifest;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.Person;
import android.appwidget.AppWidgetManager;
import android.content.AsyncQueryHandler;
import android.content.ContentResolver;
@ -73,6 +74,7 @@ import android.widget.Toast;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.core.content.FileProvider;
import net.micode.notes.R;
import net.micode.notes.data.Notes;
@ -99,7 +101,7 @@ import java.io.FileOutputStream;
public class NotesListActivity extends Activity implements OnClickListener, OnItemLongClickListener {
private int time_node = 0;
private static final int FOLDER_NOTE_LIST_QUERY_TOKEN = 0;
private Uri uri;
private static final int FOLDER_LIST_QUERY_TOKEN = 1;
private static final int MENU_FOLDER_DELETE = 0;
@ -174,6 +176,18 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
context = NotesListActivity.this;
switch (requestCode) {
case 1:
if (resultCode == RESULT_OK) {
try {
Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri));
Drawable drawable = new BitmapDrawable(bitmap);
//Toast.makeText(context, " to get image chuxian", Toast.LENGTH_SHORT).show();
getWindow().setBackgroundDrawable(drawable);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
break;
case 3:
if (resultCode == RESULT_OK) {
if (Build.VERSION.SDK_INT >= 19) {
@ -376,10 +390,6 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
case R.id.move:
startQueryDestinationFolders();
break;
case R.id.menu_bg_photo:
time_node=1;
bg_from_photo();
break;
default:
return false;
}
@ -517,12 +527,22 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
protected HashSet<AppWidgetAttribute> doInBackground(Void... unused) {
HashSet<AppWidgetAttribute> widgets = mNotesListAdapter.getSelectedWidget();
if (!isSyncMode()) {
// if not synced, delete notes directly
if (DataUtils.batchDeleteNotes(mContentResolver, mNotesListAdapter
.getSelectedItemIds())) {
} else {
Log.e(TAG, "Delete notes error, should not happens");
if (mCurrentFolderId == Notes.ID_TRASH_FOLER){
// if in trash, delete notes directly
if (DataUtils.batchDeleteNotes(mContentResolver, mNotesListAdapter
.getSelectedItemIds())) {
} else {
Log.e(TAG, "Delete notes error, should not happens");
}
}
else{
//move to trash
if (!DataUtils.batchMoveToFolder(mContentResolver, mNotesListAdapter
.getSelectedItemIds(), Notes.ID_TRASH_FOLER)) {
Log.e(TAG, "Move notes to trash folder error, should not happens");
}
}
} else {
// in sync mode, we'll move the deleted note into the trash
// folder
@ -892,8 +912,12 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
ResetPassword();
break;
}
case R.id.menu_bg_photo:{
bg_from_photo();
case R.id.menu_bg_change:{
showListDialog();
break;
}
case R.id.menu_trash_folder:{
restoreDeletedNodes();
break;
}
default:
@ -908,6 +932,14 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
return true;
}
private void restoreDeletedNodes(){
mState = ListEditState.SUB_FOLDER;
mCurrentFolderId = Notes.ID_TRASH_FOLER;
startAsyncNotesListQuery();
mTitleBar.setText("回收站");
mTitleBar.setVisibility(View.VISIBLE);
}
private void exportNoteToText() {
final BackupUtils backup = BackupUtils.getInstance(NotesListActivity.this);
new AsyncTask<Void, Void, Integer>() {
@ -1177,6 +1209,26 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
}
return false;
}
public void bg_from_camera() {
context = NotesListActivity.this;
File file = new File(getExternalCacheDir(), "test.jpg");
try {
if (file.exists()) {
file.delete();
}
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
if (Build.VERSION.SDK_INT >= 24) {
uri = FileProvider.getUriForFile(context, "com.example.cameraalbumtest.fileprovider", file);
} else {
uri = Uri.fromFile(file);
}
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(intent, 1);
}
public void bg_from_photo() {
context = NotesListActivity.this;
@ -1245,5 +1297,27 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
}
}
public void showListDialog() {
final String[] items = {"从相册选取", "拍摄照片"};
AlertDialog.Builder listDialog = new AlertDialog.Builder(NotesListActivity.this);
listDialog.setTitle("背景");
listDialog.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
switch(i){
case 0:
time_node = 3;
bg_from_photo();
break;
case 1:
time_node = 2;
bg_from_camera();
break;
default:
break;
}
}
});
listDialog.show();
}
}

@ -99,6 +99,11 @@
android:layout_marginRight="8dip"
android:textAppearance="@style/TextAppearanceSecondaryItem" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/bg_btn_set_color" />
</LinearLayout>
<LinearLayout
@ -130,13 +135,13 @@
android:id="@+id/note_edit_view"
android:layout_width="363dp"
android:layout_height="wrap_content"
android:autoLink="all"
android:background="@null"
android:gravity="left|top"
android:lineSpacingMultiplier="1.2"
android:background="@null"
android:autoLink="all"
android:linksClickable="false"
android:minLines="12"
android:textAppearance="@style/TextAppearancePrimaryItem" />
android:textAppearance="@style/TextAppearancePrimaryItem"
android:lineSpacingMultiplier="1.2" />
<LinearLayout
android:id="@+id/note_edit_list"

@ -60,4 +60,4 @@
<item
android:id="@+id/menu_Insert_Image"
android:title="Insert the photo" />
</menu>
</menu>

@ -41,6 +41,9 @@
android:id="@+id/menu_private_folders"
android:title="Private Folder"/>
<item
android:id="@+id/menu_bg_photo"
android:title="@string/menu_bg_photo"/>
android:id="@+id/menu_bg_change"
android:title="更换背景"/>
<item
android:id="@+id/menu_trash_folder"
android:title="回收站"/>
</menu>

@ -58,6 +58,7 @@
<string name="menu_folder_view">查看文件夹</string>
<string name="menu_folder_delete">刪除文件夹</string>
<string name="menu_folder_change_name">修改文件夹名称</string>
<string name="menu_trash_folder">回收站</string>
<string name="folder_exist">文件夹 %1$s 已存在,请重新命名</string>
<string name="menu_share">分享</string>
@ -124,7 +125,8 @@
<item quantity="other"><xliff:g id="NUMBER">%1$s</xliff:g> 条符合“<xliff:g id="SEARCH">%2$s</xliff:g>”的搜索结果</item>
</plurals>
<string name="menu_font_style">更换字体</string>
<string name="menu_bg_photo">更换背景</string>
<string name="menu_move_to_PF">移动至私密文件夹</string>
<string name="menu_private_folders">私密文件夹</string>
<string name="menu_bg_change">更换背景</string>
</resources>

@ -123,9 +123,11 @@
<plurals name="search_results_title">
<item quantity="other"><xliff:g id="NUMBER">%1$s</xliff:g> 條符合”<xliff:g id="SEARCH">%2$s</xliff:g>“的搜尋結果</item>
</plurals>
<string name="menu_bg_photo">更换背景</string>
<string name="menu_move_to_PF">移动至私密文件夹</string>
<string name="menu_font_style">更换字体</string>
<string name="menu_private_folders">私密文件夹</string>
<string name="menu_trash_folder">回收站</string>
<string name="menu_bg_change">更换背景</string>
</resources>

@ -67,9 +67,11 @@
<string name="menu_share">Share</string>
<string name="menu_send_to_desktop">Send to home</string>
<string name="menu_alert">Remind me</string>
<string name="menu_bg_photo">bg from photo</string>
<string name="menu_bg_change">change background</string>
<string name="menu_private_folders">Private Folder</string>
<string name="menu_remove_remind">Delete reminder</string>
<string name="menu_title_select_folder">Select folder</string>
<string name="menu_move_parent_folder">Parent folder</string>
<string name="info_note_enter_desktop">Note added to home</string>
@ -135,5 +137,6 @@
<!-- Case of 0 or 2 or more results. -->
<item quantity="other"><xliff:g id="number" example="15">%1$s</xliff:g> results for \"<xliff:g id="search" example="???">%2$s</xliff:g>\"</item>
</plurals>
<string name="menu_trash_folder">trash folder</string>
</resources>

Loading…
Cancel
Save