Skip to content

Commit d9f7863

Browse files
committed
add copyable text to automated tracking info
1 parent e2aeba2 commit d9f7863

File tree

20 files changed

+312
-79
lines changed

20 files changed

+312
-79
lines changed

app/src/main/java/com/example/util/simpletimetracker/navigation/NotificationResolverImpl.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ class NotificationResolverImpl @Inject constructor(
6363
view,
6464
data.message,
6565
when (data.duration) {
66+
is SnackBarParams.Duration.ExtraShort -> SNACK_BAR_EXTRA_SHORT_DURATION_MS
6667
is SnackBarParams.Duration.Short -> SNACK_BAR_SHORT_DURATION_MS
6768
is SnackBarParams.Duration.Normal -> SNACK_BAR_DURATION_MS
6869
is SnackBarParams.Duration.Long -> SNACK_BAR_LONG_DURATION_MS
@@ -161,6 +162,7 @@ class NotificationResolverImpl @Inject constructor(
161162
}
162163

163164
companion object {
165+
private const val SNACK_BAR_EXTRA_SHORT_DURATION_MS = 1000
164166
private const val SNACK_BAR_SHORT_DURATION_MS = 2000
165167
private const val SNACK_BAR_DURATION_MS = 5000
166168
private const val SNACK_BAR_LONG_DURATION_MS = 10000
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.example.util.simpletimetracker.core.manager
2+
3+
import android.content.ClipData
4+
import android.content.ClipboardManager
5+
import android.content.Context
6+
import androidx.core.content.getSystemService
7+
import dagger.hilt.android.qualifiers.ApplicationContext
8+
import javax.inject.Inject
9+
10+
class ClipboardManager @Inject constructor(
11+
@ApplicationContext private val context: Context,
12+
) {
13+
14+
private val manager get() = context.getSystemService<ClipboardManager>()
15+
16+
fun send(text: String) {
17+
val clip = ClipData.newPlainText(text, text)
18+
manager?.setPrimaryClip(clip)
19+
}
20+
}

core/src/main/java/com/example/util/simpletimetracker/core/repo/ResourceRepo.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
package com.example.util.simpletimetracker.core.repo
22

33
import android.content.Context
4+
import android.graphics.drawable.Drawable
45
import android.util.TypedValue
56
import androidx.annotation.ArrayRes
67
import androidx.annotation.ColorRes
78
import androidx.annotation.DimenRes
9+
import androidx.annotation.DrawableRes
810
import androidx.annotation.PluralsRes
911
import androidx.annotation.StringRes
1012
import androidx.appcompat.view.ContextThemeWrapper
1113
import androidx.core.content.ContextCompat
14+
import androidx.core.content.res.ResourcesCompat
1215
import com.example.util.simpletimetracker.core.provider.ContextProvider
1316
import com.example.util.simpletimetracker.feature_views.extension.pxToDp
1417
import javax.inject.Inject
@@ -51,6 +54,10 @@ class ResourceRepo @Inject constructor(
5154
}.data
5255
}
5356

57+
fun getDrawable(@DrawableRes drawableResId: Int): Drawable? {
58+
return ResourcesCompat.getDrawable(context.resources, drawableResId, context.theme)
59+
}
60+
5461
fun getStringArray(@ArrayRes arrayResId: Int): List<String> {
5562
return context.resources.getStringArray(arrayResId).toList()
5663
}

core/src/main/java/com/example/util/simpletimetracker/core/view/timeAdjustment/TimeAdjustmentView.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ class TimeAdjustmentView @JvmOverloads constructor(
9999

100100
data class Zero(
101101
override val text: String,
102-
): ViewData
102+
) : ViewData
103103

104104
data class Adjust(
105105
override val text: String,

data_local/src/main/java/com/example/util/simpletimetracker/data_local/resolver/BackupRepoImpl.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -512,7 +512,7 @@ class BackupRepoImpl @Inject constructor(
512512
// parts[9] - weekly time is moved to separate table
513513
// parts[10] - monthly time is moved to separate table,
514514
instant = parts.getOrNull(11)?.toIntOrNull() == 1,
515-
instantDuration = parts.getOrNull(12)?.toLongOrNull().orZero()
515+
instantDuration = parts.getOrNull(12)?.toLongOrNull().orZero(),
516516
) to goalTimes
517517
}
518518

domain/src/main/java/com/example/util/simpletimetracker/domain/extension/DomainExtensions.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,16 @@ fun String.padDuration(): String {
4646
return this.padStart(2, '0')
4747
}
4848

49+
fun String.insertStringAtIndex(string: String, index: Int): String {
50+
return StringBuilder(this).apply { insert(index, string) }.toString()
51+
}
52+
53+
fun CharSequence.indexesOf(pat: String): List<Int> =
54+
pat.toRegex()
55+
.findAll(this)
56+
.map { it.range.first }
57+
.toList()
58+
4959
@Suppress("UNCHECKED_CAST")
5060
fun <T> Any.tryCast(): T? {
5161
return this as? T

domain/src/main/java/com/example/util/simpletimetracker/domain/interactor/AddRunningRecordMediator.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ class AddRunningRecordMediator @Inject constructor(
143143
timeStarted = params.timeStarted,
144144
timeEnded = params.timeStarted + type.instantDuration * 1000,
145145
comment = params.comment,
146-
tagIds = params.tagIds
146+
tagIds = params.tagIds,
147147
).let {
148148
addRecordMediator.add(it)
149149
}

features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/model/ChangeRecordDateTimeField.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ package com.example.util.simpletimetracker.feature_change_record.model
22

33
enum class ChangeRecordDateTimeField {
44
START,
5-
END
5+
END,
66
}

features/feature_dialogs/src/main/java/com/example/util/simpletimetracker/feature_dialogs/helpDialog/HelpDialogFragment.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@ package com.example.util.simpletimetracker.feature_dialogs.helpDialog
22

33
import com.example.util.simpletimetracker.feature_dialogs.databinding.HelpDialogFragmentBinding as Binding
44
import android.os.Bundle
5+
import android.text.method.LinkMovementMethod
56
import android.view.LayoutInflater
67
import android.view.ViewGroup
7-
import androidx.core.text.HtmlCompat
8-
import androidx.core.text.HtmlCompat.FROM_HTML_MODE_LEGACY
98
import com.example.util.simpletimetracker.core.base.BaseBottomSheetFragment
109
import com.example.util.simpletimetracker.core.extension.setFullScreen
1110
import com.example.util.simpletimetracker.core.extension.setSkipCollapsed
@@ -30,7 +29,8 @@ class HelpDialogFragment : BaseBottomSheetFragment<Binding>() {
3029

3130
override fun initUi() = with(binding) {
3231
tvHelpDialogTitle.text = params.title
33-
tvHelpDialogDescription.text = HtmlCompat.fromHtml(params.text, FROM_HTML_MODE_LEGACY)
32+
tvHelpDialogDescription.text = params.text
33+
tvHelpDialogDescription.movementMethod = LinkMovementMethod.getInstance()
3434
}
3535

3636
companion object {

features/feature_records/src/main/java/com/example/util/simpletimetracker/feature_records/customView/RecordsCalendarView.kt

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,7 @@ import android.graphics.Typeface
1313
import android.graphics.drawable.BitmapDrawable
1414
import android.graphics.drawable.Drawable
1515
import android.os.Parcelable
16-
import android.text.Spannable
17-
import android.text.SpannableString
1816
import android.text.TextUtils
19-
import android.text.style.ForegroundColorSpan
2017
import android.util.AttributeSet
2118
import android.util.TypedValue
2219
import android.view.ContextThemeWrapper
@@ -39,6 +36,8 @@ import com.example.util.simpletimetracker.feature_views.IconView
3936
import com.example.util.simpletimetracker.feature_views.extension.dpToPx
4037
import com.example.util.simpletimetracker.feature_views.extension.getBitmapFromView
4138
import com.example.util.simpletimetracker.feature_views.extension.measureExactly
39+
import com.example.util.simpletimetracker.feature_views.extension.setForegroundSpan
40+
import com.example.util.simpletimetracker.feature_views.extension.toSpannableString
4241
import com.example.util.simpletimetracker.feature_views.viewData.RecordTypeIcon
4342
import kotlinx.parcelize.Parcelize
4443
import java.util.concurrent.TimeUnit
@@ -869,13 +868,11 @@ class RecordsCalendarView @JvmOverloads constructor(
869868
item.name
870869
} else {
871870
val name = "${item.name} - ${item.tagName}"
872-
val spannable = SpannableString(name)
873-
spannable.setSpan(
874-
ForegroundColorSpan(itemTagColor),
875-
item.name.length, name.length,
876-
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE,
871+
name.toSpannableString().setForegroundSpan(
872+
color = itemTagColor,
873+
start = item.name.length,
874+
length = name.length - item.name.length,
877875
)
878-
spannable
879876
}
880877
}
881878

0 commit comments

Comments
 (0)