From 730071a1786737d77d9741de229f48e364da04a7 Mon Sep 17 00:00:00 2001 From: fqc <460393959@qq.com> Date: Thu, 8 Aug 2024 16:03:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9B=E5=BB=BA2=E4=B8=AA=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=A4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...板-软件需求规格说明书模板.docx | Bin 0 -> 27574 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..f16e80316872dbc897272b1b6604a4c623f058f9 GIT binary patch literal 27574 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 J8Z-ZS_J8X4Rk#2E 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