Skip to content

Commit 34748db

Browse files
authored
Merge branch 'master' into 13014-realmprimarykeyconstraintexception-crash-due-to-duplicate-primary-key-during-bulk-sync
2 parents 86909a2 + 3cab626 commit 34748db

9 files changed

Lines changed: 158 additions & 129 deletions

File tree

app/src/main/java/org/ole/planet/myplanet/base/BasePermissionActivity.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import androidx.lifecycle.lifecycleScope
2020
import kotlinx.coroutines.Dispatchers
2121
import kotlinx.coroutines.launch
2222
import kotlinx.coroutines.withContext
23+
import org.ole.planet.myplanet.BuildConfig
2324
import org.ole.planet.myplanet.R
2425
import org.ole.planet.myplanet.utils.Utilities
2526

@@ -500,7 +501,7 @@ abstract class BasePermissionActivity : AppCompatActivity() {
500501

501502
@JvmStatic
502503
fun hasInstallPermission(context: Context): Boolean {
503-
return context.packageManager.canRequestPackageInstalls()
504+
return !BuildConfig.LITE && context.packageManager.canRequestPackageInstalls()
504505
}
505506
}
506507
}

app/src/main/java/org/ole/planet/myplanet/utils/LocaleUtils.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@ import java.util.Locale
1010
object LocaleUtils {
1111
private const val SELECTED_LANGUAGE = "Locale.Helper.Selected.Language"
1212
@Volatile private var cachedLanguage: String? = null
13+
@Volatile private var cachedPrefs: android.content.SharedPreferences? = null
1314

1415
fun preload(context: Context) {
1516
if (cachedLanguage == null) {
1617
val prefs = PreferenceManager.getDefaultSharedPreferences(context.applicationContext)
18+
cachedPrefs = prefs
1719
cachedLanguage = prefs.getString(SELECTED_LANGUAGE, null) ?: Locale.getDefault().language
1820
}
1921
}
@@ -45,13 +47,13 @@ object LocaleUtils {
4547
}
4648

4749
private fun getPersistedData(context: Context, defaultLanguage: String): String {
48-
val preferences = PreferenceManager.getDefaultSharedPreferences(context)
50+
val preferences = cachedPrefs ?: PreferenceManager.getDefaultSharedPreferences(context).also { cachedPrefs = it }
4951
return preferences.getString(SELECTED_LANGUAGE, defaultLanguage) ?: defaultLanguage
5052
}
5153

5254
private fun persist(context: Context, language: String) {
5355
cachedLanguage = language
54-
val preferences = PreferenceManager.getDefaultSharedPreferences(context)
56+
val preferences = cachedPrefs ?: PreferenceManager.getDefaultSharedPreferences(context).also { cachedPrefs = it }
5557
preferences.edit { putString(SELECTED_LANGUAGE, language) }
5658
}
5759
}

app/src/main/res/layout-large-land/activity_login.xml

Lines changed: 42 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -29,44 +29,50 @@
2929
app:layout_constraintStart_toStartOf="parent"
3030
app:layout_constraintTop_toTopOf="parent">
3131

32-
<ImageView
33-
android:id="@+id/syncIcon"
34-
android:layout_width="30dp"
35-
android:layout_height="30dp"
36-
android:layout_alignParentStart="true"
37-
android:layout_marginTop="@dimen/_10dp"
38-
android:background="@drawable/file_upload_animation_login"
39-
android:contentDescription="@string/sync"
40-
android:scaleType="fitCenter"
41-
app:layout_constraintStart_toStartOf="parent"
42-
app:layout_constraintTop_toTopOf="parent" />
43-
<TextView
44-
android:id="@+id/lblLastSyncDate"
45-
android:layout_width="wrap_content"
46-
android:layout_height="wrap_content"
47-
android:layout_marginTop="@dimen/_10dp"
48-
android:padding="@dimen/padding_normal"
49-
android:text="@string/dash_4"
50-
android:textAlignment="center"
51-
app:layout_constraintEnd_toStartOf="@+id/imgBtnSetting"
52-
app:layout_constraintStart_toEndOf="@+id/syncIcon"
53-
app:layout_constraintTop_toTopOf="parent"
54-
android:textColor="@color/daynight_textColor" />
55-
<ImageButton
56-
android:id="@+id/imgBtnSetting"
57-
android:layout_width="wrap_content"
32+
<LinearLayout
33+
android:id="@+id/sync"
34+
android:layout_width="match_parent"
5835
android:layout_height="wrap_content"
59-
android:layout_alignParentEnd="true"
60-
android:layout_marginTop="@dimen/_10dp"
61-
android:background="@null"
62-
android:contentDescription="@string/settings"
63-
android:paddingStart="@dimen/_10dp"
64-
android:paddingTop="6dp"
65-
android:paddingEnd="10dp"
36+
android:layout_weight="0.1"
37+
android:gravity="center_vertical"
38+
android:orientation="horizontal"
6639
app:layout_constraintEnd_toEndOf="parent"
67-
app:layout_constraintTop_toTopOf="parent"
68-
app:srcCompat="@drawable/ic_settings_black_24dp"
69-
app:tint="@color/daynight_textColor"/>
40+
app:layout_constraintStart_toStartOf="parent"
41+
app:layout_constraintTop_toTopOf="parent">
42+
43+
<ImageView
44+
android:id="@+id/syncIcon"
45+
android:layout_width="30dp"
46+
android:layout_height="30dp"
47+
android:layout_gravity="center_vertical"
48+
android:layout_marginStart="10dp"
49+
android:background="@drawable/file_upload_animation_login"
50+
android:contentDescription="@string/sync"
51+
android:scaleType="fitCenter" />
52+
<TextView
53+
android:id="@+id/lblLastSyncDate"
54+
android:layout_width="0dp"
55+
android:layout_height="wrap_content"
56+
android:layout_gravity="center_vertical"
57+
android:layout_weight="1"
58+
android:gravity="center"
59+
android:padding="@dimen/padding_normal"
60+
android:text="@string/dash_4"
61+
android:textAlignment="center"
62+
android:textColor="@color/daynight_textColor" />
63+
<ImageButton
64+
android:id="@+id/imgBtnSetting"
65+
android:layout_width="wrap_content"
66+
android:layout_height="wrap_content"
67+
android:layout_gravity="center_vertical"
68+
android:background="@null"
69+
android:contentDescription="@string/settings"
70+
android:paddingStart="@dimen/_10dp"
71+
android:paddingTop="6dp"
72+
android:paddingEnd="@dimen/_10dp"
73+
app:srcCompat="@drawable/ic_settings_black_24dp"
74+
app:tint="@color/daynight_textColor" />
75+
</LinearLayout>
7076
<androidx.constraintlayout.widget.ConstraintLayout
7177
android:layout_width="match_parent"
7278
android:layout_height="wrap_content"

app/src/main/res/layout-night/activity_login.xml

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,13 @@
4848
app:layout_constraintStart_toStartOf="parent"
4949
app:layout_constraintTop_toTopOf="parent">
5050

51-
<RelativeLayout
51+
<LinearLayout
5252
android:id="@+id/sync"
5353
android:layout_width="match_parent"
5454
android:layout_height="wrap_content"
5555
android:layout_weight="0.1"
56+
android:gravity="center_vertical"
57+
android:orientation="horizontal"
5658
app:layout_constraintEnd_toEndOf="parent"
5759
app:layout_constraintStart_toStartOf="parent"
5860
app:layout_constraintTop_toTopOf="parent">
@@ -61,17 +63,18 @@
6163
android:id="@+id/syncIcon"
6264
android:layout_width="30dp"
6365
android:layout_height="30dp"
64-
android:layout_alignParentStart="true"
66+
android:layout_gravity="center_vertical"
6567
android:layout_marginStart="10dp"
66-
android:layout_marginTop="5dp"
6768
android:background="@drawable/file_upload_animation_login"
6869
android:contentDescription="@string/sync"
6970
android:scaleType="fitCenter" />
7071
<TextView
7172
android:id="@+id/lblLastSyncDate"
72-
android:layout_width="match_parent"
73+
android:layout_width="0dp"
7374
android:layout_height="wrap_content"
74-
android:layout_marginTop="25dp"
75+
android:layout_gravity="center_vertical"
76+
android:layout_weight="1"
77+
android:gravity="center"
7578
android:padding="@dimen/padding_normal"
7679
android:text="@string/dash_4"
7780
android:textAlignment="center"
@@ -80,15 +83,15 @@
8083
android:id="@+id/imgBtnSetting"
8184
android:layout_width="wrap_content"
8285
android:layout_height="wrap_content"
83-
android:layout_alignParentEnd="true"
86+
android:layout_gravity="center_vertical"
8487
android:background="@null"
8588
android:contentDescription="@string/settings"
8689
android:paddingStart="@dimen/_10dp"
8790
android:paddingTop="6dp"
8891
android:paddingEnd="@dimen/_10dp"
8992
app:srcCompat="@drawable/ic_settings_black_24dp"
9093
app:tint="@color/daynight_textColor" />
91-
</RelativeLayout>
94+
</LinearLayout>
9295

9396
<androidx.constraintlayout.widget.ConstraintLayout
9497
android:layout_width="match_parent"

app/src/main/res/layout-normal-land/activity_login.xml

Lines changed: 43 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -29,44 +29,51 @@
2929
app:layout_constraintStart_toStartOf="parent"
3030
app:layout_constraintTop_toTopOf="parent">
3131

32-
<ImageView
33-
android:id="@+id/syncIcon"
34-
android:layout_width="30dp"
35-
android:layout_height="30dp"
36-
android:layout_alignParentStart="true"
37-
android:layout_marginTop="@dimen/_10dp"
38-
android:background="@drawable/file_upload_animation_login"
39-
android:contentDescription="@string/sync"
40-
android:scaleType="fitCenter"
41-
app:layout_constraintStart_toStartOf="parent"
42-
app:layout_constraintTop_toTopOf="parent" />
43-
<TextView
44-
android:id="@+id/lblLastSyncDate"
45-
android:layout_width="wrap_content"
46-
android:layout_height="wrap_content"
47-
android:layout_marginTop="@dimen/_10dp"
48-
android:padding="@dimen/padding_normal"
49-
android:text="@string/dash_4"
50-
android:textAlignment="center"
51-
app:layout_constraintEnd_toStartOf="@+id/imgBtnSetting"
52-
app:layout_constraintStart_toEndOf="@+id/syncIcon"
53-
app:layout_constraintTop_toTopOf="parent"
54-
android:textColor="@color/daynight_textColor" />
55-
<ImageButton
56-
android:id="@+id/imgBtnSetting"
57-
android:layout_width="wrap_content"
32+
<LinearLayout
33+
android:id="@+id/sync"
34+
android:layout_width="match_parent"
5835
android:layout_height="wrap_content"
59-
android:layout_alignParentEnd="true"
60-
android:layout_marginTop="@dimen/_10dp"
61-
android:background="@null"
62-
android:contentDescription="@string/settings"
63-
android:paddingStart="@dimen/_10dp"
64-
android:paddingTop="6dp"
65-
android:paddingEnd="10dp"
36+
android:layout_weight="0.1"
37+
android:gravity="center_vertical"
38+
android:orientation="horizontal"
6639
app:layout_constraintEnd_toEndOf="parent"
67-
app:layout_constraintTop_toTopOf="parent"
68-
app:srcCompat="@drawable/ic_settings_black_24dp"
69-
app:tint="@color/daynight_textColor"/>
40+
app:layout_constraintStart_toStartOf="parent"
41+
app:layout_constraintTop_toTopOf="parent">
42+
43+
<ImageView
44+
android:id="@+id/syncIcon"
45+
android:layout_width="30dp"
46+
android:layout_height="30dp"
47+
android:layout_gravity="center_vertical"
48+
android:layout_marginStart="10dp"
49+
android:background="@drawable/file_upload_animation_login"
50+
android:contentDescription="@string/sync"
51+
android:scaleType="fitCenter" />
52+
<TextView
53+
android:id="@+id/lblLastSyncDate"
54+
android:layout_width="0dp"
55+
android:layout_height="wrap_content"
56+
android:layout_gravity="center_vertical"
57+
android:layout_weight="1"
58+
android:gravity="center"
59+
android:padding="@dimen/padding_normal"
60+
android:text="@string/dash_4"
61+
android:textAlignment="center"
62+
android:textColor="@color/daynight_textColor" />
63+
<ImageButton
64+
android:id="@+id/imgBtnSetting"
65+
android:layout_width="wrap_content"
66+
android:layout_height="wrap_content"
67+
android:layout_gravity="center_vertical"
68+
android:background="@null"
69+
android:contentDescription="@string/settings"
70+
android:paddingStart="@dimen/_10dp"
71+
android:paddingTop="6dp"
72+
android:paddingEnd="@dimen/_10dp"
73+
app:srcCompat="@drawable/ic_settings_black_24dp"
74+
app:tint="@color/daynight_textColor" />
75+
</LinearLayout>
76+
7077
<androidx.constraintlayout.widget.ConstraintLayout
7178
android:layout_width="match_parent"
7279
android:layout_height="wrap_content"

app/src/main/res/layout-xlarge-land/activity_login.xml

Lines changed: 42 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -29,44 +29,50 @@
2929
app:layout_constraintStart_toStartOf="parent"
3030
app:layout_constraintTop_toTopOf="parent">
3131

32-
<ImageView
33-
android:id="@+id/syncIcon"
34-
android:layout_width="30dp"
35-
android:layout_height="30dp"
36-
android:layout_alignParentStart="true"
37-
android:layout_marginTop="@dimen/_10dp"
38-
android:background="@drawable/file_upload_animation_login"
39-
android:contentDescription="@string/sync"
40-
android:scaleType="fitCenter"
41-
app:layout_constraintStart_toStartOf="parent"
42-
app:layout_constraintTop_toTopOf="parent" />
43-
<TextView
44-
android:id="@+id/lblLastSyncDate"
45-
android:layout_width="wrap_content"
46-
android:layout_height="wrap_content"
47-
android:layout_marginTop="@dimen/_10dp"
48-
android:padding="@dimen/padding_normal"
49-
android:text="@string/dash_4"
50-
android:textAlignment="center"
51-
app:layout_constraintEnd_toStartOf="@+id/imgBtnSetting"
52-
app:layout_constraintStart_toEndOf="@+id/syncIcon"
53-
app:layout_constraintTop_toTopOf="parent"
54-
android:textColor="@color/daynight_textColor" />
55-
<ImageButton
56-
android:id="@+id/imgBtnSetting"
57-
android:layout_width="wrap_content"
32+
<LinearLayout
33+
android:id="@+id/sync"
34+
android:layout_width="match_parent"
5835
android:layout_height="wrap_content"
59-
android:layout_alignParentEnd="true"
60-
android:layout_marginTop="@dimen/_10dp"
61-
android:background="@null"
62-
android:contentDescription="@string/settings"
63-
android:paddingStart="@dimen/_10dp"
64-
android:paddingTop="6dp"
65-
android:paddingEnd="10dp"
36+
android:layout_weight="0.1"
37+
android:gravity="center_vertical"
38+
android:orientation="horizontal"
6639
app:layout_constraintEnd_toEndOf="parent"
67-
app:layout_constraintTop_toTopOf="parent"
68-
app:srcCompat="@drawable/ic_settings_black_24dp"
69-
app:tint="@color/daynight_textColor"/>
40+
app:layout_constraintStart_toStartOf="parent"
41+
app:layout_constraintTop_toTopOf="parent">
42+
43+
<ImageView
44+
android:id="@+id/syncIcon"
45+
android:layout_width="30dp"
46+
android:layout_height="30dp"
47+
android:layout_gravity="center_vertical"
48+
android:layout_marginStart="10dp"
49+
android:background="@drawable/file_upload_animation_login"
50+
android:contentDescription="@string/sync"
51+
android:scaleType="fitCenter" />
52+
<TextView
53+
android:id="@+id/lblLastSyncDate"
54+
android:layout_width="0dp"
55+
android:layout_height="wrap_content"
56+
android:layout_gravity="center_vertical"
57+
android:layout_weight="1"
58+
android:gravity="center"
59+
android:padding="@dimen/padding_normal"
60+
android:text="@string/dash_4"
61+
android:textAlignment="center"
62+
android:textColor="@color/daynight_textColor" />
63+
<ImageButton
64+
android:id="@+id/imgBtnSetting"
65+
android:layout_width="wrap_content"
66+
android:layout_height="wrap_content"
67+
android:layout_gravity="center_vertical"
68+
android:background="@null"
69+
android:contentDescription="@string/settings"
70+
android:paddingStart="@dimen/_10dp"
71+
android:paddingTop="6dp"
72+
android:paddingEnd="@dimen/_10dp"
73+
app:srcCompat="@drawable/ic_settings_black_24dp"
74+
app:tint="@color/daynight_textColor" />
75+
</LinearLayout>
7076
<androidx.constraintlayout.widget.ConstraintLayout
7177
android:layout_width="match_parent"
7278
android:layout_height="wrap_content"

0 commit comments

Comments
 (0)