郭维欣代码评注+泛读报告+整理master分支

lrz_branch
gwx 2 years ago
parent c15e5672dc
commit c1ffdc89b8

Binary file not shown.

File diff suppressed because it is too large Load Diff

@ -14,202 +14,273 @@
* limitations under the License. * limitations under the License.
*/ */
package net.micode.notes.ui; package net.micode.notes.ui;
import android.content.Context; import android.content.Context;
import android.graphics.Rect; import android.graphics.Rect;
import android.text.Layout; import android.text.Layout;
import android.text.Selection; import android.text.Selection;
import android.text.Spanned; import android.text.Spanned;
import android.text.TextUtils; import android.text.TextUtils;
import android.text.style.URLSpan; import android.text.style.URLSpan;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.Log; import android.util.Log;
import android.view.ContextMenu; import android.view.ContextMenu;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.MenuItem.OnMenuItemClickListener; import android.view.MenuItem.OnMenuItemClickListener;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.widget.EditText; import android.widget.EditText;
import net.micode.notes.R; import net.micode.notes.R;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
public class NoteEditText extends EditText { //继承edittext设置便签设置文本框
private static final String TAG = "NoteEditText"; public class NoteEditText extends EditText {
private int mIndex; private static final String TAG = "NoteEditText";
private int mSelectionStartBeforeDelete; 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_TEL = "tel:" ;
private static final String SCHEME_EMAIL = "mailto:" ; private static final String SCHEME_HTTP = "http:" ;
private static final String SCHEME_EMAIL = "mailto:" ;
private static final Map<String, Integer> sSchemaActionResMap = new HashMap<String, Integer>();
static { ///建立一个字符和整数的hash表用于链接电话网站还有邮箱
sSchemaActionResMap.put(SCHEME_TEL, R.string.note_link_tel); private static final Map<String, Integer> sSchemaActionResMap = new HashMap<String, Integer>();
sSchemaActionResMap.put(SCHEME_HTTP, R.string.note_link_web); static {
sSchemaActionResMap.put(SCHEME_EMAIL, R.string.note_link_email); sSchemaActionResMap.put(SCHEME_TEL, R.string.note_link_tel);
} sSchemaActionResMap.put(SCHEME_HTTP, R.string.note_link_web);
sSchemaActionResMap.put(SCHEME_EMAIL, R.string.note_link_email);
public interface OnTextViewChangeListener { }
/**
* Delete current edit text when {@link KeyEvent#KEYCODE_DEL} happens /**
* and the text is null * Call by the {@link NoteEditActivity} to delete or add edit text
*/ */
void onEditTextDelete(int index, String text); //在NoteEditActivity中删除或添加文本的操作可以看做是一个文本是否被变的标记英文注释已说明的很清楚
public interface OnTextViewChangeListener {
/** /**
* Add edit text after current edit text when {@link KeyEvent#KEYCODE_ENTER} * Delete current edit text when {@link KeyEvent#KEYCODE_DEL} happens
* happen * and the text is null
*/ */
void onEditTextEnter(int index, String text); //处理删除按键时的操作
void onEditTextDelete(int index, String text);
/**
* Hide or show item option when text change /**
*/ * Add edit text after current edit text when {@link KeyEvent#KEYCODE_ENTER}
void onTextChange(int index, boolean hasText); * happen
} */
//处理进入按键时的操作
private OnTextViewChangeListener mOnTextViewChangeListener; void onEditTextEnter(int index, String text);
public NoteEditText(Context context) { /**
super(context, null); * Hide or show item option when text change
mIndex = 0; */
} void onTextChange(int index, boolean hasText);
}
public void setIndex(int index) {
mIndex = index; private OnTextViewChangeListener mOnTextViewChangeListener;
}
//根据context设置文本
public NoteEditText(Context context) {
public void setOnTextViewChangeListener(OnTextViewChangeListener listener) { super(context, null);//用super引用父类变量
mOnTextViewChangeListener = listener; mIndex = 0;
} }
public NoteEditText(Context context, AttributeSet attrs) { //设置当前光标
super(context, attrs, android.R.attr.editTextStyle); public void setIndex(int index) {
} mIndex = index;
}
public NoteEditText(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle); //初始化文本修改标记
// TODO Auto-generated construct or stub public void setOnTextViewChangeListener(OnTextViewChangeListener listener) {
} mOnTextViewChangeListener = listener;
}
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) { //AttributeSet 百度了一下是自定义空控件属性,用于维护便签动态变化的属性
case MotionEvent.ACTION_DOWN: //初始化便签
int x = (int) event.getX(); public NoteEditText(Context context, AttributeSet attrs) {
int y = (int) event.getY(); super(context, attrs, android.R.attr.editTextStyle);
x -= getTotalPaddingLeft(); }
y -= getTotalPaddingTop();
x += getScrollX(); // 根据defstyle自动初始化
y += getScrollY(); public NoteEditText(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
Layout layout = getLayout(); // TODO Auto-generated construct or stub
int line = layout.getLineForVertical(y); }
int off = layout.getOffsetForHorizontal(line, x);
@Override
Selection.setSelection(getText(), off); //view里的函数处理手机屏幕的所有事件
break; /*event
} */
public boolean onTouchEvent(MotionEvent event) {
return super.onTouchEvent(event); switch (event.getAction()) {
} //重写了需要处理屏幕被按下的事件
case MotionEvent.ACTION_DOWN:
@Override //跟新当前坐标值
int x = (int) event.getX();
public boolean onKeyDown(int keyCode, KeyEvent event) { int y = (int) event.getY();
switch (keyCode) { x -= getTotalPaddingLeft();
case KeyEvent.KEYCODE_ENTER: y -= getTotalPaddingTop();
if (mOnTextViewChangeListener != null) { x += getScrollX();
return false; y += getScrollY();
}
break; //用布局控件layout根据x,y的新值设置新的位置
case KeyEvent.KEYCODE_DEL: Layout layout = getLayout();
mSelectionStartBeforeDelete = getSelectionStart(); int line = layout.getLineForVertical(y);
break; int off = layout.getOffsetForHorizontal(line, x);
default:
break; //更新光标新的位置
} Selection.setSelection(getText(), off);
return super.onKeyDown(keyCode, event); break;
} }
@Override return super.onTouchEvent(event);
public boolean onKeyUp(int keyCode, KeyEvent event) { }
switch(keyCode) {
case KeyEvent.KEYCODE_DEL: @Override
if (mOnTextViewChangeListener != null) { /*
if (0 == mSelectionStartBeforeDelete && mIndex != 0) { *
mOnTextViewChangeListener.onEditTextDelete(mIndex, getText().toString()); *
return true; */
} public boolean onKeyDown(int keyCode, KeyEvent event) {
} else { switch (keyCode) {
Log.d(TAG, "OnTextViewChangeListener was not seted"); //根据按键的 Unicode 编码值来处理
} case KeyEvent.KEYCODE_ENTER:
break; //“进入”按键
case KeyEvent.KEYCODE_ENTER: if (mOnTextViewChangeListener != null) {
if (mOnTextViewChangeListener != null) { return false;
int selectionStart = getSelectionStart(); }
String text = getText().subSequence(selectionStart, length()).toString(); break;
setText(getText().subSequence(0, selectionStart)); case KeyEvent.KEYCODE_DEL:
mOnTextViewChangeListener.onEditTextEnter(mIndex + 1, text); //“删除”按键
} else { mSelectionStartBeforeDelete = getSelectionStart();
Log.d(TAG, "OnTextViewChangeListener was not seted"); break;
} default:
break; break;
default: }
break; //继续执行父类的其他点击事件
} return super.onKeyDown(keyCode, event);
return super.onKeyUp(keyCode, event); }
}
@Override
@Override /*
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { *
if (mOnTextViewChangeListener != null) { *
if (!focused && TextUtils.isEmpty(getText())) { */
mOnTextViewChangeListener.onTextChange(mIndex, false); public boolean onKeyUp(int keyCode, KeyEvent event) {
} else { switch(keyCode) {
mOnTextViewChangeListener.onTextChange(mIndex, true); //根据按键的 Unicode 编码值来处理有删除和进入2种操作
} case KeyEvent.KEYCODE_DEL:
} if (mOnTextViewChangeListener != null) {
super.onFocusChanged(focused, direction, previouslyFocusedRect); //若是被修改过
} if (0 == mSelectionStartBeforeDelete && mIndex != 0) {
//若之前有被修改并且文档不为空
@Override mOnTextViewChangeListener.onEditTextDelete(mIndex, getText().toString());
protected void onCreateContextMenu(ContextMenu menu) { //利用上文OnTextViewChangeListener对KEYCODE_DEL按键情况的删除函数进行删除
if (getText() instanceof Spanned) { return true;
int selStart = getSelectionStart(); }
int selEnd = getSelectionEnd(); } else {
Log.d(TAG, "OnTextViewChangeListener was not seted");
int min = Math.min(selStart, selEnd); //其他情况报错,文档的改动监听器并没有建立
int max = Math.max(selStart, selEnd); }
break;
final URLSpan[] urls = ((Spanned) getText()).getSpans(min, max, URLSpan.class); case KeyEvent.KEYCODE_ENTER:
if (urls.length == 1) { //同上也是分为监听器是否建立2种情况
int defaultResId = 0; if (mOnTextViewChangeListener != null) {
for(String schema: sSchemaActionResMap.keySet()) { int selectionStart = getSelectionStart();
if(urls[0].getURL().indexOf(schema) >= 0) { //获取当前位置
defaultResId = sSchemaActionResMap.get(schema); String text = getText().subSequence(selectionStart, length()).toString();
break; //获取当前文本
} setText(getText().subSequence(0, selectionStart));
} //根据获取的文本设置当前文本
mOnTextViewChangeListener.onEditTextEnter(mIndex + 1, text);
if (defaultResId == 0) { //当{@link KeyEvent#KEYCODE_ENTER}添加新文本
defaultResId = R.string.note_link_other; } else {
} Log.d(TAG, "OnTextViewChangeListener was not seted");
//其他情况报错,文档的改动监听器并没有建立
menu.add(0, 0, 0, defaultResId).setOnMenuItemClickListener( }
new OnMenuItemClickListener() { break;
public boolean onMenuItemClick(MenuItem item) { default:
// goto a new intent break;
urls[0].onClick(NoteEditText.this); }
return true; //继续执行父类的其他按键弹起的事件
} return super.onKeyUp(keyCode, event);
}); }
}
} @Override
super.onCreateContextMenu(menu); /*
} *
} *
* focusedViewFocusedtruefalse
direction
RectViewnull
*/
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
if (mOnTextViewChangeListener != null) {
//若监听器已经建立
if (!focused && TextUtils.isEmpty(getText())) {
//获取到焦点并且文本不为空
mOnTextViewChangeListener.onTextChange(mIndex, false);
//mOnTextViewChangeListener子函数置false隐藏事件选项
} else {
mOnTextViewChangeListener.onTextChange(mIndex, true);
//mOnTextViewChangeListener子函数置true显示事件选项
}
}
//继续执行父类的其他焦点变化的事件
super.onFocusChanged(focused, direction, previouslyFocusedRect);
}
@Override
/*
*
*
*/
protected void onCreateContextMenu(ContextMenu menu) {
if (getText() instanceof Spanned) {
//有文本存在
int selStart = getSelectionStart();
int selEnd = getSelectionEnd();
//获取文本开始和结尾位置
int min = Math.min(selStart, selEnd);
int max = Math.max(selStart, selEnd);
//获取开始到结尾的最大值和最小值
final URLSpan[] urls = ((Spanned) getText()).getSpans(min, max, URLSpan.class);
//设置url的信息的范围值
if (urls.length == 1) {
int defaultResId = 0;
for(String schema: sSchemaActionResMap.keySet()) {
//获取计划表中所有的key值
if(urls[0].getURL().indexOf(schema) >= 0) {
//若url可以添加则在添加后将defaultResId置为key所映射的值
defaultResId = sSchemaActionResMap.get(schema);
break;
}
}
if (defaultResId == 0) {
//defaultResId == 0则说明url并没有添加任何东西所以置为连接其他SchemaActionResMap的值
defaultResId = R.string.note_link_other;
}
//建立菜单
menu.add(0, 0, 0, defaultResId).setOnMenuItemClickListener(
new OnMenuItemClickListener() {
//新建按键监听器
public boolean onMenuItemClick(MenuItem item) {
// goto a new intent
urls[0].onClick(NoteEditText.this);
//根据相应的文本设置菜单的按键
return true;
}
});
}
}
//继续执行父类的其他菜单创建的事件
super.onCreateContextMenu(menu);
}
}

@ -14,214 +14,217 @@
* limitations under the License. * limitations under the License.
*/ */
package net.micode.notes.ui; package net.micode.notes.ui;
import android.content.Context; import android.content.Context;
import android.database.Cursor; import android.database.Cursor;
import android.text.TextUtils; import android.text.TextUtils;
import net.micode.notes.data.Contact; import net.micode.notes.data.Contact;
import net.micode.notes.data.Notes; import net.micode.notes.data.Notes;
import net.micode.notes.data.Notes.NoteColumns; import net.micode.notes.data.Notes.NoteColumns;
import net.micode.notes.tool.DataUtils; import net.micode.notes.tool.DataUtils;
public class NoteItemData { public class NoteItemData {
static final String [] PROJECTION = new String [] { static final String [] PROJECTION = new String [] {
NoteColumns.ID, NoteColumns.ID,
NoteColumns.ALERTED_DATE, NoteColumns.ALERTED_DATE,
NoteColumns.BG_COLOR_ID, NoteColumns.BG_COLOR_ID,
NoteColumns.CREATED_DATE, NoteColumns.CREATED_DATE,
NoteColumns.HAS_ATTACHMENT, NoteColumns.HAS_ATTACHMENT,
NoteColumns.MODIFIED_DATE, NoteColumns.MODIFIED_DATE,
NoteColumns.NOTES_COUNT, NoteColumns.NOTES_COUNT,
NoteColumns.PARENT_ID, NoteColumns.PARENT_ID,
NoteColumns.SNIPPET, NoteColumns.SNIPPET,
NoteColumns.TYPE, NoteColumns.TYPE,
NoteColumns.WIDGET_ID, NoteColumns.WIDGET_ID,
NoteColumns.WIDGET_TYPE, NoteColumns.WIDGET_TYPE,
}; };
//常量标记和数据就不一一标记了,意义翻译基本就知道
private static final int ID_COLUMN = 0; private static final int ID_COLUMN = 0;
private static final int ALERTED_DATE_COLUMN = 1; private static final int ALERTED_DATE_COLUMN = 1;
private static final int BG_COLOR_ID_COLUMN = 2; private static final int BG_COLOR_ID_COLUMN = 2;
private static final int CREATED_DATE_COLUMN = 3; private static final int CREATED_DATE_COLUMN = 3;
private static final int HAS_ATTACHMENT_COLUMN = 4; private static final int HAS_ATTACHMENT_COLUMN = 4;
private static final int MODIFIED_DATE_COLUMN = 5; private static final int MODIFIED_DATE_COLUMN = 5;
private static final int NOTES_COUNT_COLUMN = 6; private static final int NOTES_COUNT_COLUMN = 6;
private static final int PARENT_ID_COLUMN = 7; private static final int PARENT_ID_COLUMN = 7;
private static final int SNIPPET_COLUMN = 8; private static final int SNIPPET_COLUMN = 8;
private static final int TYPE_COLUMN = 9; private static final int TYPE_COLUMN = 9;
private static final int WIDGET_ID_COLUMN = 10; private static final int WIDGET_ID_COLUMN = 10;
private static final int WIDGET_TYPE_COLUMN = 11; private static final int WIDGET_TYPE_COLUMN = 11;
private long mId; private long mId;
private long mAlertDate; private long mAlertDate;
private int mBgColorId; private int mBgColorId;
private long mCreatedDate; private long mCreatedDate;
private boolean mHasAttachment; private boolean mHasAttachment;
private long mModifiedDate; private long mModifiedDate;
private int mNotesCount; private int mNotesCount;
private long mParentId; private long mParentId;
private String mSnippet; private String mSnippet;
private int mType; private int mType;
private int mWidgetId; private int mWidgetId;
private int mWidgetType; private int mWidgetType;
private String mName; private String mName;
private String mPhoneNumber; private String mPhoneNumber;
private boolean mIsLastItem; private boolean mIsLastItem;
private boolean mIsFirstItem; private boolean mIsFirstItem;
private boolean mIsOnlyOneItem; private boolean mIsOnlyOneItem;
private boolean mIsOneNoteFollowingFolder; private boolean mIsOneNoteFollowingFolder;
private boolean mIsMultiNotesFollowingFolder; private boolean mIsMultiNotesFollowingFolder;
public NoteItemData(Context context, Cursor cursor) { //初始化NoteItemData主要利用光标cursor获取的东西
public NoteItemData(Context context, Cursor cursor) {
mId = cursor.getLong(ID_COLUMN); //getxxx为转换格式
mAlertDate = cursor.getLong(ALERTED_DATE_COLUMN); mId = cursor.getLong(ID_COLUMN);
mBgColorId = cursor.getInt(BG_COLOR_ID_COLUMN); mAlertDate = cursor.getLong(ALERTED_DATE_COLUMN);
mCreatedDate = cursor.getLong(CREATED_DATE_COLUMN); mBgColorId = cursor.getInt(BG_COLOR_ID_COLUMN);
mHasAttachment = (cursor.getInt(HAS_ATTACHMENT_COLUMN) > 0) ? true : false; mCreatedDate = cursor.getLong(CREATED_DATE_COLUMN);
mModifiedDate = cursor.getLong(MODIFIED_DATE_COLUMN); mHasAttachment = (cursor.getInt(HAS_ATTACHMENT_COLUMN) > 0) ? true : false;
mNotesCount = cursor.getInt(NOTES_COUNT_COLUMN); mModifiedDate = cursor.getLong(MODIFIED_DATE_COLUMN);
mParentId = cursor.getLong(PARENT_ID_COLUMN); mNotesCount = cursor.getInt(NOTES_COUNT_COLUMN);
mSnippet = cursor.getString(SNIPPET_COLUMN); mParentId = cursor.getLong(PARENT_ID_COLUMN);
mSnippet = mSnippet.replace(NoteEditActivity.TAG_CHECKED, "").replace( mSnippet = cursor.getString(SNIPPET_COLUMN);
NoteEditActivity.TAG_UNCHECKED, ""); mSnippet = mSnippet.replace(NoteEditActivity.TAG_CHECKED, "").replace(
mType = cursor.getInt(TYPE_COLUMN); NoteEditActivity.TAG_UNCHECKED, "");
mWidgetId = cursor.getInt(WIDGET_ID_COLUMN); mType = cursor.getInt(TYPE_COLUMN);
mWidgetType = cursor.getInt(WIDGET_TYPE_COLUMN); mWidgetId = cursor.getInt(WIDGET_ID_COLUMN);
mWidgetType = cursor.getInt(WIDGET_TYPE_COLUMN);
mPhoneNumber = ""; //初始化电话号码的信息
if (mParentId == Notes.ID_CALL_RECORD_FOLDER) { mPhoneNumber = "";
mPhoneNumber = DataUtils.getCallNumberByNoteId(context.getContentResolver(), mId); if (mParentId == Notes.ID_CALL_RECORD_FOLDER) {
if (!TextUtils.isEmpty(mPhoneNumber)) { mPhoneNumber = DataUtils.getCallNumberByNoteId(context.getContentResolver(), mId);
mName = Contact.getContact(context, mPhoneNumber); if (!TextUtils.isEmpty(mPhoneNumber)) {//mphonenumber里有符合字符串则用contart功能连接
if (mName == null) { mName = Contact.getContact(context, mPhoneNumber);
mName = mPhoneNumber; if (mName == null) {
} mName = mPhoneNumber;
} }
} }
}
if (mName == null) {
mName = ""; if (mName == null) {
} mName = "";
checkPostion(cursor); }
} checkPostion(cursor);
}
private void checkPostion(Cursor cursor) { ///根据鼠标的位置设置标记,和位置
private void checkPostion(Cursor cursor) {
mIsLastItem = cursor.isLast() ? true : false; //初始化几个标记cursor具体功能笔记中已提到不一一叙述
mIsFirstItem = cursor.isFirst() ? true : false; mIsLastItem = cursor.isLast() ? true : false;
mIsOnlyOneItem = (cursor.getCount() == 1); mIsFirstItem = cursor.isFirst() ? true : false;
mIsOnlyOneItem = (cursor.getCount() == 1);
mIsMultiNotesFollowingFolder = false; //初始化“多重子文件”“单一子文件”2个标记
mIsOneNoteFollowingFolder = false; mIsMultiNotesFollowingFolder = false;
mIsOneNoteFollowingFolder = false;
if (mType == Notes.TYPE_NOTE && !mIsFirstItem) { //主要是设置上诉2标记
int position = cursor.getPosition(); if (mType == Notes.TYPE_NOTE && !mIsFirstItem) {//若是note格式并且不是第一个元素
if (cursor.moveToPrevious()) { int position = cursor.getPosition();
if (cursor.getInt(TYPE_COLUMN) == Notes.TYPE_FOLDER if (cursor.moveToPrevious()) {//获取光标位置后看上一行
|| cursor.getInt(TYPE_COLUMN) == Notes.TYPE_SYSTEM) { if (cursor.getInt(TYPE_COLUMN) == Notes.TYPE_FOLDER
if (cursor.getCount() > (position + 1)) { || cursor.getInt(TYPE_COLUMN) == Notes.TYPE_SYSTEM) {//若光标满足系统或note格式
mIsMultiNotesFollowingFolder = true; if (cursor.getCount() > (position + 1)) {
} else { mIsMultiNotesFollowingFolder = true;//若是数据行数大于但前位置+1则设置成正确
mIsOneNoteFollowingFolder = true; } else {
} mIsOneNoteFollowingFolder = true;//否则单一文件夹标记为true
} }
if (!cursor.moveToNext()) { }
throw new IllegalStateException("cursor move to previous but can't move back"); if (!cursor.moveToNext()) {//若不能再往下走则报错
} throw new IllegalStateException("cursor move to previous but can't move back");
} }
} }
} }
public boolean isOneFollowingFolder() { }
return mIsOneNoteFollowingFolder; ///以下都是获取标记没什么好说的,不过倒数第二个需要说明下,很具体看下面
} public boolean isOneFollowingFolder() {
return mIsOneNoteFollowingFolder;
public boolean isMultiFollowingFolder() { }
return mIsMultiNotesFollowingFolder;
} public boolean isMultiFollowingFolder() {
return mIsMultiNotesFollowingFolder;
public boolean isLast() { }
return mIsLastItem;
} public boolean isLast() {
return mIsLastItem;
public String getCallName() { }
return mName;
} public String getCallName() {
return mName;
public boolean isFirst() { }
return mIsFirstItem;
} public boolean isFirst() {
return mIsFirstItem;
public boolean isSingle() { }
return mIsOnlyOneItem;
} public boolean isSingle() {
return mIsOnlyOneItem;
public long getId() { }
return mId;
} public long getId() {
return mId;
public long getAlertDate() { }
return mAlertDate;
} public long getAlertDate() {
return mAlertDate;
public long getCreatedDate() { }
return mCreatedDate;
} public long getCreatedDate() {
return mCreatedDate;
public boolean hasAttachment() { }
return mHasAttachment;
} public boolean hasAttachment() {
return mHasAttachment;
public long getModifiedDate() { }
return mModifiedDate;
} public long getModifiedDate() {
return mModifiedDate;
public int getBgColorId() { }
return mBgColorId;
} public int getBgColorId() {
return mBgColorId;
public long getParentId() { }
return mParentId;
} public long getParentId() {
return mParentId;
public int getNotesCount() { }
return mNotesCount;
} public int getNotesCount() {
return mNotesCount;
public long getFolderId () { }
return mParentId;
} public long getFolderId () {
return mParentId;
public int getType() { }
return mType;
} public int getType() {
return mType;
public int getWidgetType() { }
return mWidgetType;
} public int getWidgetType() {
return mWidgetType;
public int getWidgetId() { }
return mWidgetId;
} public int getWidgetId() {
return mWidgetId;
public String getSnippet() { }
return mSnippet;
} public String getSnippet() {
return mSnippet;
public boolean hasAlert() { }
return (mAlertDate > 0);
} public boolean hasAlert() {
return (mAlertDate > 0);
public boolean isCallRecord() { }
return (mParentId == Notes.ID_CALL_RECORD_FOLDER && !TextUtils.isEmpty(mPhoneNumber));
} //若数据父id为保存至文件夹模式的id且满足电话号码单元不为空则isCallRecord为true
public boolean isCallRecord() {
public static int getNoteType(Cursor cursor) { return (mParentId == Notes.ID_CALL_RECORD_FOLDER && !TextUtils.isEmpty(mPhoneNumber));
return cursor.getInt(TYPE_COLUMN); }
}
} public static int getNoteType(Cursor cursor) {
return cursor.getInt(TYPE_COLUMN);
}
}

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save