You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
note/NotesListActivity.java

230 lines
7.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/**
* 版权声明说明该代码是MiCode开源社区的版权所有并在Apache License 2.0下授权。
*/
package net.micode.notes.ui;
// 导入所需的Android库和自定义包
public class NotesListActivity extends Activity implements OnClickListener, OnItemLongClickListener {
// 定义了一些查询操作的token用于识别不同的后台查询操作
private static final int FOLDER_NOTE_LIST_QUERY_TOKEN = 0;
private static final int FOLDER_LIST_QUERY_TOKEN = 1;
// 定义了菜单项的ID
private static final int MENU_FOLDER_DELETE = 0;
private static final int MENU_FOLDER_VIEW = 1;
private static final int MENU_FOLDER_CHANGE_NAME = 2;
// 定义了用户首次使用应用时显示的介绍信息的SharedPreferences键
private static final String PREFERENCE_ADD_INTRODUCTION = "net.micode.notes.introduction";
// 枚举,定义了不同的列表编辑状态
private enum ListEditState {
NOTE_LIST, SUB_FOLDER, CALL_RECORD_FOLDER
};
// 类变量定义
private ListEditState mState;
private BackgroundQueryHandler mBackgroundQueryHandler;
private NotesListAdapter mNotesListAdapter;
private ListView mNotesListView;
private Button mAddNewNote;
private boolean mDispatch;
private int mOriginY;
private int mDispatchY;
private TextView mTitleBar;
private long mCurrentFolderId;
private ContentResolver mContentResolver;
private ModeCallback mModeCallBack;
private static final String TAG = "NotesListActivity";
private static final int NOTES_LISTVIEW_SCROLL_RATE = 30;
private NoteItemData mFocusNoteDataItem;
private static final String NORMAL_SELECTION = NoteColumns.PARENT_ID + "=?";
private static final String ROOT_FOLDER_SELECTION = "(" + NoteColumns.TYPE + "<>?"
+ Notes.TYPE_SYSTEM + " AND " + NoteColumns.PARENT_ID + "=?)" + " OR ("
+ NoteColumns.ID + "=" + Notes.ID_CALL_RECORD_FOLDER + " AND "
+ NoteColumns.NOTES_COUNT + ">0)";
private final static int REQUEST_CODE_OPEN_NODE = 102;
private final static int REQUEST_CODE_NEW_NODE = 103;
// onCreate方法初始化Activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.note_list);
initResources();
// 用户首次使用应用时,插入介绍信息
setAppInfoFromRawRes();
}
// onActivityResult方法处理其他Activity返回的结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// 省略了部分代码...
}
// setAppInfoFromRawRes方法从raw资源中读取介绍信息并显示
private void setAppInfoFromRawRes() {
// 省略了部分代码...
}
// onStart方法Activity启动时开始异步查询笔记列表
@Override
protected void onStart() {
super.onStart();
startAsyncNotesListQuery();
}
// initResources方法初始化资源
private void initResources() {
// 省略了部分代码...
}
// ModeCallback内部类实现了ListView的MultiChoiceModeListener和OnMenuItemClickListener接口
private class ModeCallback implements ListView.MultiChoiceModeListener, OnMenuItemClickListener {
// 省略了部分代码...
}
// NewNoteOnTouchListener内部类处理“新建笔记”按钮的触摸事件
private class NewNoteOnTouchListener implements OnTouchListener {
// 省略了部分代码...
};
// startAsyncNotesListQuery方法开始异步查询笔记列表
private void startAsyncNotesListQuery() {
// 省略了部分代码...
}
// BackgroundQueryHandler内部类继承自AsyncQueryHandler处理异步查询完成的回调
private final class BackgroundQueryHandler extends AsyncQueryHandler {
// 省略了部分代码...
}
// showFolderListMenu方法显示文件夹列表菜单
private void showFolderListMenu(Cursor cursor) {
// 省略了部分代码...
}
// createNewNote方法创建新笔记
private void createNewNote() {
// 省略了部分代码...
}
// batchDelete方法批量删除笔记
private void batchDelete() {
// 省略了部分代码...
}
// deleteFolder方法删除文件夹
private void deleteFolder(long folderId) {
// 省略了部分代码...
}
// openNode方法打开笔记
private void openNode(NoteItemData data) {
// 省略了部分代码...
}
// openFolder方法打开文件夹
private void openFolder(NoteItemData data) {
// 省略了部分代码...
}
// onClick方法处理点击事件
public void onClick(View v) {
// 省略了部分代码...
}
// showSoftInput方法显示软键盘
private void showSoftInput() {
// 省略了部分代码...
}
// hideSoftInput方法隐藏软键盘
private void hideSoftInput(View view) {
// 省略了部分代码...
}
// showCreateOrModifyFolderDialog方法显示创建或修改文件夹的对话框
private void showCreateOrModifyFolderDialog(final boolean create) {
// 省略了部分代码...
}
// onBackPressed方法处理返回键事件
@Override
public void onBackPressed() {
// 省略了部分代码...
}
// updateWidget方法更新Widget
private void updateWidget(int appWidgetId, int appWidgetType) {
// 省略了部分代码...
}
// mFolderOnCreateContextMenuListener变量用于创建文件夹的上下文菜单
private final OnCreateContextMenuListener mFolderOnCreateContextMenuListener = new OnCreateContextMenuListener() {
// 省略了部分代码...
};
// onContextMenuClosed方法上下文菜单关闭时的回调
@Override
public void onContextMenuClosed(Menu menu) {
// 省略了部分代码...
}
// onContextItemSelected方法处理上下文菜单项的选中事件
@Override
public boolean onContextItemSelected(MenuItem item) {
// 省略了部分代码...
}
// onPrepareOptionsMenu方法准备选项菜单
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// 省略了部分代码...
}
// onOptionsItemSelected方法处理选项菜单项的点击事件
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// 省略了部分代码...
}
// onSearchRequested方法处理搜索请求
@Override
public boolean onSearchRequested() {
// 省略了部分代码...
}
// exportNoteToText方法将笔记导出为文本
private void exportNoteToText() {
// 省略了部分代码...
}
// isSyncMode方法判断是否是同步模式
private boolean isSyncMode() {
// 省略了部分代码...
}
// startPreferenceActivity方法启动设置Activity
private void startPreferenceActivity() {
// 省略了部分代码...
}
// OnListItemClickListener内部类实现了ListView的ItemClickListener接口
private class OnListItemClickListener implements OnItemClickListener {
// 省略了部分代码...
}
// startQueryDestinationFolders方法开始查询目标文件夹
private void startQueryDestinationFolders() {
// 省略了部分代码...
}
// onItemLongClick方法处理长按事件
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
}
}