ソースを参照

Added kotlin android extensions plugin

sirekanyan 8 年 前
コミット
7a6d7c81db

+ 1 - 0
app/build.gradle

@@ -1,5 +1,6 @@
 apply plugin: 'com.android.application'
 apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-android-extensions'
 
 android {
     compileSdkVersion 27

+ 13 - 36
app/src/main/java/me/vadik/knigopis/BookActivity.kt

@@ -3,13 +3,9 @@ package me.vadik.knigopis
 import android.content.Context
 import android.content.Intent
 import android.os.Bundle
-import android.support.v4.view.ViewPager
 import android.support.v7.app.AppCompatActivity
-import android.support.v7.widget.Toolbar
-import android.view.View
 import android.view.View.*
-import android.widget.CheckBox
-import android.widget.TextView
+import kotlinx.android.synthetic.main.book_edit.*
 import me.vadik.knigopis.api.BookCoverSearch
 import me.vadik.knigopis.api.BookCoverSearchImpl
 import me.vadik.knigopis.api.Endpoint
@@ -47,26 +43,6 @@ class BookActivity : AppCompatActivity() {
         getSharedPreferences("knigopis", MODE_PRIVATE)
     )
   }
-  private val toolbar by lazy { findView<Toolbar>(R.id.toolbar) }
-  private val titleEditText by lazy { findView<TextView>(R.id.book_title_edit_text) }
-  private val authorEditText by lazy { findView<TextView>(R.id.book_author_edit_text) }
-  private val dayEditText by lazy { findView<TextView>(R.id.book_day_edit_text) }
-  private val monthEditText by lazy { findView<TextView>(R.id.book_month_edit_text) }
-  private val yearEditText by lazy { findView<TextView>(R.id.book_year_edit_text) }
-  private val readCheckbox by lazy { findView<CheckBox>(R.id.book_read_checkbox) }
-  private val coverViewPager by lazy {
-    findView<ViewPager>(R.id.cover_image_views).apply {
-      offscreenPageLimit = IMAGE_PRELOAD_COUNT
-    }
-  }
-  private val notesTextArea by lazy { findView<TextView>(R.id.notes_text_area) }
-  private val dateInputViews by lazy {
-    arrayOf<View>(
-        findView(R.id.book_day_input),
-        findView(R.id.book_month_input),
-        findView(R.id.book_year_input)
-    )
-  }
   private var bookId: String? = null
 
   override fun onCreate(savedInstanceState: Bundle?) {
@@ -121,18 +97,19 @@ class BookActivity : AppCompatActivity() {
         else -> false
       }
     }
+    coverImageViews.offscreenPageLimit = IMAGE_PRELOAD_COUNT
     titleEditText.setOnFocusChangeListener { _, focus ->
       val editable = titleEditText.editableText
       if (!focus && !editable.isEmpty()) {
         imageSearch.search(editable.toString())
             .subscribe({ urls ->
-              coverViewPager.visibility = INVISIBLE
-              coverViewPager.adapter = CoverPagerAdapter(urls,
+              coverImageViews.visibility = INVISIBLE
+              coverImageViews.adapter = CoverPagerAdapter(urls,
                   onClick = { position, last ->
-                    coverViewPager.currentItem = if (last) 0 else position + 1
+                    coverImageViews.currentItem = if (last) 0 else position + 1
                   },
                   onFirstLoaded = {
-                    coverViewPager.visibility = VISIBLE
+                    coverImageViews.visibility = VISIBLE
                   })
             }, {
               logError("cannot load thumbnail", it)
@@ -140,7 +117,7 @@ class BookActivity : AppCompatActivity() {
       }
     }
     readCheckbox.setOnCheckedChangeListener { _, checked ->
-      dateInputViews.forEach { view ->
+      arrayOf(bookDayInput, bookMonthInput, bookYearInput).forEach { view ->
         view.visibility = if (checked) VISIBLE else GONE
       }
     }
@@ -155,20 +132,20 @@ class BookActivity : AppCompatActivity() {
             .io2main()
             .doOnSuccess { finishedBook ->
               readCheckbox.isChecked = true
-              yearEditText.text = finishedBook.readYear
-              monthEditText.text = finishedBook.readMonth
-              dayEditText.text = finishedBook.readDay
+              yearEditText.setText(finishedBook.readYear)
+              monthEditText.setText(finishedBook.readMonth)
+              dayEditText.setText(finishedBook.readDay)
             }
       } else {
         api.getPlannedBook(id)
             .io2main()
             .doOnSuccess { plannedBook ->
               readCheckbox.isChecked = false
-              notesTextArea.text = plannedBook.notes
+              notesTextArea.setText(plannedBook.notes)
             }
       }.subscribe({ book ->
-        titleEditText.text = book.title
-        authorEditText.text = book.author
+        titleEditText.setText(book.title)
+        authorEditText.setText(book.author)
       }, { logError("cannot get planned book", it) })
     }
   }

+ 9 - 13
app/src/main/java/me/vadik/knigopis/MainActivity.kt

@@ -6,7 +6,6 @@ import android.net.Uri
 import android.os.Bundle
 import android.provider.Settings
 import android.support.design.widget.BottomNavigationView
-import android.support.design.widget.FloatingActionButton
 import android.support.v7.app.AlertDialog
 import android.support.v7.app.AppCompatActivity
 import android.support.v7.widget.LinearLayoutManager
@@ -17,6 +16,7 @@ import android.view.View
 import android.widget.TextView
 import com.tbruyelle.rxpermissions2.RxPermissions
 import io.reactivex.rxkotlin.Singles
+import kotlinx.android.synthetic.main.activity_main.*
 import me.vadik.knigopis.adapters.BooksAdapter
 import me.vadik.knigopis.api.BookCoverSearchImpl
 import me.vadik.knigopis.api.Endpoint
@@ -50,11 +50,7 @@ class MainActivity : AppCompatActivity(), Router {
       visibility = if (config.isDevMode()) View.VISIBLE else View.GONE
     }
   }
-  private val fab by lazy { findView<FloatingActionButton>(R.id.add_book_button) }
-  private val progressBar by lazy { findView<View>(R.id.books_progress_bar) }
-  private val booksPlaceholder by lazy { findView<TextView>(R.id.books_placeholder) }
   private var needUpdate = false
-  private lateinit var booksRecyclerView: RecyclerView
   private lateinit var loginOption: MenuItem
   private lateinit var currentTab: CurrentTab
 
@@ -64,10 +60,10 @@ class MainActivity : AppCompatActivity(), Router {
     }
     super.onCreate(savedInstanceState)
     setContentView(R.layout.activity_main)
-    booksRecyclerView = initRecyclerView(findView(R.id.books_recycler_view))
+    initRecyclerView(booksRecyclerView)
     initNavigationView()
-    initToolbar(findView(R.id.toolbar))
-    fab.setOnClickListener {
+    initToolbar(toolbar)
+    addBookButton.setOnClickListener {
       startActivityForResult(createNewBookIntent(), BOOK_REQUEST_CODE)
     }
   }
@@ -217,7 +213,7 @@ class MainActivity : AppCompatActivity(), Router {
 
   private fun setCurrentTab(tab: CurrentTab) {
     needUpdate = false
-    fab.hide()
+    addBookButton.hide()
     currentTab = tab
     when (tab) {
       HOME_TAB -> refreshHomeTab()
@@ -227,7 +223,7 @@ class MainActivity : AppCompatActivity(), Router {
   }
 
   private fun refreshHomeTab() {
-    if (progressBar.alpha > 0) {
+    if (booksProgressBar.alpha > 0) {
       return
     }
     booksRecyclerView.adapter = allBooksAdapter
@@ -248,11 +244,11 @@ class MainActivity : AppCompatActivity(), Router {
       }
     }.io2main()
         .doOnSubscribe {
-          progressBar.show()
+          booksProgressBar.show()
           booksPlaceholder.hide()
         }
         .doAfterTerminate {
-          progressBar.hide()
+          booksProgressBar.hide()
         }
         .subscribe({ books ->
           if (books.isEmpty()) {
@@ -261,7 +257,7 @@ class MainActivity : AppCompatActivity(), Router {
           }
           allBooks.addAll(books)
           allBooksAdapter.notifyDataSetChanged()
-          fab.show()
+          addBookButton.show()
         }, {
           logError("cannot load books", it)
           booksPlaceholder.setText(

+ 4 - 4
app/src/main/res/layout/activity_main.xml

@@ -27,13 +27,13 @@
         android:layout_weight="1">
 
         <android.support.v7.widget.RecyclerView
-            android:id="@+id/books_recycler_view"
+            android:id="@+id/booksRecyclerView"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             tools:listitem="@layout/book" />
 
         <ProgressBar
-            android:id="@+id/books_progress_bar"
+            android:id="@+id/booksProgressBar"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_gravity="center"
@@ -41,7 +41,7 @@
             tools:alpha="1" />
 
         <TextView
-            android:id="@+id/books_placeholder"
+            android:id="@+id/booksPlaceholder"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_gravity="center"
@@ -55,7 +55,7 @@
             tools:visibility="visible" />
 
         <android.support.design.widget.FloatingActionButton
-            android:id="@+id/add_book_button"
+            android:id="@+id/addBookButton"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_gravity="end|bottom"

+ 19 - 19
app/src/main/res/layout/book_edit.xml

@@ -35,11 +35,11 @@
                 android:layout_height="wrap_content"
                 android:layout_margin="16dp"
                 app:layout_constraintLeft_toLeftOf="parent"
-                app:layout_constraintRight_toLeftOf="@id/cover_image_views"
+                app:layout_constraintRight_toLeftOf="@id/coverImageViews"
                 app:layout_constraintTop_toTopOf="parent">
 
                 <EditText
-                    android:id="@+id/book_title_edit_text"
+                    android:id="@+id/titleEditText"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:hint="@string/book_hint_title"
@@ -54,11 +54,11 @@
                 android:layout_height="wrap_content"
                 android:layout_margin="16dp"
                 app:layout_constraintLeft_toLeftOf="parent"
-                app:layout_constraintRight_toLeftOf="@id/cover_image_views"
+                app:layout_constraintRight_toLeftOf="@id/coverImageViews"
                 app:layout_constraintTop_toBottomOf="@id/book_title_input">
 
                 <EditText
-                    android:id="@+id/book_author_edit_text"
+                    android:id="@+id/authorEditText"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:hint="@string/book_hint_author"
@@ -68,7 +68,7 @@
             </android.support.design.widget.TextInputLayout>
 
             <android.support.v4.view.ViewPager
-                android:id="@+id/cover_image_views"
+                android:id="@+id/coverImageViews"
                 android:layout_width="0dp"
                 android:layout_height="0dp"
                 android:layout_marginEnd="16dp"
@@ -82,19 +82,19 @@
                 tools:visibility="visible" />
 
             <android.support.design.widget.TextInputLayout
-                android:id="@+id/book_year_input"
+                android:id="@+id/bookYearInput"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_margin="16dp"
                 android:visibility="gone"
                 app:layout_constraintHorizontal_chainStyle="packed"
                 app:layout_constraintLeft_toLeftOf="parent"
-                app:layout_constraintRight_toLeftOf="@+id/book_month_input"
+                app:layout_constraintRight_toLeftOf="@+id/bookMonthInput"
                 app:layout_constraintTop_toBottomOf="@id/book_author_input"
                 tools:visibility="visible">
 
                 <EditText
-                    android:id="@+id/book_year_edit_text"
+                    android:id="@+id/yearEditText"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:hint="@string/book_hint_year"
@@ -104,18 +104,18 @@
             </android.support.design.widget.TextInputLayout>
 
             <android.support.design.widget.TextInputLayout
-                android:id="@+id/book_month_input"
+                android:id="@+id/bookMonthInput"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_margin="16dp"
                 android:visibility="gone"
-                app:layout_constraintLeft_toRightOf="@id/book_year_input"
-                app:layout_constraintRight_toLeftOf="@+id/book_day_input"
+                app:layout_constraintLeft_toRightOf="@id/bookYearInput"
+                app:layout_constraintRight_toLeftOf="@+id/bookDayInput"
                 app:layout_constraintTop_toBottomOf="@id/book_author_input"
                 tools:visibility="visible">
 
                 <EditText
-                    android:id="@+id/book_month_edit_text"
+                    android:id="@+id/monthEditText"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:hint="@string/book_hint_month"
@@ -124,18 +124,18 @@
             </android.support.design.widget.TextInputLayout>
 
             <android.support.design.widget.TextInputLayout
-                android:id="@+id/book_day_input"
+                android:id="@+id/bookDayInput"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_margin="16dp"
                 android:visibility="gone"
-                app:layout_constraintLeft_toRightOf="@id/book_month_input"
+                app:layout_constraintLeft_toRightOf="@id/bookMonthInput"
                 app:layout_constraintRight_toRightOf="parent"
                 app:layout_constraintTop_toBottomOf="@id/book_author_input"
                 tools:visibility="visible">
 
                 <EditText
-                    android:id="@+id/book_day_edit_text"
+                    android:id="@+id/dayEditText"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:hint="@string/book_hint_day"
@@ -144,7 +144,7 @@
             </android.support.design.widget.TextInputLayout>
 
             <CheckBox
-                android:id="@+id/book_read_checkbox"
+                android:id="@+id/readCheckbox"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_margin="16dp"
@@ -152,7 +152,7 @@
                 android:paddingStart="8dp"
                 android:text="@string/book_read_checkbox"
                 android:textSize="16sp"
-                app:layout_constraintTop_toBottomOf="@id/book_year_input"
+                app:layout_constraintTop_toBottomOf="@id/bookYearInput"
                 tools:checked="true" />
 
             <android.support.design.widget.TextInputLayout
@@ -160,10 +160,10 @@
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_margin="16dp"
-                app:layout_constraintTop_toBottomOf="@id/book_read_checkbox">
+                app:layout_constraintTop_toBottomOf="@id/readCheckbox">
 
                 <EditText
-                    android:id="@+id/notes_text_area"
+                    android:id="@+id/notesTextArea"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:hint="@string/book_hint_notes"