Skip to content

Commit 836d7bd

Browse files
committed
Merge branch 'develop'
2 parents 8138e77 + b94f239 commit 836d7bd

File tree

8 files changed

+98
-27
lines changed

8 files changed

+98
-27
lines changed

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[![Apache License](http://img.shields.io/badge/license-Apache%20License%202.0-blue.svg)](http://choosealicense.com/licenses/apache-2.0/)
22

3-
[<img src="https://upload.wikimedia.org/wikipedia/commons/c/cd/Get_it_on_Google_play.svg" alt="Get it on Google Play" width="230">][play] &nbsp;&nbsp;&nbsp; **OR** [get an APK][releases]
3+
[<img src="https://upload.wikimedia.org/wikipedia/commons/c/cd/Get_it_on_Google_play.svg" alt="Get it on Google Play" width="230">][play] &nbsp;&nbsp;&nbsp; **OR** &nbsp;&nbsp;&nbsp; [<img src="https://images-na.ssl-images-amazon.com/images/G/01/mobile-apps/devportal2/res/images/amazon-appsstore-us-black-v2.png" alt="Available at Amazon AppStore" width="210">][amazon] &nbsp;&nbsp;&nbsp; **OR** &nbsp;&nbsp;&nbsp; [Download an APK][releases]
44

55
# cccTV
66

@@ -55,4 +55,5 @@ If you want to build a `release` version, it is important to replace the placeho
5555
[voctocat]: https://morr.cc/voctocat/
5656

5757
[play]: https://play.google.com/store/apps/details?id=de.stefanmedack.ccctv
58-
[releases]: https://github.com/stefanmedack/cccTV/releases
58+
[amazon]: https://www.amazon.de/cccTV-Chaos-Computer-Club-Videos/dp/B0787JP7RF
59+
[releases]: https://github.com/stefanmedack/cccTV/releases

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ android {
4141
applicationId "de.stefanmedack.ccctv"
4242
minSdkVersion 21
4343
targetSdkVersion 26
44-
versionCode 8
45-
versionName "2.0.0-RC5"
44+
versionCode 9
45+
versionName "2.0.0"
4646
resConfigs "en", "de"
4747
multiDexEnabled true
4848
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

app/src/main/AndroidManifest.xml

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,46 @@
1212
android:required="false"
1313
/>
1414

15+
<uses-feature
16+
android:name="android.hardware.faketouch"
17+
android:required="false"
18+
/>
19+
<uses-feature
20+
android:name="android.hardware.telephony"
21+
android:required="false"
22+
/>
23+
<uses-feature
24+
android:name="android.hardware.camera"
25+
android:required="false"
26+
/>
27+
<uses-feature
28+
android:name="android.hardware.camera.flash"
29+
android:required="false"
30+
/>
31+
<uses-feature
32+
android:name="android.hardware.camera.autofocus"
33+
android:required="false"
34+
/>
35+
<uses-feature
36+
android:name="android.hardware.nfc"
37+
android:required="false"
38+
/>
39+
<uses-feature
40+
android:name="android.hardware.location"
41+
android:required="false"
42+
/>
43+
<uses-feature
44+
android:name="android.hardware.location.gps"
45+
android:required="false"
46+
/>
47+
<uses-feature
48+
android:name="android.hardware.microphone"
49+
android:required="false"
50+
/>
51+
<uses-feature
52+
android:name="android.hardware.sensor"
53+
android:required="false"
54+
/>
1555
<uses-feature
1656
android:name="android.software.leanback"
1757
android:required="true"
@@ -35,7 +75,6 @@
3575
>
3676
<intent-filter>
3777
<action android:name="android.intent.action.MAIN"/>
38-
3978
<category android:name="android.intent.category.LEANBACK_LAUNCHER"/>
4079
</intent-filter>
4180
</activity>
@@ -54,11 +93,12 @@
5493

5594
<activity
5695
android:name=".ui.playback.ExoPlayerActivity"
57-
android:exported="true"
5896
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|layoutDirection"
97+
android:exported="true"
5998
android:launchMode="singleTask"
6099
android:resizeableActivity="true"
61-
android:supportsPictureInPicture="true"/>
100+
android:supportsPictureInPicture="true"
101+
/>
62102

63103
<meta-data
64104
android:name="io.fabric.ApiKey"

app/src/main/java/de/stefanmedack/ccctv/ui/detail/DetailActivity.kt

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import de.stefanmedack.ccctv.ui.base.BaseInjectableActivity
1313
import de.stefanmedack.ccctv.util.EVENT_ID
1414
import de.stefanmedack.ccctv.util.EVENT_PICTURE
1515
import de.stefanmedack.ccctv.util.SHARED_DETAIL_TRANSITION
16+
import de.stefanmedack.ccctv.util.replaceFragmentInTransaction
1617

1718
class DetailActivity : BaseInjectableActivity() {
1819

@@ -27,15 +28,13 @@ class DetailActivity : BaseInjectableActivity() {
2728
// prevent stand-by while playing videos
2829
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
2930

30-
if (savedInstanceState == null) {
31-
fragment = DetailFragment()
32-
fragment?.arguments = Bundle(2).apply {
31+
fragment = DetailFragment()
32+
fragment?.let { frag ->
33+
frag.arguments = Bundle(2).apply {
3334
putInt(EVENT_ID, intent.getIntExtra(EVENT_ID, -1))
3435
putString(EVENT_PICTURE, intent.getStringExtra(EVENT_PICTURE))
3536
}
36-
supportFragmentManager.beginTransaction().replace(R.id.fragment, fragment, DETAIL_TAG).commit()
37-
} else {
38-
fragment = supportFragmentManager.findFragmentByTag(DETAIL_TAG) as DetailFragment
37+
replaceFragmentInTransaction(frag, R.id.fragment, DETAIL_TAG)
3938
}
4039
}
4140

app/src/main/java/de/stefanmedack/ccctv/ui/main/MainActivity.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import android.os.Bundle
44
import android.view.KeyEvent
55
import de.stefanmedack.ccctv.R
66
import de.stefanmedack.ccctv.ui.base.BaseInjectableActivity
7+
import de.stefanmedack.ccctv.util.replaceFragmentInTransaction
78

89
class MainActivity : BaseInjectableActivity() {
910

@@ -15,11 +16,9 @@ class MainActivity : BaseInjectableActivity() {
1516
super.onCreate(savedInstanceState)
1617
setContentView(R.layout.fragment_activity)
1718

18-
if (savedInstanceState == null) {
19-
fragment = MainFragment()
20-
supportFragmentManager.beginTransaction().replace(R.id.fragment, fragment).commit()
21-
} else {
22-
fragment = supportFragmentManager.findFragmentByTag(MAIN_TAG) as MainFragment
19+
fragment = supportFragmentManager.findFragmentByTag(MAIN_TAG) as? MainFragment ?: MainFragment()
20+
fragment?.let { frag ->
21+
replaceFragmentInTransaction(frag, R.id.fragment, MAIN_TAG)
2322
}
2423
}
2524

app/src/main/java/de/stefanmedack/ccctv/ui/playback/ExoPlayerActivity.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import android.support.v4.app.FragmentActivity
66
import android.view.WindowManager
77
import de.stefanmedack.ccctv.R
88
import de.stefanmedack.ccctv.util.STREAM_URL
9+
import de.stefanmedack.ccctv.util.addFragmentInTransaction
910
import info.metadude.java.library.brockman.models.Stream
1011
import info.metadude.java.library.brockman.models.Url.TYPE
1112

@@ -18,14 +19,12 @@ class ExoPlayerActivity : FragmentActivity() {
1819
// prevent stand-by while playing videos
1920
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
2021

21-
val ft = supportFragmentManager.beginTransaction()
2222
val fragment = ExoPlayerFragment().apply {
2323
arguments = Bundle(1).also {
2424
it.putString(STREAM_URL, intent.getStringExtra(STREAM_URL))
2525
}
2626
}
27-
ft.add(R.id.videoFragment, fragment, ExoPlayerFragment.TAG)
28-
ft.commit()
27+
addFragmentInTransaction(fragment, R.id.videoFragment, ExoPlayerFragment.TAG)
2928
}
3029

3130
override fun onVisibleBehindCanceled() {

app/src/main/java/de/stefanmedack/ccctv/ui/search/SearchActivity.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import android.content.Intent
44
import android.os.Bundle
55
import de.stefanmedack.ccctv.R
66
import de.stefanmedack.ccctv.ui.base.BaseInjectableActivity
7+
import de.stefanmedack.ccctv.util.replaceFragmentInTransaction
78

89
class SearchActivity : BaseInjectableActivity() {
910

@@ -15,11 +16,9 @@ class SearchActivity : BaseInjectableActivity() {
1516
super.onCreate(savedInstanceState)
1617
setContentView(R.layout.fragment_activity)
1718

18-
if (savedInstanceState == null) {
19-
fragment = SearchFragment()
20-
supportFragmentManager.beginTransaction().replace(R.id.fragment, fragment).commit()
21-
} else {
22-
fragment = supportFragmentManager.findFragmentByTag(SEARCH_TAG) as SearchFragment
19+
fragment = supportFragmentManager.findFragmentByTag(SEARCH_TAG) as? SearchFragment ?: SearchFragment()
20+
fragment?.let { frag ->
21+
replaceFragmentInTransaction(frag, R.id.fragment, SEARCH_TAG)
2322
}
2423
}
2524

app/src/main/java/de/stefanmedack/ccctv/util/AndroidExtensions.kt

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ import android.app.Activity
44
import android.content.pm.PackageManager.PERMISSION_GRANTED
55
import android.support.v17.leanback.widget.ArrayObjectAdapter
66
import android.support.v17.leanback.widget.Row
7+
import android.support.v4.app.Fragment
8+
import android.support.v4.app.FragmentActivity
9+
import android.support.v4.app.FragmentManager
10+
import android.support.v4.app.FragmentTransaction
711

812
fun Activity.hasPermission(permission: String) : Boolean =
913
PERMISSION_GRANTED == this.packageManager.checkPermission(permission, this.packageName)
@@ -12,4 +16,34 @@ operator fun ArrayObjectAdapter.plusAssign(items: List<*>?) {
1216
items?.forEach { this.add(it) }
1317
}
1418

15-
operator fun ArrayObjectAdapter.plusAssign(row: Row) = this.add(row)
19+
operator fun ArrayObjectAdapter.plusAssign(row: Row) = this.add(row)
20+
21+
inline fun FragmentManager.inTransaction(func: FragmentTransaction.() -> FragmentTransaction) {
22+
beginTransaction().func().commit()
23+
}
24+
25+
fun FragmentActivity.addFragmentInTransaction(
26+
fragment: Fragment,
27+
containerId: Int,
28+
tag: String? = null,
29+
addToBackStack: Boolean = false
30+
) {
31+
supportFragmentManager.inTransaction {
32+
add(containerId, fragment, tag).also {
33+
if (addToBackStack) addToBackStack(tag)
34+
}
35+
}
36+
}
37+
38+
fun FragmentActivity.replaceFragmentInTransaction(
39+
fragment: Fragment,
40+
containerId: Int,
41+
tag: String? = null,
42+
addToBackStack: Boolean = false
43+
) {
44+
supportFragmentManager.inTransaction {
45+
replace(containerId, fragment, tag).also {
46+
if (addToBackStack) addToBackStack(tag)
47+
}
48+
}
49+
}

0 commit comments

Comments
 (0)