Skip to content

Instantly share code, notes, and snippets.

View ibrahimsn98's full-sized avatar

İbrahim Süren ibrahimsn98

View GitHub Profile
@ibrahimsn98
ibrahimsn98 / MultiPreference.kt
Last active July 27, 2019 11:20
Android-Live-Shared-Preferences-Gist6
class MultiPreference<T> constructor(private val updates: Observable<String>,
private val preferences: SharedPreferences,
private val keys: List<String>,
private val defaultValue: T) : MutableLiveData<Map<String, T>>() {
private var disposable: Disposable? = null
private val values = mutableMapOf<String, T>()
init {
for (key in keys)
@ibrahimsn98
ibrahimsn98 / MainActivity.kt
Last active January 1, 2019 09:56
Android-Live-Shared-Preferences-Gist5
class MainActivity : AppCompatActivity() {
private const val TAG = "MainActivity"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val preferences = PreferenceManager.getDefaultSharedPreferences(this)
val liveSharedPreferences = LiveSharedPreferences(preferences)
@ibrahimsn98
ibrahimsn98 / LiveSharedPreferences.kt
Last active July 27, 2019 11:22
Android-Live-Shared-Preferences-Gist4
class LiveSharedPreferences constructor(private val preferences: SharedPreferences) {
private val publisher = PublishSubject.create<String>()
private val listener = OnSharedPreferenceChangeListener { _, key -> publisher.onNext(key) }
private val updates = publisher.doOnSubscribe {
preferences.registerOnSharedPreferenceChangeListener(listener)
}.doOnDispose {
if (!publisher.hasObservers())
preferences.unregisterOnSharedPreferenceChangeListener(listener)
@ibrahimsn98
ibrahimsn98 / LivePreference.kt
Last active July 27, 2019 11:23
Android-Live-Shared-Preferences-Gist3
class LivePreference<T> constructor(private val updates: Observable<String>,
private val preferences: SharedPreferences,
private val key: String,
private val defaultValue: T) : MutableLiveData<T>() {
private var disposable: Disposable? = null
override fun onActive() {
super.onActive()
value = (preferences.all[key] as T) ?: defaultValue
@ibrahimsn98
ibrahimsn98 / LiveSharedPreferences.kt
Last active July 27, 2019 11:22
Android-Live-Shared-Preferences-Git2
class LiveSharedPreferences constructor(private val preferences: SharedPreferences) {
private val publisher = PublishSubject.create<String>()
private val listener = OnSharedPreferenceChangeListener { _, key -> publisher.onNext(key) }
private val updates = publisher.doOnSubscribe {
preferences.registerOnSharedPreferenceChangeListener(listener)
}.doOnDispose {
if (!publisher.hasObservers())
preferences.unregisterOnSharedPreferenceChangeListener(listener)
@ibrahimsn98
ibrahimsn98 / MainActivity.kt
Created December 31, 2018 19:12
Android-Live-Shared-Preferences-Git1
class MainActivity : AppCompatActivity() {
private val preferences = PreferenceManager.getDefaultSharedPreferences(this)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
var listener: SharedPreferences.OnSharedPreferenceChangeListener =
@ibrahimsn98
ibrahimsn98 / sudoku.c
Created December 8, 2018 12:20
C Sudoku Solver Backtracing
#include <stdio.h>
int sudo[9][9];
int isExistsInRow(int row, int s) {
int i;
for(i=0; i<9; i++)
if(sudo[row][i] == s)
return 1;
@ibrahimsn98
ibrahimsn98 / SeekBarPreference.kt
Created October 27, 2018 11:06
Android Custom SeekBar Preference
class SeekBarPreference(context: Context, attrs: AttributeSet) :
Preference(context, attrs, 0) {
private var max = 0
private var current = 0
init {
widgetLayoutResource = R.layout.preference_seekbar
layoutResource = R.layout.preference_seekbar
@ibrahimsn98
ibrahimsn98 / gist:e5b2261aa53964183c561437c02f8740
Last active August 24, 2018 09:44
Extract all zip files to the same folder
find . -name "*.zip" -exec unzip {} \;
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software