mirror of
https://gitea.winboll.cc/ZhanGSKen/MyWinBoLL.git
synced 2026-08-14 05:27:11 +08:00
更换排档任务操作方式,未调试。。。
This commit is contained in:
@@ -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
|
||||
|
||||
+117
-82
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user