diff --git a/doc/~$便签泛读、标注和维护报告文档.docx b/doc/~$便签泛读、标注和维护报告文档.docx
new file mode 100644
index 0000000..7306b70
Binary files /dev/null and b/doc/~$便签泛读、标注和维护报告文档.docx differ
diff --git a/doc/~$便签质量分析报告.docx b/doc/~$便签质量分析报告.docx
new file mode 100644
index 0000000..7115a73
Binary files /dev/null and b/doc/~$便签质量分析报告.docx differ
diff --git a/doc/~WRL2503.tmp b/doc/~WRL2503.tmp
new file mode 100644
index 0000000..2e90554
Binary files /dev/null and b/doc/~WRL2503.tmp differ
diff --git a/doc/小米便签泛读报告.docx b/doc/小米便签泛读、标注和维护报告文档.docx
similarity index 93%
rename from doc/小米便签泛读报告.docx
rename to doc/小米便签泛读、标注和维护报告文档.docx
index b0d4bc9..f6c9e7d 100644
Binary files a/doc/小米便签泛读报告.docx and b/doc/小米便签泛读、标注和维护报告文档.docx differ
diff --git a/doc/小米便签的代码标注.docx b/doc/小米便签的代码标注.docx
deleted file mode 100644
index 6d4e6b9..0000000
Binary files a/doc/小米便签的代码标注.docx and /dev/null differ
diff --git a/doc/小米便签质量分析报告.docx b/doc/小米便签质量分析报告.docx
index 09b4bc2..a4e7406 100644
Binary files a/doc/小米便签质量分析报告.docx and b/doc/小米便签质量分析报告.docx differ
diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml
index c71be5b..b6036d7 100644
--- a/src/main/AndroidManifest.xml
+++ b/src/main/AndroidManifest.xml
@@ -1,185 +1,155 @@
-
-
-
-
-
-
+ android:versionName="0.1">
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
+
-
-
+ android:icon="@drawable/icon_app_1"
+ android:label="@string/app_name">
+
+
+
+
+
+
-
+
+ android:windowSoftInputMode="adjustPan">
-
-
-
-
-
-
+
+ android:theme="@style/NoteTheme">
-
+
+
-
-
-
+
+
+
-
+
+
-
+
-
+
+
-
+
-
-
-
+
-
-
+ android:multiprocess="true" />
+ android:label="@string/app_widget2x2">
-
+
-
+
+ android:label="@string/app_widget4x4">
-
+
-
+
-
-
-
-
+
+
-
-
-
+
-
-
-
+ android:name=".ui.AlarmReceiver"
+ android:process=":remote">
-
-
-
+ android:theme="@android:style/Theme.Holo.Wallpaper.NoTitleBar">
-
-
-
+ android:theme="@android:style/Theme.Holo.Light">
-
-
-
+ android:name=".gtask.remote.GTaskSyncService"
+ android:exported="false">
-
+
+
\ No newline at end of file
diff --git a/src/main/java/net/micode/notes/data/Contact.java b/src/main/java/net/micode/notes/data/Contact.java
index 39e6f09..95d8bce 100644
--- a/src/main/java/net/micode/notes/data/Contact.java
+++ b/src/main/java/net/micode/notes/data/Contact.java
@@ -25,7 +25,6 @@ import android.util.Log;
import java.util.HashMap;
/**
-<<<<<<<< HEAD:src/main/java/net/micode/notes/data/Contact.java
* @Package: net.micode.notes.data
* @ClassName: Contact
* @Description:
@@ -37,29 +36,6 @@ public class Contact {
private static HashMap sContactCache;
private static final String TAG = "Contact";
-========
- * @Package: net.micode.notes.data
- * @ClassName: Contact
- * @Description:
- * Contact类用于查询联系人信息并进行缓存。
- * 该类包含一个静态的HashMap作为缓存,存储电话号码和对应的联系人名字。
- * 通过调用getContact方法可以根据给定的电话号码查询联系人名字。
- * 如果缓存中已经存在该电话号码对应的联系人名字,则直接返回缓存中的结果,否则通过查询数据库获取联系人名字并更新缓存。
- * 该类还定义了一个私有的SQL筛选语句用于查询联系人信息。
- * 注意:该类是线程不安全的,如果需要在多线程环境下使用,请做好同步控制
- * @Author: YangYizhe
- * @CreateDate: 12/17/2023 10:10 AM
- * @Version: 1.0
- */
-public class Contact {
- /**
- * 作为缓存,存储电话号码和对应的联系人名字
- */
- private static HashMap sContactCache;
- private static final String TAG = "Contact";//设置日志TAG标签
-
- //查询联系人的SQL筛选语句
->>>>>>>> b654a61 (code):src/Notes/app/src/main/java/net/micode/notes/data/Contact.java
private static final String CALLER_ID_SELECTION = "PHONE_NUMBERS_EQUAL(" + Phone.NUMBER
+ ",?) AND " + Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "'"
+ " AND " + Data.RAW_CONTACT_ID + " IN "
diff --git a/src/main/java/net/micode/notes/ui/NoteEditActivity.java b/src/main/java/net/micode/notes/ui/NoteEditActivity.java
index 8cab6c1..0ad5f86 100644
--- a/src/main/java/net/micode/notes/ui/NoteEditActivity.java
+++ b/src/main/java/net/micode/notes/ui/NoteEditActivity.java
@@ -19,6 +19,8 @@ import android.text.SpannableString;
import android.text.TextUtils;
import android.text.format.DateUtils;
import android.text.style.BackgroundColorSpan;
+import android.text.Editable;// 引入textwatcher和Editable
+import android.text.TextWatcher;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -67,12 +69,6 @@ import java.util.regex.Pattern;
*/
public class NoteEditActivity extends Activity implements OnClickListener,
NoteSettingChangedListener, OnTextViewChangeListener {
-<<<<<<<< HEAD:src/main/java/net/micode/notes/ui/NoteEditActivity.java
-========
- /**
- * 类属性的定义
- */
->>>>>>>> b654a61 (code):src/Notes/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java
private class HeadViewHolder {
public TextView tvModified;
@@ -81,6 +77,8 @@ public class NoteEditActivity extends Activity implements OnClickListener,
public TextView tvAlertDate;
public ImageView ibSetBgColor;
+
+ public TextView textNum;
}
private static final Map sBgSelectorBtnsMap = new HashMap();
static {
@@ -138,6 +136,70 @@ public class NoteEditActivity extends Activity implements OnClickListener,
private String mUserQuery;
private Pattern mPattern;
+
+ /**
+ * @method Textchange
+ * @description 对原始文本进行处理,去除图片字符、换行符和空格字符
+ * @date: 1/3/2024 8:48 AM
+ * @author: YangYizhe
+ * @param oriText
+ * @return 处理后的文本
+ */
+ private String Textchange(String oriText){
+ StringBuffer stringBuffer = new StringBuffer(oriText);
+ int Flag1 = -1;
+ int Flag2 = -1;
+ do {//不计入表示图片的字符
+ Flag1 = stringBuffer.indexOf("
");
+ if (Flag1 != -1 && Flag2 != -1) {
+ stringBuffer = stringBuffer.replace(Flag1, Flag2+1, "");
+ }
+ } while (Flag1 != -1 && Flag2 != -1);
+
+ do {//不计入换行字符
+ Flag1 = stringBuffer.indexOf("\n");
+
+ if (Flag1 != -1){
+ stringBuffer = stringBuffer.replace(Flag1, Flag1+1, "");
+ }
+ } while (Flag1 != -1);
+ do {//不计入空格字符
+ Flag1 = stringBuffer.indexOf(" ");
+
+ if (Flag1 != -1) {
+ stringBuffer = stringBuffer.replace(Flag1, Flag1+1, "");
+ }
+ } while (Flag1 != -1);
+ return stringBuffer.toString();
+ }
+
+ /**
+ * @method count
+ * @description 监听编辑框文本变化并更新字符数
+ * @date: 1/3/2024 9:09 AM
+ * @author: YangYizhe
+ */
+ private void count() {
+ mNoteEditor.addTextChangedListener(new TextWatcher() {
+ int currentLength = 0;
+ @Override
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+ mNoteHeaderHolder.textNum.setText("字数:" + currentLength);
+ }
+
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+ currentLength = Textchange(mNoteEditor.getText().toString()).length();
+ }
+
+ @Override
+ public void afterTextChanged(Editable s) {
+ mNoteHeaderHolder.textNum.setText("字数:" + currentLength);
+ }
+ });
+ }
+
/**
*在 Activity 创建时进行一些初始化工作,包括设置布局、初始化状态和资源等操作
*/
@@ -150,6 +212,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
return;
}
initResources();
+ count();
}
/**
@@ -294,7 +357,6 @@ public class NoteEditActivity extends Activity implements OnClickListener,
*/
showAlertHeader();
}
-<<<<<<<< HEAD:src/main/java/net/micode/notes/ui/NoteEditActivity.java
/**
* @method showAlertHeader
* @description
@@ -306,9 +368,6 @@ public class NoteEditActivity extends Activity implements OnClickListener,
* @date: 12/24/2023 6:24 PM
* @author: YangYizhe
*/
-========
-
->>>>>>>> b654a61 (code):src/Notes/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java
private void showAlertHeader() {
if (mWorkingNote.hasClockAlert()) {
long time = System.currentTimeMillis();
@@ -385,6 +444,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
mNoteHeaderHolder.ivAlertIcon = (ImageView) findViewById(R.id.iv_alert_icon);
mNoteHeaderHolder.tvAlertDate = (TextView) findViewById(R.id.tv_alert_date);
mNoteHeaderHolder.ibSetBgColor = (ImageView) findViewById(R.id.btn_set_bg_color);
+ mNoteHeaderHolder.textNum = (TextView) findViewById(R.id.text_num);
mNoteHeaderHolder.ibSetBgColor.setOnClickListener(this);
mNoteEditor = (EditText) findViewById(R.id.note_edit_view);
mNoteEditorPanel = findViewById(R.id.sv_note_edit);
@@ -420,15 +480,12 @@ public class NoteEditActivity extends Activity implements OnClickListener,
}
clearSettingState();
}
-<<<<<<<< HEAD:src/main/java/net/micode/notes/ui/NoteEditActivity.java
/**
* @method updateWidget
* @description 更新小部件的操作
* @date: 12/24/2023 6:21 PM
* @author: YangYizhe
*/
-========
->>>>>>>> b654a61 (code):src/Notes/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java
private void updateWidget() {
Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
if (mWorkingNote.getWidgetType() == Notes.TYPE_WIDGET_2X) {
@@ -551,8 +608,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
int itemId = item.getItemId();
if (itemId == R.id.menu_new_note) {
createNewNote();
- }
- else if (itemId == R.id.menu_delete) {
+ } else if (itemId == R.id.menu_delete) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(getString(R.string.alert_title_delete));
builder.setIcon(android.R.drawable.ic_dialog_alert);
@@ -677,7 +733,6 @@ public class NoteEditActivity extends Activity implements OnClickListener,
showToast(R.string.error_note_empty_for_clock);
}
}
-<<<<<<<< HEAD:src/main/java/net/micode/notes/ui/NoteEditActivity.java
/**
* 当小部件发生改变时调用updateWidget
*/
@@ -692,11 +747,6 @@ public class NoteEditActivity extends Activity implements OnClickListener,
* @param index 文本框索引
* @param text 文本框中的文本内容
*/
-========
- public void onWidgetChanged() {
- updateWidget();
- }
->>>>>>>> b654a61 (code):src/Notes/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java
public void onEditTextDelete(int index, String text) {
int childCount = mEditTextList.getChildCount();
if (childCount == 1) {
@@ -722,7 +772,6 @@ public class NoteEditActivity extends Activity implements OnClickListener,
edit.requestFocus();
edit.setSelection(length);
}
-<<<<<<<< HEAD:src/main/java/net/micode/notes/ui/NoteEditActivity.java
/**
* @method onEditTextEnter
* @description 编辑文本框中按下回车键的操作
@@ -731,8 +780,6 @@ public class NoteEditActivity extends Activity implements OnClickListener,
* @param index 文本框索引
* @param text 文本框中的文本内容
*/
-========
->>>>>>>> b654a61 (code):src/Notes/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java
public void onEditTextEnter(int index, String text) {
/**
* Should not happen, check for debug
@@ -751,7 +798,6 @@ public class NoteEditActivity extends Activity implements OnClickListener,
.setIndex(i);
}
}
-<<<<<<<< HEAD:src/main/java/net/micode/notes/ui/NoteEditActivity.java
/**
* @method switchToListMode
* @description 切换到列表模式
@@ -759,8 +805,6 @@ public class NoteEditActivity extends Activity implements OnClickListener,
* @author: YangYizhe
* @param text 列表文本
*/
-========
->>>>>>>> b654a61 (code):src/Notes/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java
private void switchToListMode(String text) {
mEditTextList.removeAllViews();
String[] items = text.split("\n");
@@ -777,7 +821,6 @@ public class NoteEditActivity extends Activity implements OnClickListener,
mNoteEditor.setVisibility(View.GONE);
mEditTextList.setVisibility(View.VISIBLE);
}
-<<<<<<<< HEAD:src/main/java/net/micode/notes/ui/NoteEditActivity.java
/**
* @method getHighlightQueryResult
* @description 获取高亮查询结果
@@ -787,8 +830,6 @@ public class NoteEditActivity extends Activity implements OnClickListener,
* @param userQuery 用户查询关键词
* @return 带有高亮效果的 Spannable 对象
*/
-========
->>>>>>>> b654a61 (code):src/Notes/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java
private Spannable getHighlightQueryResult(String fullText, String userQuery) {
SpannableString spannable = new SpannableString(fullText == null ? "" : fullText);
if (!TextUtils.isEmpty(userQuery)) {
@@ -805,7 +846,6 @@ public class NoteEditActivity extends Activity implements OnClickListener,
}
return spannable;
}
-<<<<<<<< HEAD:src/main/java/net/micode/notes/ui/NoteEditActivity.java
/**
* @method getListItem
* @description 获取列表项视图
@@ -815,8 +855,6 @@ public class NoteEditActivity extends Activity implements OnClickListener,
* @param index 列表项索引
* @return 列表项视图
*/
-========
->>>>>>>> b654a61 (code):src/Notes/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java
private View getListItem(String item, int index) {
View view = LayoutInflater.from(this).inflate(R.layout.note_edit_list_item, null);
final NoteEditText edit = (NoteEditText) view.findViewById(R.id.et_edit_text);
@@ -847,7 +885,6 @@ public class NoteEditActivity extends Activity implements OnClickListener,
edit.setText(getHighlightQueryResult(item, mUserQuery));
return view;
}
-<<<<<<<< HEAD:src/main/java/net/micode/notes/ui/NoteEditActivity.java
/**
* @method onTextChange
* @description 当文本内容发生变化时的处理方法
@@ -856,8 +893,6 @@ public class NoteEditActivity extends Activity implements OnClickListener,
* @param index 文本索引
* @param hasText 是否有文本内容
*/
-========
->>>>>>>> b654a61 (code):src/Notes/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java
public void onTextChange(int index, boolean hasText) {
if (index >= mEditTextList.getChildCount()) {
Log.e(TAG, "Wrong index, should not happen");
@@ -869,7 +904,6 @@ public class NoteEditActivity extends Activity implements OnClickListener,
mEditTextList.getChildAt(index).findViewById(R.id.cb_edit_item).setVisibility(View.GONE);
}
}
-<<<<<<<< HEAD:src/main/java/net/micode/notes/ui/NoteEditActivity.java
/**
* @method onCheckListModeChanged
* @description 当检查列表模式发生变化时的处理方法
@@ -878,9 +912,6 @@ public class NoteEditActivity extends Activity implements OnClickListener,
* @param oldMode 旧的模式
* @param newMode 新的模式
*/
-========
-
->>>>>>>> b654a61 (code):src/Notes/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java
public void onCheckListModeChanged(int oldMode, int newMode) {
if (newMode == TextNote.MODE_CHECK_LIST) {
switchToListMode(mNoteEditor.getText().toString());
@@ -894,7 +925,6 @@ public class NoteEditActivity extends Activity implements OnClickListener,
mNoteEditor.setVisibility(View.VISIBLE);
}
}
-<<<<<<<< HEAD:src/main/java/net/micode/notes/ui/NoteEditActivity.java
/**
* @method getWorkingText
* @description 获取正在编辑的文本内容
@@ -902,8 +932,6 @@ public class NoteEditActivity extends Activity implements OnClickListener,
* @author: YangYizhe
* @return 是否存在已打钩的选项
*/
-========
->>>>>>>> b654a61 (code):src/Notes/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java
private boolean getWorkingText() {
boolean hasChecked = false;//初始化check标记
if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) {
@@ -943,11 +971,6 @@ public class NoteEditActivity extends Activity implements OnClickListener,
* 保存便签,退出时候会自动调本函数
* @date: 12/21/2023 8:14 AM
* @author: YangYizhe
-<<<<<<<< HEAD:src/main/java/net/micode/notes/ui/NoteEditActivity.java
-========
- * @param
- * @return
->>>>>>>> b654a61 (code):src/Notes/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java
*/
private boolean saveNote() {
getWorkingText();
@@ -972,11 +995,6 @@ public class NoteEditActivity extends Activity implements OnClickListener,
* send to home功能,发到桌面上
* @date: 12/21/2023 8:15 AM
* @author: YangYizhe
-<<<<<<<< HEAD:src/main/java/net/micode/notes/ui/NoteEditActivity.java
-========
- * @param
- * @return
->>>>>>>> b654a61 (code):src/Notes/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java
*/
private void sendToDesktop() {
/**
@@ -1012,7 +1030,6 @@ public class NoteEditActivity extends Activity implements OnClickListener,
showToast(R.string.error_note_empty_for_send_to_desktop);
}
}
-<<<<<<<< HEAD:src/main/java/net/micode/notes/ui/NoteEditActivity.java
/**
* @method makeShortcutIconTitle
* @description 生成快捷方式图标标题
@@ -1021,8 +1038,6 @@ public class NoteEditActivity extends Activity implements OnClickListener,
* @param content 内容
* @return 生成的快捷方式图标标题
*/
-========
->>>>>>>> b654a61 (code):src/Notes/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java
private String makeShortcutIconTitle(String content) {
content = content.replace(TAG_CHECKED, "");
content = content.replace(TAG_UNCHECKED, "");
diff --git a/src/main/java/net/micode/notes/ui/NoteEditText.java b/src/main/java/net/micode/notes/ui/NoteEditText.java
index ec2eda6..d29d3d2 100644
--- a/src/main/java/net/micode/notes/ui/NoteEditText.java
+++ b/src/main/java/net/micode/notes/ui/NoteEditText.java
@@ -46,28 +46,12 @@ import java.util.Map;
* @Version: 1.0
*/
public class NoteEditText extends EditText {
-<<<<<<<< HEAD:src/main/java/net/micode/notes/ui/NoteEditText.java
private static final String TAG = "NoteEditText";
private int mIndex;
private int mSelectionStartBeforeDelete;
private static final String SCHEME_TEL = "tel:" ;
private static final String SCHEME_HTTP = "http:" ;
private static final String SCHEME_EMAIL = "mailto:" ;
-========
- //常量标识
- private static final String TAG = "NoteEditText";
- //声明整型变量,文本索引
- private int mIndex;
- //声明整型变量
- private int mSelectionStartBeforeDelete;
-
- //声明字符串常量,标志电话、网址、邮件
- private static final String SCHEME_TEL = "tel:" ;
- private static final String SCHEME_HTTP = "http:" ;
- private static final String SCHEME_EMAIL = "mailto:" ;
-
- //设置映射,将文本内容(电话、网址、邮件)做链接处理
->>>>>>>> b654a61 (code):src/Notes/app/src/main/java/net/micode/notes/ui/NoteEditText.java
private static final Map sSchemaActionResMap = new HashMap();
static {
sSchemaActionResMap.put(SCHEME_TEL, R.string.note_link_tel);
@@ -112,13 +96,9 @@ public class NoteEditText extends EditText {
mIndex = 0;
}
-<<<<<<<< HEAD:src/main/java/net/micode/notes/ui/NoteEditText.java
/**
* 设置索引号
*/
-========
- //设置索引号
->>>>>>>> b654a61 (code):src/Notes/app/src/main/java/net/micode/notes/ui/NoteEditText.java
public void setIndex(int index) {
mIndex = index;
}
@@ -144,17 +124,6 @@ public class NoteEditText extends EditText {
// TODO Auto-generated constructor stub
}
-<<<<<<<< HEAD:src/main/java/net/micode/notes/ui/NoteEditText.java
-========
- /**
- * @method onTouchEvent
- * @description 处理触摸事件,根据触摸点的位置设置光标的位置
- * @date: 12/21/2023 12:41 AM
- * @author: YangYizhe
- * @param
- * @return
- */
->>>>>>>> b654a61 (code):src/Notes/app/src/main/java/net/micode/notes/ui/NoteEditText.java
@Override
/**
* @method onTouchEvent
@@ -266,17 +235,6 @@ public class NoteEditText extends EditText {
super.onFocusChanged(focused, direction, previouslyFocusedRect);
}
-<<<<<<<< HEAD:src/main/java/net/micode/notes/ui/NoteEditText.java
-========
- /**
- * @method onCreateContextMenu
- * @description
- * @date: 12/21/2023 12:39 AM
- * @author: YangYizhe
- * @param
- * @return
- */
->>>>>>>> b654a61 (code):src/Notes/app/src/main/java/net/micode/notes/ui/NoteEditText.java
@Override
/**
* @method onCreateContextMenu
diff --git a/src/main/java/net/micode/notes/ui/NoteItemData.java b/src/main/java/net/micode/notes/ui/NoteItemData.java
index 832cbe9..ca9bcbe 100644
--- a/src/main/java/net/micode/notes/ui/NoteItemData.java
+++ b/src/main/java/net/micode/notes/ui/NoteItemData.java
@@ -34,6 +34,7 @@ import net.micode.notes.tool.DataUtils;
* @Version: 1.0
*/
public class NoteItemData {
+ // 用于定义查询操作中要返回的列
static final String [] PROJECTION = new String [] {
NoteColumns.ID,
NoteColumns.ALERTED_DATE,
diff --git a/src/main/java/net/micode/notes/ui/NotesListActivity.java b/src/main/java/net/micode/notes/ui/NotesListActivity.java
index 2b0e901..5eea908 100644
--- a/src/main/java/net/micode/notes/ui/NotesListActivity.java
+++ b/src/main/java/net/micode/notes/ui/NotesListActivity.java
@@ -85,6 +85,7 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
private static final String PREFERENCE_ADD_INTRODUCTION = "net.micode.notes.introduction";
+ /**三个状态,主页面,文件夹,通话记录文件夹*/
private enum ListEditState {
NOTE_LIST, SUB_FOLDER, CALL_RECORD_FOLDER
};
@@ -100,6 +101,8 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
private Button mAddNewNote;
private boolean mDispatch;
+ // 控制背景颜色,初始为亮
+ private int mBackgroundColor = 1;
private int mOriginY;
@@ -117,6 +120,9 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
public static final int NOTES_LISTVIEW_SCROLL_RATE = 30;
+ /** 私密模式,初始为 0 开启为 1*/
+ public static int mSecretMode = 0;
+
private NoteItemData mFocusNoteDataItem;
private static final String NORMAL_SELECTION = NoteColumns.PARENT_ID + "=?";
@@ -140,6 +146,7 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState); // 调用父类的onCreate函数
setContentView(R.layout.note_list);
+ getWindow().setBackgroundDrawableResource(R.drawable.bg_light);
initResources();
setAppInfoFromRawRes();
}
@@ -463,10 +470,12 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
* @return
*/
private void startAsyncNotesListQuery() {
- String selection = (mCurrentFolderId == Notes.ID_ROOT_FOLDER) ? ROOT_FOLDER_SELECTION : NORMAL_SELECTION;
+ String selection = (mCurrentFolderId == Notes.ID_ROOT_FOLDER) ? ROOT_FOLDER_SELECTION
+ : NORMAL_SELECTION;
mBackgroundQueryHandler.startQuery(FOLDER_NOTE_LIST_QUERY_TOKEN, null,
- Notes.CONTENT_NOTE_URI, NoteItemData.PROJECTION, selection, new String[] {String.valueOf(mCurrentFolderId)},
- NoteColumns.TYPE + " DESC," + NoteColumns.MODIFIED_DATE + " DESC");
+ Notes.CONTENT_NOTE_URI, NoteItemData.PROJECTION, selection, new String[]{
+ String.valueOf(mCurrentFolderId)
+ }, NoteColumns.TYPE + " DESC," + NoteColumns.MODIFIED_DATE + " DESC");
}
/**
* @Package: net.micode.notes.ui
@@ -530,6 +539,98 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
});
builder.show();
}
+
+ /**
+ * @method switchBackground
+ * @description 用以切换背景颜色
+ * @date: 1/3/2024 3:41 PM
+ * @author: YangYizhe
+ */
+ private void switchBackground(){
+ mBackgroundColor = (mBackgroundColor + 1) % 2;
+ View frameLayout = findViewById(R.id.frame_layout_id);
+ if (mBackgroundColor == 1){
+ frameLayout.setBackgroundResource(R.drawable.bg_light);
+ } else{
+ frameLayout.setBackgroundResource(R.drawable.bg_dark);
+ }
+
+ }
+
+ private boolean isSecretMode(){
+ if(mSecretMode == 1){
+ return true;
+ }else {
+ return false;
+ }
+ }
+
+ /**
+ * @method enterSecertMode
+ * @description 实现进入隐私模式的功能
+ * @date: 1/2/2024 8:18 PM
+ * @author: YangYizhe
+ */
+ private void enterSecretMode(){
+ AlertDialog.Builder dialog = new AlertDialog.Builder(NotesListActivity.this);
+ dialog.setTitle("重要提醒");
+ dialog.setMessage("您确认进入隐私模式吗?");
+ dialog.setCancelable(false);
+ dialog.setPositiveButton("确认", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ mSecretMode = 1;
+ startAsyncNotesListQuery();
+ Toast.makeText(NotesListActivity.this,"您已进入隐私模式",Toast.LENGTH_SHORT).show();
+ }
+ });
+ dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which){}
+ });
+ dialog.show();
+ }
+
+ /**
+ * @method quitSecretMode
+ * @description 实现退出隐私模式的功能
+ * @date: 1/2/2024 8:20 PM
+ * @author: YangYizhe
+ */
+ private void quitSecretMode(){
+ AlertDialog.Builder dialog = new AlertDialog.Builder(NotesListActivity.this);
+ dialog.setTitle("重要提醒");
+ dialog.setMessage("您确认退出隐私模式吗?");
+ dialog.setCancelable(false);
+ dialog.setPositiveButton("确认", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ mSecretMode = 0;
+ startAsyncNotesListQuery();
+ Toast.makeText(NotesListActivity.this,"您已退出隐私模式",Toast.LENGTH_SHORT).show();
+ }
+ });
+ dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which){}
+ });
+ dialog.show();
+ }
+
+ /**
+ * @method restoreDeletedNodes
+ * @description 进入回收站
+ * @date: 1/3/2024 8:11 PM
+ * @author: YangYizhe
+ */
+ private void restoreDeletedNodes(){
+ mState = ListEditState.SUB_FOLDER;
+ mCurrentFolderId = Notes.ID_TRASH_FOLER;
+ startAsyncNotesListQuery();
+ mTitleBar.setText("回收站");
+ mTitleBar.setVisibility(View.VISIBLE);
+ }
+
/**
* @method createNewNote
* @description 创建便签
@@ -544,6 +645,7 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
intent.putExtra(Notes.INTENT_EXTRA_FOLDER_ID, mCurrentFolderId);
this.startActivityForResult(intent, REQUEST_CODE_NEW_NODE);
}
+
/**
* @method batchDelete
* @description:
@@ -558,15 +660,15 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
new AsyncTask>() {
protected HashSet doInBackground(Void... unused) {
HashSet widgets = mNotesListAdapter.getSelectedWidget();
- //如果没有同步,直接删除
- if (!isSyncMode()) {
+ // 如果是回收站中的,直接删除
+ if (mCurrentFolderId == Notes.ID_TRASH_FOLER) {
if (DataUtils.batchDeleteNotes(mContentResolver, mNotesListAdapter
.getSelectedItemIds())) {
} else {
Log.e(TAG, "Delete notes error, should not happens");
}
}
- //已同步,将删除的便签移到垃圾桶
+ // 将删除的便签移到回收站
else {
if (!DataUtils.batchMoveToFolder(mContentResolver, mNotesListAdapter
.getSelectedItemIds(), Notes.ID_TRASH_FOLER)) {
@@ -891,6 +993,14 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
}
@Override
+ /**
+ * @method onPrepareOptionsMenu
+ * @description 准备菜单选项的回调方法,menu是Android自带的对象
+ * @date: 1/2/2024 7:40 PM
+ * @author: YangYizhe
+ * @param [menu] 菜单对象
+ * @return boolean 返回值指示是否处理了菜单创建事件
+ */
public boolean onPrepareOptionsMenu(Menu menu) {
menu.clear();
if (mState == ListEditState.NOTE_LIST) {
@@ -905,10 +1015,29 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
} else {
Log.e(TAG, "Wrong state:" + mState);
}
+ // 若在隐私模式之中,则不显示进入隐私模式的选项,不在隐私模式之中,则不显示退出隐私模式选项
+ if(isSecretMode()){
+ menu.findItem(R.id.menu_secret).setVisible(false);
+ } else {
+ menu.findItem(R.id.menu_quit_secret).setVisible(false);
+ }
+ if(mBackgroundColor==1) {
+ menu.findItem(R.id.menu_light_mode).setVisible(false);
+ } else {
+ menu.findItem(R.id.menu_dark_mode).setVisible(false);
+ }
return true;
}
@Override
+ /**
+ * @method onOptionsItemSelected
+ * @description 处理菜单选项的选择事件。根据被选择的菜单项不同,该方法会触发不同的操作。
+ * @date: 1/2/2024 7:41 PM
+ * @author: YangYizhe
+ * @param [item] 被选择的菜单项
+ * @return boolean 返回值指示是否处理了菜单选择事件
+ */
public boolean onOptionsItemSelected(MenuItem item) {
int itemId = item.getItemId();
if (itemId == R.id.menu_new_folder) {
@@ -931,6 +1060,16 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
createNewNote();
} else if (itemId == R.id.menu_search) {
onSearchRequested();
+ } else if (itemId == R.id.menu_secret) {
+ enterSecretMode();
+ } else if (itemId == R.id.menu_quit_secret){
+ quitSecretMode();
+ } else if(itemId == R.id.menu_light_mode) {
+ switchBackground();
+ } else if(itemId == R.id.menu_dark_mode) {
+ switchBackground();
+ } else if (itemId == R.id.menu_restore) {
+ restoreDeletedNodes();
}
return true;
}
diff --git a/src/main/java/net/micode/notes/ui/NotesListItem.java b/src/main/java/net/micode/notes/ui/NotesListItem.java
index d32a37b..5cf4b20 100644
--- a/src/main/java/net/micode/notes/ui/NotesListItem.java
+++ b/src/main/java/net/micode/notes/ui/NotesListItem.java
@@ -26,7 +26,7 @@ public class NotesListItem extends LinearLayout {
private ImageView mAlert;//闹钟图片
private TextView mTitle; //标题
private TextView mTime; //时间
- private TextView mCallName; //
+ private TextView mCallName;
private NoteItemData mItemData; //标签数据
private CheckBox mCheckBox; //打钩框
diff --git a/src/main/java/net/micode/notes/ui/SplashActivity.java b/src/main/java/net/micode/notes/ui/SplashActivity.java
new file mode 100644
index 0000000..6a93d7f
--- /dev/null
+++ b/src/main/java/net/micode/notes/ui/SplashActivity.java
@@ -0,0 +1,53 @@
+package net.micode.notes.ui;
+
+import android.annotation.SuppressLint;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AppCompatActivity;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.WindowInsets;
+
+import android.content.Intent;
+
+import net.micode.notes.databinding.ActivitySplashBinding;
+import net.micode.notes.R;
+
+/**
+ * An example full-screen activity that shows and hides the system UI (i.e.
+ * status bar and navigation/system bar) with user interaction.
+ */
+public class SplashActivity extends AppCompatActivity {
+ /**
+ * Whether or not the system UI should be auto-hidden after
+ * {@link #AUTO_HIDE_DELAY_MILLIS} milliseconds.
+ */
+ private static final boolean AUTO_HIDE = true;
+
+ /**
+ * If {@link #AUTO_HIDE} is set, the number of milliseconds to wait after
+ * user interaction before hiding the system UI.
+ */
+ private static final int AUTO_HIDE_DELAY_MILLIS = 3000;
+
+ Handler mHandler=new Handler();
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState); //加载启动界面
+ setContentView(R.layout.activity_splash); //加载启动图片
+
+ // 当计时结束时,跳转至NotesListActivity
+ mHandler.postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ Intent intent=new Intent();
+ intent.setClass(SplashActivity.this, NotesListActivity.class);
+ startActivity(intent);
+ finish(); //销毁欢迎页面
+ }
+ }, 2000); // 2 秒后跳转
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/net/micode/notes/widget/NoteWidgetProvider.java b/src/main/java/net/micode/notes/widget/NoteWidgetProvider.java
index d1eff49..d8eb50b 100644
--- a/src/main/java/net/micode/notes/widget/NoteWidgetProvider.java
+++ b/src/main/java/net/micode/notes/widget/NoteWidgetProvider.java
@@ -46,7 +46,6 @@ public abstract class NoteWidgetProvider extends AppWidgetProvider {
NoteColumns.SNIPPET
};
-
public static final int COLUMN_ID = 0;
public static final int COLUMN_BG_COLOR_ID = 1;
public static final int COLUMN_SNIPPET = 2;
diff --git a/src/main/res/drawable-hdpi/bg_dark.png b/src/main/res/drawable-hdpi/bg_dark.png
new file mode 100644
index 0000000..7566164
Binary files /dev/null and b/src/main/res/drawable-hdpi/bg_dark.png differ
diff --git a/src/main/res/drawable-hdpi/bg_light.png b/src/main/res/drawable-hdpi/bg_light.png
new file mode 100644
index 0000000..e34a867
Binary files /dev/null and b/src/main/res/drawable-hdpi/bg_light.png differ
diff --git a/src/main/res/drawable-hdpi/icon_app_1.png b/src/main/res/drawable-hdpi/icon_app_1.png
new file mode 100644
index 0000000..96f4a88
Binary files /dev/null and b/src/main/res/drawable-hdpi/icon_app_1.png differ
diff --git a/src/main/res/drawable-hdpi/splash.png b/src/main/res/drawable-hdpi/splash.png
new file mode 100644
index 0000000..962d168
Binary files /dev/null and b/src/main/res/drawable-hdpi/splash.png differ
diff --git a/src/main/res/layout/activity_splash.xml b/src/main/res/layout/activity_splash.xml
new file mode 100644
index 0000000..a255285
--- /dev/null
+++ b/src/main/res/layout/activity_splash.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/res/layout/note_edit.xml b/src/main/res/layout/note_edit.xml
index 10b2aa7..59415d7 100644
--- a/src/main/res/layout/note_edit.xml
+++ b/src/main/res/layout/note_edit.xml
@@ -30,6 +30,7 @@
android:id="@+id/note_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
+
+
+
+ android:textAppearance="@style/TextAppearancePrimaryItem" />
+ android:background="@drawable/bg_light">
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/res/menu/sub_folder.xml b/src/main/res/menu/sub_folder.xml
index b00de26..d81e568 100644
--- a/src/main/res/menu/sub_folder.xml
+++ b/src/main/res/menu/sub_folder.xml
@@ -21,4 +21,20 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/res/values-night/themes.xml b/src/main/res/values-night/themes.xml
new file mode 100644
index 0000000..95a787f
--- /dev/null
+++ b/src/main/res/values-night/themes.xml
@@ -0,0 +1,7 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/main/res/values-zh-rCN/strings.xml b/src/main/res/values-zh-rCN/strings.xml
index 09f75ed..dacfe89 100644
--- a/src/main/res/values-zh-rCN/strings.xml
+++ b/src/main/res/values-zh-rCN/strings.xml
@@ -119,6 +119,14 @@
便签
设置
取消
+ 亮背景
+ 暗背景
+ 私密模式
+ 退出私密模式
+ 字符数
+ 恢复
+ 欢迎页面
+ EAZZY\nNOTE
- %1$s 条符合“%2$s”的搜索结果
diff --git a/src/main/res/values-zh-rTW/strings.xml b/src/main/res/values-zh-rTW/strings.xml
index e29b79b..1bfa120 100644
--- a/src/main/res/values-zh-rTW/strings.xml
+++ b/src/main/res/values-zh-rTW/strings.xml
@@ -120,6 +120,14 @@
便籤
設置
取消
+ 亮背景
+ 暗背景
+ 私密模式
+ 退出私密模式
+ 字符数
+ 恢复
+ 欢迎页面
+ EAZZY\nNOTE
- %1$s 條符合”%2$s“的搜尋結果
diff --git a/src/main/res/values/attrs.xml b/src/main/res/values/attrs.xml
new file mode 100644
index 0000000..e52391d
--- /dev/null
+++ b/src/main/res/values/attrs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/res/values/colors.xml b/src/main/res/values/colors.xml
index 123ffbf..2496c0c 100644
--- a/src/main/res/values/colors.xml
+++ b/src/main/res/values/colors.xml
@@ -17,4 +17,9 @@
#335b5b5b
+ #FF039BE5
+ #FF01579B
+ #FF40C4FF
+ #FF00B0FF
+ #66000000
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 55df868..469b04c 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -15,8 +15,7 @@
limitations under the License.
-->
-
+
Notes
Notes 2x2
Notes 4x4
@@ -126,10 +125,24 @@
Notes
set
cancel
+
+ light mode
+ dark mode
+
+ secret mode
+ quit secret mode
+
+ length
+ restore
+
+ SplashActivity
+ EAZZY\nNOTE
+
- - %1$s result for \"%2$s\"
+ - %1$s result for \"%2$s\"
- - %1$s results for \"%2$s\"
+ - %1$s results for \"%2$s\"
+
diff --git a/src/main/res/values/styles.xml b/src/main/res/values/styles.xml
index ad0d90d..db56d26 100644
--- a/src/main/res/values/styles.xml
+++ b/src/main/res/values/styles.xml
@@ -16,18 +16,22 @@
-->
+
+
+
+
@@ -66,4 +70,13 @@
- visible
+
+
+
+
\ No newline at end of file
diff --git a/src/main/res/values/themes.xml b/src/main/res/values/themes.xml
new file mode 100644
index 0000000..a0f1516
--- /dev/null
+++ b/src/main/res/values/themes.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
\ No newline at end of file