diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 diff --git a/stallhelper/build.properties b/stallhelper/build.properties index f0fb8a5..4620da9 100644 --- a/stallhelper/build.properties +++ b/stallhelper/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Thu May 21 00:15:15 HKT 2026 +#Fri May 22 16:56:04 HKT 2026 stageCount=4 libraryProject= baseVersion=15.20 publishVersion=15.20.3 -buildCount=0 +buildCount=11 baseBetaVersion=15.20.4 diff --git a/stallhelper/src/main/java/cc/winboll/studio/stallhelper/activities/TaskSchedulerActivity.java b/stallhelper/src/main/java/cc/winboll/studio/stallhelper/activities/TaskSchedulerActivity.java index fe1403d..49a9dd1 100644 --- a/stallhelper/src/main/java/cc/winboll/studio/stallhelper/activities/TaskSchedulerActivity.java +++ b/stallhelper/src/main/java/cc/winboll/studio/stallhelper/activities/TaskSchedulerActivity.java @@ -22,6 +22,8 @@ import cc.winboll.studio.libappbase.ToastUtils; import cc.winboll.studio.stallhelper.R; import cc.winboll.studio.stallhelper.beans.TaskSchedulerBean; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; /** * @Author ZhanGSKen @@ -93,6 +95,7 @@ public class TaskSchedulerActivity extends WinBoLLActivity { } else { LogUtils.i(TAG, "loadTaskData: 未找到已保存的任务数据,使用空列表"); } + sortTaskList(); } /** @@ -107,6 +110,21 @@ public class TaskSchedulerActivity extends WinBoLLActivity { } } + /** + * 按排档时间倒序排列列表 + */ + private void sortTaskList() { + Collections.sort(mTaskList, new Comparator() { + @Override + public int compare(TaskSchedulerBean a, TaskSchedulerBean b) { + long diff = a.getCurrentScheduleTime() - b.getCurrentScheduleTime(); + if (diff > 0) return 1; + if (diff < 0) return -1; + return 0; + } + }); + } + /** * 格式化时间戳为年月日和小时 * @param timestamp 时间戳 @@ -241,6 +259,7 @@ public class TaskSchedulerActivity extends WinBoLLActivity { final EditText etRemark = dialog.findViewById(R.id.dialog_et_remark); Button btnCancel = dialog.findViewById(R.id.dialog_btn_cancel); Button btnSave = dialog.findViewById(R.id.dialog_btn_save); + Button btnNow = dialog.findViewById(R.id.dialog_btn_now); etTaskName.setText(task.getTaskName()); etCurrentScheduleTime.setText(formatTimestamp(task.getCurrentScheduleTime())); @@ -263,6 +282,17 @@ public class TaskSchedulerActivity extends WinBoLLActivity { etHour.setText(Integer.toString(hour)); } + btnNow.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + java.util.Calendar calendar = java.util.Calendar.getInstance(); + calendar.set(java.util.Calendar.MINUTE, 0); + calendar.set(java.util.Calendar.SECOND, 0); + calendar.set(java.util.Calendar.MILLISECOND, 0); + etCurrentScheduleTime.setText(formatTimestamp(calendar.getTimeInMillis())); + } + }); + btnCancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -311,7 +341,8 @@ public class TaskSchedulerActivity extends WinBoLLActivity { task.setDurationMinutes(durationMinutes); task.setRemark(remark); - mAdapter.notifyItemChanged(position); + sortTaskList(); + mAdapter.notifyDataSetChanged(); saveTaskData(); LogUtils.i(TAG, "showEditTaskDialog: 任务 [" + taskName + "] 数据已更新,排档幅度=" + durationMinutes + "分钟"); dialog.dismiss(); @@ -336,6 +367,7 @@ public class TaskSchedulerActivity extends WinBoLLActivity { final EditText etRemark = dialog.findViewById(R.id.dialog_et_remark); Button btnCancel = dialog.findViewById(R.id.dialog_btn_cancel); Button btnSave = dialog.findViewById(R.id.dialog_btn_save); + Button btnNow = dialog.findViewById(R.id.dialog_btn_now); // 设置默认时间为当前时间 java.util.Calendar calendar = java.util.Calendar.getInstance(); @@ -344,6 +376,17 @@ public class TaskSchedulerActivity extends WinBoLLActivity { calendar.set(java.util.Calendar.MILLISECOND, 0); etCurrentScheduleTime.setText(formatTimestamp(calendar.getTimeInMillis())); + btnNow.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + java.util.Calendar cal = java.util.Calendar.getInstance(); + cal.set(java.util.Calendar.MINUTE, 0); + cal.set(java.util.Calendar.SECOND, 0); + cal.set(java.util.Calendar.MILLISECOND, 0); + etCurrentScheduleTime.setText(formatTimestamp(cal.getTimeInMillis())); + } + }); + btnCancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -389,7 +432,8 @@ public class TaskSchedulerActivity extends WinBoLLActivity { int durationMinutes = convertToTotalMinutes(month, day, hour); TaskSchedulerBean newTask = new TaskSchedulerBean(taskName, remark, timestamp, durationMinutes); mTaskList.add(newTask); - mAdapter.notifyItemInserted(mTaskList.size() - 1); + sortTaskList(); + mAdapter.notifyDataSetChanged(); saveTaskData(); LogUtils.i(TAG, "showAddTaskDialog: 任务 [" + taskName + "] 已添加,排档幅度=" + durationMinutes + "分钟"); dialog.dismiss(); @@ -462,7 +506,8 @@ public class TaskSchedulerActivity extends WinBoLLActivity { public void onClick(View v) { String taskName = task.getTaskName(); mTaskList.remove(position); - mAdapter.notifyItemRemoved(position); + sortTaskList(); + mAdapter.notifyDataSetChanged(); saveTaskData(); LogUtils.i(TAG, "showDeleteConfirmDialog: 任务 [" + taskName + "] 已删除"); dialog.dismiss(); @@ -485,7 +530,8 @@ public class TaskSchedulerActivity extends WinBoLLActivity { long newTime = currentTime + duration * 60 * 1000L; LogUtils.i(TAG, "performSchedule: 当前时间 " + formatTimestamp(currentTime) + " + " + duration + "分钟 = " + formatTimestamp(newTime)); currentTask.setCurrentScheduleTime(newTime); - mAdapter.notifyItemChanged(position); + sortTaskList(); + mAdapter.notifyDataSetChanged(); saveTaskData(); LogUtils.i(TAG, "performSchedule: 更新任务 [" + currentTask.getTaskName() + "] 时间更新为 " + formatTimestamp(newTime)); } diff --git a/stallhelper/src/main/res/layout/dialog_task_edit.xml b/stallhelper/src/main/res/layout/dialog_task_edit.xml index 688603d..1583b8b 100644 --- a/stallhelper/src/main/res/layout/dialog_task_edit.xml +++ b/stallhelper/src/main/res/layout/dialog_task_edit.xml @@ -40,14 +40,30 @@ android:paddingTop="15dp" android:paddingBottom="5dp"/> - + android:orientation="horizontal" + android:gravity="center_vertical"> + + + +