置顶功能

JHQ
Kk-juejuezi 3 years ago
parent 9ccdda990d
commit 71dcdc75b2

@ -1,2 +0,0 @@
# Default ignored files
/workspace.xml

@ -1,116 +0,0 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<codeStyleSettings language="XML">
<indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="4" />
</indentOptions>
<arrangement>
<rules>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:android</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:id</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>style</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>ANDROID_ATTRIBUTE_ORDER</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>.*</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
</rules>
</arrangement>
</codeStyleSettings>
</code_scheme>
</component>

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/main.iml" filepath="$PROJECT_DIR$/.idea/main.iml" />
</modules>
</component>
</project>

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
</component>
</project>

@ -198,6 +198,7 @@ AUTHORITY + "/data");//定义查找数据的指针。
*/
public static final String PASSWORD = "set_password";//设置密码的什么东西啊?
public static final String TAG_PASSWORD = "set_tag";
public static final String TOP = "top";
}//这些常量主要是定义便签的属性的。
// 定义DataColumns的常量,用于后面创建数据库的表头

@ -62,7 +62,8 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
NoteColumns.GTASK_ID + " TEXT NOT NULL DEFAULT ''," +
NoteColumns.VERSION + " INTEGER NOT NULL DEFAULT 0," +
NoteColumns.PASSWORD + " TEXT NOT NULL DEFAULT ''," +
NoteColumns.TAG_PASSWORD + " TEXT NOT NULL DEFAULT ''" +
NoteColumns.TAG_PASSWORD + " TEXT NOT NULL DEFAULT ''," +
NoteColumns.TOP + " INTEGER NOT NULL DEFAULT 0" +
")";//数据库中需要存储的项目的名称,就相当于创建一个表格的表头的内容。
private static final String CREATE_DATA_TABLE_SQL =
@ -337,6 +338,11 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
oldVersion++;
}
if (oldVersion == 6){
upgradeToV7(db);
oldVersion++;
}
if (reCreateTriggers) {
reCreateNoteTableTriggers(db);
reCreateDataTableTriggers(db);
@ -384,4 +390,9 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.TAG_PASSWORD
+ " INTEGER NOT NULL DEFAULT 0");
}
private void upgradeToV7(SQLiteDatabase db){
db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.TOP
+ " INTEGER NOT NULL DEFAULT 0");
}
}

@ -61,7 +61,7 @@ public class SqlNote {
NoteColumns.NOTES_COUNT, NoteColumns.PARENT_ID, NoteColumns.SNIPPET, NoteColumns.TYPE,
NoteColumns.WIDGET_ID, NoteColumns.WIDGET_TYPE, NoteColumns.SYNC_ID,
NoteColumns.LOCAL_MODIFIED, NoteColumns.ORIGIN_PARENT_ID, NoteColumns.GTASK_ID,
NoteColumns.VERSION
NoteColumns.VERSION,NoteColumns.TOP
};
//以下设置17个列的编号
@ -99,6 +99,8 @@ public class SqlNote {
public static final int VERSION_COLUMN = 16;
public static final int Top_COLUMN = 17;
//一下定义了17个内部的变量其中12个可以由content中获得5个需要初始化为0或者new
private Context mContext;
@ -135,6 +137,7 @@ public class SqlNote {
private ContentValues mDiffNoteValues;
private ArrayList<SqlData> mDataList;
private String mTop;
/*
*
@ -149,6 +152,7 @@ public class SqlNote {
mIsCreate = true;
mId = INVALID_ID;
mAlertDate = 0;
mTop = getmTop();
mBgColorId = ResourceParser.getDefaultBgId(context);
mCreatedDate = System.currentTimeMillis();//调用系统函数获得创建时间
mHasAttachment = 0;
@ -176,6 +180,7 @@ public class SqlNote {
mContext = context;
mContentResolver = context.getContentResolver();
mIsCreate = false;
mTop = getmTop();
loadFromCursor(c);
mDataList = new ArrayList<SqlData>();
//
@ -195,6 +200,7 @@ public class SqlNote {
mContext = context;
mContentResolver = context.getContentResolver();
mIsCreate = false;
mTop = getmTop();
loadFromCursor(id);
mDataList = new ArrayList<SqlData>();
if (mType == Notes.TYPE_NOTE)
@ -245,6 +251,7 @@ public class SqlNote {
mWidgetId = c.getInt(WIDGET_ID_COLUMN);
mWidgetType = c.getInt(WIDGET_TYPE_COLUMN);
mVersion = c.getLong(VERSION_COLUMN);
mTop = c.getString(Top_COLUMN);
}
/*
@ -608,4 +615,7 @@ public class SqlNote {
mDiffNoteValues.clear();
mIsCreate = false;
}
public String getmTop(){
return mTop;
}
}

@ -43,6 +43,8 @@ public class WorkingNote {
private String mPassword = "";
private String mTag = "";
//note password,initial = 0
//TOP
private String mTop = "";
private int mMode;
private long mAlertDate;
@ -85,7 +87,8 @@ public class WorkingNote {
NoteColumns.WIDGET_TYPE,
NoteColumns.MODIFIED_DATE,
NoteColumns.PASSWORD,
NoteColumns.TAG_PASSWORD
NoteColumns.TAG_PASSWORD,
NoteColumns.TOP
};
private static final int DATA_ID_COLUMN = 0;
@ -112,6 +115,8 @@ public class WorkingNote {
private static final int NOTE_TAG_PASSWORD_COLUMN = 7;
private static final int NOTE_TOP_COLUMN = 8;
// New note construct
public WorkingNote(Context context, long folderId) {
mContext = context;
@ -123,6 +128,7 @@ public class WorkingNote {
mIsDeleted = false;
mMode = 0;
mWidgetType = Notes.TYPE_WIDGET_INVALIDE;
mTop = String.valueOf(getTopId());
}
// WorkingNote的构造函数
@ -154,6 +160,7 @@ public class WorkingNote {
mModifiedDate = cursor.getLong(NOTE_MODIFIED_DATE_COLUMN);
mPassword = cursor.getString(NOTE_PASSWORD_COLUMN);
mTag = cursor.getString(NOTE_TAG_PASSWORD_COLUMN);
mTop = cursor.getString(NOTE_TOP_COLUMN);
}
cursor.close();
// 若不存在,报错
@ -441,4 +448,19 @@ public class WorkingNote {
mNote.setNoteValue(NoteColumns.TAG_PASSWORD,String.valueOf(mTag));
}
public void setTop(String Top){
if (Top != mTop){
mTop = Top;
mNote.setNoteValue(NoteColumns.TOP,String.valueOf(mTop));
}
}
public int getTopId(){
if (mTop.equals("1")){
return 1;
}else {
return 0;
}
}
}

@ -541,6 +541,10 @@ public class NoteEditActivity extends AppCompatActivity implements OnClickListen
menu.findItem(R.id.menu_alert).setVisible(false);
} else {
menu.findItem(R.id.menu_delete_remind).setVisible(false);
}if (mWorkingNote.getTopId() == 1){
menu.findItem(R.id.menu_top).setTitle("Cancel top");
}else {
menu.findItem(R.id.menu_top).setTitle("Top");
}
return true;
}
@ -603,9 +607,9 @@ public class NoteEditActivity extends AppCompatActivity implements OnClickListen
mWorkingNote.setPassword("","");
Toast.makeText(NoteEditActivity.this,"Password unlocked successfully",Toast.LENGTH_SHORT).show();
break;
case R.id.menu_new_note:
case R.id.menu_top:
//创建一个新的便签
createNewNote();
mWorkingNote.setTop((mWorkingNote.getTopId())==1? "0" : "1");
break;
case R.id.menu_delete:
//删除便签

@ -41,7 +41,8 @@ public class NoteItemData {
NoteColumns.WIDGET_ID,
NoteColumns.WIDGET_TYPE,
NoteColumns.PASSWORD,
NoteColumns.TAG_PASSWORD
NoteColumns.TAG_PASSWORD,
NoteColumns.TOP
};
//常量标记和数据就不一一标记了,意义翻译基本就知道
private static final int ID_COLUMN = 0;
@ -58,6 +59,7 @@ public class NoteItemData {
private static final int WIDGET_TYPE_COLUMN = 11;
private static final int PASSWORD_COLUMN = 12;
private static final int TAG_PASSWORD_COLUMN = 13;
private static final int TOP_COLUMN = 14;
private long mId;
private long mAlertDate;
@ -73,6 +75,7 @@ public class NoteItemData {
private int mWidgetType;
private String mPassword;
private String mTAG;
private String mTop;
private String mName;
private String mPhoneNumber;
@ -100,7 +103,7 @@ public class NoteItemData {
mWidgetType = cursor.getInt(WIDGET_TYPE_COLUMN);
mPassword = cursor.getString(PASSWORD_COLUMN);
mTAG = cursor.getString(TAG_PASSWORD_COLUMN);
mTop = cursor.getString(TOP_COLUMN);
//初始化电话号码的信息
mPhoneNumber = "";
if (mParentId == Notes.ID_CALL_RECORD_FOLDER) {
@ -241,4 +244,13 @@ public class NoteItemData {
public boolean hasPassword() { return mPassword.equals("") ;}
public String getmTAG() {return mTAG;}
public boolean isTOP() {
if(mTop.equals("1")){
return true;
}else{
return false;
}
}
}

@ -437,7 +437,7 @@ public class NotesListActivity extends AppCompatActivity implements OnClickListe
mBackgroundQueryHandler.startQuery(FOLDER_NOTE_LIST_QUERY_TOKEN, null,
Notes.CONTENT_NOTE_URI, NoteItemData.PROJECTION, selection, new String[] {
String.valueOf(mCurrentFolderId)
}, NoteColumns.TYPE + " DESC," + NoteColumns.MODIFIED_DATE + " DESC");
}, NoteColumns.TOP + " DESC," + NoteColumns.TYPE + " DESC," + NoteColumns.MODIFIED_DATE + " DESC");
}
private final class BackgroundQueryHandler extends AsyncQueryHandler {

@ -39,6 +39,7 @@ public class NotesListItem extends LinearLayout {
private NoteItemData mItemData; //标签数据
private CheckBox mCheckBox; //打钩框
private ImageView mLocker;//锁图片
private ImageView mTop;//图钉图片
/*初始化基本信息*/
public NotesListItem(Context context) {
@ -51,6 +52,7 @@ public class NotesListItem extends LinearLayout {
mCallName = (TextView) findViewById(R.id.tv_name);
mCheckBox = (CheckBox) findViewById(android.R.id.checkbox);
mLocker = (ImageView) findViewById(R.id.iv_locker);
mTop = (ImageView)findViewById(R.id.iv_top_icon);
}
///根据data的属性对各个控件的属性的控制主要是可见性Visibility内容setText格式setTextAppearance
public void bind(Context context, NoteItemData data, boolean choiceMode, boolean checked) {
@ -113,6 +115,12 @@ public class NotesListItem extends LinearLayout {
String text = " 不给你看哟~" + " (tag:" + data.getmTAG() + ")";
mTitle.setText(text);
}
mTop.setImageResource(R.drawable.title_tuding);
if (data.isTOP()){
mTop.setVisibility(View.VISIBLE);
}else {
mTop.setVisibility(View.GONE);
}
///设置内容获取相关时间从data里编辑的日期中获取
mTime. setText(DateUtils.getRelativeTimeSpanString(data.getModifiedDate()));

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 B

@ -76,6 +76,15 @@
android:layout_gravity="center_vertical"
android:background="@drawable/title_locker" />
<ImageView
android:id="@+id/iv_top_icon"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginRight = "@dimen/text_font_size_medium"
android:layout_gravity="top|right"
android:background="@drawable/title_tuding"/>
<ImageView
android:id="@+id/iv_alert_icon"
android:layout_width="wrap_content"

@ -25,8 +25,8 @@
android:id="@+id/unlocker"
android:title="@string/note_unlock"/>
<item
android:id="@+id/menu_new_note"
android:title="@string/notelist_menu_new"/>
android:id="@+id/menu_top"
android:title="@string/notelist_top"/>
<item
android:id="@+id/menu_delete"

@ -26,6 +26,8 @@
<string name="note_lock">Lock</string>
<string name="note_unlock">Unlock</string>
<string name="notelist_menu_new">Add note</string>
<string name="notelist_top">Top</string>
<string name="cancel_top">Cancel top</string>
<string name="delete_remind_time_message">Delete reminder successfully</string>
<string name="set_remind_time_message">Set reminder</string>
<string name="note_alert_expired">Expired</string>

Loading…
Cancel
Save