From 0b1eeae8f12fb86a010ff24eeef0f47f06854cbd Mon Sep 17 00:00:00 2001 From: zmj <2339349805@qq.com> Date: Sun, 29 Oct 2023 21:34:52 +0800 Subject: [PATCH 1/2] 10.29 --- ...泛读、标注和维护报告文档.docx | Bin 229580 -> 332359 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/实践模板-开源软件泛读、标注和维护报告文档.docx b/doc/实践模板-开源软件泛读、标注和维护报告文档.docx index 8085656f6a8c1a726b638c0f23806379628a273a..f25ba62ca11d30a66b8c2e5e2ea8137dc72d3dab 100644 GIT binary patch delta 119620 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%0DGpf!gbeE;|TMhkw7!$hB|F8nzAJKTy-zXWO^K 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 ZtX(9P1@vPMk*TQOGF?gL#PU(Co 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 -- 2.34.1 From 056ea75fb99248cabddaff50540581549ca79bab Mon Sep 17 00:00:00 2001 From: zmj <2339349805@qq.com> Date: Sun, 29 Oct 2023 21:36:09 +0800 Subject: [PATCH 2/2] 10.29 --- src/NotesListActivity.java | 1016 ++++++++++++++++++++++++++++++++++++ src/NotesListAdapter.java | 194 +++++++ 2 files changed, 1210 insertions(+) create mode 100644 src/NotesListActivity.java create mode 100644 src/NotesListAdapter.java diff --git a/src/NotesListActivity.java b/src/NotesListActivity.java new file mode 100644 index 0000000..2910a8e --- /dev/null +++ b/src/NotesListActivity.java @@ -0,0 +1,1016 @@ +/* + * 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. + */ + +package net.micode.notes.ui; + +import android.app.Activity; +import android.app.AlertDialog; +import android.app.Dialog; +import android.appwidget.AppWidgetManager; +import android.content.AsyncQueryHandler; +import android.content.ContentResolver; +import android.content.ContentValues; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.SharedPreferences; +import android.database.Cursor; +import android.os.AsyncTask; +import android.os.Bundle; +import android.preference.PreferenceManager; +import androidx.appcompat.app.AppCompatActivity; +import android.text.Editable; +import android.text.TextUtils; +import android.text.TextWatcher; +import android.util.Log; +import android.view.ActionMode; +import android.view.ContextMenu; +import android.view.ContextMenu.ContextMenuInfo; +import android.view.Display; +import android.view.HapticFeedbackConstants; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuItem; +import android.view.MenuItem.OnMenuItemClickListener; +import android.view.MotionEvent; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.View.OnCreateContextMenuListener; +import android.view.View.OnTouchListener; +import android.view.inputmethod.InputMethodManager; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemClickListener; +import android.widget.AdapterView.OnItemLongClickListener; +import android.widget.Button; +import android.widget.EditText; +import android.widget.LinearLayout; +import android.widget.ListView; +import android.widget.PopupMenu; +import android.widget.TextView; +import android.widget.Toast; + +import net.micode.notes.R; +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.gtask.remote.GTaskSyncService; +import net.micode.notes.model.WorkingNote; +import net.micode.notes.tool.BackupUtils; +import net.micode.notes.tool.DataUtils; +import net.micode.notes.tool.ResourceParser; +import net.micode.notes.ui.NotesListAdapter.AppWidgetAttribute; +import net.micode.notes.widget.NoteWidgetProvider_2x; +import net.micode.notes.widget.NoteWidgetProvider_4x; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.HashSet; + +//小米便签的主活动,应用启动后进入的就是这个活动 +public class NotesListActivity extends Activity implements OnClickListener, OnItemLongClickListener { + private static final int FOLDER_NOTE_LIST_QUERY_TOKEN = 0; //普通查询的标识符。 + + private static final int FOLDER_LIST_QUERY_TOKEN = 1; //只对文件夹进行查询的标识符(用于“移入”时得到文件夹列表) + + 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; //文件夹的(上下文)菜单的“修改文件夹名称”子项 + + 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"; + + public 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; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.note_list); + initResources(); + + /** + * Insert an introduction when user firstly use this application + */ + setAppInfoFromRawRes(); + } + + //从其他活动返回时(新建完便签、打开一个便签后返回等),根据返回的结果来更新界面或执行相应的操作。 + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + if (resultCode == RESULT_OK + && (requestCode == REQUEST_CODE_OPEN_NODE || requestCode == REQUEST_CODE_NEW_NODE)) { + mNotesListAdapter.changeCursor(null); + } else { + super.onActivityResult(requestCode, resultCode, data); + } + } + + //如果是第一次进入app,则将介绍文件的内容保存在工作笔记中,作为第一个便签。 + private void setAppInfoFromRawRes() { + SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); + if (!sp.getBoolean(PREFERENCE_ADD_INTRODUCTION, false)) { + StringBuilder sb = new StringBuilder(); + InputStream in = null; + try { + in = getResources().openRawResource(R.raw.introduction); + if (in != null) { + InputStreamReader isr = new InputStreamReader(in); + BufferedReader br = new BufferedReader(isr); + char [] buf = new char[1024]; + int len = 0; + while ((len = br.read(buf)) > 0) { + sb.append(buf, 0, len); + } + } else { + Log.e(TAG, "Read introduction file error"); + return; + } + } catch (IOException e) { + e.printStackTrace(); + return; + } finally { + if(in != null) { + try { + in.close(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + + WorkingNote note = WorkingNote.createEmptyNote(this, Notes.ID_ROOT_FOLDER, + AppWidgetManager.INVALID_APPWIDGET_ID, Notes.TYPE_WIDGET_INVALIDE, + ResourceParser.RED); + note.setWorkingText(sb.toString()); + if (note.saveNote()) { + sp.edit().putBoolean(PREFERENCE_ADD_INTRODUCTION, true).commit(); + } else { + Log.e(TAG, "Save introduction note error"); + return; + } + } + } + + @Override + protected void onStart() { + super.onStart(); + startAsyncNotesListQuery(); + } + + //初始化资源。获取各组件的引用,并初始化当前各状态。 + private void initResources() { + mContentResolver = this.getContentResolver(); + mBackgroundQueryHandler = new BackgroundQueryHandler(this.getContentResolver()); + mCurrentFolderId = Notes.ID_ROOT_FOLDER; + mNotesListView = (ListView) findViewById(R.id.notes_list); + mNotesListView.addFooterView(LayoutInflater.from(this).inflate(R.layout.note_list_footer, null), + null, false); + mNotesListView.setOnItemClickListener(new OnListItemClickListener()); + mNotesListView.setOnItemLongClickListener(this); + mNotesListAdapter = new NotesListAdapter(this); + mNotesListView.setAdapter(mNotesListAdapter); + mAddNewNote = (Button) findViewById(R.id.btn_new_note); + mAddNewNote.setOnClickListener(this); + mAddNewNote.setOnTouchListener(new NewNoteOnTouchListener()); + mDispatch = false; + mDispatchY = 0; + mOriginY = 0; + mTitleBar = (TextView) findViewById(R.id.tv_title_bar); + mState = ListEditState.NOTE_LIST; + mModeCallBack = new ModeCallback(); + } + + //这个类实现了ListView.MultiChoiceModeListener和OnMenuItemClickListener接口。主要用于处理便签列表的多选模式下的动作(删除便签或移入文件夹)和下拉菜单项点击事件(即全选或取消全选)。 + private class ModeCallback implements ListView.MultiChoiceModeListener, OnMenuItemClickListener { + private DropdownMenu mDropDownMenu; //下拉菜单 + private ActionMode mActionMode; //选择模式下的动作,本项目中即移入和删除 + private MenuItem mMoveMenu; //菜单项,这里特指"移入" + + //菜单(包括下拉菜单和两个动作)的初始化(ActionMode是临时占据ActionBar的菜单) + public boolean onCreateActionMode(ActionMode mode, Menu menu) { + getMenuInflater().inflate(R.menu.note_list_options, menu); + menu.findItem(R.id.delete).setOnMenuItemClickListener(this); + mMoveMenu = menu.findItem(R.id.move); + if (mFocusNoteDataItem.getParentId() == Notes.ID_CALL_RECORD_FOLDER //判断当前选中的便签是否属于电话记录文件夹或者用户文件夹数量为0,如果是则将移动选项设置为不可见,否则设置为可见并设置其点击监听器。 + || DataUtils.getUserFolderCount(mContentResolver) == 0) { + mMoveMenu.setVisible(false); + } else { + mMoveMenu.setVisible(true); + mMoveMenu.setOnMenuItemClickListener(this); + } + mActionMode = mode; + mNotesListAdapter.setChoiceMode(true); + mNotesListView.setLongClickable(false); + mAddNewNote.setVisibility(View.GONE); + + //为ActionMode添加下拉菜单 + View customView = LayoutInflater.from(NotesListActivity.this).inflate( + R.layout.note_list_dropdown_menu,null); + mode.setCustomView(customView); + mDropDownMenu = new DropdownMenu(NotesListActivity.this, + (Button) customView.findViewById(R.id.selection_menu), + R.menu.note_list_dropdown); + mDropDownMenu.setOnDropdownMenuItemClickListener(new PopupMenu.OnMenuItemClickListener(){ //处理点击下拉菜单项的事件(全选或取消全选) + public boolean onMenuItemClick(MenuItem item) { + mNotesListAdapter.selectAll(!mNotesListAdapter.isAllSelected()); + updateMenu(); + return true; + } + + }); + return true; + } + + + //更新下拉菜单的显示:选中了多少项、菜单子项的名字(功能随名字改变而改变) + private void updateMenu() { + int selectedCount = mNotesListAdapter.getSelectedCount(); + // Update dropdown menu + String format = getResources().getString(R.string.menu_select_title, selectedCount); + mDropDownMenu.setTitle(format); + MenuItem item = mDropDownMenu.findItem(R.id.action_select_all); + if (item != null) { + if (mNotesListAdapter.isAllSelected()) { //如果已全选,则将菜单项的名字改为取消全选,同时功能也随之改变;否则,不变 + item.setChecked(true); + item.setTitle(R.string.menu_deselect_all); + } else { + item.setChecked(false); + item.setTitle(R.string.menu_select_all); + } + } + } + + public boolean onPrepareActionMode(ActionMode mode, Menu menu) { + // TODO Auto-generated method stub + return false; + } + + public boolean onActionItemClicked(ActionMode mode, MenuItem item) { + // TODO Auto-generated method stub + return false; + } + + public void onDestroyActionMode(ActionMode mode) { + mNotesListAdapter.setChoiceMode(false); + mNotesListView.setLongClickable(true); + mAddNewNote.setVisibility(View.VISIBLE); + } + + public void finishActionMode() { + mActionMode.finish(); + } + + //多选模式下,每对一个便签进行选择或取消选择,则对其进行标记,并对下拉列表的显示进行刷新 + public void onItemCheckedStateChanged(ActionMode mode, int position, long id, + boolean checked) { + mNotesListAdapter.setCheckedItem(position, checked); + updateMenu(); + } + + //处理ActionMode的子项点击事件(删除和移入) + public boolean onMenuItemClick(MenuItem item) { + if (mNotesListAdapter.getSelectedCount() == 0) { //如果没有选中一项,则弹出Toast进行提示 + Toast.makeText(NotesListActivity.this, getString(R.string.menu_select_none), + Toast.LENGTH_SHORT).show(); + return true; + } + + switch (item.getItemId()) { + case R.id.delete: //点击删除事件进行的操作 + AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this); + builder.setTitle(getString(R.string.alert_title_delete)); + builder.setIcon(android.R.drawable.ic_dialog_alert); + builder.setMessage(getString(R.string.alert_message_delete_notes, + mNotesListAdapter.getSelectedCount())); + builder.setPositiveButton(android.R.string.ok, + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, + int which) { + batchDelete(); + } + }); + builder.setNegativeButton(android.R.string.cancel, null); + builder.show(); + break; + case R.id.move: //点击移入事件进行的操作 + startQueryDestinationFolders(); + break; + default: + return false; + } + return true; + } + } + + //这是一个处理触摸“新建便签”图案的事件的监听类,特别是当用户点击或移动屏幕时。 + private class NewNoteOnTouchListener implements OnTouchListener { + + public boolean onTouch(View v, MotionEvent event) { + switch (event.getAction()) { //在onTouch()方法中,首先根据触摸事件的类型进行判断。 + + // 如果是MotionEvent.ACTION_DOWN(即手指按下),则获取屏幕的高度、新笔记视图的高度以及起始位置。然后计算事件发生时的Y坐标,并根据状态调整Y坐标的值。 + // 接下来,如果触摸事件的Y坐标小于一个特定的公式计算出的值,那么将事件分发到列表视图的最后一个子视图上。 + case MotionEvent.ACTION_DOWN: { + Display display = getWindowManager().getDefaultDisplay(); + int screenHeight = display.getHeight(); + int newNoteViewHeight = mAddNewNote.getHeight(); + int start = screenHeight - newNoteViewHeight; + int eventY = start + (int) event.getY(); + /** + * Minus TitleBar's height + */ + if (mState == ListEditState.SUB_FOLDER) { + eventY -= mTitleBar.getHeight(); + start -= mTitleBar.getHeight(); + } + /** + * HACKME:When click the transparent part of "New Note" button, dispatch + * the event to the list view behind this button. The transparent part of + * "New Note" button could be expressed by formula y=-0.12x+94(Unit:pixel) + * and the line top of the button. The coordinate based on left of the "New + * Note" button. The 94 represents maximum height of the transparent part. + * Notice that, if the background of the button changes, the formula should + * also change. This is very bad, just for the UI designer's strong requirement. + */ + + //HACKME: 当点击"New Note"按钮的透明部分时,将事件分发给此按钮后面的列表视图。 + // "New Note"按钮的透明部分可以用公式y=-0.12x+94(单位:像素)和按钮的顶部线条来表示。 + // 坐标基于"New Note"按钮的左侧。94代表透明部分的最大高度。请注意,如果按钮的背景发生变化,公式也应该相应地改变。这非常糟糕,只是为了UI设计师的强烈要求。 + if (event.getY() < (event.getX() * (-0.12) + 94)) { + View view = mNotesListView.getChildAt(mNotesListView.getChildCount() - 1 + - mNotesListView.getFooterViewsCount()); + if (view != null && view.getBottom() > start + && (view.getTop() < (start + 94))) { + mOriginY = (int) event.getY(); + mDispatchY = eventY; + event.setLocation(event.getX(), mDispatchY); + mDispatch = true; + return mNotesListView.dispatchTouchEvent(event); + } + } + break; + } + + //如果触摸事件是MotionEvent.ACTION_MOVE(即手指移动),并且之前已经分发过事件,那么更新事件的Y坐标,并重新分发事件。 + case MotionEvent.ACTION_MOVE: { + if (mDispatch) { + mDispatchY += (int) event.getY() - mOriginY; + event.setLocation(event.getX(), mDispatchY); + return mNotesListView.dispatchTouchEvent(event); + } + break; + } + + //最后,如果触摸事件不是MotionEvent.ACTION_DOWN或MotionEvent.ACTION_MOVE,并且之前已经分发过事件,那么更新事件的Y坐标,并将分发标志设置为false,然后重新分发事件。 + default: { + if (mDispatch) { + event.setLocation(event.getX(), mDispatchY); + mDispatch = false; + return mNotesListView.dispatchTouchEvent(event); + } + break; + } + } + return false; + } + + } + + //启动一个异步查询来获取笔记列表 + private void startAsyncNotesListQuery() { + 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"); + } + + //这段代码主要用于处理后台查询操作,并根据查询结果执行相应的操作。 + private final class BackgroundQueryHandler extends AsyncQueryHandler { + public BackgroundQueryHandler(ContentResolver contentResolver) { + super(contentResolver); + } + + @Override + protected void onQueryComplete(int token, Object cookie, Cursor cursor) { + switch (token) { + case FOLDER_NOTE_LIST_QUERY_TOKEN: + mNotesListAdapter.changeCursor(cursor); + break; + case FOLDER_LIST_QUERY_TOKEN: + if (cursor != null && cursor.getCount() > 0) { + showFolderListMenu(cursor); + } else { + Log.e(TAG, "Query folder failed"); + } + break; + default: + return; + } + } + } + + //该方法的主要功能是显示一个包含文件夹列表的对话框,并允许用户选择一个文件夹来移动选中的笔记。 + private void showFolderListMenu(Cursor cursor) { + AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this); + builder.setTitle(R.string.menu_title_select_folder); + final FoldersListAdapter adapter = new FoldersListAdapter(this, cursor); //创建一个FoldersListAdapter对象,用于展示文件夹列表。 + builder.setAdapter(adapter, new DialogInterface.OnClickListener() { + + public void onClick(DialogInterface dialog, int which) { + DataUtils.batchMoveToFolder(mContentResolver, + mNotesListAdapter.getSelectedItemIds(), adapter.getItemId(which)); + Toast.makeText( + NotesListActivity.this, + getString(R.string.format_move_notes_to_folder, + mNotesListAdapter.getSelectedCount(), + adapter.getFolderName(NotesListActivity.this, which)), + Toast.LENGTH_SHORT).show(); + mModeCallBack.finishActionMode(); + } + }); + builder.show(); + } + + //该方法用来创建一个新便签,打开另外一个活动。 + private void createNewNote() { + Intent intent = new Intent(this, NoteEditActivity.class); + intent.setAction(Intent.ACTION_INSERT_OR_EDIT); + intent.putExtra(Notes.INTENT_EXTRA_FOLDER_ID, mCurrentFolderId); + this.startActivityForResult(intent, REQUEST_CODE_NEW_NODE); + } + + //处理在多选模式下的删除便签事件(批删除) + private void batchDelete() { + new AsyncTask>() { + protected HashSet doInBackground(Void... unused) { + HashSet 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"); + } + } else { + // in sync mode, we'll move the deleted note into the trash + // folder + if (!DataUtils.batchMoveToFolder(mContentResolver, mNotesListAdapter + .getSelectedItemIds(), Notes.ID_TRASH_FOLER)) { + Log.e(TAG, "Move notes to trash folder error, should not happens"); + } + } + return widgets; + } + + @Override + protected void onPostExecute(HashSet widgets) { + if (widgets != null) { + for (AppWidgetAttribute widget : widgets) { + if (widget.widgetId != AppWidgetManager.INVALID_APPWIDGET_ID + && widget.widgetType != Notes.TYPE_WIDGET_INVALIDE) { + updateWidget(widget.widgetId, widget.widgetType); + } + } + } + mModeCallBack.finishActionMode(); + } + }.execute(); + } + + //处理删除文件夹事件 + private void deleteFolder(long folderId) { + if (folderId == Notes.ID_ROOT_FOLDER) { + Log.e(TAG, "Wrong folder id, should not happen " + folderId); + return; + } + + HashSet ids = new HashSet(); + ids.add(folderId); + HashSet widgets = DataUtils.getFolderNoteWidget(mContentResolver, + folderId); + if (!isSyncMode()) { + // if not synced, delete folder directly + DataUtils.batchDeleteNotes(mContentResolver, ids); + } else { + // in sync mode, we'll move the deleted folder into the trash folder + DataUtils.batchMoveToFolder(mContentResolver, ids, Notes.ID_TRASH_FOLER); + } + if (widgets != null) { + for (AppWidgetAttribute widget : widgets) { + if (widget.widgetId != AppWidgetManager.INVALID_APPWIDGET_ID + && widget.widgetType != Notes.TYPE_WIDGET_INVALIDE) { + updateWidget(widget.widgetId, widget.widgetType); + } + } + } + } + + //处理打开便签事件 + private void openNode(NoteItemData data) { + Intent intent = new Intent(this, NoteEditActivity.class); + intent.setAction(Intent.ACTION_VIEW); + intent.putExtra(Intent.EXTRA_UID, data.getId()); + this.startActivityForResult(intent, REQUEST_CODE_OPEN_NODE); + } + + //处理打开文件夹事件 + private void openFolder(NoteItemData data) { + mCurrentFolderId = data.getId(); + startAsyncNotesListQuery(); + if (data.getId() == Notes.ID_CALL_RECORD_FOLDER) { + mState = ListEditState.CALL_RECORD_FOLDER; + mAddNewNote.setVisibility(View.GONE); + } else { + mState = ListEditState.SUB_FOLDER; + } + if (data.getId() == Notes.ID_CALL_RECORD_FOLDER) { + mTitleBar.setText(R.string.call_record_folder_name); + } else { + mTitleBar.setText(data.getSnippet()); + } + mTitleBar.setVisibility(View.VISIBLE); + } + + //正常点击"新建便签"图案后,新建一个便签 + public void onClick(View v) { + switch (v.getId()) { + case R.id.btn_new_note: + createNewNote(); + break; + default: + break; + } + } + + //作用是在Android应用程序中显示软键盘,当新建文件夹或更改文件夹名字时,就会弹出软键盘 + private void showSoftInput() { + InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + if (inputMethodManager != null) { + inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); + } + } + + //当取消添加文件夹或修改文件夹名称、成功添加文件夹或修改文件夹名称时,就会隐藏弹出的软键盘 + private void hideSoftInput(View view) { + InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0); + } + + //根据操作(修改文件夹名称或新建文件夹)弹出相应的对话框 + private void showCreateOrModifyFolderDialog(final boolean create) { + final AlertDialog.Builder builder = new AlertDialog.Builder(this); + View view = LayoutInflater.from(this).inflate(R.layout.dialog_edit_text, null); + final EditText etName = (EditText) view.findViewById(R.id.et_foler_name); + showSoftInput(); + + //根据操作来设置对话框的标题和编辑框的默认值 + if (!create) { + if (mFocusNoteDataItem != null) { + etName.setText(mFocusNoteDataItem.getSnippet()); + builder.setTitle(getString(R.string.menu_folder_change_name)); + } else { + Log.e(TAG, "The long click data item is null"); + return; + } + } else { + etName.setText(""); + builder.setTitle(this.getString(R.string.menu_create_folder)); + } + + builder.setPositiveButton(android.R.string.ok, null); + builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + hideSoftInput(etName); + } + }); + + final Dialog dialog = builder.setView(view).show(); + final Button positive = (Button)dialog.findViewById(android.R.id.button1); + positive.setOnClickListener(new OnClickListener() { + public void onClick(View v) { + hideSoftInput(etName); + String name = etName.getText().toString(); + + //检查该名称是否已经存在,如果存在则显示一个提示信息,并将编辑框的内容设置为选中状态。如果不存在,则根据create参数的值来决定是修改现有文件夹名称还是新建文件夹。 + if (DataUtils.checkVisibleFolderName(mContentResolver, name)) { + Toast.makeText(NotesListActivity.this, getString(R.string.folder_exist, name), + Toast.LENGTH_LONG).show(); + etName.setSelection(0, etName.length()); + return; + } + if (!create) { + if (!TextUtils.isEmpty(name)) { + ContentValues values = new ContentValues(); + values.put(NoteColumns.SNIPPET, name); + values.put(NoteColumns.TYPE, Notes.TYPE_FOLDER); + values.put(NoteColumns.LOCAL_MODIFIED, 1); + mContentResolver.update(Notes.CONTENT_NOTE_URI, values, NoteColumns.ID + + "=?", new String[] { + String.valueOf(mFocusNoteDataItem.getId()) + }); + } + } else if (!TextUtils.isEmpty(name)) { + ContentValues values = new ContentValues(); + values.put(NoteColumns.SNIPPET, name); + values.put(NoteColumns.TYPE, Notes.TYPE_FOLDER); + mContentResolver.insert(Notes.CONTENT_NOTE_URI, values); + } + dialog.dismiss(); + } + }); + + if (TextUtils.isEmpty(etName.getText())) { + positive.setEnabled(false); + } + /** + * When the name edit text is null, disable the positive button + */ + etName.addTextChangedListener(new TextWatcher() { + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + // TODO Auto-generated method stub + + } + + public void onTextChanged(CharSequence s, int start, int before, int count) { + if (TextUtils.isEmpty(etName.getText())) { //当编辑框内容为空时,正按钮被禁用;否则,正按钮被启用。 + positive.setEnabled(false); + } else { + positive.setEnabled(true); + } + } + + public void afterTextChanged(Editable s) { + // TODO Auto-generated method stub + + } + }); + } + + //不同的页面按下返回键执行不同的操作 + @Override + public void onBackPressed() { + switch (mState) { + case SUB_FOLDER: //在文件夹目录下返回,则回到根目录下,同时显示目录下的所有便签和文件夹 + mCurrentFolderId = Notes.ID_ROOT_FOLDER; + mState = ListEditState.NOTE_LIST; + startAsyncNotesListQuery(); + mTitleBar.setVisibility(View.GONE); + break; + case CALL_RECORD_FOLDER: + mCurrentFolderId = Notes.ID_ROOT_FOLDER; + mState = ListEditState.NOTE_LIST; + mAddNewNote.setVisibility(View.VISIBLE); + mTitleBar.setVisibility(View.GONE); + startAsyncNotesListQuery(); + break; + case NOTE_LIST: + super.onBackPressed(); + break; + default: + break; + } + } + + //该方法的主要目的是根据给定的appWidgetType更新相应的小部件。 + private void updateWidget(int appWidgetId, int appWidgetType) { + Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE); + if (appWidgetType == Notes.TYPE_WIDGET_2X) { + intent.setClass(this, NoteWidgetProvider_2x.class); + } else if (appWidgetType == Notes.TYPE_WIDGET_4X) { + intent.setClass(this, NoteWidgetProvider_4x.class); + } else { + Log.e(TAG, "Unspported widget type"); + return; + } + + intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] { + appWidgetId + }); + + sendBroadcast(intent); + setResult(RESULT_OK, intent); + } + + //用于在创建上下文菜单时进行监听。在本app中,当用户长按某个文件夹时,会触发这个监听器的onCreateContextMenu方法。 + private final OnCreateContextMenuListener mFolderOnCreateContextMenuListener = new OnCreateContextMenuListener() { + public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { + if (mFocusNoteDataItem != null) { + menu.setHeaderTitle(mFocusNoteDataItem.getSnippet()); + menu.add(0, MENU_FOLDER_VIEW, 0, R.string.menu_folder_view); + menu.add(0, MENU_FOLDER_DELETE, 0, R.string.menu_folder_delete); + menu.add(0, MENU_FOLDER_CHANGE_NAME, 0, R.string.menu_folder_change_name); + } + } + }; + + @Override + public void onContextMenuClosed(Menu menu) { + if (mNotesListView != null) { + mNotesListView.setOnCreateContextMenuListener(null); + } + super.onContextMenuClosed(menu); + } + + //处理文件夹的(上下文)菜单子项的点击事件 + @Override + public boolean onContextItemSelected(MenuItem item) { + if (mFocusNoteDataItem == null) { + Log.e(TAG, "The long click data item is null"); + return false; + } + switch (item.getItemId()) { + case MENU_FOLDER_VIEW: + openFolder(mFocusNoteDataItem); + break; + case MENU_FOLDER_DELETE: + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle(getString(R.string.alert_title_delete)); + builder.setIcon(android.R.drawable.ic_dialog_alert); + builder.setMessage(getString(R.string.alert_message_delete_folder)); + builder.setPositiveButton(android.R.string.ok, + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + deleteFolder(mFocusNoteDataItem.getId()); + } + }); + builder.setNegativeButton(android.R.string.cancel, null); + builder.show(); + break; + case MENU_FOLDER_CHANGE_NAME: + showCreateOrModifyFolderDialog(false); + break; + default: + break; + } + + return true; + } + + //初始化菜单,且是根据当前页面初始化对应的菜单 + @Override + public boolean onPrepareOptionsMenu(Menu menu) { + menu.clear(); + if (mState == ListEditState.NOTE_LIST) { + getMenuInflater().inflate(R.menu.note_list, menu); + // set sync or sync_cancel + menu.findItem(R.id.menu_sync).setTitle( + GTaskSyncService.isSyncing() ? R.string.menu_sync_cancel : R.string.menu_sync); + } else if (mState == ListEditState.SUB_FOLDER) { + getMenuInflater().inflate(R.menu.sub_folder, menu); + } else if (mState == ListEditState.CALL_RECORD_FOLDER) { + getMenuInflater().inflate(R.menu.call_record_folder, menu); + } else { + Log.e(TAG, "Wrong state:" + mState); + } + return true; + } + + //处理ActionBar的菜单(即右上角的菜单)子项事件。 + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.menu_new_folder: { //与“新建文件夹”匹配 + showCreateOrModifyFolderDialog(true); + break; + } + case R.id.menu_export_text: { //与“导出文本”匹配 + exportNoteToText(); + break; + } + case R.id.menu_sync: { //与“同步”匹配 + if (isSyncMode()) { + if (TextUtils.equals(item.getTitle(), getString(R.string.menu_sync))) { + GTaskSyncService.startSync(this); + } else { + GTaskSyncService.cancelSync(this); + } + } else { + startPreferenceActivity(); + } + break; + } + case R.id.menu_setting: { //与“设置”匹配 + startPreferenceActivity(); + break; + } + case R.id.menu_new_note: { //与“新建便签”匹配 + createNewNote(); + break; + } + case R.id.menu_search: //与“搜索”匹配 + onSearchRequested(); + break; + default: + break; + } + return true; + } + + //用于处理搜索请求 + @Override + public boolean onSearchRequested() { + startSearch(null, false, null /* appData */, false); + return true; + } + + //处理“导出文本”的操作,将笔记导出为文本文件 + private void exportNoteToText() { + final BackupUtils backup = BackupUtils.getInstance(NotesListActivity.this); + new AsyncTask() { + + @Override + protected Integer doInBackground(Void... unused) { + return backup.exportToText(); + } + + @Override + protected void onPostExecute(Integer result) { + if (result == BackupUtils.STATE_SD_CARD_UNMOUONTED) { //如果结果值为BackupUtils.STATE_SD_CARD_UNMOUONTED,则表示SD卡未挂载,显示一个错误对话框。 + AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this); + builder.setTitle(NotesListActivity.this + .getString(R.string.failed_sdcard_export)); + builder.setMessage(NotesListActivity.this + .getString(R.string.error_sdcard_unmounted)); + builder.setPositiveButton(android.R.string.ok, null); + builder.show(); + } else if (result == BackupUtils.STATE_SUCCESS) { //如果结果值为BackupUtils.STATE_SUCCESS,则表示导出成功,显示一个成功对话框,并告知用户导出文件的位置。 + AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this); + builder.setTitle(NotesListActivity.this + .getString(R.string.success_sdcard_export)); + builder.setMessage(NotesListActivity.this.getString( + R.string.format_exported_file_location, backup + .getExportedTextFileName(), backup.getExportedTextFileDir())); + builder.setPositiveButton(android.R.string.ok, null); + builder.show(); + } else if (result == BackupUtils.STATE_SYSTEM_ERROR) { //如果结果值为BackupUtils.STATE_SYSTEM_ERROR,则表示导出过程中发生了系统错误,同样显示一个错误对话框。 + AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this); + builder.setTitle(NotesListActivity.this + .getString(R.string.failed_sdcard_export)); + builder.setMessage(NotesListActivity.this + .getString(R.string.error_sdcard_export)); + builder.setPositiveButton(android.R.string.ok, null); + builder.show(); + } + } + + }.execute(); + } + + //检查当前应用程序是否处于同步模式。 + private boolean isSyncMode() { + return NotesPreferenceActivity.getSyncAccountName(this).trim().length() > 0; + } + + private void startPreferenceActivity() { + Activity from = getParent() != null ? getParent() : this; + Intent intent = new Intent(from, NotesPreferenceActivity.class); + from.startActivityIfNeeded(intent, -1); + } + + //该类用于处理列表项的点击事件 + private class OnListItemClickListener implements OnItemClickListener { + + public void onItemClick(AdapterView parent, View view, int position, long id) { + + //首先判断点击的视图是否为NotesListItem类型。如果是,则获取该视图对应的数据项item。 + //然后判断是否处于选择模式,进行相应处理 + //接下来,根据当前的状态(mState)进行不同的处理 + if (view instanceof NotesListItem) { + NoteItemData item = ((NotesListItem) view).getItemData(); + if (mNotesListAdapter.isInChoiceMode()) { + if (item.getType() == Notes.TYPE_NOTE) { + position = position - mNotesListView.getHeaderViewsCount(); + mModeCallBack.onItemCheckedStateChanged(null, position, id, + !mNotesListAdapter.isSelectedItem(position)); + } + return; + } + + switch (mState) { + case NOTE_LIST: + if (item.getType() == Notes.TYPE_FOLDER + || item.getType() == Notes.TYPE_SYSTEM) { + openFolder(item); + } else if (item.getType() == Notes.TYPE_NOTE) { + openNode(item); + } else { + Log.e(TAG, "Wrong note type in NOTE_LIST"); + } + break; + case SUB_FOLDER: + case CALL_RECORD_FOLDER: + if (item.getType() == Notes.TYPE_NOTE) { + openNode(item); + } else { + Log.e(TAG, "Wrong note type in SUB_FOLDER"); + } + break; + default: + break; + } + } + } + + } + + //该方法用于查询所有文件夹 + private void startQueryDestinationFolders() { + String selection = NoteColumns.TYPE + "=? AND " + NoteColumns.PARENT_ID + "<>? AND " + NoteColumns.ID + "<>?"; + selection = (mState == ListEditState.NOTE_LIST) ? selection: + "(" + selection + ") OR (" + NoteColumns.ID + "=" + Notes.ID_ROOT_FOLDER + ")"; + + mBackgroundQueryHandler.startQuery(FOLDER_LIST_QUERY_TOKEN, + null, + Notes.CONTENT_NOTE_URI, + FoldersListAdapter.PROJECTION, + selection, + new String[] { + String.valueOf(Notes.TYPE_FOLDER), + String.valueOf(Notes.ID_TRASH_FOLER), + String.valueOf(mCurrentFolderId) + }, + NoteColumns.MODIFIED_DATE + " DESC"); + } + + //该方法用于处理列表项的长按事件 + public boolean onItemLongClick(AdapterView parent, View view, int position, long id) { + if (view instanceof NotesListItem) { //首先,检查被长按的视图是否为NotesListItem类型。如果不是,方法直接返回false,表示长按事件没有被处理。 + mFocusNoteDataItem = ((NotesListItem) view).getItemData(); + + //检查mFocusNoteDataItem的类型。如果它是便签(Notes.TYPE_NOTE)并且当前不处于选择模式(!mNotesListAdapter.isInChoiceMode()),那么尝试启动选择模式)。 + // 如果操作模式成功启动,那么更新该位置的数据项的选中状态,并执行长按反馈(performHapticFeedback)。如果操作模式启动失败,那么记录一条错误日志。 + if (mFocusNoteDataItem.getType() == Notes.TYPE_NOTE && !mNotesListAdapter.isInChoiceMode()) { + if (mNotesListView.startActionMode(mModeCallBack) != null) { + mModeCallBack.onItemCheckedStateChanged(null, position, id, true); + mNotesListView.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); + } else { + Log.e(TAG, "startActionMode fails"); + } + } + //如果mFocusNoteDataItem的类型是文件夹(Notes.TYPE_FOLDER),那么设置上下文菜单监听器(setOnCreateContextMenuListener)。 + else if (mFocusNoteDataItem.getType() == Notes.TYPE_FOLDER) { + mNotesListView.setOnCreateContextMenuListener(mFolderOnCreateContextMenuListener); + } + } + return false; + } +} diff --git a/src/NotesListAdapter.java b/src/NotesListAdapter.java new file mode 100644 index 0000000..394d201 --- /dev/null +++ b/src/NotesListAdapter.java @@ -0,0 +1,194 @@ +/* + * 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. + */ + +package net.micode.notes.ui; + +import android.content.Context; +import android.database.Cursor; +import android.util.Log; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CursorAdapter; + +import net.micode.notes.data.Notes; + +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; + +//便签列表的适配器,为便签列表提供数据 +public class NotesListAdapter extends CursorAdapter { + private static final String TAG = "NotesListAdapter"; + private Context mContext; + private HashMap mSelectedIndex; + private int mNotesCount; + private boolean mChoiceMode; //选择模式的标记 + + /* + * 桌面widget的属性,包括编号和类型 + */ + public static class AppWidgetAttribute { + public int widgetId; + public int widgetType; + }; + + public NotesListAdapter(Context context) { + super(context, null); + mSelectedIndex = new HashMap(); + mContext = context; + mNotesCount = 0; + } + + //新建一个view来存储cursor所指向的数据 + @Override + public View newView(Context context, Cursor cursor, ViewGroup parent) { + return new NotesListItem(context); + } + + @Override + public void bindView(View view, Context context, Cursor cursor) { + if (view instanceof NotesListItem) { + NoteItemData itemData = new NoteItemData(context, cursor); + ((NotesListItem) view).bind(context, itemData, mChoiceMode, + isSelectedItem(cursor.getPosition())); + } + } + + public void setCheckedItem(final int position, final boolean checked) { + mSelectedIndex.put(position, checked); + notifyDataSetChanged(); + } + + //判断是否为选择模式 + public boolean isInChoiceMode() { + return mChoiceMode; + } + + //重置下标并且根据参数mode设置是否处于选择模式 + public void setChoiceMode(boolean mode) { + mSelectedIndex.clear(); + mChoiceMode = mode; + } + + //处理“全选”事件 + public void selectAll(boolean checked) { + Cursor cursor = getCursor(); + for (int i = 0; i < getCount(); i++) { + if (cursor.moveToPosition(i)) { + if (NoteItemData.getNoteType(cursor) == Notes.TYPE_NOTE) { + setCheckedItem(i, checked); + } + } + } + } + + //返回被选择的便签的id + public HashSet getSelectedItemIds() { + HashSet itemSet = new HashSet(); + for (Integer position : mSelectedIndex.keySet()) { + if (mSelectedIndex.get(position) == true) { + Long id = getItemId(position); + if (id == Notes.ID_ROOT_FOLDER) { + Log.d(TAG, "Wrong item id, should not happen"); + } else { + itemSet.add(id); + } + } + } + + return itemSet; + } + + //建立桌面Widget的选项表 + public HashSet getSelectedWidget() { + HashSet itemSet = new HashSet(); + for (Integer position : mSelectedIndex.keySet()) { + if (mSelectedIndex.get(position) == true) { + Cursor c = (Cursor) getItem(position); + if (c != null) { + AppWidgetAttribute widget = new AppWidgetAttribute(); + NoteItemData item = new NoteItemData(mContext, c); + widget.widgetId = item.getWidgetId(); + widget.widgetType = item.getWidgetType(); + itemSet.add(widget); + /** + * Don't close cursor here, only the adapter could close it + */ + } else { + Log.e(TAG, "Invalid cursor"); + return null; + } + } + } + return itemSet; + } + + public int getSelectedCount() { + Collection values = mSelectedIndex.values(); + if (null == values) { + return 0; + } + Iterator iter = values.iterator(); + int count = 0; + while (iter.hasNext()) { + if (true == iter.next()) { + count++; + } + } + return count; + } + + //判断是否全选 + public boolean isAllSelected() { + int checkedCount = getSelectedCount(); + return (checkedCount != 0 && checkedCount == mNotesCount); + } + + public boolean isSelectedItem(final int position) { + if (null == mSelectedIndex.get(position)) { + return false; + } + return mSelectedIndex.get(position); + } + + @Override + protected void onContentChanged() { + super.onContentChanged(); + calcNotesCount(); + } + + @Override + public void changeCursor(Cursor cursor) { + super.changeCursor(cursor); + calcNotesCount(); + } + + private void calcNotesCount() { + mNotesCount = 0; + for (int i = 0; i < getCount(); i++) { + Cursor c = (Cursor) getItem(i); + if (c != null) { + if (NoteItemData.getNoteType(c) == Notes.TYPE_NOTE) { + mNotesCount++; + } + } else { + Log.e(TAG, "Invalid cursor"); + return; + } + } + } +} -- 2.34.1