move the notes in a viewpager

This commit is contained in:
tibbi
2016-11-26 16:32:10 +01:00
parent 0f2430e633
commit 93ed653206
15 changed files with 144 additions and 101 deletions

View File

@ -1,34 +1,29 @@
package com.simplemobiletools.notes.activities
import android.appwidget.AppWidgetManager
import android.content.ComponentName
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.util.TypedValue
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.view.inputmethod.InputMethodManager
import com.simplemobiletools.filepicker.dialogs.ConfirmationDialog
import com.simplemobiletools.filepicker.extensions.toast
import com.simplemobiletools.filepicker.extensions.value
import com.simplemobiletools.notes.MyWidgetProvider
import com.simplemobiletools.notes.R
import com.simplemobiletools.notes.TYPE_NOTE
import com.simplemobiletools.notes.adapters.NotesPagerAdapter
import com.simplemobiletools.notes.databases.DBHelper
import com.simplemobiletools.notes.dialogs.NewNoteDialog
import com.simplemobiletools.notes.dialogs.OpenNoteDialog
import com.simplemobiletools.notes.dialogs.RenameNoteDialog
import com.simplemobiletools.notes.dialogs.WidgetNoteDialog
import com.simplemobiletools.notes.extensions.getTextSize
import com.simplemobiletools.notes.extensions.dpToPx
import com.simplemobiletools.notes.models.Note
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.fragment_note.*
class MainActivity : SimpleActivity() {
private var mCurrentNote: Note? = null
lateinit var mCurrentNote: Note
lateinit var mAdapter: NotesPagerAdapter
lateinit var mDb: DBHelper
lateinit var mNotes: List<Note>
@ -38,26 +33,28 @@ class MainActivity : SimpleActivity() {
mDb = DBHelper.newInstance(applicationContext)
mNotes = mDb.getNotes()
updateSelectedNote(config.currentNoteId)
mCurrentNote = mNotes[0]
mAdapter = NotesPagerAdapter(supportFragmentManager, mNotes)
view_pager.apply {
adapter = mAdapter
}
notes_fab.setOnClickListener { displayNewNoteDialog() }
notes_fab.viewTreeObserver.addOnGlobalLayoutListener {
val heightDiff = notes_coordinator.rootView.height - notes_coordinator.height
notes_fab.visibility = if (heightDiff > dpToPx(this, 200f)) View.INVISIBLE else View.VISIBLE
notes_fab.visibility = if (heightDiff > dpToPx(200f)) View.INVISIBLE else View.VISIBLE
}
}
fun dpToPx(context: Context, valueInDp: Float) = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, valueInDp, context.resources.displayMetrics)
override fun onResume() {
super.onResume()
invalidateOptionsMenu()
notes_view.setTextSize(TypedValue.COMPLEX_UNIT_PX, applicationContext.getTextSize())
}
override fun onPause() {
super.onPause()
saveText()
mAdapter.saveNote(mCurrentNote.id)
}
override fun onDestroy() {
@ -121,30 +118,22 @@ class MainActivity : SimpleActivity() {
}
private fun displayRenameDialog() {
RenameNoteDialog(this, mDb, mCurrentNote!!) {
RenameNoteDialog(this, mDb, mCurrentNote) {
mCurrentNote = it
current_note_title.text = it.title
}
}
private fun updateSelectedNote(id: Int) {
saveText()
mCurrentNote = mDb.getNote(id)
mNotes = mDb.getNotes()
if (mCurrentNote != null) {
config.currentNoteId = id
notes_view.setText(mCurrentNote!!.value)
current_note_title.text = mCurrentNote!!.title
}
current_note_label.visibility = if (mNotes.size <= 1) View.GONE else View.VISIBLE
config.currentNoteId = id
notes_view.setText(mCurrentNote.value)
current_note_title.text = mCurrentNote.title
current_note_title.visibility = if (mNotes.size <= 1) View.GONE else View.VISIBLE
updateWidget(applicationContext)
}
fun displayNewNoteDialog() {
NewNoteDialog(this, mDb) {
saveText()
val newNote = Note(0, it, "", TYPE_NOTE)
val id = mDb.insertNote(newNote)
updateSelectedNote(id)
@ -154,7 +143,7 @@ class MainActivity : SimpleActivity() {
}
private fun displayDeleteNotePrompt() {
val message = String.format(getString(R.string.delete_note_prompt_message), mCurrentNote!!.title)
val message = String.format(getString(R.string.delete_note_prompt_message), mCurrentNote.title)
ConfirmationDialog(this, message) {
deleteNote()
}
@ -164,7 +153,7 @@ class MainActivity : SimpleActivity() {
if (mNotes.size <= 1)
return
mDb.deleteNote(mCurrentNote!!.id)
mDb.deleteNote(mCurrentNote.id)
mNotes = mDb.getNotes()
val firstNoteId = mNotes[0].id
@ -179,22 +168,6 @@ class MainActivity : SimpleActivity() {
}
}
private fun saveText() {
if (mCurrentNote == null)
return
val newText = notes_view.value
val oldText = mCurrentNote!!.value
if (newText != oldText) {
toast(R.string.note_saved)
mCurrentNote!!.value = newText
mDb.updateNote(mCurrentNote!!)
}
hideKeyboard()
updateWidget(applicationContext)
}
private fun shareText() {
val text = notes_view.value
if (text.isEmpty()) {
@ -212,20 +185,4 @@ class MainActivity : SimpleActivity() {
startActivity(Intent.createChooser(this, shareTitle))
}
}
private fun hideKeyboard() {
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(notes_view.windowToken, 0)
}
fun updateWidget(context: Context) {
val widgetManager = AppWidgetManager.getInstance(context)
val ids = widgetManager.getAppWidgetIds(ComponentName(context, MyWidgetProvider::class.java))
Intent(context, MyWidgetProvider::class.java).apply {
action = AppWidgetManager.ACTION_APPWIDGET_UPDATE
putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids)
context.sendBroadcast(this)
}
}
}