Skip to content

Commit 895b6d7

Browse files
committed
Fixed multiple issues
1 parent 5945184 commit 895b6d7

9 files changed

Lines changed: 100 additions & 52 deletions

File tree

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
android:label="@string/title_activity_new_ui"
6666
android:resizeableActivity="true"
6767
android:theme="@style/AppThemeTransluscent"
68+
android:windowSoftInputMode="adjustResize"
6869
tools:targetApi="n"/>
6970
<activity
7071
android:name=".activities.IntroActivity"

app/src/main/java/com/adsamcik/signalcollector/activities/SettingsActivity.kt

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import android.app.AlertDialog
44
import android.app.NotificationManager
55
import android.content.Context
66
import android.content.Intent
7+
import android.content.SharedPreferences
78
import android.os.Bundle
89
import android.support.annotation.StringRes
910
import android.support.v4.app.NotificationCompat
@@ -24,6 +25,7 @@ import com.adsamcik.signalcollector.notifications.Notifications
2425
import com.adsamcik.signalcollector.services.ActivityService
2526
import com.adsamcik.signalcollector.services.ActivityWakerService
2627
import com.adsamcik.signalcollector.signin.Signin
28+
import com.adsamcik.signalcollector.uitools.ColorSupervisor
2729
import com.adsamcik.signalcollector.utility.Assist
2830
import com.adsamcik.signalcollector.utility.Preferences
2931
import com.adsamcik.signalcollector.utility.Tips
@@ -271,6 +273,8 @@ class SettingsActivity : DetailActivity(), PreferenceFragmentCompat.OnPreference
271273

272274
}
273275

276+
private lateinit var styleChangeListener: SharedPreferences.OnSharedPreferenceChangeListener
277+
274278
private fun initializeStyle(caller: PreferenceFragmentCompat) {
275279
val morningKey = getString(R.string.settings_color_morning_key)
276280
val morning = caller.findPreference(morningKey) as ColorSupportPreference
@@ -284,7 +288,7 @@ class SettingsActivity : DetailActivity(), PreferenceFragmentCompat.OnPreference
284288
val dayKey = getString(R.string.settings_color_day_key)
285289
val day = caller.findPreference(dayKey) as ColorSupportPreference
286290

287-
val onPreferenceChange = android.support.v7.preference.Preference.OnPreferenceChangeListener { _, newValue ->
291+
val onStyleChange = android.support.v7.preference.Preference.OnPreferenceChangeListener { _, newValue ->
288292
val newValueInt = (newValue as String).toInt()
289293
night.isVisible = newValueInt >= 1
290294

@@ -294,11 +298,13 @@ class SettingsActivity : DetailActivity(), PreferenceFragmentCompat.OnPreference
294298
true
295299
}
296300

297-
val stylePreference = caller.findPreference(getString(R.string.settings_style_mode_key)) as ListPreference
298-
stylePreference.onPreferenceChangeListener = onPreferenceChange
299-
onPreferenceChange.onPreferenceChange(stylePreference, stylePreference.value)
301+
val defaultColorKey = getString(R.string.settings_color_default_key)
302+
val styleKey = getString(R.string.settings_style_mode_key)
303+
val stylePreference = caller.findPreference(styleKey) as ListPreference
304+
stylePreference.onPreferenceChangeListener = onStyleChange
305+
onStyleChange.onPreferenceChange(stylePreference, stylePreference.value)
300306

301-
caller.findPreference(getString(R.string.settings_color_default_key)).setOnPreferenceClickListener {
307+
caller.findPreference(defaultColorKey).setOnPreferenceClickListener {
302308
val sp = it.sharedPreferences
303309
sp.edit {
304310
remove(morningKey)
@@ -314,6 +320,26 @@ class SettingsActivity : DetailActivity(), PreferenceFragmentCompat.OnPreference
314320

315321
true
316322
}
323+
324+
styleChangeListener = SharedPreferences.OnSharedPreferenceChangeListener { preferences, key ->
325+
when (key) {
326+
styleKey, defaultColorKey -> ColorSupervisor.initializeFromPreferences(this)
327+
morningKey, dayKey, eveningKey, nightKey -> {
328+
if (preferences.contains(key)) {
329+
val index = when (key) {
330+
morningKey -> 0
331+
dayKey -> if (stylePreference.value.toInt() <= 1) 0 else 1
332+
eveningKey -> 2
333+
nightKey -> if (stylePreference.value.toInt() == 1) 1 else 3
334+
else -> -1
335+
}
336+
ColorSupervisor.updateColorAt(index, preferences.getInt(key, 0))
337+
}
338+
}
339+
}
340+
}
341+
342+
stylePreference.sharedPreferences.registerOnSharedPreferenceChangeListener(styleChangeListener)
317343
}
318344

319345

app/src/main/java/com/adsamcik/signalcollector/activities/UploadReportsActivity.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,6 @@ class UploadReportsActivity : DetailActivity() {
7474
t.addData(resources.getString(R.string.recent_upload_wifi_new), uploadStat.newWifi.toString())
7575
t.addData(resources.getString(R.string.recent_upload_cell), uploadStat.cell.toString())
7676
t.addData(resources.getString(R.string.recent_upload_cell_new), uploadStat.newCell.toString())
77-
t.addData(resources.getString(R.string.recent_upload_noise), uploadStat.noiseCollections.toString())
78-
t.addData(resources.getString(R.string.recent_upload_noise_new), uploadStat.newNoiseLocations.toString())
7977
return t
8078
}
8179
}

app/src/main/java/com/adsamcik/signalcollector/data/UploadStats.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,10 @@ import com.adsamcik.signalcollector.R
66
import com.vimeo.stag.UseStag
77

88
@UseStag
9-
class UploadStats(var time: Long, var wifi: Int, var newWifi: Int, var cell: Int, var newCell: Int, var collections: Int, var newLocations: Int, var noiseCollections: Int, var uploadSize: Long, var newNoiseLocations: Int) {
9+
class UploadStats(var time: Long, var wifi: Int, var newWifi: Int, var cell: Int, var newCell: Int, var collections: Int, var newLocations: Int, var uploadSize: Long) {
1010

1111
fun generateNotificationText(resources: Resources): String {
1212
val stringBuilder = StringBuilder()
13-
val newLocations = this.newLocations + this.newNoiseLocations
1413
stringBuilder.append(resources.getString(R.string.notification_found)).append(' ')
1514
stringBuilder.append(resources.getQuantityString(R.plurals.new_locations, newLocations, newLocations)).append(", ")
1615

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.adsamcik.signalcollector.extensions
2+
3+
/**
4+
* Returns a pseudo-random short n, where n >= 0 && n < 32767.
5+
* This method reuses a single instance of Random.
6+
* This method is thread-safe because access to the Random is synchronized, but this harms scalability.
7+
* Applications may find a performance benefit from allocating a Random for each of their threads.
8+
*/
9+
fun Math.shortRandom(): Short {
10+
return (Math.random() * Short.MAX_VALUE).toShort()
11+
}

app/src/main/java/com/adsamcik/signalcollector/fragments/FragmentNewMap.kt

Lines changed: 36 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ class FragmentNewMap : Fragment(), GoogleMap.OnCameraIdleListener, OnMapReadyCal
120120
if (keyboardManager != null) {
121121
val keyboardManager = keyboardManager!!
122122
keyboardManager.closeKeyboard()
123-
keyboardManager.removeAllListeners()
123+
keyboardManager.removeKeyboardListener(keyboardListener)
124124
keyboardInitialized.set(false)
125125
}
126126
}
@@ -208,48 +208,50 @@ class FragmentNewMap : Fragment(), GoogleMap.OnCameraIdleListener, OnMapReadyCal
208208
this.type = type
209209
}
210210

211+
private val keyboardListener: KeyboardListener = { opened, keyboardHeight ->
212+
val (position, navbarHeight) = navbarSize(activity!!)
213+
//check payloads
214+
when (opened) {
215+
true -> {
216+
if (position == Assist.NavBarPosition.BOTTOM) {
217+
val top = searchOriginalMargin +
218+
keyboardHeight +
219+
map_menu_button.height +
220+
edittext_map_search.paddingBottom +
221+
edittext_map_search.paddingTop + edittext_map_search.height
222+
223+
map_ui_parent.setBottomMargin(searchOriginalMargin + keyboardHeight)
224+
map?.setPadding(map_ui_parent.paddingLeft, 0, 0, top)
225+
}
226+
}
227+
false -> {
228+
if (position == Assist.NavBarPosition.BOTTOM) {
229+
map_ui_parent.setBottomMargin(searchOriginalMargin + navbarHeight.y + 32.dpAsPx)
230+
map?.setPadding(0, 0, 0, navbarHeight.y)
231+
} else {
232+
map_ui_parent.setBottomMargin(searchOriginalMargin + 32.dpAsPx)
233+
map?.setPadding(0, 0, 0, 0)
234+
}
235+
}
236+
}
237+
238+
//Update map_menu_button position after UI has been redrawn
239+
map_menu_button.post {
240+
map_menu_button.moveToState(map_menu_button.state, false)
241+
}
242+
}
243+
244+
211245
private fun initializeKeyboardDetection() {
212246
if (keyboardInitialized.get())
213247
keyboardManager!!.onDisplaySizeChanged()
214248
else {
215-
val (position, navbarHeight) = navbarSize(activity!!)
216249
if (keyboardManager == null) {
217250
searchOriginalMargin = (map_ui_parent.layoutParams as ConstraintLayout.LayoutParams).bottomMargin
218251
keyboardManager = KeyboardManager(fragmentView!!.rootView)
219252
}
220253

221-
keyboardManager!!.addKeyboardListener { opened, keyboardHeight ->
222-
//Log.d("TAG", "State is " + (if (opened) "OPEN" else "CLOSED") + " with margin " + (if (opened) searchOriginalMargin else (searchOriginalMargin + navbarHeight)))
223-
when (opened) {
224-
true -> {
225-
if (position == Assist.NavBarPosition.BOTTOM) {
226-
val top = searchOriginalMargin +
227-
keyboardHeight +
228-
map_menu_button.height +
229-
edittext_map_search.paddingBottom +
230-
edittext_map_search.paddingTop + edittext_map_search.height
231-
232-
map_ui_parent.setBottomMargin(searchOriginalMargin + keyboardHeight)
233-
map?.setPadding(map_ui_parent.paddingLeft, 0, 0, top)
234-
}
235-
}
236-
false -> {
237-
if (position == Assist.NavBarPosition.BOTTOM) {
238-
map_ui_parent.setBottomMargin(searchOriginalMargin + navbarHeight.y + 32.dpAsPx)
239-
map?.setPadding(0, 0, 0, navbarHeight.y)
240-
} else {
241-
map_ui_parent.setBottomMargin(searchOriginalMargin + 32.dpAsPx)
242-
map?.setPadding(0, 0, 0, 0)
243-
}
244-
}
245-
}
246-
247-
//Update map_menu_button position after UI has been redrawn
248-
map_menu_button.post {
249-
map_menu_button.moveToState(map_menu_button.state, false)
250-
}
251-
}
252-
254+
keyboardManager!!.addKeyboardListener(keyboardListener)
253255
keyboardInitialized.set(true)
254256
}
255257
}

app/src/main/java/com/adsamcik/signalcollector/fragments/FragmentNewStats.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,8 @@ package com.adsamcik.signalcollector.fragments
33
import android.app.Activity
44
import android.content.Intent
55
import android.os.Bundle
6-
import android.support.design.widget.FloatingActionButton
76
import android.support.v4.app.Fragment
8-
import android.support.v4.app.FragmentActivity
97
import android.support.v4.widget.SwipeRefreshLayout
10-
import android.util.Log
118
import android.view.LayoutInflater
129
import android.view.View
1310
import android.view.ViewGroup
@@ -20,7 +17,6 @@ import com.adsamcik.signalcollector.data.Stat
2017
import com.adsamcik.signalcollector.data.StatData
2118
import com.adsamcik.signalcollector.data.UploadStats
2219
import com.adsamcik.signalcollector.file.DataStore
23-
import com.adsamcik.signalcollector.interfaces.ITabFragment
2420
import com.adsamcik.signalcollector.network.Network
2521
import com.adsamcik.signalcollector.network.NetworkLoader
2622
import com.adsamcik.signalcollector.signin.Signin
@@ -36,7 +32,6 @@ import com.adsamcik.signalcollector.utility.SnackMaker
3632
import com.adsamcik.table.AppendBehavior
3733
import com.adsamcik.table.Table
3834
import com.adsamcik.table.TableAdapter
39-
import kotlinx.android.synthetic.main.fragment_new_stats.*
4035
import kotlinx.coroutines.experimental.android.UI
4136
import kotlinx.coroutines.experimental.launch
4237

@@ -99,7 +94,12 @@ class FragmentNewStats : Fragment(), IOnDemandView {
9994

10095
val r = activity.resources
10196

102-
val us = DataStore.loadLastFromAppendableJsonArray(activity, DataStore.RECENT_UPLOADS_FILE, UploadStats::class.java)
97+
val us = if (useMock)
98+
UploadStats(System.currentTimeMillis(), 45464, 101, 156, 11, 65478, 65546, 5465646541L)
99+
else
100+
DataStore.loadLastFromAppendableJsonArray(activity, DataStore.RECENT_UPLOADS_FILE, UploadStats::class.java)
101+
102+
103103
if (us != null && Assist.getAgeInDays(us.time) < 30) {
104104
val lastUpload = UploadReportsActivity.generateTableForUploadStat(us, context!!, resources.getString(R.string.most_recent_upload), AppendBehavior.FirstFirst)
105105
lastUpload.addButton(getString(R.string.more_uploads)) { _ ->

app/src/main/java/com/adsamcik/signalcollector/services/MessageListenerService.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -141,12 +141,10 @@ class MessageListenerService : FirebaseMessagingService() {
141141
fun parseAndSaveUploadReport(context: Context, time: Long, data: Map<String, String>): UploadStats {
142142
var wifi = 0
143143
var cell = 0
144-
val noise = 0
145144
var collections = 0
146145
var newLocations = 0
147146
var newWifi = 0
148147
var newCell = 0
149-
val newNoiseLocations = 0
150148
var uploadSize: Long = 0
151149
if (data.containsKey(WIFI))
152150
wifi = Integer.parseInt(data[WIFI])
@@ -163,7 +161,7 @@ class MessageListenerService : FirebaseMessagingService() {
163161
if (data.containsKey(UPLOAD_SIZE))
164162
uploadSize = java.lang.Long.parseLong(data[UPLOAD_SIZE])
165163

166-
val us = UploadStats(time, wifi, newWifi, cell, newCell, collections, newLocations, noise, uploadSize, newNoiseLocations)
164+
val us = UploadStats(time, wifi, newWifi, cell, newCell, collections, newLocations, uploadSize)
167165
DataStore.saveAppendableJsonArray(context, DataStore.RECENT_UPLOADS_FILE, us, true)
168166

169167
Preferences.checkStatsDay(context)

app/src/main/java/com/adsamcik/signalcollector/uitools/ColorSupervisor.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,8 @@ internal object ColorSupervisor {
168168
stopUpdate()
169169
startUpdate()
170170
}
171+
} else {
172+
update(colorList[0])
171173
}
172174
}
173175
}
@@ -362,6 +364,17 @@ internal object ColorSupervisor {
362364
}
363365
}
364366

367+
fun updateColorAt(index: Int, @ColorInt color: Int) {
368+
synchronized(colorList) {
369+
if (index < 0 || index >= colorList.size) {
370+
throw IllegalArgumentException("Index $index is out of bounds. Size is ${colorList.size}.")
371+
} else {
372+
colorList[index] = color
373+
updateUpdate()
374+
}
375+
}
376+
}
377+
365378
fun setLocation(location: Location) {
366379
sunsetRise.updateLocation(location)
367380
synchronized(timerActive) {

0 commit comments

Comments
 (0)