Merge pull request '代码标注' (#4) from develop into main
commit
62160f7806
@ -1 +0,0 @@
|
||||
软件工程
|
@ -0,0 +1,101 @@
|
||||
/*
|
||||
* 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 {
|
||||
|
||||
// 创建一个Calendar实例
|
||||
private Calendar mDate = Calendar.getInstance();
|
||||
// 是否是24小时制
|
||||
private boolean mIs24HourView;
|
||||
// 设置时间监听器
|
||||
private OnDateTimeSetListener mOnDateTimeSetListener;
|
||||
// 创建一个DateTimePicker实例
|
||||
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());
|
||||
}
|
||||
|
||||
// 设置是否是24小时制
|
||||
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());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,92 @@
|
||||
/*
|
||||
* 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 android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.CursorAdapter;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import net.micode.notes.R;
|
||||
import net.micode.notes.data.Notes;
|
||||
import net.micode.notes.data.Notes.NoteColumns;
|
||||
|
||||
|
||||
public class FoldersListAdapter extends CursorAdapter {
|
||||
// 定义查询列
|
||||
public static final String [] PROJECTION = {
|
||||
NoteColumns.ID,
|
||||
NoteColumns.SNIPPET
|
||||
};
|
||||
|
||||
// 定义查询列的索引
|
||||
public static final int ID_COLUMN = 0;
|
||||
public static final int NAME_COLUMN = 1;
|
||||
|
||||
public FoldersListAdapter(Context context, Cursor c) {
|
||||
super(context, c);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
@Override
|
||||
public View newView(Context context, Cursor cursor, ViewGroup parent) {
|
||||
// 创建一个新的View
|
||||
return new FolderListItem(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void bindView(View view, Context context, Cursor cursor) {
|
||||
// 绑定View
|
||||
if (view instanceof FolderListItem) {
|
||||
// 获取文件夹名
|
||||
String folderName = (cursor.getLong(ID_COLUMN) == Notes.ID_ROOT_FOLDER) ? context
|
||||
.getString(R.string.menu_move_parent_folder) : cursor.getString(NAME_COLUMN);
|
||||
// 绑定文件夹名
|
||||
((FolderListItem) view).bind(folderName);
|
||||
}
|
||||
}
|
||||
|
||||
public String getFolderName(Context context, int position) {
|
||||
// 获取指定位置的Cursor
|
||||
Cursor cursor = (Cursor) getItem(position);
|
||||
// 返回文件夹名
|
||||
return (cursor.getLong(ID_COLUMN) == Notes.ID_ROOT_FOLDER) ? context
|
||||
.getString(R.string.menu_move_parent_folder) : cursor.getString(NAME_COLUMN);
|
||||
}
|
||||
|
||||
private class FolderListItem extends LinearLayout {
|
||||
// 定义文本框
|
||||
private TextView mName;
|
||||
|
||||
public FolderListItem(Context context) {
|
||||
super(context);
|
||||
// 加载布局
|
||||
inflate(context, R.layout.folder_list_item, this);
|
||||
// 获取文本框
|
||||
mName = (TextView) findViewById(R.id.tv_folder_name);
|
||||
}
|
||||
|
||||
public void bind(String name) {
|
||||
// 绑定文本框
|
||||
mName.setText(name);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,197 @@
|
||||
|
||||
|
||||
package net.micode.notes.data;
|
||||
|
||||
import android.net.Uri;
|
||||
public class Notes {
|
||||
// 定义数据库的权限
|
||||
public static final String AUTHORITY = "micode_notes";
|
||||
// 定义日志标签
|
||||
public static final String TAG = "Notes";
|
||||
// 定义笔记类型
|
||||
public static final int TYPE_NOTE = 0;
|
||||
// 定义文件夹类型
|
||||
public static final int TYPE_FOLDER = 1;
|
||||
// 定义系统类型
|
||||
public static final int TYPE_SYSTEM = 2;
|
||||
|
||||
|
||||
// 定义根文件夹id
|
||||
public static final int ID_ROOT_FOLDER = 0;
|
||||
// 定义临时文件夹id
|
||||
public static final int ID_TEMPARAY_FOLDER = -1;
|
||||
// 定义通话记录文件夹id
|
||||
public static final int ID_CALL_RECORD_FOLDER = -2;
|
||||
// 定义垃圾文件夹id
|
||||
public static final int ID_TRASH_FOLER = -3;
|
||||
|
||||
// 定义意图的额外参数
|
||||
public static final String INTENT_EXTRA_ALERT_DATE = "net.micode.notes.alert_date";
|
||||
public static final String INTENT_EXTRA_BACKGROUND_ID = "net.micode.notes.background_color_id";
|
||||
public static final String INTENT_EXTRA_WIDGET_ID = "net.micode.notes.widget_id";
|
||||
public static final String INTENT_EXTRA_WIDGET_TYPE = "net.micode.notes.widget_type";
|
||||
public static final String INTENT_EXTRA_FOLDER_ID = "net.micode.notes.folder_id";
|
||||
public static final String INTENT_EXTRA_CALL_DATE = "net.micode.notes.call_date";
|
||||
|
||||
// 定义小部件类型
|
||||
public static final int TYPE_WIDGET_INVALIDE = -1;
|
||||
public static final int TYPE_WIDGET_2X = 0;
|
||||
public static final int TYPE_WIDGET_4X = 1;
|
||||
|
||||
// 定义数据常量
|
||||
public static class DataConstants {
|
||||
// 定义笔记类型
|
||||
public static final String NOTE = TextNote.CONTENT_ITEM_TYPE;
|
||||
// 定义通话记录类型
|
||||
public static final String CALL_NOTE = CallNote.CONTENT_ITEM_TYPE;
|
||||
}
|
||||
|
||||
|
||||
public static final Uri CONTENT_NOTE_URI = Uri.parse("content://" + AUTHORITY + "/note");
|
||||
|
||||
|
||||
public static final Uri CONTENT_DATA_URI = Uri.parse("content://" + AUTHORITY + "/data");
|
||||
|
||||
public interface NoteColumns {
|
||||
|
||||
public static final String ID = "_id";
|
||||
|
||||
// 父ID
|
||||
|
||||
public static final String PARENT_ID = "parent_id";
|
||||
|
||||
|
||||
public static final String CREATED_DATE = "created_date";
|
||||
|
||||
// 修改日期
|
||||
|
||||
public static final String MODIFIED_DATE = "modified_date";
|
||||
|
||||
|
||||
//
|
||||
|
||||
|
||||
public static final String ALERTED_DATE = "alert_date";
|
||||
|
||||
// 摘要
|
||||
|
||||
public static final String SNIPPET = "snippet";
|
||||
|
||||
//
|
||||
|
||||
public static final String WIDGET_ID = "widget_id";
|
||||
|
||||
|
||||
|
||||
public static final String WIDGET_TYPE = "widget_type";
|
||||
|
||||
|
||||
public static final String BG_COLOR_ID = "bg_color_id";
|
||||
|
||||
|
||||
public static final String HAS_ATTACHMENT = "has_attachment";
|
||||
|
||||
|
||||
public static final String NOTES_COUNT = "notes_count";
|
||||
|
||||
|
||||
public static final String TYPE = "type";
|
||||
|
||||
|
||||
public static final String SYNC_ID = "sync_id";
|
||||
|
||||
|
||||
public static final String LOCAL_MODIFIED = "local_modified";
|
||||
|
||||
public static final String ORIGIN_PARENT_ID = "origin_parent_id";
|
||||
|
||||
|
||||
public static final String GTASK_ID = "gtask_id";
|
||||
|
||||
|
||||
public static final String VERSION = "version";
|
||||
}
|
||||
|
||||
public interface DataColumns {
|
||||
|
||||
// 定义_id字段
|
||||
public static final String ID = "_id";
|
||||
|
||||
|
||||
// 定义mime_type字段
|
||||
public static final String MIME_TYPE = "mime_type";
|
||||
|
||||
|
||||
// 定义note_id字段
|
||||
public static final String NOTE_ID = "note_id";
|
||||
|
||||
|
||||
// 定义created_date字段
|
||||
public static final String CREATED_DATE = "created_date";
|
||||
|
||||
|
||||
// 定义modified_date字段
|
||||
public static final String MODIFIED_DATE = "modified_date";
|
||||
|
||||
|
||||
// 定义content字段
|
||||
public static final String CONTENT = "content";
|
||||
|
||||
|
||||
|
||||
// 定义data1字段
|
||||
public static final String DATA1 = "data1";
|
||||
|
||||
|
||||
// 定义data2字段
|
||||
public static final String DATA2 = "data2";
|
||||
|
||||
|
||||
// 定义data3字段
|
||||
public static final String DATA3 = "data3";
|
||||
|
||||
|
||||
// 定义data4字段
|
||||
public static final String DATA4 = "data4";
|
||||
|
||||
|
||||
// 定义data5字段
|
||||
public static final String DATA5 = "data5";
|
||||
}
|
||||
|
||||
public static final class TextNote implements DataColumns {
|
||||
|
||||
// 数据类型
|
||||
public static final String MODE = DATA1;
|
||||
|
||||
// 检查列表模式
|
||||
public static final int MODE_CHECK_LIST = 1;
|
||||
|
||||
// 内容类型
|
||||
public static final String CONTENT_TYPE = "vnd.android.cursor.dir/text_note";
|
||||
|
||||
// 内容项类型
|
||||
public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/text_note";
|
||||
|
||||
// 内容URI
|
||||
public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/text_note");
|
||||
}
|
||||
|
||||
public static final class CallNote implements DataColumns {
|
||||
|
||||
// 电话日期
|
||||
public static final String CALL_DATE = DATA1;
|
||||
|
||||
// 电话号码
|
||||
public static final String PHONE_NUMBER = DATA3;
|
||||
|
||||
// 内容类型
|
||||
public static final String CONTENT_TYPE = "vnd.android.cursor.dir/call_note";
|
||||
|
||||
// 内容项类型
|
||||
public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/call_note";
|
||||
|
||||
// 内容URI
|
||||
public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/call_note");
|
||||
}
|
||||
}
|
Loading…
Reference in new issue