diff --git a/src/java/net/micode/notes/widget/NoteWidgetProvider.java b/src/java/net/micode/notes/widget/NoteWidgetProvider.java index d9d23f7..d2da5ae 100644 --- a/src/java/net/micode/notes/widget/NoteWidgetProvider.java +++ b/src/java/net/micode/notes/widget/NoteWidgetProvider.java @@ -38,16 +38,16 @@ import net.micode.notes.ui.NotesListActivity; */ public abstract class NoteWidgetProvider extends AppWidgetProvider { // 定义查询便签数据库时需要的列 - public static final String [] PROJECTION = new String [] { + public static final String[] PROJECTION = new String[]{ NoteColumns.ID, // 便签ID NoteColumns.BG_COLOR_ID, // 背景颜色ID NoteColumns.SNIPPET // 便签摘要 }; // 定义列的索引 - public static final int COLUMN_ID = 0; - public static final int COLUMN_BG_COLOR_ID = 1; - public static final int COLUMN_SNIPPET = 2; + public static final int COLUMN_ID = 0; + public static final int COLUMN_BG_COLOR_ID = 1; + public static final int COLUMN_SNIPPET = 2; private static final String TAG = "NoteWidgetProvider"; // 日志标签 @@ -65,7 +65,7 @@ public abstract class NoteWidgetProvider extends AppWidgetProvider { context.getContentResolver().update(Notes.CONTENT_NOTE_URI, values, NoteColumns.WIDGET_ID + "=?", - new String[] { String.valueOf(appWidgetIds[i])}); + new String[]{String.valueOf(appWidgetIds[i])}); } } @@ -79,7 +79,7 @@ public abstract class NoteWidgetProvider extends AppWidgetProvider { return context.getContentResolver().query(Notes.CONTENT_NOTE_URI, PROJECTION, NoteColumns.WIDGET_ID + "=? AND " + NoteColumns.PARENT_ID + "<>?", - new String[] { String.valueOf(widgetId), String.valueOf(Notes.ID_TRASH_FOLDER) }, + new String[]{String.valueOf(widgetId), String.valueOf(Notes.ID_TRASH_FOLDER)}, null); } @@ -114,7 +114,7 @@ public abstract class NoteWidgetProvider extends AppWidgetProvider { Cursor c = getNoteWidgetInfo(context, appWidgetIds[i]); // 获取便签信息 if (c != null && c.moveToFirst()) { if (c.getCount() > 1) { - Log.e(TAG, "Multiple message with same widget id:" + appWidgetIds[i]); + Log.e(TAG, "Multiple messages with the same widget id: " + appWidgetIds[i]); c.close(); return; } @@ -173,4 +173,48 @@ public abstract class NoteWidgetProvider extends AppWidgetProvider { * @return 小部件类型 */ protected abstract int getWidgetType(); -} \ No newline at end of file +} + +/** + * 类注释 +NoteWidgetProvider 类继承自 AppWidgetProvider,用于实现便签小部件的添加、删除、更新和启用等功能。它提供了一些抽象方法,子类需要实现这些方法以提供特定小部件的布局和背景资源。 +onDeleted 方法 +参数 +context:当前应用的上下文。 +appWidgetIds:被删除的小部件ID数组。 +功能 +当小部件被删除时,更新数据库中与小部件ID相关的便签信息,将小部件ID设置为无效。这确保了数据库中的数据与实际的小部件状态一致。 +getNoteWidgetInfo 方法 +参数 +context:当前应用的上下文。 +widgetId:小部件ID。 +返回值 +返回一个游标,包含与小部件ID相关的便签信息。 +功能 +查询数据库,获取与小部件ID相关的便签信息,包括便签ID、背景颜色ID和便签摘要。 +update 方法 +参数 +context:当前应用的上下文。 +appWidgetManager:用于管理小部件的 AppWidgetManager 对象。 +appWidgetIds:需要更新的小部件ID数组。 +privacyMode:是否为隐私模式。 +功能 +更新小部件的UI。根据小部件ID获取便签信息,设置背景资源和便签摘要,并生成用于启动小部件宿主的 PendingIntent。如果处于隐私模式,显示隐私模式的提示信息。 +getBgResourceId 方法 +参数 +bgId:背景颜色ID。 +返回值 +返回小部件的背景资源ID。 +功能 +根据背景颜色ID,获取小部件的背景资源ID。子类需要实现此方法,以提供特定小部件的背景资源。 +getLayoutId 方法 +返回值 +返回小部件的布局资源ID。 +功能 +提供小部件的布局资源ID,用于在更新小部件时加载正确的布局文件。子类需要实现此方法,以提供特定小部件的布局资源。 +getWidgetType 方法 +返回值 +返回小部件的类型。 +功能 +提供小部件的类型,用于在处理小部件数据时区分不同大小的小部件。子类需要实现此方法,以提供特定小部件的类型。 + */ \ No newline at end of file diff --git a/src/java/net/micode/notes/widget/NoteWidgetProvider_2x.java b/src/java/net/micode/notes/widget/NoteWidgetProvider_2x.java index 3b22139..7b52747 100644 --- a/src/java/net/micode/notes/widget/NoteWidgetProvider_2x.java +++ b/src/java/net/micode/notes/widget/NoteWidgetProvider_2x.java @@ -67,4 +67,32 @@ public class NoteWidgetProvider_2x extends NoteWidgetProvider { protected int getWidgetType() { return Notes.TYPE_WIDGET_2X; // 返回2x小部件的类型 } -} \ No newline at end of file +} +/** + * 类注释 +NoteWidgetProvider_2x 类继承自 NoteWidgetProvider,专门用于创建和管理 2x 大小的便签小部件。它重写了父类的几个方法,以提供特定于 2x 小部件的布局和背景资源。 +onUpdate 方法 +参数 +context:当前应用的上下文。 +appWidgetManager:用于管理小部件的 AppWidgetManager 对象。 +appWidgetIds:需要更新的小部件ID数组。 +功能 +调用父类的 update 方法来更新小部件。这个方法会处理小部件的更新逻辑,包括获取数据、设置布局和更新UI。 +getLayoutId 方法 +返回值 +返回2x小部件的布局资源ID,即 R.layout.widget_2x。 +功能 +提供小部件的布局资源ID,用于在更新小部件时加载正确的布局文件。 +getBgResourceId 方法 +参数 +bgId:背景颜色ID。 +返回值 +返回2x小部件的背景资源ID。 +功能 +根据背景颜色ID,从 ResourceParser.WidgetBgResources 类中获取对应的背景资源ID。这个方法确保小部件的背景颜色与用户选择的颜色一致。 +getWidgetType 方法 +返回值 +返回2x小部件的类型,即 Notes.TYPE_WIDGET_2X。 +功能 +提供小部件的类型,用于在处理小部件数据时区分不同大小的小部件。 + */ \ No newline at end of file diff --git a/src/java/net/micode/notes/widget/NoteWidgetProvider_4x.java b/src/java/net/micode/notes/widget/NoteWidgetProvider_4x.java index ffc1aa2..c739789 100644 --- a/src/java/net/micode/notes/widget/NoteWidgetProvider_4x.java +++ b/src/java/net/micode/notes/widget/NoteWidgetProvider_4x.java @@ -44,6 +44,7 @@ public class NoteWidgetProvider_4x extends NoteWidgetProvider { * 获取小部件的布局资源ID。 * @return 布局资源ID */ + @Override protected int getLayoutId() { return R.layout.widget_4x; // 返回4x小部件的布局资源ID } @@ -66,4 +67,32 @@ public class NoteWidgetProvider_4x extends NoteWidgetProvider { protected int getWidgetType() { return Notes.TYPE_WIDGET_4X; // 返回4x小部件的类型 } -} \ No newline at end of file +} +/** + * 类注释 +NoteWidgetProvider_4x 类继承自 NoteWidgetProvider,专门用于创建和管理 4x 大小的便签小部件。它重写了父类的几个方法,以提供特定于 4x 小部件的布局和背景资源。 +onUpdate 方法 +参数 +context:当前应用的上下文。 +appWidgetManager:用于管理小部件的 AppWidgetManager 对象。 +appWidgetIds:需要更新的小部件ID数组。 +功能 +调用父类的 update 方法来更新小部件。这个方法会处理小部件的更新逻辑,包括获取数据、设置布局和更新UI。 +getLayoutId 方法 +返回值 +返回4x小部件的布局资源ID,即 R.layout.widget_4x。 +功能 +提供小部件的布局资源ID,用于在更新小部件时加载正确的布局文件。 +getBgResourceId 方法 +参数 +bgId:背景颜色ID。 +返回值 +返回4x小部件的背景资源ID。 +功能 +根据背景颜色ID,从 ResourceParser.WidgetBgResources 类中获取对应的背景资源ID。这个方法确保小部件的背景颜色与用户选择的颜色一致。 +getWidgetType 方法 +返回值 +返回4x小部件的类型,即 Notes.TYPE_WIDGET_4X。 +功能 +提供小部件的类型,用于在处理小部件数据时区分不同大小的小部件。 + */ \ No newline at end of file