mirror of
https://github.com/nextcloud/notes-android.git
synced 2024-12-18 00:22:17 +03:00
- Fix #6 (Show Excerpt instead of Modified Date in List-View)
- Add some further JUnit Tests
This commit is contained in:
parent
9097f0050a
commit
727c8a93f2
5 changed files with 114 additions and 22 deletions
|
@ -0,0 +1,28 @@
|
|||
package it.niedermann.owncloud.notes.util;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* Tests the NoteUtil
|
||||
* Created by stefan on 06.10.15.
|
||||
*/
|
||||
public class NoteUtilTest extends TestCase {
|
||||
public void testParseMarkDown() {
|
||||
assertTrue(NoteUtil.parseMarkDown("*cursive*").contains("<em>cursive</em>"));
|
||||
assertTrue(NoteUtil.parseMarkDown("**bold**").contains("<strong>bold</strong>"));
|
||||
assertTrue(NoteUtil.parseMarkDown("##header").contains("<h2>header</h2>"));
|
||||
}
|
||||
|
||||
public void testRemoveMarkDown() {
|
||||
assertTrue("Aufzählung".equals(NoteUtil.removeMarkDown("* Aufzählung")));
|
||||
assertTrue("Header".equals(NoteUtil.removeMarkDown("# Header")));
|
||||
}
|
||||
|
||||
public void testIsEmptyLine() {
|
||||
assertTrue(NoteUtil.isEmptyLine(" "));
|
||||
assertTrue(NoteUtil.isEmptyLine("\n"));
|
||||
assertTrue(NoteUtil.isEmptyLine("\n "));
|
||||
assertTrue(NoteUtil.isEmptyLine(" \n"));
|
||||
assertTrue(NoteUtil.isEmptyLine(" \n "));
|
||||
}
|
||||
}
|
|
@ -1,30 +1,26 @@
|
|||
package it.niedermann.owncloud.notes.model;
|
||||
|
||||
import android.text.Html;
|
||||
|
||||
import com.commonsware.cwac.anddown.AndDown;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Locale;
|
||||
|
||||
import it.niedermann.owncloud.notes.persistence.NoteSQLiteOpenHelper;
|
||||
import it.niedermann.owncloud.notes.util.NoteUtil;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class Note implements Serializable {
|
||||
|
||||
private static final AndDown and_down = new AndDown();
|
||||
private long id = 0;
|
||||
private String title = "";
|
||||
private Calendar modified = null;
|
||||
private String content = "";
|
||||
private String excerpt = "";
|
||||
private String htmlContent = null;
|
||||
|
||||
public Note(long id, Calendar modified, String title, String content) {
|
||||
this.id = id;
|
||||
if(title != null)
|
||||
this.title = Html.fromHtml(and_down.markdownToHtml(title)).toString().trim();
|
||||
setTitle(title);
|
||||
setTitle(title);
|
||||
setContent(content);
|
||||
this.modified = modified;
|
||||
|
@ -39,7 +35,7 @@ public class Note implements Serializable {
|
|||
}
|
||||
|
||||
public void setTitle(String title) {
|
||||
this.title = Html.fromHtml(and_down.markdownToHtml(title)).toString().trim();
|
||||
this.title = NoteUtil.removeMarkDown(title);
|
||||
}
|
||||
|
||||
@SuppressWarnings("WeakerAccess")
|
||||
|
@ -57,13 +53,31 @@ public class Note implements Serializable {
|
|||
}
|
||||
|
||||
public void setContent(String content) {
|
||||
setExcerpt(content);
|
||||
this.content = content;
|
||||
this.htmlContent = null;
|
||||
}
|
||||
|
||||
public String getExcerpt() {
|
||||
return excerpt;
|
||||
}
|
||||
|
||||
private void setExcerpt(String content) {
|
||||
if (content.contains("\n")) {
|
||||
String[] lines = content.split("\n");
|
||||
int currentLine = 1;
|
||||
while (NoteUtil.isEmptyLine(lines[currentLine]) && currentLine < lines.length) {
|
||||
currentLine++;
|
||||
}
|
||||
excerpt = NoteUtil.removeMarkDown(lines[currentLine]);
|
||||
} else {
|
||||
excerpt = content;
|
||||
}
|
||||
}
|
||||
|
||||
public String getHtmlContent() {
|
||||
if(htmlContent == null && getContent() != null) {
|
||||
htmlContent = and_down.markdownToHtml(getContent());
|
||||
htmlContent = NoteUtil.parseMarkDown(getContent());
|
||||
}
|
||||
return htmlContent;
|
||||
}
|
||||
|
|
|
@ -51,18 +51,18 @@ public class NoteAdapter extends ArrayAdapter<Note> {
|
|||
// These TextViews are created in the XML files we defined.
|
||||
|
||||
TextView noteTitle = (TextView) v.findViewById(R.id.noteTitle);
|
||||
TextView noteModified = (TextView) v
|
||||
.findViewById(R.id.noteModified);
|
||||
TextView noteExcerpt = (TextView) v
|
||||
.findViewById(R.id.noteExcerpt);
|
||||
|
||||
// check to see if each individual textview is null.
|
||||
// if not, assign some text!
|
||||
if (noteTitle != null) {
|
||||
noteTitle.setText(note.getTitle());
|
||||
}
|
||||
if (noteModified != null) {
|
||||
noteModified.setText(note.getModified("dd.MM.yyyy HH:mm"));
|
||||
}
|
||||
}
|
||||
if (noteExcerpt != null) {
|
||||
noteExcerpt.setText(note.getExcerpt());
|
||||
}
|
||||
}
|
||||
|
||||
// the view must be returned to our activity
|
||||
return v;
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
package it.niedermann.owncloud.notes.util;
|
||||
|
||||
import android.text.Html;
|
||||
|
||||
import com.commonsware.cwac.anddown.AndDown;
|
||||
|
||||
/**
|
||||
* Provides basic functionality for Note operations.
|
||||
* Created by stefan on 06.10.15.
|
||||
*/
|
||||
public class NoteUtil {
|
||||
|
||||
private static final AndDown and_down = new AndDown();
|
||||
|
||||
/**
|
||||
* Parses a MarkDown-String and returns its HTML-Pendant
|
||||
*
|
||||
* @param s String MarkDown
|
||||
* @return String HTML
|
||||
*/
|
||||
public static String parseMarkDown(String s) {
|
||||
return and_down.markdownToHtml(s);
|
||||
}
|
||||
|
||||
/**
|
||||
* Strips all MarkDown from the given String
|
||||
*
|
||||
* @param s String - MarkDown
|
||||
* @return Plain Text-String
|
||||
*/
|
||||
public static String removeMarkDown(String s) {
|
||||
return s == null ? "" : Html.fromHtml(and_down.markdownToHtml(s)).toString().trim();
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a line is empty.
|
||||
* " " -> empty
|
||||
* "\n" -> empty
|
||||
* "\n " -> empty
|
||||
* " \n" -> empty
|
||||
* " \n " -> empty
|
||||
*
|
||||
* @param line String - a single Line which ends with \n
|
||||
* @return boolean isEmpty
|
||||
*/
|
||||
public static boolean isEmptyLine(String line) {
|
||||
return removeMarkDown(line).trim().length() == 0;
|
||||
}
|
||||
}
|
|
@ -1,17 +1,18 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<RelativeLayout
|
||||
android:id="@+id/noteItem"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="?android:attr/listPreferredItemHeight"
|
||||
android:padding="16dp"
|
||||
android:background="@drawable/list_item_background_selector"
|
||||
android:id="@+id/noteItem" >
|
||||
android:padding="16dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/noteTitle"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignWithParentIfMissing="true"
|
||||
android:gravity="center_vertical"
|
||||
|
@ -19,15 +20,15 @@
|
|||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/noteModified"
|
||||
android:id="@+id/noteExcerpt"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_below="@id/noteTitle"
|
||||
android:ellipsize="marquee"
|
||||
android:singleLine="true"
|
||||
android:layout_below="@id/noteTitle"
|
||||
android:textColor="@drawable/list_item_color_selector_low"
|
||||
android:textSize="14sp" />
|
||||
|
||||
|
|
Loading…
Reference in a new issue