From d1b81592d364dabc29ccdc3140470248c54b5167 Mon Sep 17 00:00:00 2001 From: qijingxi <2904615854@qq.com> Date: Wed, 8 Jan 2025 22:43:21 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E6=B3=A8=E9=87=8A=20Signed-off-by:=20qijin?= =?UTF-8?q?gxi=20<2904615854@qq.com>?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java/net/micode/notes/data/Contact.java | 16 +-- src/java/net/micode/notes/data/Notes.java | 53 +++++++++ .../notes/data/NotesDatabaseHelper.java | 104 ++++++++++++++++++ .../net/micode/notes/data/NotesProvider.java | 75 ++++++++++++- 4 files changed, 237 insertions(+), 11 deletions(-) diff --git a/src/java/net/micode/notes/data/Contact.java b/src/java/net/micode/notes/data/Contact.java index 878fe67..92953df 100644 --- a/src/java/net/micode/notes/data/Contact.java +++ b/src/java/net/micode/notes/data/Contact.java @@ -31,8 +31,8 @@ import java.util.HashMap; * @Package: net.micode.notes.data * @ClassName: Contact * @Description: 该类实现建立联系人数据库的功能 - * @Author: 郑鲲鹏 - * @Date: 2023-12-16 17:57 + * @Author: 齐景熙 + * @Date: 2024-12-20 19:42 */ public class Contact { private static HashMap sContactCache; @@ -44,11 +44,11 @@ public class Contact { + "(SELECT raw_contact_id " + " FROM phone_lookup" + " WHERE min_match = '+')"; - /** + /** * @method getContact * @description 该方法用于识别电话号码对应的联系人 - * @date: 2023-12-16 19:24 - * @author: 郑鲲鹏 + * @date: 2024-12-20 20:02 + * @author: 齐景熙 * @return string */ public static String getContact(Context context, String phoneNumber) { @@ -57,7 +57,7 @@ public class Contact { } // 查找HashMap中是否有phoneNumber的信息 - // 2023-12-16 19:43 + // 2024-12-20 20:04 if(sContactCache.containsKey(phoneNumber)) { return sContactCache.get(phoneNumber); } @@ -66,7 +66,7 @@ public class Contact { PhoneNumberUtils.toCallerIDMinMatch(phoneNumber)); // 查找数据库中phoneNumber的信息 - // 2023-12-16 19:43 + // 2024-12-20 20:06 Cursor cursor = context.getContentResolver().query( Data.CONTENT_URI, new String [] { Phone.DISPLAY_NAME }, @@ -75,7 +75,7 @@ public class Contact { null); // 检查是否查询到联系人,找到则将相关信息加入HashMap中,未找到则处理异常 - // 2023-12-16 19:41 + // 2024-12-20 20:07 if (cursor != null && cursor.moveToFirst()) { try { String name = cursor.getString(0); diff --git a/src/java/net/micode/notes/data/Notes.java b/src/java/net/micode/notes/data/Notes.java index d40776d..b7c39dc 100644 --- a/src/java/net/micode/notes/data/Notes.java +++ b/src/java/net/micode/notes/data/Notes.java @@ -14,6 +14,18 @@ * limitations under the License. */ + +/** + * + * @ProjectName: minode + * @Package: net.micode.notes.data + * @ClassName: Notes + * @Description: 该类主要定义了与笔记相关的常量、枚举类型、接口和嵌套类,用于描述笔记的基本属性、类型、系统文件夹标识符、Intent、 + 额外数据键、小部件类型等,以及提供查询笔记和数据的 URI。它为笔记应用提供了数据结构和访问接口的基础框架,使得笔记 + 的创建、管理、查询等功能得以实现。 + * @Author: 齐景熙 + * @Date: 2024-12-21 19:42 + */ package net.micode.notes.data; import android.net.Uri; @@ -46,6 +58,13 @@ public class Notes { public static final int TYPE_WIDGET_2X = 0; public static final int TYPE_WIDGET_4X = 1; + + /** + * @method DataConstants + * @description 该嵌套类定义了笔记数据的常量,主要用于表示笔记数据的 MIME 类型。 + * @date: 2024-12-21 20:02 + * @author: 齐景熙 + */ public static class DataConstants { public static final String NOTE = TextNote.CONTENT_ITEM_TYPE; public static final String CALL_NOTE = CallNote.CONTENT_ITEM_TYPE; @@ -61,6 +80,16 @@ public class Notes { */ public static final Uri CONTENT_DATA_URI = Uri.parse("content://" + AUTHORITY + "/data"); + + /** + * @method NoteColumns + * @description 该接口定义了笔记列的名称和类型,用于描述笔记的基本属性,如 ID、父 ID、创建日期、修改日期、 + 提醒日期、摘要、小部件 ID、小部件类型、背景颜色 ID、是否有附件、笔记数量、类型、同步 ID、 + 本地修改标志、原始父 ID、GTask ID、版本号、置顶状态等。这些列名称和类型为笔记数据的存储和查 + 询提供了标准的字段定义。 + * @date: 2024-12-21 20:04 + * @author: 齐景熙 + */ public interface NoteColumns { /** * The unique ID for a row @@ -173,6 +202,15 @@ public class Notes { public static final String TOP = "top"; } + + /** + * @method DataColumns + * @description 该接口定义了数据列的名称和类型,用于描述数据的基本属性,如 ID、MIME 类型、所属笔记的 + ID、创建日期、修改日期、数据内容、通用数据列等。这些列名称和类型为数据的存储和查询提 + 供了标准的字段定义。 + * @date: 2024-12-21 20:05 + * @author: 齐景熙 + */ public interface DataColumns { /** * The unique ID for a row @@ -247,6 +285,14 @@ public class Notes { public static final String DATA5 = "data5"; } + + /** + * @method TextNote + * @description 该嵌套类实现了 DataColumns 接口,定义了文本笔记的特定属性和 MIME 类型。 + 它用于描述文本笔记的模式(如清单模式或普通模式)以及文本笔记的 MIME 类型和 URI。 + * @date: 2024-12-21 20:07 + * @author: 齐景熙 + */ public static final class TextNote implements DataColumns { /** * Mode to indicate the text in check list mode or not @@ -263,6 +309,13 @@ public class Notes { public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/text_note"); } + /** + * @method CallNote + * @description 该嵌套类实现了 DataColumns 接口,定义了通话记录笔记的特定属性和 MIME 类型。它用于描述通 + 话记录笔记的通话日期、电话号码以及通话记录笔记的 MIME 类型和 URI。 + * @date: 2024-12-21 20:10 + * @author: 齐景熙 + */ public static final class CallNote implements DataColumns { /** * Call date for this record diff --git a/src/java/net/micode/notes/data/NotesDatabaseHelper.java b/src/java/net/micode/notes/data/NotesDatabaseHelper.java index a96128b..4c52c4e 100644 --- a/src/java/net/micode/notes/data/NotesDatabaseHelper.java +++ b/src/java/net/micode/notes/data/NotesDatabaseHelper.java @@ -14,6 +14,18 @@ * limitations under the License. */ + + /** + * + * @ProjectName: minode + * @Package: net.micode.notes.data + * @ClassName: NotesDatabaseHelper + * @Description: 该类继承自 SQLiteOpenHelper,用于创建和管理笔记应用的数据库。 + 它定义了数据库的名称、版本、表名、创建表和触发器的 SQL 语句,并 + 实现了数据库的创建、升级等操作。通过该类,可以方便地进行笔记数据的存储和管理。 + * @Author: 齐景熙 + * @Date: 2024-12-21 22:10 + */ package net.micode.notes.data; import android.content.ContentValues; @@ -207,10 +219,25 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " WHERE " + NoteColumns.PARENT_ID + "=old." + NoteColumns.ID + ";" + " END"; + + /** + * @method NotesDatabaseHelper + * @description 构造函数,用于初始化 NotesDatabaseHelper 实例。调用父类的构造函数,传入上下文、 + 数据库名称、工厂和数据库版本号,完成数据库帮助者的创建。 + * @date: 2024-12-21 22:10 + * @author: 齐景熙 + */ public NotesDatabaseHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); } + /** + * @method createNoteTable + * @description 创建笔记表。执行创建笔记表的 SQL 语句,并调用 reCreateNoteTableTriggers 方法重新 + 创建笔记表的触发器,最后创建系统文件夹。 + * @date: 2024-12-21 22:13 + * @author: 齐景熙 + */ public void createNoteTable(SQLiteDatabase db) { db.execSQL(CREATE_NOTE_TABLE_SQL); reCreateNoteTableTriggers(db); @@ -218,6 +245,14 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { Log.d(TAG, "note table has been created"); } + + /** + * @method reCreateNoteTableTriggers + * @description 重新创建笔记表的触发器。先删除已存在的触发器,然后依次创建增加文件夹笔记数量、减少文件 + 夹笔记数量、删除笔记数据、移动笔记到回收站等触发器。 + * @date: 2024-12-21 22:15 + * @author: 齐景熙 + */ private void reCreateNoteTableTriggers(SQLiteDatabase db) { db.execSQL("DROP TRIGGER IF EXISTS increase_folder_count_on_update"); db.execSQL("DROP TRIGGER IF EXISTS decrease_folder_count_on_update"); @@ -236,6 +271,13 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { db.execSQL(FOLDER_MOVE_NOTES_ON_TRASH_TRIGGER); } + /** + * @method createSystemFolder + * @description 创建系统文件夹。使用 ContentValues 设置系统文件夹的 ID 和类型,然后依次插入通话记录 + 文件夹、根文件夹、临时文件夹和回收站文件夹到笔记表中。 + * @date: 2024-12-21 22:20 + * @author: 齐景熙 + */ private void createSystemFolder(SQLiteDatabase db) { ContentValues values = new ContentValues(); @@ -271,6 +313,12 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { db.insert(TABLE.NOTE, null, values); } + /** + * @method createDataTable + * @description 创建数据表。执行创建数据表的 SQL 语句,调用 reCreateDataTableTriggers 方法重新创建数据表的触发器,并创建数据表的索引。 + * @date: 2024-12-21 22:23 + * @author: 齐景熙 + */ public void createDataTable(SQLiteDatabase db) { db.execSQL(CREATE_DATA_TABLE_SQL); reCreateDataTableTriggers(db); @@ -278,6 +326,13 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { Log.d(TAG, "data table has been created"); } + + /** + * @method reCreateDataTableTriggers + * @description 重新创建数据表的触发器。先删除已存在的触发器,然后依次创建更新笔记内容的触发器。 + * @date: 2024-12-21 22:25 + * @author: 齐景熙 + */ private void reCreateDataTableTriggers(SQLiteDatabase db) { db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_insert"); db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_update"); @@ -288,6 +343,12 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_DELETE_TRIGGER); } + /** + * @method getInstance + * @description 获取 NotesDatabaseHelper 的单例实例。如果实例不存在,则创建一个新的实例;否则,返回已存在的实例。 + * @date: 2024-12-21 22:30 + * @author: 齐景熙 + */ static synchronized NotesDatabaseHelper getInstance(Context context) { if (mInstance == null) { mInstance = new NotesDatabaseHelper(context); @@ -295,12 +356,27 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { return mInstance; } + + /** + * @method onCreate + * @description 数据库创建时的回调方法。调用 createNoteTable 和 createDataTable 方法创建笔记表和数据表。 + * @date: 2024-12-21 22:40 + * @author: 齐景熙 + */ @Override public void onCreate(SQLiteDatabase db) { createNoteTable(db); createDataTable(db); } + + /** + * @method onUpgrade + * @description 数据库版本升级时的回调方法。根据旧版本号和新版本号,依次调用相应的升级方法 + (如 upgradeToV2、upgradeToV3 等),并在需要时重新创建触发器。如果旧版本号和新版本号不匹配,则抛出异常。 + * @date: 2024-12-21 22:47 + * @author: 齐景熙 + */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { boolean reCreateTriggers = false; @@ -339,6 +415,13 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { } } + + /** + * @method upgradeToV2 + * @description 升级数据库到版本 2。删除旧的笔记表和数据表,然后重新创建笔记表和数据表。 + * @date: 2024-12-21 22:51 + * @author: 齐景熙 + */ private void upgradeToV2(SQLiteDatabase db) { db.execSQL("DROP TABLE IF EXISTS " + TABLE.NOTE); db.execSQL("DROP TABLE IF EXISTS " + TABLE.DATA); @@ -346,6 +429,13 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { createDataTable(db); } + + /** + * @method upgradeToV3 + * @description 升级数据库到版本 3。删除不再使用的触发器,为笔记表添加 gtask_id 列,并创建回收站系统文件夹。 + * @date: 2024-12-21 22:55 + * @author: 齐景熙 + */ private void upgradeToV3(SQLiteDatabase db) { // drop unused triggers db.execSQL("DROP TRIGGER IF EXISTS update_note_modified_date_on_insert"); @@ -361,11 +451,25 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { db.insert(TABLE.NOTE, null, values); } + + /** + * @method upgradeToV4 + * @description 升级数据库到版本 4。为笔记表添加 version 列。 + * @date: 2024-12-21 22:57 + * @author: 齐景熙 + */ private void upgradeToV4(SQLiteDatabase db) { db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.VERSION + " INTEGER NOT NULL DEFAULT 0"); } + + /** + * @method upgradeToV5 + * @description 升级数据库到版本 5。为笔记表添加 top 列。 + * @date: 2024-12-21 23:00 + * @author: 齐景熙 + */ private void upgradeToV5(SQLiteDatabase db) { db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.TOP + " INTEGER NOT NULL DEFAULT 0"); diff --git a/src/java/net/micode/notes/data/NotesProvider.java b/src/java/net/micode/notes/data/NotesProvider.java index 8b23d6e..d26d815 100644 --- a/src/java/net/micode/notes/data/NotesProvider.java +++ b/src/java/net/micode/notes/data/NotesProvider.java @@ -14,6 +14,18 @@ * limitations under the License. */ + + /** + * + * @ProjectName: minode + * @Package: net.micode.notes.data + * @ClassName: NotesProvider + * @Description: 该类继承自 ContentProvider,用于实现笔记数据的访问和管理。它定义了 URI 匹配器、数据库帮助者 + 等成员变量,并重写了 ContentProvider 的主要方法,如 onCreate、query、insert、delete、update 等, + 实现了对笔记和数据表的查询、插入、删除和更新操作。通过该类,其他组件可以方便地访问和操作笔记数据。 + * @Author: 齐景熙 + * @Date: 2024-12-21 23:10 + */ package net.micode.notes.data; @@ -34,6 +46,13 @@ import net.micode.notes.data.Notes.DataColumns; import net.micode.notes.data.Notes.NoteColumns; import net.micode.notes.data.NotesDatabaseHelper.TABLE; +/** + * @method NotesProvider + * @description 默认构造函数,无特殊功能。 + * @date: 2024-12-21 23:12 + * @author: 齐景熙 + */ + public class NotesProvider extends ContentProvider { private static final UriMatcher mMatcher; @@ -80,12 +99,27 @@ public class NotesProvider extends ContentProvider { + " AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER + " AND " + NoteColumns.TYPE + "=" + Notes.TYPE_NOTE; + + +/** + * @method onCreate + * @description ContentProvider 创建时的回调方法。获取上下文,调用 NotesDatabaseHelper.getInstance + 方法创建数据库帮助者对象 mHelper,并返回 true 表示创建成功。 + * @date: 2024-12-21 23:13 + * @author: 齐景熙 + */ @Override public boolean onCreate() { mHelper = NotesDatabaseHelper.getInstance(getContext()); return true; } +/** + * @method query + * @description 查询数据。根据匹配的 URI,执行不同的查询操作 + * @date: 2024-12-21 23:15 + * @author: 齐景熙 + */ @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { @@ -147,7 +181,12 @@ public class NotesProvider extends ContentProvider { } return c; } - +/** + * @method insert + * @description 插入数据。根据匹配的 URI,执行不同的插入操作 + * @date: 2024-12-21 23:17 + * @author: 齐景熙 + */ @Override public Uri insert(Uri uri, ContentValues values) { SQLiteDatabase db = mHelper.getWritableDatabase(); @@ -182,6 +221,12 @@ public class NotesProvider extends ContentProvider { return ContentUris.withAppendedId(uri, insertedId); } +/** + * @method delete + * @description 删除数据。根据匹配的 URI,执行不同的删除操作 + * @date: 2024-12-21 23:20 + * @author: 齐景熙 + */ @Override public int delete(Uri uri, String selection, String[] selectionArgs) { int count = 0; @@ -227,7 +272,12 @@ public class NotesProvider extends ContentProvider { } return count; } - +/** + * @method update + * @description 更新数据。根据匹配的 URI,执行不同的更新操作 + * @date: 2024-12-21 23:22 + * @author: 齐景熙 + */ @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { int count = 0; @@ -267,11 +317,23 @@ public class NotesProvider extends ContentProvider { } return count; } - +/** + * @method parseSelection + * @description 解析查询条件。如果查询条件不为空,则返回包含查询条件的字符串;否则返回空字符串。 + * @date: 2024-12-21 23:25 + * @author: 齐景熙 + */ private String parseSelection(String selection) { return (!TextUtils.isEmpty(selection) ? " AND (" + selection + ')' : ""); } + + /** + * @method increaseNoteVersion + * @description 增加笔记版本号。根据笔记 ID 或查询条件,更新笔记表中相应笔记的版本号。 + * @date: 2024-12-21 23:27 + * @author: 齐景熙 + */ private void increaseNoteVersion(long id, String selection, String[] selectionArgs) { StringBuilder sql = new StringBuilder(120); sql.append("UPDATE "); @@ -297,6 +359,13 @@ public class NotesProvider extends ContentProvider { mHelper.getWritableDatabase().execSQL(sql.toString()); } + + /** + * @method getType + * @description 获取 MIME 类型。该方法未实现,返回 null + * @date: 2024-12-21 23:30 + * @author: 齐景熙 + */ @Override public String getType(Uri uri) { // TODO Auto-generated method stub From 256c40451afdfcf0ae3db5006f1a1fa0053cfe0d Mon Sep 17 00:00:00 2001 From: qijingxi <2904615854@qq.com> Date: Thu, 9 Jan 2025 08:40:34 +0800 Subject: [PATCH 2/5] qijingxi --- src/java/net/micode/notes/data/Notes.java | 69 +++++++++++++++++++ .../notes/data/NotesDatabaseHelper.java | 21 ++++++ .../net/micode/notes/data/NotesProvider.java | 60 ++++++++++++++-- 3 files changed, 144 insertions(+), 6 deletions(-) diff --git a/src/java/net/micode/notes/data/Notes.java b/src/java/net/micode/notes/data/Notes.java index b7c39dc..7079d8f 100644 --- a/src/java/net/micode/notes/data/Notes.java +++ b/src/java/net/micode/notes/data/Notes.java @@ -26,6 +26,17 @@ * @Author: 齐景熙 * @Date: 2024-12-21 19:42 */ + + +/* + 主要成员变量和常量: +AUTHORITY:定义了内容提供者的权威名称,用于构建 URI。 +TAG:用于日志记录的标签。 +TYPE_NOTE、TYPE_FOLDER、TYPE_SYSTEM:定义了笔记的类型枚举,分别表示普通笔记、文件夹和系统文件夹。 +ID_ROOT_FOLDER、ID_TEMPARAY_FOLDER、ID_CALL_RECORD_FOLDER、ID_TRASH_FOLER:定义了系统文件夹的标识符,分别表示根文件夹、临时文件夹、通话记录文件夹和回收站文件夹。 +INTENT_EXTRA_ALERT_DATE、INTENT_EXTRA_BACKGROUND_ID 等:定义了 Intent 额外数据的键,用于在 Intent 中传递相关数据。 +TYPE_WIDGET_INVALIDE、TYPE_WIDGET_2X、TYPE_WIDGET_4X:定义了小部件的类型枚举。 + */ package net.micode.notes.data; import android.net.Uri; @@ -65,6 +76,12 @@ public class Notes { * @date: 2024-12-21 20:02 * @author: 齐景熙 */ + + /* + 主要成员变量和常量: + NOTE:表示文本笔记的 MIME 类型。 + CALL_NOTE:表示通话记录笔记的 MIME 类型。 + */ public static class DataConstants { public static final String NOTE = TextNote.CONTENT_ITEM_TYPE; public static final String CALL_NOTE = CallNote.CONTENT_ITEM_TYPE; @@ -90,6 +107,28 @@ public class Notes { * @date: 2024-12-21 20:04 * @author: 齐景熙 */ + + /* + 要成员变量和常量: + ID:笔记的唯一 ID。 + PARENT_ID:笔记或文件夹的父 ID。 + CREATED_DATE:笔记或文件夹的创建日期。 + MODIFIED_DATE:笔记或文件夹的最新修改日期。 + ALERTED_DATE:提醒日期。 + SNIPPET:文件夹的名称或笔记的文本内容。 + WIDGET_ID:笔记的小部件 ID。 + WIDGET_TYPE:笔记的小部件类型。 + BG_COLOR_ID:笔记的背景颜色 ID。 + HAS_ATTACHMENT:笔记是否有附件。 + NOTES_COUNT:文件夹的笔记数量。 + TYPE:文件类型(文件夹或笔记)。 + SYNC_ID:最后同步 ID。 + LOCAL_MODIFIED:本地修改标志。 + ORIGIN_PARENT_ID:移动到临时文件夹之前的原始父 ID。 + GTASK_ID:GTask ID。 + VERSION:版本号。 + TOP:置顶状态。 + */ public interface NoteColumns { /** * The unique ID for a row @@ -211,6 +250,17 @@ public class Notes { * @date: 2024-12-21 20:05 * @author: 齐景熙 */ + + /* + 主要成员变量和常量: +ID:数据的唯一 ID。 +MIME_TYPE:数据项的 MIME 类型。 +NOTE_ID:数据所属笔记的 ID。 +CREATED_DATE:数据的创建日期。 +MODIFIED_DATE:数据的最新修改日期。 +CONTENT:数据的内容。 +DATA1、DATA2、DATA3、DATA4、DATA5:通用数据列,具体含义取决于 MIME 类型。 + */ public interface DataColumns { /** * The unique ID for a row @@ -293,6 +343,15 @@ public class Notes { * @date: 2024-12-21 20:07 * @author: 齐景熙 */ + + /* +主要成员变量和常量: +MODE:文本笔记的模式,使用 DATA1 列来表示。 +MODE_CHECK_LIST:表示清单模式的值。 +CONTENT_TYPE:文本笔记的 MIME 类型,用于目录。 +CONTENT_ITEM_TYPE:文本笔记的 MIME 类型,用于单个项。 +CONTENT_URI:文本笔记的 URI,用于查询文本笔记数据。 + */ public static final class TextNote implements DataColumns { /** * Mode to indicate the text in check list mode or not @@ -316,6 +375,16 @@ public class Notes { * @date: 2024-12-21 20:10 * @author: 齐景熙 */ + + + /* +主要成员变量和常量: +CALL_DATE:通话记录笔记的通话日期,使用 DATA1 列来表示。 +PHONE_NUMBER:通话记录笔记的电话号码,使用 DATA3 列来表示。 +CONTENT_TYPE:通话记录笔记的 MIME 类型,用于目录。 +CONTENT_ITEM_TYPE:通话记录笔记的 MIME 类型,用于单个项。 +CONTENT_URI:通话记录笔记的 URI,用于查询通话记录笔记数据。 + */ public static final class CallNote implements DataColumns { /** * Call date for this record diff --git a/src/java/net/micode/notes/data/NotesDatabaseHelper.java b/src/java/net/micode/notes/data/NotesDatabaseHelper.java index 4c52c4e..2f9b0a3 100644 --- a/src/java/net/micode/notes/data/NotesDatabaseHelper.java +++ b/src/java/net/micode/notes/data/NotesDatabaseHelper.java @@ -26,6 +26,15 @@ * @Author: 齐景熙 * @Date: 2024-12-21 22:10 */ + +/*主要成员变量和常量: +DB_NAME:数据库的名称。 +DB_VERSION:数据库的版本号。 +TABLE:定义了数据库表名的接口。 +TAG:用于日志记录的标签。 +mInstance:用于实现单例模式的静态实例变量。 +CREATE_NOTE_TABLE_SQL、CREATE_DATA_TABLE_SQL 等:创建笔记表和数据表的 SQL 语句。 +NOTE_INCREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER 等:定义了数据库触发器的 SQL 语句,用于在特定操作后自动更新数据。 */ package net.micode.notes.data; import android.content.ContentValues; @@ -227,6 +236,8 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { * @date: 2024-12-21 22:10 * @author: 齐景熙 */ + /*参数: +context:上下文对象,用于访问应用程序的资源和功能。 */ public NotesDatabaseHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); } @@ -238,6 +249,8 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { * @date: 2024-12-21 22:13 * @author: 齐景熙 */ + /*参数: +db:可写的数据库对象,用于执行 SQL 语句。 */ public void createNoteTable(SQLiteDatabase db) { db.execSQL(CREATE_NOTE_TABLE_SQL); reCreateNoteTableTriggers(db); @@ -253,6 +266,8 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { * @date: 2024-12-21 22:15 * @author: 齐景熙 */ + /*参数: +db:可写的数据库对象,用于执行 SQL 语句。 */ private void reCreateNoteTableTriggers(SQLiteDatabase db) { db.execSQL("DROP TRIGGER IF EXISTS increase_folder_count_on_update"); db.execSQL("DROP TRIGGER IF EXISTS decrease_folder_count_on_update"); @@ -278,6 +293,8 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { * @date: 2024-12-21 22:20 * @author: 齐景熙 */ + /*参数: +db:可写的数据库对象,用于执行插入操作。 */ private void createSystemFolder(SQLiteDatabase db) { ContentValues values = new ContentValues(); @@ -377,6 +394,10 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { * @date: 2024-12-21 22:47 * @author: 齐景熙 */ + /*参数: +db:可写的数据库对象,用于执行升级操作。 +oldVersion:旧的数据库版本号。 +newVersion:新的数据库版本号。 */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { boolean reCreateTriggers = false; diff --git a/src/java/net/micode/notes/data/NotesProvider.java b/src/java/net/micode/notes/data/NotesProvider.java index d26d815..17488ef 100644 --- a/src/java/net/micode/notes/data/NotesProvider.java +++ b/src/java/net/micode/notes/data/NotesProvider.java @@ -26,6 +26,12 @@ * @Author: 齐景熙 * @Date: 2024-12-21 23:10 */ + + /*主要成员变量和常量: +mMatcher:URI 匹配器,用于匹配不同的 URI。 +mHelper:数据库帮助者对象,用于访问数据库。 +TAG:用于日志记录的标签。 +URI_NOTE、URI_NOTE_ITEM 等:定义了不同 URI 的匹配码。 */ package net.micode.notes.data; @@ -52,8 +58,6 @@ import net.micode.notes.data.NotesDatabaseHelper.TABLE; * @date: 2024-12-21 23:12 * @author: 齐景熙 */ - - public class NotesProvider extends ContentProvider { private static final UriMatcher mMatcher; @@ -116,10 +120,20 @@ public class NotesProvider extends ContentProvider { /** * @method query - * @description 查询数据。根据匹配的 URI,执行不同的查询操作 + * @description 查询数据。根据匹配的 URI,执行不同的查询操作: + URI_NOTE:查询笔记表。 + URI_NOTE_ITEM:查询特定 ID 的笔记。 + URI_DATA:查询数据表。 + URI_DATA_ITEM:查询特定 ID 的数据。 + URI_SEARCH、URI_SEARCH_SUGGEST:执行搜索查询,根据搜索字符串查询笔记的摘要。 * @date: 2024-12-21 23:15 * @author: 齐景熙 */ +/*uri:要查询的 URI。 +projection:要查询的列。 +selection:查询条件。 +selectionArgs:查询条件参数。 +sortOrder:排序顺序。 */ @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { @@ -183,10 +197,16 @@ public class NotesProvider extends ContentProvider { } /** * @method insert - * @description 插入数据。根据匹配的 URI,执行不同的插入操作 + * @description 插入数据。根据匹配的 URI,执行不同的插入操作: + URI_NOTE:向笔记表插入笔记。 + URI_DATA:向数据表插入数据。 + 插入成功后,通知相关的 URI 发生变化。 * @date: 2024-12-21 23:17 * @author: 齐景熙 */ +/* 参数: +uri:要插入的 URI。 +values:要插入的数据。*/ @Override public Uri insert(Uri uri, ContentValues values) { SQLiteDatabase db = mHelper.getWritableDatabase(); @@ -223,10 +243,21 @@ public class NotesProvider extends ContentProvider { /** * @method delete - * @description 删除数据。根据匹配的 URI,执行不同的删除操作 + * @description 删除数据。根据匹配的 URI,执行不同的删除操作: + URI_NOTE:删除笔记表中的笔记。 + URI_NOTE_ITEM:删除特定 ID 的笔记。 + URI_DATA:删除数据表中的数据。 + URI_DATA_ITEM:删除特定 ID 的数据。 + 删除成功后,通知相关的 URI 发生变化。 * @date: 2024-12-21 23:20 * @author: 齐景熙 */ + +/*参数: +uri:要删除的 URI。 +selection:删除条件。 +selectionArgs:删除条件参数。 + */ @Override public int delete(Uri uri, String selection, String[] selectionArgs) { int count = 0; @@ -274,10 +305,20 @@ public class NotesProvider extends ContentProvider { } /** * @method update - * @description 更新数据。根据匹配的 URI,执行不同的更新操作 + * @description 更新数据。根据匹配的 URI,执行不同的更新操作: + URI_NOTE:更新笔记表中的笔记。 + URI_NOTE_ITEM:更新特定 ID 的笔记。 + URI_DATA:更新数据表中的数据。 + URI_DATA_ITEM:更新特定 ID 的数据。 + 更新成功后,通知相关的 URI 发生变化。 * @date: 2024-12-21 23:22 * @author: 齐景熙 */ +/*参数: +uri:要更新的 URI。 +values:更新的数据。 +selection:更新条件。 +selectionArgs:更新条件参数。 */ @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { int count = 0; @@ -323,6 +364,9 @@ public class NotesProvider extends ContentProvider { * @date: 2024-12-21 23:25 * @author: 齐景熙 */ + +/*参数: +selection:查询条件。 */ private String parseSelection(String selection) { return (!TextUtils.isEmpty(selection) ? " AND (" + selection + ')' : ""); } @@ -334,6 +378,10 @@ public class NotesProvider extends ContentProvider { * @date: 2024-12-21 23:27 * @author: 齐景熙 */ + /*参数: +id:笔记 ID。 +selection:更新条件。 +selectionArgs:更新条件参数。 */ private void increaseNoteVersion(long id, String selection, String[] selectionArgs) { StringBuilder sql = new StringBuilder(120); sql.append("UPDATE "); From 351c102dcf2d8d53d25f65c6ed1f84a6ef9d5709 Mon Sep 17 00:00:00 2001 From: qijingxi <2904615854@qq.com> Date: Thu, 9 Jan 2025 11:12:48 +0800 Subject: [PATCH 3/5] qijingxi --- .../net/micode/notes/tool/BackupUtils.java | 151 +++++++++- src/java/net/micode/notes/tool/DataUtils.java | 275 +++++++++++++++++- .../micode/notes/tool/GTaskStringUtils.java | 68 +++++ 3 files changed, 476 insertions(+), 18 deletions(-) diff --git a/src/java/net/micode/notes/tool/BackupUtils.java b/src/java/net/micode/notes/tool/BackupUtils.java index 32eb5af..55fdd0b 100644 --- a/src/java/net/micode/notes/tool/BackupUtils.java +++ b/src/java/net/micode/notes/tool/BackupUtils.java @@ -14,6 +14,19 @@ * limitations under the License. */ + +/** + * + * @ProjectName: minode + * @Package: net.micode.notes.data + * @ClassName: BackupUtils + * @Description: 该类用于备份笔记数据到文本文件。它定义了备份状态码、单例模 + 式的实现、外部存储可用性检查、导出到文本文件的方法等。通过该类, + 可以方便地将笔记数据备份到外部存储的文本文件中。 + * @Author: 齐景熙 + */ + + package net.micode.notes.tool; public class BackupUtils { @@ -21,6 +34,16 @@ // Singleton stuff private static BackupUtils sInstance; //类里面为什么可以定义自身类的对象? + + /** + * @method getInstance + * @description 获取 BackupUtils 的单例实例。如果实例不存在,则创建一个新的实例;否则,返回已存在的实例。 + * @author: 齐景熙 + */ + /*参数: +context:上下文对象,用于访问应用程序的资源和功能。 +返回值:BackupUtils 的单例实例。 */ + public static synchronized BackupUtils getInstance(Context context) { //ynchronized 关键字,代表这个方法加锁,相当于不管哪一个线程(例如线程A) //运行到这个方法时,都要检查有没有其它线程B(或者C、 D等)正在用这个方法(或者该类的其他同步方法),有的话要等正在使用synchronized方法的线程B(或者C 、D)运行完这个方法后再运行此线程A,没有的话,锁定调用者,然后直接运行。 @@ -52,19 +75,68 @@ private BackupUtils(Context context) { //初始化函数 mTextExport = new TextExport(context); } - + +/** + * @method externalStorageAvailable + * @description 检查外部存储是否可用。通过比较外部存储状态与 Environment.MEDIA_MOUNTED,判断外部存储是否已挂载。 + * @author: 齐景熙 + */ + /*参数: +context:上下文对象,用于访问应用程序的资源和功能。 +返回值:BackupUtils 的单例实例。 +功能介绍:检查外部存储是否可用。通过比较外部存储状态与 Environment.MEDIA_MOUNTED,判断外部存储是否已挂载。 +返回值:true 表示外部存储可用,false 表示不可用。 */ + private static boolean externalStorageAvailable() { //外部存储功能是否可用 return Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()); } + + /** + * @method exportToText + * @description 导出笔记数据到文本文件。调用 TextExport 类的 exportToText 方法,将笔记数据导出到文本文件,并返回导出状态码。 + * @author: 齐景熙 + */ + /*参数: +context:上下文对象,用于访问应用程序的资源和功能。 +返回值:BackupUtils 的单例实例。 +功能介绍:导出笔记数据到文本文件。调用 TextExport 类的 exportToText 方法,将笔记数据导出到文本文件,并返回导出状态码。 +返回值:导出状态码,如 STATE_SUCCESS 表示成功,STATE_SD_CARD_UNMOUONTED 表示外部存储未挂载等。*/ public int exportToText() { return mTextExport.exportToText(); } + + /** + * @method getExportedTextFileName + * @description 获取导出的文本文件名。返回 TextExport 类中保存的导出文本文件名。 + 导出笔记数据到文本文件。调用 TextExport 类的 exportToText 方法,将笔记数据导出到文本文件,并返回导出状态码。 + * @author: 齐景熙 + */ + /*参数: +context:上下文对象,用于访问应用程序的资源和功能。 +返回值:BackupUtils 的单例实例。 +功能介绍:导出笔记数据到文本文件。调用 TextExport 类的 exportToText 方法,将笔记数据导出到文本文件,并返回导出状态码。 +返回值:导出状态码,如 STATE_SUCCESS 表示成功,STATE_SD_CARD_UNMOUONTED 表示外部存储未挂载等。 +功能介绍:获取导出的文本文件名。返回 TextExport 类中保存的导出文本文件名。 +返回值:导出的文本文件名。*/ public String getExportedTextFileName() { return mTextExport.mFileName; } - + + /** + * @method getExportedTextFileDir + * @description 获取导出的文本文件目录。返回 TextExport 类中保存的导出文本文件目录。 + 导出笔记数据到文本文件。调用 TextExport 类的 exportToText 方法,将笔记数据导出到文本文件,并返回导出状态码。 + * @author: 齐景熙 + */ + /*参数: +context:上下文对象,用于访问应用程序的资源和功能。 +功能介绍:获取导出的文本文件目录。返回 TextExport 类中保存的导出文本文件目录。 +返回值:导出的文本文件目录。 +返回值:导出状态码,如 STATE_SUCCESS 表示成功,STATE_SD_CARD_UNMOUONTED 表示外部存储未挂载等。 +功能介绍:获取导出的文本文件名。返回 TextExport 类中保存的导出文本文件名。 +返回值:导出的文本文件名。*/ public String getExportedTextFileDir() { return mTextExport.mFileDirectory; } @@ -109,6 +181,20 @@ private String mFileName; private String mFileDirectory; + + /** + * @method getExportedTextFileDir + * @description 该内部类用于将笔记数据导出到文本文件。它定义了导出所需的列、格式、文件名、文件目录等,并实现了导出笔记数据到文本文件的具体逻辑。 + 获取导出的文本文件目录。返回 TextExport 类中保存的导出文本文件目录。 + 导出笔记数据到文本文件。调用 TextExport 类的 exportToText 方法,将笔记数据导出到文本文件,并返回导出状态码。 + * @author: 齐景熙 + */ + /*参数: +context:上下文对象,用于访问应用程序的资源和功能。 +功能介绍:获取导出的文本文件目录。返回 TextExport 类中保存的导出文本文件目录。 +返回值:导出的文本文件目录。 +返回值:导出状态码,如 STATE_SUCCESS 表示成功,STATE_SD_CARD_UNMOUONTED 表示外部存储未挂载等。 +该内部类用于将笔记数据导出到文本文件。它定义了导出所需的列、格式、文件名、文件目录等,并实现了导出笔记数据到文本文件的具体逻辑。*/ public TextExport(Context context) { TEXT_FORMAT = context.getResources().getStringArray(R.array.format_for_exported_note); mContext = context; @@ -116,6 +202,21 @@ mFileDirectory = ""; } + /** + * @method getFormat + * @description 获取导出格式字符串。根据传入的格式 ID,从 TEXT_FORMAT 数组中获取对应的格式字符串 + * @author: 齐景熙 + */ + /*参数: +context:上下文对象,用于访问应用程序的资源和功能。 +功能介绍:获取导出的文本文件目录。返回 TextExport 类中保存的导出文本文件目录。 +返回值:导出的文本文件目录。 +功能介绍:获取导出格式字符串。根据传入的格式 ID,从 TEXT_FORMAT 数组中获取对应的格式字符串。 +参数: +id:格式 ID。 +返回值:对应的格式字符串。 +返回值:导出状态码,如 STATE_SUCCESS 表示成功,STATE_SD_CARD_UNMOUONTED 表示外部存储未挂载等。 +该内部类用于将笔记数据导出到文本文件。它定义了导出所需的列、格式、文件名、文件目录等,并实现了导出笔记数据到文本文件的具体逻辑。*/ private String getFormat(int id) { //获取文本的组成部分 return TEXT_FORMAT[id]; } @@ -202,6 +303,21 @@ /** * Note will be exported as text which is user readable */ + +/** + * @method exportToText + * @description 导出指定笔记到文本文件。查询属于该笔记的数据,根据数据的 MIME 类型,将数据内容(如电话号码、通话日期、文本内容等)格式化后输出到文本文件。 + * @author: 齐景熙 + */ + /*参数: +context:上下文对象,用于访问应用程序的资源和功能。 +功能介绍:获取导出的文本文件目录。返回 TextExport 类中保存的导出文本文件目录。 +功能介绍:导出笔记数据到文本文件。检查外部存储是否可用,然后获取打印流,依次导出文件夹和笔记到文本文件。 +返回值:导出状态码 +noteId:笔记 ID。 +ps:打印流,用于输出到文本文件。 +返回值:导出状态码,如 STATE_SUCCESS 表示成功,STATE_SD_CARD_UNMOUONTED 表示外部存储未挂载等。 +该内部类用于将笔记数据导出到文本文件。它定义了导出所需的列、格式、文件名、文件目录等,并实现了导出笔记数据到文本文件的具体逻辑。*/ public int exportToText() { //总函数,调用上面的exportFolder和exportNote if (!externalStorageAvailable()) { Log.d(TAG, "Media was not mounted"); @@ -269,6 +385,24 @@ /** * Get a print stream pointed to the file {@generateExportedTextFile} */ + + + +/** + * @method getExportToTextPrintStream + * @description 获取指向导出文本文件的打印流。生成导出文本文件,然后创建指向该文件的打印流。 + * @author: 齐景熙 + */ + /*参数: +context:上下文对象,用于访问应用程序的资源和功能。 +功能介绍:获取导出的文本文件目录。返回 TextExport 类中保存的导出文本文件目录。 +功能介绍:导出笔记数据到文本文件。检查外部存储是否可用,然后获取打印流,依次导出文件夹和笔记到文本文件。 +返回值:导出状态码 +noteId:笔记 ID。 +ps:打印流,用于输出到文本文件。 +功能介绍:获取指向导出文本文件的打印流。生成导出文本文件,然后创建指向该文件的打印流。 +返回值:打印流,用于输出到文本文件。*/ + private PrintStream getExportToTextPrintStream() { File file = generateFileMountedOnSDcard(mContext, R.string.file_path, R.string.file_name_txt_format); @@ -296,6 +430,19 @@ /** * Generate the text file to store imported data */ + +/** + * @method generateFileMountedOnSDcard + * @description 生成导出文本文件。根据传入的文件路径和文件名格式资源 ID,生成导出文本文件的完整路径,并创建该文件。 + * @author: 齐景熙 + */ + /*参数: +功能介绍:生成导出文本文件。根据传入的文件路径和文件名格式资源 ID,生成导出文本文件的完整路径,并创建该文件。 +参数: +context:上下文对象,用于访问应用程序的资源。 +filePathResId:文件路径资源 ID。 +fileNameFormatResId:文件名格式资源 ID。 +返回值:生成的导出文本文件对象。*/ private static File generateFileMountedOnSDcard(Context context, int filePathResId, int fileNameFormatResId) { StringBuilder sb = new StringBuilder(); sb.append(Environment.getExternalStorageDirectory()); //外部(SD卡)的存储路径 diff --git a/src/java/net/micode/notes/tool/DataUtils.java b/src/java/net/micode/notes/tool/DataUtils.java index a9c6a48..750f1ad 100644 --- a/src/java/net/micode/notes/tool/DataUtils.java +++ b/src/java/net/micode/notes/tool/DataUtils.java @@ -14,6 +14,29 @@ * limitations under the License. */ /*该类定义在 net.micode.notes.tool 包下,并导入了Android和Java的一些核心类。这些导入的类提供了对内容提供者操作、日志记录、游标以及存储值的支持。 */ + + + + + /** + * + * @ProjectName: minode + * @Package: net.micode.notes.data + * @ClassName: DataUtils + * @Description: 该类提供了一系列与笔记数据操作相关的工具方法。它包含了批量删除笔记、移动笔记到文件夹、 + 获取用户文件夹数量、检查笔记或数据是否存在、获取通话记录号码、获取笔记摘要等功能。通过 + 这些方法,可以方便地对笔记数据进行批量操作和查询。 + * @Author: 齐景熙 + */ + +/*主要成员变量和常量: +DB_NAME:数据库的名称。 +DB_VERSION:数据库的版本号。 +TABLE:定义了数据库表名的接口。 +TAG:用于日志记录的标签。 +mInstance:用于实现单例模式的静态实例变量。 +CREATE_NOTE_TABLE_SQL、CREATE_DATA_TABLE_SQL 等:创建笔记表和数据表的 SQL 语句。 +NOTE_INCREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER 等:定义了数据库触发器的 SQL 语句,用于在特定操作后自动更新数据。 */ package net.micode.notes.tool; /*定义了一个公共类 DataUtils,并创建了一个常量 TAG 用于日志记录。 */ import android.content.ContentProviderOperation; @@ -37,6 +60,22 @@ import java.util.HashSet; /*这个方法实现了根据一组ID批量删除笔记的功能。 它首先检查ID集合是否为空,并创建一个操作列表。 通过 ContentResolver 执行删除操作,成功后返回 true,失败则返回 false。 */ + + /** + * @method batchDeleteNotes + * @description 批量删除笔记。根据传入的笔记 ID 集合,构建批量删除操 + 作的 ContentProviderOperation 列表,然后通过 ContentResolver + 的 applyBatch 方法执行批量删除操作。如果删除操作成功,返回 true;否则,返回 false。 + * @author: 齐景熙 + */ + +/* +功能介绍:批量删除笔记。根据传入的笔记 ID 集合,构建批量删除操作的 ContentProviderOperation 列表,然后通过 ContentResolver +的 applyBatch 方法执行批量删除操作。如果删除操作成功,返回 true;否则,返回 false。 +参数: +resolver:内容解析器,用于访问内容提供者。 +ids:要删除的笔记 ID 集合。 +返回值:true 表示删除成功,false 表示删除失败。 */ public class DataUtils { public static final String TAG = "DataUtils"; public static boolean batchDeleteNotes(ContentResolver resolver, HashSet ids) { @@ -76,6 +115,26 @@ public class DataUtils { /*此方法将指定的笔记移动到目标文件夹。 更新笔记的父文件夹ID并标记为本地修改。 */ /*查询非系统文件夹的数量。异常处理用于确保在查询失败时释放游标资源。 */ + +/*这个方法实现了根据一组ID批量删除笔记的功能。 +它首先检查ID集合是否为空,并创建一个操作列表。 +通过 ContentResolver 执行删除操作,成功后返回 true,失败则返回 false。 */ + + /** + * @method moveNoteToFoler + * @description 将笔记移动到指定文件夹。根据传入的笔记 ID、源文件夹 ID 和目标文件夹 ID,更新笔记的父 ID、原始父 ID + 和本地修改标志。通过 ContentResolver 的 update 方法执行更新操作。 + * @author: 齐景熙 + */ + +/* +功能介绍:将笔记移动到指定文件夹。根据传入的笔记 ID、源文件夹 ID 和目标文件夹 ID,更新笔记的父 ID、原始父 ID +和本地修改标志。通过 ContentResolver 的 update 方法执行更新操作。 +参数: +resolver:内容解析器,用于访问内容提供者。 +id:要移动的笔记 ID。 +srcFolderId:源文件夹 ID。 +desFolderId:目标文件夹 ID*/ public static void moveNoteToFoler(ContentResolver resolver, long id, long srcFolderId, long desFolderId) { ContentValues values = new ContentValues(); values.put(NoteColumns.PARENT_ID, desFolderId); @@ -84,22 +143,22 @@ public class DataUtils { resolver.update(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id), values, null, null); } - /** - * @method: batchMoveToFolder - * @description: 将ids里标注的文件移至folderId指定的文件夹 - * @date: 2024/12/26 3:32 - * @author: zhoukexing - * @param: [resolver, ids, folderId] - * @return: boolean - */ - /*检查数据库中是否存在特定类型的可见笔记。 */ -/** - * 批量将便签移动到指定文件夹 - * @param resolver ContentResolver对象 - * @param ids 需要移动的便签ID集合 - * @param folderId 目标文件夹ID - * @return 是否移动成功 - */ + + /** + * @method batchMoveToFolder + * @description 批量移动笔记到指定文件夹。根据传入的笔记 ID 集合和目标文件夹 ID,构建批量更新操作的 ContentProviderOperation + 列表,然后通过 ContentResolver 的 applyBatch 方法执行批量更新操作。如果移动操作成功,返回 true;否则,返回 false。 + * @author: 齐景熙 + */ + +/* +功能介绍:批量移动笔记到指定文件夹。根据传入的笔记 ID 集合和目标文件夹 ID,构建批量更新操作的 ContentProviderOperation +列表,然后通过 ContentResolver 的 applyBatch 方法执行批量更新操作。如果移动操作成功,返回 true;否则,返回 false。 +参数: +resolver:内容解析器,用于访问内容提供者。 +ids:要移动的笔记 ID 集合。 +folderId:目标文件夹 ID。 +返回值:true 表示移动成功,false 表示移动失败。*/ public static boolean batchMoveToFolder(ContentResolver resolver, HashSet ids, long folderId) { if (ids == null) { Log.d(TAG, "the ids is null"); @@ -135,6 +194,19 @@ public static boolean batchMoveToFolder(ContentResolver resolver, HashSet * @param resolver ContentResolver对象 * @return 用户文件夹的数量 */ + + /** + * @method getUserFolderCount + * @description 获取用户文件夹数量。查询笔记表,统计类型为文件夹且父 ID 不等于回收站文件夹 ID 的笔记数量。返回查询结果中的数量。 + * @author: 齐景熙 + */ + +/* +方法 getUserFolderCount(ContentResolver resolver) +功能介绍:获取用户文件夹数量。查询笔记表,统计类型为文件夹且父 ID 不等于回收站文件夹 ID 的笔记数量。返回查询结果中的数量。 +参数: +resolver:内容解析器,用于访问内容提供者。 +返回值:用户文件夹数量。*/ public static int getUserFolderCount(ContentResolver resolver) { Cursor cursor =resolver.query(Notes.CONTENT_NOTE_URI, new String[] { "COUNT(*)" }, @@ -164,6 +236,20 @@ public static int getUserFolderCount(ContentResolver resolver) { * @param type 便签类型 * @return 是否存在 */ + + /** + * @method visibleInNoteDatabase + * @description 检查指定类型的笔记是否存在。根据传入的笔记 ID 和类型,查询笔记表,检查是否存在符合条件的笔记。如果存在,返回 true;否则,返回 false。 + * @author: 齐景熙 + */ + +/* +功能介绍:检查指定类型的笔记是否存在。根据传入的笔记 ID 和类型,查询笔记表,检查是否存在符合条件的笔记。如果存在,返回 true;否则,返回 false。 +参数: +resolver:内容解析器,用于访问内容提供者。 +noteId:要检查的笔记 ID。 +type:笔记类型。 +返回值:true 表示笔记存在,false 表示笔记不存在。*/ public static boolean visibleInNoteDatabase(ContentResolver resolver, long noteId, int type) { Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), null, @@ -187,6 +273,21 @@ public static boolean visibleInNoteDatabase(ContentResolver resolver, long noteI * @param noteId 便签ID * @return 是否存在 */ + + + + /** + * @method existInNoteDatabase + * @description 检查笔记是否存在。根据传入的笔记 ID,查询笔记表,检查是否存在该笔记。如果存在,返回 true;否则,返回 false。 + * @author: 齐景熙 + */ + +/* +功能介绍:检查笔记是否存在。根据传入的笔记 ID,查询笔记表,检查是否存在该笔记。如果存在,返回 true;否则,返回 false。 +参数: +resolver:内容解析器,用于访问内容提供者。 +noteId:要检查的笔记 ID。 +返回值:true 表示笔记存在,false 表示笔记不存在。*/ public static boolean existInNoteDatabase(ContentResolver resolver, long noteId) { Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), null, null, null, null); @@ -207,6 +308,21 @@ public static boolean existInNoteDatabase(ContentResolver resolver, long noteId) * @param dataId 数据ID * @return 是否存在 */ + + /** + * @method existInNoteDatabase + * @description 检查数据是否存在。根据传入的数据 ID,查询数据表,检查是否存在该数据。如果存在,返回 true;否则,返回 false。 + * @author: 齐景熙 + */ + +/* +功能介绍:检查数据是否存在。根据传入的数据 ID,查询数据表,检查是否存在该数据。如果存在,返回 true;否则,返回 false。 +参数: +resolver:内容解析器,用于访问内容提供者。 +dataId:要检查的数据 ID。 +返回值:true 表示数据存在,false 表示数据不存在。 +*/ + public static boolean existInDataDatabase(ContentResolver resolver, long dataId) { Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_DATA_URI, dataId), null, null, null, null); @@ -227,6 +343,25 @@ public static boolean existInDataDatabase(ContentResolver resolver, long dataId) * @param name 文件夹名称 * @return 是否存在 */ + + + /** + * @method checkVisibleFolderName + * @description 检查数据是否存在。根据传入的数据 ID,查询数据表,检查是否存在该数据。如果存在,返回 true;否则,返回 false。 + * @author: 齐景熙 + */ + +/* +功能介绍:检查数据是否存在。根据传入的数据 ID,查询数据表,检查是否存在该数据。如果存在,返回 true;否则,返回 false。 +参数: +resolver:内容解析器,用于访问内容提供者。 +dataId:要检查的数据 ID。 +返回值:true 表示数据存在,false 表示数据不存在。功能介绍:检查可见文件夹名称是否存在。根据传入的文件夹名称,查询笔记表,检查是否存在类型为文件夹、父 ID 不等于回收站文件夹 ID 且名称等于指定名称的文件夹。如果存在,返回 true;否则,返回 false。 +参数: +resolver:内容解析器,用于访问内容提供者。 +name:要检查的文件夹名称。 +返回值:true 表示文件夹名称存在,false 表示文件夹名称不存在。 +*/ public static boolean checkVisibleFolderName(ContentResolver resolver, String name) { Cursor cursor = resolver.query(Notes.CONTENT_NOTE_URI, null, NoteColumns.TYPE + "=" + Notes.TYPE_FOLDER + @@ -249,6 +384,23 @@ public static boolean checkVisibleFolderName(ContentResolver resolver, String na * @param folderId 文件夹ID * @return 小部件属性集合 */ + + /** + * @method getFolderNoteWidget + * @description 获取指定文件夹的笔记小部件属性。根据传入的文件夹 ID,查询笔记表,获取该文件夹下所有笔记的小部件 ID 和类型, + 并将它们封装成 AppWidgetAttribute 对象,存入 HashSet 中返回。 + * @author: 齐景熙 + */ + +/* +功能介绍:获取指定文件夹的笔记小部件属性。根据传入的文件夹 ID,查询笔记表,获取该文件夹下所有笔记的小部件 ID 和类型, +并将它们封装成 AppWidgetAttribute 对象,存入 HashSet 中返回。 +参数: +resolver:内容解析器,用于访问内容提供者。 +folderId:文件夹 ID。 +返回值:包含笔记小部件属性的 HashSet。 +*/ + public static HashSet getFolderNoteWidget(ContentResolver resolver, long folderId) { Cursor c = resolver.query(Notes.CONTENT_NOTE_URI, new String[] { NoteColumns.WIDGET_ID, NoteColumns.WIDGET_TYPE }, @@ -282,6 +434,29 @@ public static HashSet getFolderNoteWidget(ContentResolver re * @param noteId 便签ID * @return 电话号码 */ + + /** + * @method getCallNumberByNoteId + * @description 根据笔记 ID 获取通话记录号码。根据传入的笔记 ID,查询数据表,获取该笔记对应的通话记录号码。 + 如果查询成功且存在号码,返回号码字符串;否则,返回空字符串。 + * @author: 齐景熙 + */ + +/* +功能介绍:获取指定文件夹的笔记小部件属性。根据传入的文件夹 ID,查询笔记表,获取该文件夹下所有笔记的小部件 ID 和类型, +并将它们封装成 AppWidgetAttribute 对象,存入 HashSet 中返回。 +功能介绍:根据笔记 ID 获取通话记录号码。根据传入的笔记 ID,查询数据表,获取该笔记对应的通话记录号码。如果查询成功且存 +在号码,返回号码字符串;否则,返回空字符串。 +参数: +resolver:内容解析器,用于访问内容提供者。 +noteId:笔记 ID。 +返回值:通话记录号码字符串。 +参数: +resolver:内容解析器,用于访问内容提供者。 +folderId:文件夹 ID。 +返回值:包含笔记小部件属性的 HashSet。 +*/ + public static String getCallNumberByNoteId(ContentResolver resolver, long noteId) { Cursor cursor = resolver.query(Notes.CONTENT_DATA_URI, new String [] { CallNote.PHONE_NUMBER }, @@ -308,6 +483,24 @@ public static String getCallNumberByNoteId(ContentResolver resolver, long noteId * @param callDate 通话日期 * @return 便签ID */ + + /** + * @method getNoteIdByPhoneNumberAndCallDate + * @description 根据电话号码和通话日期获取笔记 ID。根据传入的电话号码和通话日期,查询数据表,获取匹配的笔记 ID。如果查询成功 + 且存在笔记 ID,返回笔记 ID;否则,返回 0。 + * @author: 齐景熙 + */ + +/* +功能介绍: +根据电话号码和通话日期获取笔记 ID。根据传入的电话号码和通话日期,查询数据表,获取匹配的笔记 ID。如果查询成功 +且存在笔记 ID,返回笔记 ID;否则,返回 0。 +参数: +resolver:内容解析器,用于访问内容提供者。 +phoneNumber:电话号码。 +callDate:通话日期。 +返回值:笔记 ID。 +*/ public static long getNoteIdByPhoneNumberAndCallDate(ContentResolver resolver, String phoneNumber, long callDate) { Cursor cursor = resolver.query(Notes.CONTENT_DATA_URI, new String [] { CallNote.NOTE_ID }, @@ -335,6 +528,26 @@ public static long getNoteIdByPhoneNumberAndCallDate(ContentResolver resolver, S * @param noteId 便签ID * @return 便签摘要 */ + + + /** + * @method getSnippetById + * @description 根据笔记 ID 获取笔记摘要。根据传入的笔记 ID,查询笔记表,获取该笔记的摘要字符串。如果查询成功且存在摘要, + 返回摘要字符串;否则,抛出 IllegalArgumentException 异常。 + * @author: 齐景熙 + */ + +/* +功能介绍: +根据电话号码和通话日期获取笔记 ID。根据传入的电话号码和通话日期,查询数据表,获取匹配的笔记 ID。如果查询成功 +且存在笔记 ID,返回笔记 ID;否则,返回 0。 +功能介绍:根据笔记 ID 获取笔记摘要。根据传入的笔记 ID,查询笔记表,获取该笔记的摘要字符串。如果查询成功且存在摘要, +返回摘要字符串;否则,抛出 IllegalArgumentException 异常。 +参数: +resolver:内容解析器,用于访问内容提供者。 +noteId:笔记 ID。 +返回值:笔记摘要字符串。 +*/ public static String getSnippetById(ContentResolver resolver, long noteId) { Cursor cursor = resolver.query(Notes.CONTENT_NOTE_URI, new String [] { NoteColumns.SNIPPET }, @@ -358,6 +571,21 @@ public static String getSnippetById(ContentResolver resolver, long noteId) { * @param snippet 便签摘要 * @return 格式化后的便签摘要 */ + + /** + * @method getFormattedSnippet + * @description 格式化笔记摘要。根据传入的笔记摘要字符串,去除首尾空白字符,然后查找第一个换行符,如果存在换行符,则截取换行符之 + 前的内容作为格式化后的摘要。 + * @author: 齐景熙 + */ + +/* +功能介绍:格式化笔记摘要。根据传入的笔记摘要字符串,去除首尾空白字符,然后查找第一个换行符,如果存在换行符,则截取换行符之 +前的内容作为格式化后的摘要。 +参数: +snippet:笔记摘要字符串。 +返回值:格式化后的笔记摘要字符串。 +*/ public static String getFormattedSnippet(String snippet) { if (snippet != null) { snippet = snippet.trim(); @@ -375,6 +603,21 @@ public static String getFormattedSnippet(String snippet) { * @param query 查询内容 * @return 包含查询结果的Cursor对象 */ + + /** + * @method searchInNoteDatabase + * @description 在笔记数据库中搜索。根据传入的查询字符串,查询数据表,获取内容包含查询字符串的笔记 ID。返回查询结果的 Cursor 对象。 + * @author: 齐景熙 + */ + +/* +功能介绍:在笔记数据库中搜索。根据传入的查询字符串,查询数据表,获取内容包含查询字符串的笔记 ID。返回查询结果的 Cursor 对象。 +参数: +resolver:内容解析器,用于访问内容提供者。 +query:查询字符串。 +返回值:查询结果的 Cursor 对象。 +*/ + public static Cursor searchInNoteDatabase(ContentResolver resolver, String query) { Cursor cursor = resolver.query(Notes.CONTENT_DATA_URI, new String[]{NoteColumns.ID}, diff --git a/src/java/net/micode/notes/tool/GTaskStringUtils.java b/src/java/net/micode/notes/tool/GTaskStringUtils.java index 694d849..db8e0a5 100644 --- a/src/java/net/micode/notes/tool/GTaskStringUtils.java +++ b/src/java/net/micode/notes/tool/GTaskStringUtils.java @@ -14,6 +14,74 @@ * limitations under the License. */ +/** + * + * @ProjectName: minode + * @Package: net.micode.notes.data + * @ClassName: GTaskStringUtils + * @Author: 齐景熙 + */ + + /* + 文件中包含了一系列的静态常量字符串。这些常量字符串主要用于表示与 GTask(Google Tasks)相关的 JSON 键和 + 一些特定的字符串前缀。以下是对这些常量的详细功能介绍: + + 常量介绍 +GTASK JSON 键 +GTASK_JSON_ACTION_ID:用于表示 GTask 操作的 ID。 +GTASK_JSON_ACTION_LIST:用于表示 GTask 操作的列表。 +GTASK_JSON_ACTION_TYPE:用于表示 GTask 操作的类型。 +GTASK_JSON_ACTION_TYPE_CREATE:创建操作类型。 +GTASK_JSON_ACTION_TYPE_GETALL:获取全部操作类型。 +GTASK_JSON_ACTION_TYPE_MOVE:移动操作类型。 +GTASK_JSON_ACTION_TYPE_UPDATE:更新操作类型。 +GTASK_JSON_CREATOR_ID:用于表示创建者的 ID。 +GTASK_JSON_CHILD_ENTITY:用于表示子实体。 +GTASK_JSON_CLIENT_VERSION:用于表示客户端版本。 +GTASK_JSON_COMPLETED:用于表示任务是否已完成。 +GTASK_JSON_CURRENT_LIST_ID:用于表示当前列表的 ID。 +GTASK_JSON_DEFAULT_LIST_ID:用于表示默认列表的 ID。 +GTASK_JSON_DELETED:用于表示实体是否已被删除。 +GTASK_JSON_DEST_LIST:用于表示目标列表。 +GTASK_JSON_DEST_PARENT:用于表示目标父实体。 +GTASK_JSON_DEST_PARENT_TYPE:用于表示目标父实体的类型。 +GTASK_JSON_ENTITY_DELTA:用于表示实体的变更信息。 +GTASK_JSON_ENTITY_TYPE:用于表示实体的类型。 +GTASK_JSON_GET_DELETED:用于表示是否获取已删除的实体。 +GTASK_JSON_ID:用于表示实体的 ID。 +GTASK_JSON_INDEX:用于表示实体的索引。 +GTASK_JSON_LAST_MODIFIED:用于表示实体最后修改的时间。 +GTASK_JSON_LATEST_SYNC_POINT:用于表示最新的同步点。 +GTASK_JSON_LIST_ID:用于表示列表的 ID。 +GTASK_JSON_LISTS:用于表示列表的集合。 +GTASK_JSON_NAME:用于表示实体的名称。 +GTASK_JSON_NEW_ID:用于表示新实体的 ID。 +GTASK_JSON_NOTES:用于表示笔记信息。 +GTASK_JSON_PARENT_ID:用于表示父实体的 ID。 +GTASK_JSON_PRIOR_SIBLING_ID:用于表示前一个兄弟实体的 ID。 +GTASK_JSON_RESULTS:用于表示操作的结果。 +GTASK_JSON_SOURCE_LIST:用于表示源列表。 +GTASK_JSON_TASKS:用于表示任务的集合。 +GTASK_JSON_TYPE:用于表示实体的类型。 +GTASK_JSON_TYPE_GROUP:组类型。 +GTASK_JSON_TYPE_TASK:任务类型。 +GTASK_JSON_USER:用于表示用户信息。 + +其他字符串常量 +MIUI_FOLDER_PREFFIX:用于表示 MIUI 笔记文件夹的前缀。 +FOLDER_DEFAULT:用于表示默认文件夹。 +FOLDER_CALL_NOTE:用于表示通话记录笔记文件夹。 +FOLDER_META:用于表示元数据文件夹。 +META_HEAD_GTASK_ID:用于表示 GTask ID 的元数据头部。 +META_HEAD_NOTE:用于表示笔记的元数据头部。 +META_HEAD_DATA:用于表示数据的元数据头部。 +META_NOTE_NAME:用于表示元数据笔记的名称,提示不要更新和删除。 + + +这些常量字符串在处理与 GTask 相关的 JSON 数据时非常有用,可以方便地获取和设置 JSON 对象中的各种属性。 +同时,它们也用于定义一些特定的文件夹名称和元数据头部,以便在笔记应用中进行相应的处理和标识。 + */ + package net.micode.notes.tool; // 该类用于定义 Google 任务相关的 JSON 字段常量 From f24dabb694e996b13c79e9e1b2bf58ece0f7d0a5 Mon Sep 17 00:00:00 2001 From: qijingxi <2904615854@qq.com> Date: Thu, 9 Jan 2025 11:34:59 +0800 Subject: [PATCH 4/5] qijingxi --- .../net/micode/notes/tool/ResourceParser.java | 225 ++++++++++++++++++ 1 file changed, 225 insertions(+) diff --git a/src/java/net/micode/notes/tool/ResourceParser.java b/src/java/net/micode/notes/tool/ResourceParser.java index 0fc6a61..3c34eb4 100644 --- a/src/java/net/micode/notes/tool/ResourceParser.java +++ b/src/java/net/micode/notes/tool/ResourceParser.java @@ -14,6 +14,17 @@ * limitations under the License. */ + + /** + * + * @ProjectName: minode + * @Package: net.micode.notes.data + * @ClassName: ResourceParser + * @Description: 该类用于解析和获取应用中的资源。它定义了多种资源的常量和静态方法,用于获取笔记背景、笔记项 + 背景、小部件背景和文本样式等资源。通过这些方法,可以方便地根据不同的条件获取相应的资源 ID, + 从而在应用中使用这些资源。 + * @Author: 齐景熙 + */ package net.micode.notes.tool; import android.content.Context; @@ -42,6 +53,18 @@ public class ResourceParser { public static final int BG_DEFAULT_FONT_SIZE = TEXT_MEDIUM; // 备忘录背景资源类 + + /** + * @method NoteBgResources + * @description 该内部类用于获取笔记编辑背景和标题背景的资源 ID。 + * @author: 齐景熙 + */ + /* +功能介绍:该内部类用于获取笔记编辑背景和标题背景的资源 ID。 +成员变量: +BG_EDIT_RESOURCES:存储不同颜色的笔记编辑背景资源 ID 的数组。 +BG_EDIT_TITLE_RESOURCES:存储不同颜色的笔记编辑标题背景资源 ID 的数组。 */ + public static class NoteBgResources { private final static int [] BG_EDIT_RESOURCES = new int [] { R.drawable.edit_yellow, @@ -60,17 +83,56 @@ public class ResourceParser { }; // 获取备忘录背景资源 + + /** + * @method getNoteBgResource + * @description 根据传入的 ID 获取笔记编辑背景的资源 ID。通过索引访问 BG_EDIT_RESOURCES 数组,返回对应的资源 ID。 + * @author: 齐景熙 + */ + /* +功能介绍:根据传入的 ID 获取笔记编辑背景的资源 ID。通过索引访问 BG_EDIT_RESOURCES 数组,返回对应的资源 ID。 +参数: +id:笔记背景颜色的 ID。 +返回值:笔记编辑背景的资源 ID。 + */ + public static int getNoteBgResource(int id) { return BG_EDIT_RESOURCES[id]; } // 获取备忘录标题背景资源 + + /** + * @method getNoteTitleBgResource + * @description 根据传入的 ID 获取笔记编辑标题背景的资源 ID。通过索引访问 BG_EDIT_TITLE_RESOURCES 数组,返回对应的资源 ID。 + * @author: 齐景熙 + */ + /* +功能介绍:根据传入的 ID 获取笔记编辑标题背景的资源 ID。通过索引访问 BG_EDIT_TITLE_RESOURCES 数组,返回对应的资源 ID。 +参数: +id:笔记背景颜色的 ID。 +返回值:笔记编辑标题背景的资源 ID。 + */ + public static int getNoteTitleBgResource(int id) { return BG_EDIT_TITLE_RESOURCES[id]; } } // 获取默认背景ID + + /** + * @method getDefaultBgId + * @description 获取默认的笔记背景颜色 ID。首先检查是否设置了背景颜色的偏好设置,如果设置了,则随机生成一个背 + 景颜色 ID;否则,返回默认的背景颜色 ID(黄色)。 + * @author: 齐景熙 + */ + /* +功能介绍:获取默认的笔记背景颜色 ID。首先检查是否设置了背景颜色的偏好设置,如果设置了,则随机生成一个背景颜色 ID;否则,返回默认的背景颜色 ID(黄色)。 +参数: +context:上下文对象,用于访问偏好设置。 +返回值:默认的笔记背景颜色 ID。 + */ public static int getDefaultBgId(Context context) { if (PreferenceManager.getDefaultSharedPreferences(context).getBoolean( NotesPreferenceActivity.PREFERENCE_SET_BG_COLOR_KEY, false)) { @@ -81,6 +143,21 @@ public class ResourceParser { } // 备忘录项目背景资源类 + + /** + * @method NoteItemBgResources + * @description 该内部类用于获取笔记项背景的资源 ID。 + * @author: 齐景熙 + */ + /* +功能介绍:该内部类用于获取笔记项背景的资源 ID。 +成员变量: +BG_FIRST_RESOURCES:存储不同颜色的笔记项第一个背景资源 ID 的数组。 +BG_NORMAL_RESOURCES:存储不同颜色的笔记项普通背景资源 ID 的数组。 +BG_LAST_RESOURCES:存储不同颜色的笔记项最后一个背景资源 ID 的数组。 +BG_SINGLE_RESOURCES:存储不同颜色的笔记项单个背景资源 ID 的数组。 + */ + public static class NoteItemBgResources { private final static int [] BG_FIRST_RESOURCES = new int [] { R.drawable.list_yellow_up, @@ -115,32 +192,117 @@ public class ResourceParser { }; // 获取备忘录第一个背景资源 + + /** + * @method getNoteBgFirstRes + * @description 该内部类用于获取笔记项背景的资源 ID。 + * @author: 齐景熙 + */ + /* +功能介绍:该内部类用于获取笔记项背景的资源 ID。 +成员变量: +BG_FIRST_RESOURCES:存储不同颜色的笔记项第一个背景资源 ID 的数组。 +BG_NORMAL_RESOURCES:存储不同颜色的笔记项普通背景资源 ID 的数组。 +BG_LAST_RESOURCES:存储不同颜色的笔记项最后一个背景资源 ID 的数组。 +BG_SINGLE_RESOURCES:存储不同颜色的笔记项单个背景资源 ID 的数组。 + */ + public static int getNoteBgFirstRes(int id) { return BG_FIRST_RESOURCES[id]; } // 获取备忘录最后一个背景资源 + + /** + * @method getNoteBgLastRes + * @description 根据传入的 ID 获取笔记项第一个背景的资源 ID。通过索引访问 BG_FIRST_RESOURCES + 数组,返回对应的资源 ID。 + * @author: 齐景熙 + */ + /* +功能介绍:根据传入的 ID 获取笔记项第一个背景的资源 ID。通过索引访问 BG_FIRST_RESOURCES 数组,返回对应的资源 ID。 +参数: +id:笔记背景颜色的 ID。 +返回值:笔记项第一个背景的资源 ID。 + */ + public static int getNoteBgLastRes(int id) { return BG_LAST_RESOURCES[id]; } // 获取备忘录单独背景资源 + + /** + * @method getNoteBgSingleRes + * @description 根据传入的 ID 获取笔记项第一个背景的资源 ID。通过索引访问 BG_FIRST_RESOURCES + 数组,返回对应的资源 ID。 + * @author: 齐景熙 + */ + /* +功能介绍:根据传入的 ID 获取笔记项最后一个背景的资源 ID。通过索引访问 BG_LAST_RESOURCES 数组,返回对应的资源 ID。 +参数: +id:笔记背景颜色的 ID。 +返回值:笔记项最后一个背景的资源 ID。 + */ public static int getNoteBgSingleRes(int id) { return BG_SINGLE_RESOURCES[id]; } // 获取备忘录正常背景资源 + + /** + * @method getNoteBgNormalRes + * @description 根据传入的 ID 获取笔记项第一个背景的资源 ID。通过索引访问 BG_FIRST_RESOURCES + 数组,返回对应的资源 ID。 + * @author: 齐景熙 + */ + /* +功能介绍:根据传入的 ID 获取笔记项单个背景的资源 ID。通过索引访问 BG_SINGLE_RESOURCES 数组,返回对应的资源 ID。 +参数: +id:笔记背景颜色的 ID。 +返回值:笔记项单个背景的资源 ID。 + */ + public static int getNoteBgNormalRes(int id) { return BG_NORMAL_RESOURCES[id]; } // 获取文件夹背景资源 + /** + * @method getFolderBgRes + * @description 根据传入的 ID 获取笔记项第一个背景的资源 ID。通过索引访问 BG_FIRST_RESOURCES + 数组,返回对应的资源 ID。 + * @author: 齐景熙 + */ + /* +功能介绍:根据传入的 ID 获取笔记项普通背景的资源 ID。通过索引访问 BG_NORMAL_RESOURCES 数组,返回对应的资源 ID。 +参数: +id:笔记背景颜色的 ID。 +返回值:笔记项普通背景的资源 ID。 + */ public static int getFolderBgRes() { return R.drawable.list_folder; } } // 小部件背景资源类 + + /** + * + * @ProjectName: minode + * @Package: net.micode.notes.data + * @ClassName: WidgetBgResources + * @Description: 该内部类用于获取小部件背景的资源 ID。 + * @Author: 齐景熙 + */ + + /* +功能介绍:该内部类用于获取小部件背景的资源 ID。 +成员变量: +BG_2X_RESOURCES:存储不同颜色的 2x 小部件背景资源 ID 的数组。 +BG_4X_RESOURCES:存储不同颜色的 4x 小部件背景资源 ID 的数组。 +*/ + public static class WidgetBgResources { private final static int [] BG_2X_RESOURCES = new int [] { R.drawable.widget_2x_yellow, @@ -151,6 +313,18 @@ public class ResourceParser { }; // 获取2x小部件背景资源 + + /** + * @method getWidget2xBgResource + * @description 根据传入的 ID 获取 2x 小部件背景的资源 ID。通过索引访问 BG_2X_RESOURCES 数组,返回对应的资源 ID。 + * @author: 齐景熙 + */ + /* +功能介绍:根据传入的 ID 获取 2x 小部件背景的资源 ID。通过索引访问 BG_2X_RESOURCES 数组,返回对应的资源 ID。 +参数: +id:小部件背景颜色的 ID。 +返回值:2x 小部件背景的资源 ID。 + */ public static int getWidget2xBgResource(int id) { return BG_2X_RESOURCES[id]; } @@ -164,12 +338,39 @@ public class ResourceParser { }; // 获取4x小部件背景资源 + + /** + * @method getWidget4xBgResource + * @description 根据传入的 ID 获取 4x 小部件背景的资源 ID。通过索引访问 BG_4X_RESOURCES 数组,返回对应的资源 ID。 + * @author: 齐景熙 + */ + /* +功能介绍:根据传入的 ID 获取 4x 小部件背景的资源 ID。通过索引访问 BG_4X_RESOURCES 数组,返回对应的资源 ID。 +参数: +id:小部件背景颜色的 ID。 +返回值:4x 小部件背景的资源 ID。 + */ public static int getWidget4xBgResource(int id) { return BG_4X_RESOURCES[id]; } } // 文本外观资源类 + + /** + * + * @ProjectName: minode + * @Package: net.micode.notes.data + * @ClassName: TextAppearanceResources + * @Description: 该内部类用于获取文本样式的资源 ID。 + * @Author: 齐景熙 + */ + + /* +功能介绍:该内部类用于获取文本样式的资源 ID。 +成员变量: +TEXTAPPEARANCE_RESOURCES:存储不同大小的文本样式资源 ID 的数组。 +*/ public static class TextAppearanceResources { private final static int [] TEXTAPPEARANCE_RESOURCES = new int [] { R.style.TextAppearanceNormal, @@ -179,6 +380,20 @@ public class ResourceParser { }; // 获取文本外观资源 + + /** + * @method getTexAppearanceResource + * @description 根据传入的 ID 获取文本样式的资源 ID。首先检查 ID 是否超出数组长度,如果超出,则返回默认的文本样式 ID; + 否则,通过索引访问 TEXTAPPEARANCE_RESOURCES 数组,返回对应的资源 ID。 + * @author: 齐景熙 + */ + /* +功能介绍:根据传入的 ID 获取文本样式的资源 ID。首先检查 ID 是否超出数组长度,如果超出,则返回默认的文本样式 ID; +否则,通过索引访问 TEXTAPPEARANCE_RESOURCES 数组,返回对应的资源 ID。 +参数: +id:文本样式大小的 ID。 +返回值:文本样式的资源 ID。 + */ public static int getTexAppearanceResource(int id) { /** * HACKME: Fix bug of store the resource id in shared preference. @@ -192,6 +407,16 @@ public class ResourceParser { } // 获取资源大小 + + /** + * @method getResourcesSize + * @description 获取文本样式资源的大小。返回 TEXTAPPEARANCE_RESOURCES 数组的长度。 + * @author: 齐景熙 + */ + /* +功能介绍:获取文本样式资源的大小。返回 TEXTAPPEARANCE_RESOURCES 数组的长度。 +返回值:文本样式资源的大小。 + */ public static int getResourcesSize() { return TEXTAPPEARANCE_RESOURCES.length; } From 623b8465a7bfcf05a3ca2ec250315ad6977a9eb0 Mon Sep 17 00:00:00 2001 From: qijingxi <2904615854@qq.com> Date: Thu, 9 Jan 2025 11:37:50 +0800 Subject: [PATCH 5/5] qijingxi --- src/java/net/micode/notes/tool/ResourceParser.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/java/net/micode/notes/tool/ResourceParser.java b/src/java/net/micode/notes/tool/ResourceParser.java index 3c34eb4..8784e5f 100644 --- a/src/java/net/micode/notes/tool/ResourceParser.java +++ b/src/java/net/micode/notes/tool/ResourceParser.java @@ -201,10 +201,9 @@ BG_SINGLE_RESOURCES:存储不同颜色的笔记项单个背景资源 ID 的数 /* 功能介绍:该内部类用于获取笔记项背景的资源 ID。 成员变量: -BG_FIRST_RESOURCES:存储不同颜色的笔记项第一个背景资源 ID 的数组。 -BG_NORMAL_RESOURCES:存储不同颜色的笔记项普通背景资源 ID 的数组。 -BG_LAST_RESOURCES:存储不同颜色的笔记项最后一个背景资源 ID 的数组。 -BG_SINGLE_RESOURCES:存储不同颜色的笔记项单个背景资源 ID 的数组。 +参数: +id:笔记背景颜色的 ID。 +返回值:笔记项第一个背景的资源 ID。 */ public static int getNoteBgFirstRes(int id) {