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

2 months ago
/**
* MiCodeApache 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) {
}
}