Skip to content
This repository was archived by the owner on Jun 27, 2020. It is now read-only.

Commit 92e80b5

Browse files
Merge pull request #156 from yevhenii-kanivets/152_crash_when_adding_event_to_google_calendar_if_there_is_no_google_calendar_on_device
#152. Fix crash when adding event to Google Calendar if there is no G…
2 parents 9bfa54b + 0f4699c commit 92e80b5

File tree

7 files changed

+29
-17
lines changed

7 files changed

+29
-17
lines changed

app/src/main/java/com/bogdan/codeforceswatcher/adapter/ContestAdapter.kt

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.bogdan.codeforceswatcher.adapter
22

3+
import android.content.ActivityNotFoundException
34
import android.content.Context
45
import android.content.Intent
56
import android.net.Uri
@@ -8,6 +9,7 @@ import android.view.View
89
import android.view.ViewGroup
910
import android.widget.ImageView
1011
import android.widget.TextView
12+
import android.widget.Toast
1113
import androidx.recyclerview.widget.RecyclerView
1214
import com.bogdan.codeforceswatcher.R
1315
import com.bogdan.codeforceswatcher.model.Contest
@@ -17,12 +19,12 @@ import java.net.URLEncoder
1719
import java.text.SimpleDateFormat
1820
import java.util.*
1921

20-
class ContestAdapter(private var items: List<Contest>, private val ctx: Context) : RecyclerView.Adapter<ContestAdapter.ViewHolder>() {
22+
class ContestAdapter(private var items: List<Contest>, private val context: Context) : RecyclerView.Adapter<ContestAdapter.ViewHolder>() {
2123

2224
override fun getItemCount() = items.size
2325

2426
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
25-
return ViewHolder(LayoutInflater.from(ctx).inflate(R.layout.contests_list_view, parent, false))
27+
return ViewHolder(LayoutInflater.from(context).inflate(R.layout.contests_list_view, parent, false))
2628
}
2729

2830
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
@@ -38,8 +40,11 @@ class ContestAdapter(private var items: List<Contest>, private val ctx: Context)
3840
val encodeName = URLEncoder.encode(contest.name)
3941
val calendarEventLink = "$CALENDAR_LINK?action=TEMPLATE&text=$encodeName&dates=$timeStart/$timeEnd&details=$CODEFORCES_LINK"
4042
val intent = Intent(Intent.ACTION_VIEW).setData(Uri.parse(calendarEventLink))
41-
ctx.startActivity(intent)
42-
43+
try {
44+
context.startActivity(intent)
45+
} catch (error: ActivityNotFoundException) {
46+
Toast.makeText(context, context.resources.getString(R.string.google_calendar_not_found), Toast.LENGTH_SHORT).show()
47+
}
4348
Analytics.logAddContestToCalendarEvent(contest.name)
4449
}
4550

app/src/main/java/com/bogdan/codeforceswatcher/adapter/UserAdapter.kt

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import kotlinx.android.synthetic.main.users_list_view.view.*
1717
import java.text.SimpleDateFormat
1818
import java.util.*
1919

20-
class UserAdapter(private var items: List<User>, private val ctx: Context) : RecyclerView.Adapter<UserAdapter.ViewHolder>() {
20+
class UserAdapter(private var items: List<User>, private val context: Context) : RecyclerView.Adapter<UserAdapter.ViewHolder>() {
2121

2222
override fun getItemCount(): Int {
2323
return items.size
@@ -29,7 +29,7 @@ class UserAdapter(private var items: List<User>, private val ctx: Context) : Rec
2929
}
3030

3131
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
32-
return ViewHolder(LayoutInflater.from(ctx).inflate(R.layout.users_list_view, parent, false))
32+
return ViewHolder(LayoutInflater.from(context).inflate(R.layout.users_list_view, parent, false))
3333
}
3434

3535
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
@@ -39,42 +39,42 @@ class UserAdapter(private var items: List<User>, private val ctx: Context) : Rec
3939
holder.tvRating.text = null
4040
} else holder.tvRating.text = user.rating.toString()
4141
if (user.rank == null) {
42-
holder.tvHandle.setTextColor(ContextCompat.getColor(ctx, grey))
43-
holder.tvRating.setTextColor(ContextCompat.getColor(ctx, grey))
42+
holder.tvHandle.setTextColor(ContextCompat.getColor(context, grey))
43+
holder.tvRating.setTextColor(ContextCompat.getColor(context, grey))
4444
} else {
4545
if (user.rank == "legendary grandmaster") {
4646
val text = "<font color=black>${user.handle[0]}</font><font color=red>${user.handle.subSequence(1, user.handle.lastIndex + 1)}</font>"
4747
holder.tvHandle.text = HtmlCompat.fromHtml(text, HtmlCompat.FROM_HTML_MODE_LEGACY);
4848
} else {
49-
holder.tvHandle.setTextColor(ContextCompat.getColor(ctx, getColor(user.rank)))
49+
holder.tvHandle.setTextColor(ContextCompat.getColor(context, getColor(user.rank)))
5050
}
51-
holder.tvRating.setTextColor(ContextCompat.getColor(ctx, getColor(user.rank)))
51+
holder.tvRating.setTextColor(ContextCompat.getColor(context, getColor(user.rank)))
5252

5353
}
5454
val lastRatingChange = user.ratingChanges.lastOrNull()
5555
if (lastRatingChange != null) {
5656
val ratingDelta = lastRatingChange.newRating - lastRatingChange.oldRating
57-
holder.tvLastRatingUpdate.text = ctx.resources.getString(
57+
holder.tvLastRatingUpdate.text = context.resources.getString(
5858
R.string.last_rating_update,
5959
getDateTime(lastRatingChange.ratingUpdateTimeSeconds)
6060
)
6161
if (ratingDelta >= 0) {
6262
holder.ivDelta.setImageResource(R.drawable.ic_rating_up)
6363
holder.tvRatingChange.text = ratingDelta.toString()
64-
holder.tvRatingChange.setTextColor(ContextCompat.getColor(ctx, bright_green))
64+
holder.tvRatingChange.setTextColor(ContextCompat.getColor(context, bright_green))
6565
} else {
6666
holder.ivDelta.setImageResource(R.drawable.ic_rating_down)
6767
holder.tvRatingChange.text = (-ratingDelta).toString()
68-
holder.tvRatingChange.setTextColor(ContextCompat.getColor(ctx, red))
68+
holder.tvRatingChange.setTextColor(ContextCompat.getColor(context, red))
6969
}
7070
} else {
71-
holder.tvLastRatingUpdate.text = ctx.resources.getString(R.string.no_rating_update)
71+
holder.tvLastRatingUpdate.text = context.resources.getString(R.string.no_rating_update)
7272
holder.ivDelta.setImageResource(0)
7373
holder.tvRatingChange.text = null
7474
}
7575

7676
holder.itemView.setOnClickListener {
77-
ctx.startActivity(TryActivity.newIntent(ctx, user.id))
77+
context.startActivity(TryActivity.newIntent(context, user.id))
7878
}
7979
}
8080

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@
1010
<androidx.recyclerview.widget.RecyclerView
1111
android:id="@+id/recyclerView"
1212
android:layout_width="wrap_content"
13-
android:layout_height="wrap_content" />
13+
android:layout_height="wrap_content"
14+
android:background="@color/white" />
1415
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
<androidx.recyclerview.widget.RecyclerView
1515
android:id="@+id/recyclerView"
1616
android:layout_width="wrap_content"
17-
android:layout_height="wrap_content" />
17+
android:layout_height="wrap_content"
18+
android:background="@color/white" />
1819

1920
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
2021

app/src/main/res/values-ru-rRU/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,6 @@
3434

3535
<string name="users">Пользователи</string>
3636
<string name="contests">Контесты</string>
37+
38+
<string name="google_calendar_not_found">Извините, но на этом устройстве не найден Google Calendar</string>
3739
</resources>

app/src/main/res/values-uk-rUA/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,6 @@
3434

3535
<string name="users">Користувачі</string>
3636
<string name="contests">Контести</string>
37+
38+
<string name="google_calendar_not_found">На жаль, на цьому пристрої не знайдено Google Calendar</string>
3739
</resources>

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,5 @@
3030
<string name="google_play_not_found">Google Play not found</string>
3131
<string name="users">Users</string>
3232
<string name="contests">Contests</string>
33+
<string name="google_calendar_not_found">Sorry, but no Google Calendar found on this device</string>
3334
</resources>

0 commit comments

Comments
 (0)