Skip to content

Instantly share code, notes, and snippets.

View wojtek-kalicinski's full-sized avatar

Wojtek Kaliciński wojtek-kalicinski

View GitHub Profile
@wojtek-kalicinski
wojtek-kalicinski / StringUtils.java
Created October 20, 2014 15:46
Method for getting the correct plural form in Polish
// one, few, many, other
// gram, gramy, gramów, grama
public static String getPlural(float quantity, String[] choices) {
if (quantity >= 1) {
switch (quantity == 1 ? 0 : (quantity % 10 >= 2
&& quantity % 10 <= 4
&& (quantity % 100 < 10
|| quantity % 100 >= 20) ? 1 : 2)) {
case 0:
@wojtek-kalicinski
wojtek-kalicinski / start_studio.sh
Created June 27, 2018 16:48
Start a separate instance of Android Studio, e.g. to use an alternative Android SDK
STUDIO_DIRS=`find $HOME -maxdepth 1 -name ".AndroidStudio*" -printf "%f "`
select dir in $STUDIO_DIRS "(create new)"; do
case $dir in
"(create new)")
echo "Enter the new directory suffix (after \".AndroidStudio\"):"
read dir
dir=".AndroidStudio${dir}"
;&
*)
dir=`echo $dir | cut -c 2-`
abstract class AbstractProgressFragment(layoutId: Int) {
abstract fun onProgress(status: Int, bytesDownloaded: Long, bytesTotal: Long)
abstract fun onCancelled()
abstract fun onFailed(errorCode: Int)
}
<navigation
app:progressFragment="@id/progress">
<fragment
android:id="@+id/progress"
android:name="path.to.MyProgressFragment" />
</navigation>
val extras = DynamicExtras(installMonitor = installMonitor)
navigate(destination, args, navOptions, extras)
installMonitor.status.observe(this, object : Observer {
override fun onChanged(state: SplitInstallSessionState?) {
}
}
// BEFORE ISSUING INSTALL REQUEST
manager.registerListener(listener)
...
val listener = SplitInstallStateUpdatedListener { state ->
if (state.sessionId == sessionId) {
when (state.status()) {
// RESPOND TO PROGRESS EVENTS
}
viewModelScope.launch {
manager.requestProgressFlow()
.collect { state -> ... }
}
viewModelScope.launch {
manager.requestProgressFlow()
.filter { "myModule" in it.moduleNames }
.collect { state -> … }
}
private val listener = SplitInstallStateUpdatedListener(
onRequiresConfirmation = { state -> // ← REQUIRED ARGUMENTS
// HANDLE CONFIRMATION DIALOG
},
onInstalled = {
// HANDLE INSTALLED STATE
},
onDownloading = { state -> // ← OPTIONAL ARGUMENTS
// SHOW PROGRESS
},
dependencies {
def nav_version = "2.3.0-alpha04"
api "androidx.navigation:navigation-fragment-ktx:$nav_version"
api "androidx.navigation:navigation-ui-ktx:$nav_version"
api "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"
}