diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3a1dcf5..3d5b93d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -34,14 +34,14 @@ android:label="@string/preview" /> + android:label="@string/app_name" /> - - + deleteNote(final Note note) { + return Observable.create( + new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + if (!subscriber.isUnsubscribed()) { + if (TextUtils.isEmpty(note.getNoteId())) { + AppDataBase.deleteNoteByLocalId(note.getId()); + } else { + UpdateRe response = RetrofitUtils.excuteWithException( + ApiProvider.getInstance().getNoteApi().delete(note.getNoteId(), note.getUsn())); + if (response.isOk()) { + AppDataBase.deleteNoteByLocalId(note.getId()); + updateUsnIfNeed(response.getUsn()); + } else { + throw new IllegalStateException(response.getMsg()); + } + } + subscriber.onNext(null); + subscriber.onCompleted(); + } + } + }); } private static void updateUsnIfNeed(int newUsn) { diff --git a/app/src/main/java/org/houxg/leamonax/service/NotebookService.java b/app/src/main/java/org/houxg/leamonax/service/NotebookService.java index 1d226b4..83b4a84 100644 --- a/app/src/main/java/org/houxg/leamonax/service/NotebookService.java +++ b/app/src/main/java/org/houxg/leamonax/service/NotebookService.java @@ -3,6 +3,7 @@ package org.houxg.leamonax.service; import android.util.Log; +import org.houxg.leamonax.database.AppDataBase; import org.houxg.leamonax.model.Account; import org.houxg.leamonax.model.Notebook; import org.houxg.leamonax.network.ApiProvider; @@ -29,4 +30,9 @@ public class NotebookService { throw new IllegalStateException(notebook.getMsg()); } } + + public static String getTitle(long notebookLocalId) { + Notebook notebook = AppDataBase.getNotebookByLocalId(notebookLocalId); + return notebook != null ? notebook.getTitle() : ""; + } } diff --git a/app/src/main/java/org/houxg/leamonax/ui/MainActivity.java b/app/src/main/java/org/houxg/leamonax/ui/MainActivity.java index d5ae425..d0c74bc 100644 --- a/app/src/main/java/org/houxg/leamonax/ui/MainActivity.java +++ b/app/src/main/java/org/houxg/leamonax/ui/MainActivity.java @@ -51,7 +51,7 @@ import rx.schedulers.Schedulers; public class MainActivity extends BaseActivity implements NotebookAdapter.NotebookAdapterListener { private static final String EXT_SHOULD_RELOAD = "ext_should_reload"; - private static final String TAG_NOTE_FRAGMENT = "note_fragment"; + private static final String TAG_NOTE_FRAGMENT = "tag_note_fragment"; NoteFragment mNoteFragment; @@ -129,6 +129,15 @@ public class MainActivity extends BaseActivity implements NotebookAdapter.Notebo return super.onOptionsItemSelected(item); } + @Override + public void onBackPressed() { + if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) { + mDrawerLayout.closeDrawer(GravityCompat.START); + } else { + super.onBackPressed(); + } + } + private void fetchInfo() { AccountService.getInfo(AccountService.getCurrent().getUserId()) .subscribeOn(Schedulers.io()) @@ -169,7 +178,6 @@ public class MainActivity extends BaseActivity implements NotebookAdapter.Notebo public void onClickedNotebook(Notebook notebook) { mNoteFragment.loadNoteFromLocal(notebook.getId()); mDrawerLayout.closeDrawer(GravityCompat.START, true); - setTitle(notebook.getTitle()); } @Override @@ -238,7 +246,6 @@ public class MainActivity extends BaseActivity implements NotebookAdapter.Notebo void showRecentNote() { mNoteFragment.loadNoteFromLocal(NoteFragment.RECENT_NOTES); mDrawerLayout.closeDrawer(GravityCompat.START, true); - setTitle(getString(R.string.recent_notes)); } @OnClick(R.id.rl_about) diff --git a/app/src/main/java/org/houxg/leamonax/ui/NoteFragment.java b/app/src/main/java/org/houxg/leamonax/ui/NoteFragment.java index 38f3415..41339ab 100644 --- a/app/src/main/java/org/houxg/leamonax/ui/NoteFragment.java +++ b/app/src/main/java/org/houxg/leamonax/ui/NoteFragment.java @@ -4,14 +4,8 @@ package org.houxg.leamonax.ui; import android.app.AlertDialog; import android.app.Fragment; import android.content.DialogInterface; -import android.graphics.Canvas; -import android.graphics.DashPathEffect; -import android.graphics.Paint; -import android.graphics.Path; -import android.graphics.Rect; import android.os.Bundle; import android.support.annotation.Nullable; -import android.support.v13.view.ViewCompat; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.LinearLayoutManager; @@ -36,6 +30,7 @@ import org.houxg.leamonax.service.NoteService; import org.houxg.leamonax.utils.DisplayUtils; import org.houxg.leamonax.utils.NetworkUtils; import org.houxg.leamonax.utils.ToastUtils; +import org.houxg.leamonax.widget.DashDividerDecoration; import java.util.Collections; import java.util.List; @@ -43,9 +38,7 @@ import java.util.Locale; import butterknife.BindView; import butterknife.ButterKnife; -import rx.Observable; import rx.Observer; -import rx.Subscriber; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; @@ -206,17 +199,7 @@ public class NoteFragment extends Fragment implements NoteAdapter.NoteAdapterLis } private void deleteNote(final Note note) { - Observable.create( - new Observable.OnSubscribe() { - @Override - public void call(Subscriber subscriber) { - if (!subscriber.isUnsubscribed()) { - NoteService.deleteNote(note); - subscriber.onNext(null); - subscriber.onCompleted(); - } - } - }) + NoteService.deleteNote(note) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer() { @@ -248,46 +231,4 @@ public class NoteFragment extends Fragment implements NoteAdapter.NoteAdapterLis } } } - - private static class DashDividerDecoration extends RecyclerView.ItemDecoration { - - private Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); - private Path mPath; - - public DashDividerDecoration(int color, int dashGap, int dashWidth, int height) { - mPaint.setColor(color); - mPaint.setStyle(Paint.Style.STROKE); - mPaint.setStrokeWidth(height); - mPaint.setPathEffect(new DashPathEffect(new float[]{dashWidth, dashGap}, 0)); - mPath = new Path(); - } - - @Override - public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { - super.onDraw(c, parent, state); - final int left = parent.getPaddingLeft(); - final int right = parent.getWidth() - parent.getPaddingRight(); - final int childCount = parent.getChildCount(); - final int strokeWidth = (int) mPaint.getStrokeWidth(); - for (int i = 0; i < childCount; i++) { - final View child = parent.getChildAt(i); - final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child - .getLayoutParams(); - final int top = child.getBottom() + params.bottomMargin + - Math.round(ViewCompat.getTranslationY(child)); - int offsetY = top + strokeWidth / 2; - - mPath.reset(); - mPath.moveTo(left, offsetY); - mPath.lineTo(right, offsetY); - c.drawPath(mPath, mPaint); - } - } - - @Override - public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { - super.getItemOffsets(outRect, view, parent, state); - outRect.set(0, 0, 0, (int) mPaint.getStrokeWidth()); - } - } } diff --git a/app/src/main/java/org/houxg/leamonax/widget/DashDividerDecoration.java b/app/src/main/java/org/houxg/leamonax/widget/DashDividerDecoration.java new file mode 100644 index 0000000..2bc8c25 --- /dev/null +++ b/app/src/main/java/org/houxg/leamonax/widget/DashDividerDecoration.java @@ -0,0 +1,53 @@ +package org.houxg.leamonax.widget; + + +import android.graphics.Canvas; +import android.graphics.DashPathEffect; +import android.graphics.Paint; +import android.graphics.Path; +import android.graphics.Rect; +import android.support.v13.view.ViewCompat; +import android.support.v7.widget.RecyclerView; +import android.view.View; + +public class DashDividerDecoration extends RecyclerView.ItemDecoration { + + private Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + private Path mPath; + + public DashDividerDecoration(int color, int dashGap, int dashWidth, int height) { + mPaint.setColor(color); + mPaint.setStyle(Paint.Style.STROKE); + mPaint.setStrokeWidth(height); + mPaint.setPathEffect(new DashPathEffect(new float[]{dashWidth, dashGap}, 0)); + mPath = new Path(); + } + + @Override + public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { + super.onDraw(c, parent, state); + final int left = parent.getPaddingLeft(); + final int right = parent.getWidth() - parent.getPaddingRight(); + final int childCount = parent.getChildCount(); + final int strokeWidth = (int) mPaint.getStrokeWidth(); + for (int i = 0; i < childCount; i++) { + final View child = parent.getChildAt(i); + final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child + .getLayoutParams(); + final int top = child.getBottom() + params.bottomMargin + + Math.round(ViewCompat.getTranslationY(child)); + int offsetY = top + strokeWidth / 2; + + mPath.reset(); + mPath.moveTo(left, offsetY); + mPath.lineTo(right, offsetY); + c.drawPath(mPath, mPaint); + } + } + + @Override + public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { + super.getItemOffsets(outRect, view, parent, state); + outRect.set(0, 0, 0, (int) mPaint.getStrokeWidth()); + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/item_note.xml b/app/src/main/res/layout/item_note.xml index 66fdd56..8c58091 100644 --- a/app/src/main/res/layout/item_note.xml +++ b/app/src/main/res/layout/item_note.xml @@ -22,15 +22,14 @@ android:orientation="horizontal"> + android:text="@string/changed" + android:textColor="#FFA726" + android:textSize="12sp" /> + android:fontFamily="sans-serif-medium" + android:textColor="@color/hint_text_light" + android:textSize="12sp" + tools:text="Gradle" /> diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 6c43fcd..550f982 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -7,6 +7,8 @@ @color/colorPrimaryDark @color/colorAccent @color/menu_text + + @drawable/ic_arrow_back_white