更换排档任务操作方式,未调试。。。

This commit is contained in:
2026-05-18 17:02:35 +08:00
parent 96fca63627
commit 2e30b8667d
3 changed files with 122 additions and 86 deletions
+2 -2
View File
@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Sun May 17 18:24:44 GMT 2026
#Mon May 18 09:01:09 GMT 2026
stageCount=2
libraryProject=
baseVersion=15.20
publishVersion=15.20.1
buildCount=3
buildCount=8
baseBetaVersion=15.20.2
@@ -2,6 +2,7 @@ package cc.winboll.studio.stallhelper.activities;
import android.app.Dialog;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
@@ -9,16 +10,17 @@ import android.view.ViewGroup;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.appcompat.widget.Toolbar;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import cc.winboll.studio.libaes.utils.WinBoLLActivityManager;
import cc.winboll.studio.libappbase.LogUtils;
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.Calendar;
/**
* @Author ZhanGSKen
@@ -37,6 +39,25 @@ public class TaskSchedulerActivity extends WinBoLLActivity {
ArrayList<TaskSchedulerBean> mTaskList;
TaskSchedulerAdapter mAdapter;
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(0, 1001, 0, "编辑任务内容");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
if (item.getItemId() == 1001) {
View triggerView = item.getActionView();
if (triggerView != null && triggerView.getTag() instanceof Integer) {
int position = (Integer) triggerView.getTag();
showEditTaskDialog(position);
}
return true;
}
return super.onContextItemSelected(item);
}
@Override
public String getTag() {
return TAG;
@@ -113,29 +134,29 @@ public class TaskSchedulerActivity extends WinBoLLActivity {
calendar.set(java.util.Calendar.MINUTE, 0);
calendar.set(java.util.Calendar.SECOND, 0);
calendar.set(java.util.Calendar.MILLISECOND, 0);
// 设置不同的小时
calendar.set(java.util.Calendar.HOUR_OF_DAY, 9);
long time9 = calendar.getTimeInMillis();
calendar.set(java.util.Calendar.HOUR_OF_DAY, 10);
long time10 = calendar.getTimeInMillis();
calendar.set(java.util.Calendar.HOUR_OF_DAY, 11);
calendar.set(java.util.Calendar.MINUTE, 30);
long time1130 = calendar.getTimeInMillis();
calendar.set(java.util.Calendar.HOUR_OF_DAY, 12);
calendar.set(java.util.Calendar.MINUTE, 30);
long time1230 = calendar.getTimeInMillis();
calendar.set(java.util.Calendar.HOUR_OF_DAY, 16);
calendar.set(java.util.Calendar.MINUTE, 0);
long time16 = calendar.getTimeInMillis();
calendar.set(java.util.Calendar.HOUR_OF_DAY, 17);
long time17 = calendar.getTimeInMillis();
mTaskList.add(new TaskSchedulerBean("准备食材", "购买新鲜蔬菜和肉类", time9, 60));
mTaskList.add(new TaskSchedulerBean("烹饪午餐", "按照食谱准备午餐", time10, 90));
mTaskList.add(new TaskSchedulerBean("用餐休息", "享受美食并休息", time1130, 60));
@@ -153,8 +174,8 @@ public class TaskSchedulerActivity extends WinBoLLActivity {
*/
private int convertToTotalMinutes(int month, int day, int hour) {
return month * DAYS_PER_MONTH * HOURS_PER_DAY * MINUTES_PER_HOUR +
day * HOURS_PER_DAY * MINUTES_PER_HOUR +
hour * MINUTES_PER_HOUR;
day * HOURS_PER_DAY * MINUTES_PER_HOUR +
hour * MINUTES_PER_HOUR;
}
/**
@@ -168,7 +189,7 @@ public class TaskSchedulerActivity extends WinBoLLActivity {
int month = totalDays / DAYS_PER_MONTH;
int day = totalDays % DAYS_PER_MONTH;
int hour = totalHours % HOURS_PER_DAY;
StringBuilder sb = new StringBuilder();
if (month > 0) {
sb.append(month).append("");
@@ -213,7 +234,7 @@ public class TaskSchedulerActivity extends WinBoLLActivity {
etTaskName.setText(task.getTaskName());
etCurrentScheduleTime.setText(formatTimestamp(task.getCurrentScheduleTime()));
etRemark.setText(task.getRemark());
// 反向转换:将分钟转换为月、天、小时
int totalMinutes = task.getDurationMinutes();
int totalHours = totalMinutes / MINUTES_PER_HOUR;
@@ -221,7 +242,7 @@ public class TaskSchedulerActivity extends WinBoLLActivity {
int month = totalDays / DAYS_PER_MONTH;
int day = totalDays % DAYS_PER_MONTH;
int hour = totalHours % HOURS_PER_DAY;
if (month > 0) {
etMonth.setText(Integer.toString(month));
}
@@ -234,77 +255,77 @@ public class TaskSchedulerActivity extends WinBoLLActivity {
// 取消按钮
btnCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
// 保存按钮
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 获取输入的数据
String taskName = etTaskName.getText().toString().trim();
String currentScheduleTime = etCurrentScheduleTime.getText().toString().trim();
String monthStr = etMonth.getText().toString().trim();
String dayStr = etDay.getText().toString().trim();
String hourStr = etHour.getText().toString().trim();
String remark = etRemark.getText().toString().trim();
@Override
public void onClick(View v) {
// 获取输入的数据
String taskName = etTaskName.getText().toString().trim();
String currentScheduleTime = etCurrentScheduleTime.getText().toString().trim();
String monthStr = etMonth.getText().toString().trim();
String dayStr = etDay.getText().toString().trim();
String hourStr = etHour.getText().toString().trim();
String remark = etRemark.getText().toString().trim();
// 验证输入
if (taskName.isEmpty()) {
etTaskName.setError("请输入任务名称");
return;
}
if (currentScheduleTime.isEmpty()) {
etCurrentScheduleTime.setError("请输入当前排档时间");
return;
}
// 解析时间字符串为时间戳
long timestamp = parseTimeString(currentScheduleTime);
if (timestamp == 0) {
etCurrentScheduleTime.setError("时间格式不正确,请使用 yyyy-MM-dd HH 格式");
return;
}
// 验证输入
if (taskName.isEmpty()) {
etTaskName.setError("请输入任务名称");
return;
}
if (currentScheduleTime.isEmpty()) {
etCurrentScheduleTime.setError("请输入当前排档时间");
return;
}
// 解析排档幅度 - 月、天、小时
int month = 0;
int day = 0;
int hour = 0;
try {
if (!monthStr.isEmpty()) {
month = Integer.parseInt(monthStr);
}
if (!dayStr.isEmpty()) {
day = Integer.parseInt(dayStr);
}
if (!hourStr.isEmpty()) {
hour = Integer.parseInt(hourStr);
}
} catch (NumberFormatException e) {
LogUtils.e(TAG, "showEditTaskDialog: 数字解析错误", e);
return;
}
// 解析时间字符串为时间戳
long timestamp = parseTimeString(currentScheduleTime);
if (timestamp == 0) {
etCurrentScheduleTime.setError("时间格式不正确,请使用 yyyy-MM-dd HH 格式");
return;
}
// 转换为总分钟数
int durationMinutes = convertToTotalMinutes(month, day, hour);
// 解析排档幅度 - 月、天、小时
int month = 0;
int day = 0;
int hour = 0;
// 更新任务数据
task.setTaskName(taskName);
task.setCurrentScheduleTime(timestamp);
task.setDurationMinutes(durationMinutes);
task.setRemark(remark);
try {
if (!monthStr.isEmpty()) {
month = Integer.parseInt(monthStr);
}
if (!dayStr.isEmpty()) {
day = Integer.parseInt(dayStr);
}
if (!hourStr.isEmpty()) {
hour = Integer.parseInt(hourStr);
}
} catch (NumberFormatException e) {
LogUtils.e(TAG, "showEditTaskDialog: 数字解析错误", e);
return;
}
// 刷新列表
mAdapter.notifyItemChanged(position);
LogUtils.i(TAG, "showEditTaskDialog: 任务 [" + taskName + "] 数据已更新,排档幅度=" + durationMinutes + "分钟");
// 转换为总分钟数
int durationMinutes = convertToTotalMinutes(month, day, hour);
dialog.dismiss();
}
});
// 更新任务数据
task.setTaskName(taskName);
task.setCurrentScheduleTime(timestamp);
task.setDurationMinutes(durationMinutes);
task.setRemark(remark);
// 刷新列表
mAdapter.notifyItemChanged(position);
LogUtils.i(TAG, "showEditTaskDialog: 任务 [" + taskName + "] 数据已更新,排档幅度=" + durationMinutes + "分钟");
dialog.dismiss();
}
});
dialog.show();
}
@@ -355,20 +376,31 @@ public class TaskSchedulerActivity extends WinBoLLActivity {
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
final TaskSchedulerBean item = mDataList.get(position);
final TaskViewHolder viewHolder = (TaskViewHolder) holder;
viewHolder.mtvTaskName.setText(item.getTaskName());
viewHolder.mtvCurrentScheduleTime.setText(formatTimestamp(item.getCurrentScheduleTime()));
// 格式化显示排档幅度
viewHolder.mtvDuration.setText(formatDurationToString(item.getDurationMinutes()));
viewHolder.mtvRemark.setText(item.getRemark());
// 设置排档按钮点击事件 - 打开编辑对话框
// mllMain长按存入当前条目独立位置Tag,互不干扰
viewHolder.mllMain.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
v.setTag(position);
registerForContextMenu(v);
openContextMenu(v);
return true;
}
});
// 设置排档按钮点击事件
viewHolder.mbtnSchedule.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showEditTaskDialog(position);
}
});
@Override
public void onClick(View v) {
performSchedule(position);
}
});
}
@Override
@@ -382,6 +414,7 @@ public class TaskSchedulerActivity extends WinBoLLActivity {
TextView mtvCurrentScheduleTime;
TextView mtvDuration;
TextView mtvRemark;
LinearLayout mllMain;
Button mbtnSchedule;
TaskViewHolder(View itemView) {
@@ -390,8 +423,10 @@ public class TaskSchedulerActivity extends WinBoLLActivity {
mtvCurrentScheduleTime = itemView.findViewById(R.id.item_start_time);
mtvDuration = itemView.findViewById(R.id.item_duration);
mtvRemark = itemView.findViewById(R.id.item_remark);
mllMain = itemView.findViewById(R.id.itemtaskscheduler_llmain);
mbtnSchedule = itemView.findViewById(R.id.item_btn_schedule);
}
}
}
}
@@ -6,7 +6,8 @@
android:orientation="vertical"
android:background="@drawable/bg_frame"
android:padding="10dp"
android:layout_marginBottom="5dp">
android:layout_marginBottom="5dp"
android:id="@+id/itemtaskscheduler_llmain">
<LinearLayout
android:layout_width="match_parent"
@@ -33,7 +34,7 @@
android:id="@+id/item_btn_schedule"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="排档"
android:text=""
android:textSize="12sp"
android:paddingLeft="10dp"
android:paddingRight="10dp"