Skip to content

Commit 98f044c

Browse files
committed
Fixed a search dialog issue
1 parent c3ee550 commit 98f044c

10 files changed

Lines changed: 110 additions & 36 deletions

File tree

.idea/assetWizardSettings.xml

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/main/java/com/michaelfotiads/xkcdreader/ui/MainActivity.kt

Lines changed: 43 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
package com.michaelfotiads.xkcdreader.ui
88

99
import android.graphics.PorterDuff
10-
import android.graphics.drawable.Drawable
1110
import android.os.Bundle
1211
import android.text.InputType
12+
import android.view.Gravity
1313
import android.view.Menu
1414
import android.view.MenuItem
1515
import androidx.appcompat.app.AppCompatActivity
@@ -24,6 +24,7 @@ import com.michaelfotiads.xkcdreader.ui.model.UiComicStrip
2424
import com.michaelfotiads.xkcdreader.ui.viewmodel.MainViewModel
2525
import com.michaelfotiads.xkcdreader.ui.viewmodel.MainViewModelFactory
2626
import com.stfalcon.frescoimageviewer.ImageViewer
27+
import com.yarolegovich.lovelydialog.LovelyInfoDialog
2728
import com.yarolegovich.lovelydialog.LovelyTextInputDialog
2829
import com.yuyakaido.android.cardstackview.CardStackView
2930
import com.yuyakaido.android.cardstackview.SwipeDirection
@@ -33,6 +34,7 @@ import dagger.android.DispatchingAndroidInjector
3334
import dagger.android.support.HasSupportFragmentInjector
3435
import es.dmoral.toasty.Toasty
3536
import kotlinx.android.synthetic.main.activity_main.card_stack_view
37+
import kotlinx.android.synthetic.main.activity_main.view_flipper
3638
import timber.log.Timber
3739
import java.util.UUID
3840
import javax.inject.Inject
@@ -49,6 +51,11 @@ class MainActivity : AppCompatActivity(), HasSupportFragmentInjector {
4951
private lateinit var viewModel: MainViewModel
5052
private lateinit var adapter: StripAdapter
5153

54+
companion object {
55+
private const val INDEX_PROGRESS = 0
56+
private const val INDEX_CONTENT = 1
57+
}
58+
5259
override fun onCreate(savedInstanceState: Bundle?) {
5360
AndroidInjection.inject(this)
5461
super.onCreate(savedInstanceState)
@@ -94,37 +101,51 @@ class MainActivity : AppCompatActivity(), HasSupportFragmentInjector {
94101
viewModel.showSearch()
95102
true
96103
}
104+
R.id.menu_item_about -> {
105+
showAboutDialog()
106+
true
107+
}
97108
else -> super.onOptionsItemSelected(item)
98109
}
99110
}
100111

101-
private fun showSearch(maxStripIndex: Int) {
102-
val icon: Drawable = ContextCompat.getDrawable(this, R.drawable.ic_search_black_24dp)!!
103-
icon.mutate()
104-
icon.setColorFilter(ContextCompat.getColor(this@MainActivity, R.color.white),
105-
PorterDuff.Mode.SRC_ATOP)
112+
private fun showAboutDialog() {
113+
LovelyInfoDialog(this)
114+
.setTopColorRes(R.color.primary_dark)
115+
.setIcon(R.drawable.ic_info_outline_black_24dp)
116+
.setIconTintColor(ContextCompat.getColor(this, R.color.white))
117+
.setMessageGravity(Gravity.CENTER_HORIZONTAL)
118+
.setTitle(R.string.info_title)
119+
.setMessage(R.string.info_message)
120+
.show()
121+
}
106122

123+
private fun showSearch(maxStripIndex: Int) {
107124
LovelyTextInputDialog(this)
108125
.setTopColorRes(R.color.primary_dark)
109-
.setIcon(icon)
126+
.setIcon(R.drawable.ic_search_black_24dp)
127+
.setIconTintColor(ContextCompat.getColor(this, R.color.white))
110128
.setMessage(getString(R.string.dialog_search_title))
111129
.setHint(getString(R.string.dialog_search_hint, maxStripIndex.toString()))
112130
.setInputType(InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_SIGNED)
113-
.setConfirmButton(android.R.string.ok) {
114-
it.isNotBlank().run {
115-
val stripNumber = it.toInt()
116-
if (stripNumber in 1..maxStripIndex) {
117-
viewModel.setSearchParameter(stripNumber)
118-
} else {
119-
Toasty.error(
120-
this@MainActivity,
121-
getString(R.string.message_page_not_found)).show()
122-
}
123-
}
124-
}
131+
.setConfirmButtonColor(ContextCompat.getColor(this, R.color.secondary_text))
132+
.setConfirmButton(android.R.string.ok) { processSearchQuery(it, maxStripIndex) }
125133
.show()
126134
}
127135

136+
private fun processSearchQuery(it: String?, maxStripIndex: Int) {
137+
if (!it.isNullOrBlank()) {
138+
val stripNumber = it!!.toInt()
139+
if (stripNumber in 1..maxStripIndex) {
140+
viewModel.setSearchParameter(stripNumber)
141+
} else {
142+
Toasty.error(
143+
this@MainActivity,
144+
getString(R.string.message_page_not_found)).show()
145+
}
146+
}
147+
}
148+
128149
private fun resetAndLoadData() {
129150
Toasty.info(this, getString(R.string.message_reset_data)).show()
130151
viewModel.resetData()
@@ -183,18 +204,21 @@ class MainActivity : AppCompatActivity(), HasSupportFragmentInjector {
183204
Timber.d("Resetting adapter data")
184205
adapter.clear()
185206
adapter.notifyDataSetChanged()
207+
view_flipper.displayedChild = INDEX_PROGRESS
186208
}
187209
}
188210

189211
private fun onResult(comicStrip: UiComicStrip) {
190212
Timber.d("Loaded item with ID ${comicStrip.number}")
213+
view_flipper.displayedChild = INDEX_CONTENT
191214
adapter.add(comicStrip)
192215
Timber.d("Adapter has ${adapter.count} items")
193216
viewModel.loadAdditionalData(adapter.count)
194217
}
195218

196219
private fun onError(uiError: UiError?) {
197220
uiError?.let {
221+
view_flipper.displayedChild = INDEX_CONTENT
198222
Toasty.error(this, getString(uiError.messageResId)).show()
199223
viewModel.clearError()
200224
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="24.0"
5+
android:viewportHeight="24.0">
6+
<path
7+
android:fillColor="#FF000000"
8+
android:pathData="M11,17h2v-6h-2v6zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8zM11,9h2L13,7h-2v2z"/>
9+
</vector>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="24.0"
5+
android:viewportHeight="24.0">
6+
<path
7+
android:fillColor="#FF000000"
8+
android:pathData="M18.4,10.6C16.55,8.99 14.15,8 11.5,8c-4.65,0 -8.58,3.03 -9.96,7.22L3.9,16c1.05,-3.19 4.05,-5.5 7.6,-5.5 1.95,0 3.73,0.72 5.12,1.88L13,16h9V7l-3.6,3.6z"/>
9+
</vector>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="24.0"
5+
android:viewportHeight="24.0">
6+
<path
7+
android:fillColor="#FF000000"
8+
android:pathData="M12.5,8c-2.65,0 -5.05,0.99 -6.9,2.6L2,7v9h9l-3.62,-3.62c1.39,-1.16 3.16,-1.88 5.12,-1.88 3.54,0 6.55,2.31 7.6,5.5l2.37,-0.78C21.08,11.03 17.15,8 12.5,8z"/>
9+
</vector>

app/src/main/res/layout/activity_main.xml

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,31 @@
77
android:layout_height="match_parent"
88
tools:context=".ui.MainActivity">
99

10-
<com.yuyakaido.android.cardstackview.CardStackView
11-
android:id="@+id/card_stack_view"
10+
<ViewFlipper
11+
android:id="@+id/view_flipper"
1212
android:layout_width="match_parent"
13-
android:layout_height="match_parent"
14-
android:background="@color/grey_300"
15-
app:elevationEnabled="true"
16-
app:leftOverlay="@layout/card_overlay_left"
17-
app:rightOverlay="@layout/card_overlay_right"
18-
app:scaleDiff="0.02"
19-
app:visibleCount="4"
20-
app:stackFrom="top"
21-
app:translationDiff="8"/>
13+
android:layout_height="match_parent">
14+
15+
<ProgressBar
16+
android:layout_width="wrap_content"
17+
android:layout_height="wrap_content"
18+
android:layout_gravity="center"
19+
android:indeterminate="true"/>
20+
21+
<com.yuyakaido.android.cardstackview.CardStackView
22+
android:id="@+id/card_stack_view"
23+
android:layout_width="match_parent"
24+
android:layout_height="match_parent"
25+
android:background="@color/grey_300"
26+
app:elevationEnabled="true"
27+
app:leftOverlay="@layout/card_overlay_left"
28+
app:rightOverlay="@layout/card_overlay_right"
29+
app:scaleDiff="0.02"
30+
app:stackFrom="top"
31+
app:translationDiff="8"
32+
app:visibleCount="4"/>
33+
34+
</ViewFlipper>
35+
2236

2337
</androidx.coordinatorlayout.widget.CoordinatorLayout>

app/src/main/res/layout/card_overlay_left.xml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@
1010
android:layout_width="@dimen/arrow_width"
1111
android:layout_height="@dimen/arrow_height"
1212
android:layout_gravity="center"
13-
android:alpha="0.8"
1413
android:contentDescription="@string/ct_swipe_left_arrow"
1514
android:tint="@color/accent"
16-
app:srcCompat="@drawable/ic_arrow_back_24dp"/>
15+
app:srcCompat="@drawable/ic_undo_black_24dp"/>
1716
</FrameLayout>

app/src/main/res/layout/card_overlay_right.xml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@
1010
android:layout_width="@dimen/arrow_width"
1111
android:layout_height="@dimen/arrow_height"
1212
android:layout_gravity="center"
13-
android:alpha="0.8"
1413
android:contentDescription="@string/ct_swipe_right_arrow"
1514
android:tint="@color/accent"
16-
app:srcCompat="@drawable/ic_arrow_forward_24dp"/>
15+
app:srcCompat="@drawable/ic_redo_black_24dp"/>
1716
</FrameLayout>

app/src/main/res/menu/menu_main.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,10 @@
1414
android:title="@string/menu_title_refresh"
1515
app:showAsAction="ifRoom"/>
1616

17+
<item
18+
android:id="@+id/menu_item_about"
19+
android:icon="@drawable/ic_info_outline_black_24dp"
20+
android:title="@string/menu_title_about"
21+
app:showAsAction="ifRoom"/>
22+
1723
</menu>

app/src/main/res/values/strings.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121

2222
<string name="menu_title_search">Search</string>
2323
<string name="menu_title_refresh">Refresh</string>
24+
<string name="menu_title_about">About</string>
25+
2426
<string name="comic_strip_info">"#%1$s - %2$s</string>
2527

2628
<string name="message_reset_data">Getting the latest comic strip…</string>
@@ -29,5 +31,8 @@
2931

3032
<string name="dialog_search_title">Enter a comic ID</string>
3133
<string name="dialog_search_hint">1 - %1$s</string>
34+
<string name="info_title">About the app</string>
35+
<string name="info_message">"This is a fan made app by Michael Fotiadis.
36+
\nAll rights reserved 2018"</string>
3237

3338
</resources>

0 commit comments

Comments
 (0)