aboutsummaryrefslogtreecommitdiff
path: root/app/src
diff options
context:
space:
mode:
Diffstat (limited to 'app/src')
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/FrostApp.kt2
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/SelectorActivity.kt16
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/dbflow/CookiesDb.kt5
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/views/AccountItem.kt71
-rw-r--r--app/src/main/res/layout/activity_selector.xml47
-rw-r--r--app/src/main/res/layout/view_account.xml18
-rw-r--r--app/src/main/res/values/ids.xml4
-rw-r--r--app/src/main/res/values/strings.xml2
8 files changed, 163 insertions, 2 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/FrostApp.kt b/app/src/main/kotlin/com/pitchedapps/frost/FrostApp.kt
index b7b6b2d5..1e9fe6d3 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/FrostApp.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/FrostApp.kt
@@ -40,7 +40,7 @@ class FrostApp : Application() {
refWatcher = LeakCanary.install(this)
if (BuildConfig.DEBUG) {
Timber.plant(DebugTree())
- LeakCanary.enableDisplayLeakActivity(this)
+// LeakCanary.enableDisplayLeakActivity(this)
} else {
Fabric.with(this, Crashlytics(), Answers())
Timber.plant(CrashReportingTree())
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/SelectorActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/SelectorActivity.kt
index 5cbd08bc..84e5592c 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/SelectorActivity.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/SelectorActivity.kt
@@ -1,10 +1,26 @@
package com.pitchedapps.frost
+import android.os.Bundle
import android.support.v7.app.AppCompatActivity
+import android.support.v7.widget.RecyclerView
+import butterknife.ButterKnife
+import com.mikepenz.fastadapter.FastAdapter
+import com.pitchedapps.frost.utils.bindView
+import com.pitchedapps.frost.views.AccountItem
/**
* Created by Allan Wang on 2017-06-04.
*/
class SelectorActivity : AppCompatActivity() {
+ val recycler: RecyclerView by bindView(R.id.selector_recycler)
+ val adapter = FastItemAdapter<AccountItem>()
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_selector)
+ ButterKnife.bind(this)
+ recycler.adapter = adapter
+ adapter.addal
+ }
} \ No newline at end of file
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/dbflow/CookiesDb.kt b/app/src/main/kotlin/com/pitchedapps/frost/dbflow/CookiesDb.kt
index b2f29656..e48814cf 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/dbflow/CookiesDb.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/dbflow/CookiesDb.kt
@@ -36,8 +36,11 @@ data class CookieModel(@PrimaryKey var id: Long = Prefs.userIdDefault, var name:
fun loadFbCookie(id: Long): CookieModel? = (select from CookieModel::class where (CookieModel_Table.id eq id)).querySingle()
fun loadFbCookie(name: String): CookieModel? = (select from CookieModel::class where (CookieModel_Table.name eq name)).querySingle()
+/**
+ * Loads cookies sorted by name
+ */
fun loadFbCookiesAsync(callback: (cookies: List<CookieModel>) -> Unit) {
- (select from CookieModel::class).async().queryListResultCallback { _, tResult -> callback.invoke(tResult) }.execute()
+ (select from CookieModel::class).orderBy(CookieModel_Table.name, true).async().queryListResultCallback { _, tResult -> callback.invoke(tResult) }.execute()
}
fun saveFbCookie(cookie: CookieModel, callback: (() -> Unit)? = null) {
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/views/AccountItem.kt b/app/src/main/kotlin/com/pitchedapps/frost/views/AccountItem.kt
new file mode 100644
index 00000000..9d6099c6
--- /dev/null
+++ b/app/src/main/kotlin/com/pitchedapps/frost/views/AccountItem.kt
@@ -0,0 +1,71 @@
+package com.pitchedapps.frost.views
+
+import android.graphics.drawable.Drawable
+import android.support.v7.widget.AppCompatTextView
+import android.support.v7.widget.RecyclerView
+import android.view.View
+import android.widget.ImageView
+import butterknife.ButterKnife
+import com.bumptech.glide.Glide
+import com.bumptech.glide.load.DataSource
+import com.bumptech.glide.load.engine.GlideException
+import com.bumptech.glide.request.RequestListener
+import com.bumptech.glide.request.target.Target
+import com.mikepenz.fastadapter.items.AbstractItem
+import com.pitchedapps.frost.R
+import com.pitchedapps.frost.facebook.PROFILE_PICTURE_URL
+import com.pitchedapps.frost.utils.bindView
+
+/**
+ * Created by Allan Wang on 2017-06-05.
+ */
+class AccountItem(val id: Long, val name: String) : AbstractItem<AccountItem, AccountItem.ViewHolder>() {
+ constructor() : this(-1L, "")
+
+ override fun getType(): Int = R.id.item_account
+
+ override fun getViewHolder(v: View) = ViewHolder(v)
+
+ override fun getLayoutRes(): Int = R.layout.view_account
+
+ override fun bindView(viewHolder: ViewHolder, payloads: List<Any>) {
+ super.bindView(viewHolder, payloads)
+ with(viewHolder) {
+ text.visibility = View.INVISIBLE
+ if (id != -1L) {
+ text.text = name
+ Glide.with(itemView).load(PROFILE_PICTURE_URL(id)).listener(object : RequestListener<Drawable> {
+ override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean {
+ text.fadeIn()
+ return false
+ }
+
+ override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Drawable>?, isFirstResource: Boolean): Boolean {
+ text.fadeIn()
+ return false
+ }
+ }).into(image)
+ } else {
+ text.text = itemView.context.getString(R.string.add_account)
+ //todo add plus image
+ }
+ }
+ }
+
+ override fun unbindView(holder: ViewHolder) {
+ super.unbindView(holder)
+ with(holder) {
+ text.text = null
+ image.setImageDrawable(null)
+ }
+ }
+
+ class ViewHolder(v: View) : RecyclerView.ViewHolder(v) {
+ val image: ImageView by bindView(R.id.account_image)
+ val text: AppCompatTextView by bindView(R.id.account_text)
+
+ init {
+ ButterKnife.bind(v)
+ }
+ }
+} \ No newline at end of file
diff --git a/app/src/main/res/layout/activity_selector.xml b/app/src/main/res/layout/activity_selector.xml
new file mode 100644
index 00000000..f238d2ff
--- /dev/null
+++ b/app/src/main/res/layout/activity_selector.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_marginBottom="@dimen/activity_vertical_margin"
+ android:layout_marginEnd="@dimen/activity_horizontal_margin"
+ android:layout_marginStart="@dimen/activity_horizontal_margin"
+ android:layout_marginTop="@dimen/activity_vertical_margin">
+
+ <android.support.v7.widget.AppCompatTextView
+ android:id="@+id/text_select_account"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:text="@string/select_facebook_account"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintHorizontal_bias="0.5"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ tools:layout_editor_absoluteX="0dp"
+ tools:layout_editor_absoluteY="0dp" />
+
+ <android.support.v7.widget.RecyclerView
+ android:id="@+id/selector_recycler"
+ android:layout_width="wrap_content"
+ android:layout_height="0dp"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintHorizontal_bias="0.5"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/text_select_account"
+ tools:layout_editor_absoluteX="0dp"
+ tools:layout_editor_absoluteY="0dp" />
+
+ <android.support.v7.widget.AppCompatTextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:text="@string/select_facebook_account"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintHorizontal_bias="0.5"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/selector_recycler"
+ tools:layout_editor_absoluteX="8dp"
+ tools:layout_editor_absoluteY="0dp" />
+</android.support.constraint.ConstraintLayout> \ No newline at end of file
diff --git a/app/src/main/res/layout/view_account.xml b/app/src/main/res/layout/view_account.xml
new file mode 100644
index 00000000..676b46d6
--- /dev/null
+++ b/app/src/main/res/layout/view_account.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:padding="@dimen/activity_vertical_margin">
+
+ <ImageView
+ android:id="@+id/account_image"
+ android:layout_width="200dp"
+ android:layout_height="200dp" />
+
+ <android.support.v7.widget.AppCompatTextView
+ android:id="@+id/account_text"
+ android:layout_width="200dp"
+ android:layout_height="wrap_content"
+ android:maxLines="1" />
+</LinearLayout> \ No newline at end of file
diff --git a/app/src/main/res/values/ids.xml b/app/src/main/res/values/ids.xml
new file mode 100644
index 00000000..8df89eb6
--- /dev/null
+++ b/app/src/main/res/values/ids.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <item name="item_account" type="id" />
+</resources> \ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index f99bd0ce..7287c4c0 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -25,4 +25,6 @@
<string name="loading_account">Getting everything ready…</string>
<string name="welcome">Welcome %s</string>
<string name="login">Login</string>
+ <string name="select_facebook_account">Select Facebook Account</string>
+ <string name="add_account">Add Account</string>
</resources>