From 4da488718f01c2f497baa9876552b7a92435a783 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E8=85=BE=E5=B8=85?= <1324263161@qq.com> Date: Mon, 16 Oct 2023 22:39:34 +0800 Subject: [PATCH] text --- ...板-软件需求规格说明书模板.docx | Bin 0 -> 19877 bytes src/DateTimePickerDialog.java | 90 ++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 doc/文档模板-软件需求规格说明书模板.docx create mode 100644 src/DateTimePickerDialog.java diff --git a/doc/文档模板-软件需求规格说明书模板.docx b/doc/文档模板-软件需求规格说明书模板.docx new file mode 100644 index 0000000000000000000000000000000000000000..b2c160bfcd0012f526d26f38e3b9d5907d9fd072 GIT binary patch literal 19877 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 GGywoS0!bDC literal 0 HcmV?d00001 diff --git a/src/DateTimePickerDialog.java b/src/DateTimePickerDialog.java new file mode 100644 index 0000000..2c47ba4 --- /dev/null +++ b/src/DateTimePickerDialog.java @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.ui; + +import java.util.Calendar; + +import net.micode.notes.R; +import net.micode.notes.ui.DateTimePicker; +import net.micode.notes.ui.DateTimePicker.OnDateTimeChangedListener; + +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.DialogInterface.OnClickListener; +import android.text.format.DateFormat; +import android.text.format.DateUtils; + +public class DateTimePickerDialog extends AlertDialog implements OnClickListener { + + private Calendar mDate = Calendar.getInstance(); + private boolean mIs24HourView; + private OnDateTimeSetListener mOnDateTimeSetListener; + private DateTimePicker mDateTimePicker; + + public interface OnDateTimeSetListener { + void OnDateTimeSet(AlertDialog dialog, long date); + } + + public DateTimePickerDialog(Context context, long date) { + super(context); + mDateTimePicker = new DateTimePicker(context); + setView(mDateTimePicker); + mDateTimePicker.setOnDateTimeChangedListener(new OnDateTimeChangedListener() { + public void onDateTimeChanged(DateTimePicker view, int year, int month, + int dayOfMonth, int hourOfDay, int minute) { + mDate.set(Calendar.YEAR, year); + mDate.set(Calendar.MONTH, month); + mDate.set(Calendar.DAY_OF_MONTH, dayOfMonth); + mDate.set(Calendar.HOUR_OF_DAY, hourOfDay); + mDate.set(Calendar.MINUTE, minute); + updateTitle(mDate.getTimeInMillis()); + } + }); + mDate.setTimeInMillis(date); + mDate.set(Calendar.SECOND, 0); + mDateTimePicker.setCurrentDate(mDate.getTimeInMillis()); + setButton(context.getString(R.string.datetime_dialog_ok), this); + setButton2(context.getString(R.string.datetime_dialog_cancel), (OnClickListener)null); + set24HourView(DateFormat.is24HourFormat(this.getContext())); + updateTitle(mDate.getTimeInMillis()); + } + + public void set24HourView(boolean is24HourView) { + mIs24HourView = is24HourView; + } + + public void setOnDateTimeSetListener(OnDateTimeSetListener callBack) { + mOnDateTimeSetListener = callBack; + } + + private void updateTitle(long date) { + int flag = + DateUtils.FORMAT_SHOW_YEAR | + DateUtils.FORMAT_SHOW_DATE | + DateUtils.FORMAT_SHOW_TIME; + flag |= mIs24HourView ? DateUtils.FORMAT_24HOUR : DateUtils.FORMAT_24HOUR; + setTitle(DateUtils.formatDateTime(this.getContext(), date, flag)); + } + + public void onClick(DialogInterface arg0, int arg1) { + if (mOnDateTimeSetListener != null) { + mOnDateTimeSetListener.OnDateTimeSet(this, mDate.getTimeInMillis()); + } + } + +} \ No newline at end of file