Skip to content

Commit 3d1cb7f

Browse files
laco-devsangcomz
authored andcommitted
Convert util package into Kotlin (#187)
* Fix wrong word in `FishBunCreator` * Convert `UiUtil.java` into Kotlin * Convert SquareLayouts into Kotlin * Convert `SingleMediaScanner` into Kotlin feature: - remove `ScanListener` abstract class(replace high-order-function) * Convert `RegexUtil` into Kotlin feature: - Change `checkGif_isCorrect` test(static method) * Convert `CustomPagerSnapHelper` into Kotlin * Convert `RadioWithTextButton` into Kotlin feature: - Distribute Radio Type (Text, Drawable, None) with sealed - Fix wrong words (unselect, drawTextCentred) * Apply inline keyword in `isLandscape` method * Clear ambiguous words - isChecked -> isSelected - unSelect -> unselect * Merge branches 'develop' and 'feature/java-to-kotlin/util' of https://github.com/laco-dev/FishBun into feature/java-to-kotlin/util # Conflicts: # FishBun/src/main/java/com/sangcomz/fishbun/util/RadioWithTextButton.java * Remove legacy class * Change unnecessary convention in this PR
1 parent b307de1 commit 3d1cb7f

28 files changed

+336
-403
lines changed

FishBun/src/androidTest/java/com/sangcomz/fishbun/util/RadioWithTextButtonTest.kt

+5-5
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class RadioWithTextButtonTest {
4545
@Test
4646
fun onDraw_drawCircle() {
4747
val mockCanvas = mock(Canvas::class.java)
48-
radioWithTextButton.onDraw(mockCanvas)
48+
radioWithTextButton.draw(mockCanvas)
4949

5050
verify(mockStrokePaint, Times(1)).setStyle(Paint.Style.STROKE)
5151
verify(mockCanvas, Times(1)).drawCircle(
@@ -63,7 +63,7 @@ class RadioWithTextButtonTest {
6363
val mockCanvas = mock(Canvas::class.java)
6464
doNothing().`when`(mockCanvas).drawCircle(anyFloat(), anyFloat(), anyFloat(), any(Paint::class.java))
6565

66-
radioWithTextButton.onDraw(mockCanvas)
66+
radioWithTextButton.draw(mockCanvas)
6767
verify(mockCanvas, Times(1)).drawCircle(
6868
radioWithTextButton.width.toCircleXY(),
6969
radioWithTextButton.height.toCircleXY(),
@@ -80,7 +80,7 @@ class RadioWithTextButtonTest {
8080
val mockCanvas = mock(Canvas::class.java)
8181
radioWithTextButton.setText(text)
8282

83-
radioWithTextButton.onDraw(mockCanvas)
83+
radioWithTextButton.draw(mockCanvas)
8484
verify(mockCanvas, Times(1)).drawCircle(
8585
radioWithTextButton.width.toCircleXY(),
8686
radioWithTextButton.height.toCircleXY(),
@@ -101,7 +101,7 @@ class RadioWithTextButtonTest {
101101
val desiredWidth = 10f
102102
val text = "test"
103103

104-
RadioWithTextButton.setTextSizeForWidth(mockPaint, text, desiredWidth)
104+
mockPaint.setTextSizeForWidth(text, desiredWidth)
105105
verify(mockPaint).setTextSize(anyFloat())
106106
verify(mockPaint).getTextBounds(eq(text), anyInt(), anyInt(), any(Rect::class.java))
107107
verifyNoMoreInteractions(mockPaint)
@@ -115,7 +115,7 @@ class RadioWithTextButtonTest {
115115
val desiredWidth = 1f
116116
val text = "test"
117117

118-
RadioWithTextButton.setTextSizeForWidth(mockPaint, text, desiredWidth)
118+
mockPaint.setTextSizeForWidth(text, desiredWidth)
119119
verify(mockPaint).setTextSize(anyFloat())
120120
verify(mockPaint).getTextBounds(eq(text), anyInt(), anyInt(), any(Rect::class.java))
121121
verify(mockPaint).setTextSize(anyFloat())

FishBun/src/main/java/com/sangcomz/fishbun/BaseActivity.java

-2
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,9 @@
77
import androidx.appcompat.app.AppCompatActivity;
88

99
import com.sangcomz.fishbun.define.Define;
10-
import com.sangcomz.fishbun.util.UiUtil;
1110

1211
public abstract class BaseActivity extends AppCompatActivity {
1312
protected Define define = new Define();
14-
protected UiUtil uiUtil = new UiUtil();
1513
protected Fishton fishton;
1614

1715
@Override

FishBun/src/main/java/com/sangcomz/fishbun/BaseFragment.java

-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import android.view.ViewGroup;
99

1010
import com.sangcomz.fishbun.define.Define;
11-
import com.sangcomz.fishbun.util.UiUtil;
1211

1312
/**
1413
* Created by sangcomz on 04/06/2017.
@@ -17,7 +16,6 @@
1716
public class BaseFragment extends Fragment {
1817

1918
protected Define define = new Define();
20-
protected UiUtil uiUtil = new UiUtil();
2119

2220
@Nullable
2321
@Override

FishBun/src/main/java/com/sangcomz/fishbun/FishBunCreator.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class FishBunCreator(private val fishBun: FishBun, private val fishton: Fishton)
2727
fishton.photoSpanCount = if (spanCount <= 0) 3 else spanCount
2828
}
2929

30-
@Deprecated("instead setMaxCount(count)", ReplaceWith("setPickerCount(count)"))
30+
@Deprecated("instead setMaxCount(count)", ReplaceWith("setMaxCount(count)"))
3131
override fun setPickerCount(count: Int): FishBunCreator = this.apply {
3232
setMaxCount(count)
3333
}

FishBun/src/main/java/com/sangcomz/fishbun/ui/album/AlbumActivity.java

+10-6
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,16 @@
2727
import com.sangcomz.fishbun.bean.Album;
2828
import com.sangcomz.fishbun.define.Define;
2929
import com.sangcomz.fishbun.permission.PermissionCheck;
30-
import com.sangcomz.fishbun.util.ScanListener;
3130
import com.sangcomz.fishbun.util.SingleMediaScanner;
31+
import com.sangcomz.fishbun.util.UiUtil;
3232

3333
import java.io.File;
3434
import java.util.ArrayList;
3535
import java.util.List;
3636

37+
import kotlin.Unit;
38+
import kotlin.jvm.functions.Function0;
39+
3740
public class AlbumActivity extends BaseActivity {
3841
private AlbumController albumController;
3942
private ArrayList<Album> albumList = new ArrayList<>();
@@ -81,7 +84,7 @@ protected void onResume() {
8184
super.onResume();
8285
if (recyclerAlbumList != null &&
8386
recyclerAlbumList.getLayoutManager() != null) {
84-
if (uiUtil.isLandscape(this))
87+
if (UiUtil.isLandscape(this))
8588
((GridLayoutManager) recyclerAlbumList.getLayoutManager())
8689
.setSpanCount(fishton.getAlbumLandscapeSpanCount());
8790
else
@@ -108,7 +111,7 @@ private void initRecyclerView() {
108111
recyclerAlbumList = findViewById(R.id.recycler_album_list);
109112

110113
GridLayoutManager layoutManager;
111-
if (uiUtil.isLandscape(this))
114+
if (UiUtil.isLandscape(this))
112115
layoutManager = new GridLayoutManager(this, fishton.getAlbumLandscapeSpanCount());
113116
else
114117
layoutManager = new GridLayoutManager(this, fishton.getAlbumPortraitSpanCount());
@@ -130,7 +133,7 @@ private void initToolBar() {
130133
toolbar.setTitleTextColor(fishton.getColorActionBarTitle());
131134

132135
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
133-
uiUtil.setStatusBarColor(this, fishton.getColorStatusBar());
136+
UiUtil.setStatusBarColor(this, fishton.getColorStatusBar());
134137
}
135138
if (getSupportActionBar() != null) {
136139
getSupportActionBar().setTitle(fishton.getTitleActionBar());
@@ -258,10 +261,11 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
258261
}
259262
} else if (requestCode == define.TAKE_A_PICK_REQUEST_CODE) {
260263
if (resultCode == RESULT_OK) {
261-
new SingleMediaScanner(this, new File(albumController.getSavePath()), new ScanListener() {
264+
new SingleMediaScanner(this, new File(albumController.getSavePath()), new Function0<Unit>() {
262265
@Override
263-
protected void onScanCompleted() {
266+
public Unit invoke() {
264267
albumController.getAlbumList(fishton.getTitleAlbumAllView(), fishton.isExceptGif());
268+
return Unit.INSTANCE;
265269
}
266270
});
267271
} else {

FishBun/src/main/java/com/sangcomz/fishbun/ui/album/AlbumController.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,8 @@ protected ArrayList<Album> doInBackground(Void... params) {
9292

9393
albumHashMap.put((long) 0, new Album(0, allViewTitle, null, 0));
9494

95-
RegexUtil regexUtil = new RegexUtil();
9695
while (c.moveToNext()) {
97-
if (exceptGif && regexUtil.checkGif(c.getString(bucketData))) continue;
96+
if (exceptGif && RegexUtil.checkGif(c.getString(bucketData))) continue;
9897
totalCounter++;
9998
long bucketId = c.getInt(bucketColumnId);
10099
Album album = albumHashMap.get(bucketId);

FishBun/src/main/java/com/sangcomz/fishbun/ui/detail/DetailActivity.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import com.sangcomz.fishbun.adapter.view.DetailViewPagerAdapter;
1818
import com.sangcomz.fishbun.define.Define;
1919
import com.sangcomz.fishbun.util.RadioWithTextButton;
20+
import com.sangcomz.fishbun.util.UiUtil;
2021

2122
public class DetailActivity extends BaseActivity implements View.OnClickListener, ViewPager.OnPageChangeListener {
2223
private static final String TAG = "DetailActivity";
@@ -65,7 +66,7 @@ private void initValue() {
6566

6667
private void initToolBar() {
6768
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
68-
uiUtil.setStatusBarColor(this, fishton.getColorStatusBar());
69+
UiUtil.setStatusBarColor(this, fishton.getColorStatusBar());
6970
}
7071
if (fishton.isStatusBarLight()
7172
&& Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

FishBun/src/main/java/com/sangcomz/fishbun/ui/picker/PickerActivity.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@
2525
import com.sangcomz.fishbun.bean.Album;
2626
import com.sangcomz.fishbun.define.Define;
2727
import com.sangcomz.fishbun.permission.PermissionCheck;
28-
import com.sangcomz.fishbun.ui.album.AlbumActivity;
2928
import com.sangcomz.fishbun.util.RadioWithTextButton;
3029
import com.sangcomz.fishbun.util.SingleMediaScanner;
3130
import com.sangcomz.fishbun.util.SquareFrameLayout;
31+
import com.sangcomz.fishbun.util.UiUtil;
3232

3333
import java.io.File;
3434
import java.util.ArrayList;
@@ -247,7 +247,7 @@ private void initToolBar() {
247247
toolbar.setBackgroundColor(fishton.getColorActionBar());
248248
toolbar.setTitleTextColor(fishton.getColorActionBarTitle());
249249
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
250-
uiUtil.setStatusBarColor(this, fishton.getColorStatusBar());
250+
UiUtil.setStatusBarColor(this, fishton.getColorStatusBar());
251251
}
252252
ActionBar bar = getSupportActionBar();
253253
if (bar != null) {

FishBun/src/main/java/com/sangcomz/fishbun/ui/picker/PickerController.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -137,10 +137,9 @@ private Uri[] getAllMediaThumbnailsPath(long id,
137137
setPathDir(c.getString(c.getColumnIndex(MediaStore.Images.Media.DATA)),
138138
c.getString(c.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME)));
139139
int position = -1;
140-
RegexUtil regexUtil = new RegexUtil();
141140
do {
142141
if (exceptGif &&
143-
regexUtil.checkGif(c.getString(c.getColumnIndex(MediaStore.Images.Media.DATA))))
142+
RegexUtil.checkGif(c.getString(c.getColumnIndex(MediaStore.Images.Media.DATA))))
144143
continue;
145144
int imgId = c.getInt(c.getColumnIndex(MediaStore.MediaColumns._ID));
146145
Uri path = Uri.withAppendedPath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "" + imgId);

FishBun/src/main/java/com/sangcomz/fishbun/util/ContextUtil.kt

-6
This file was deleted.

FishBun/src/main/java/com/sangcomz/fishbun/util/CustomPagerSnapHelper.java

-34
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.sangcomz.fishbun.util
2+
3+
import androidx.recyclerview.widget.PagerSnapHelper
4+
import androidx.recyclerview.widget.RecyclerView
5+
6+
/**
7+
* Created by sangcomz on 11/06/2017.
8+
*/
9+
10+
class CustomPagerSnapHelper @JvmOverloads constructor(
11+
private val layoutManager: RecyclerView.LayoutManager,
12+
private val onPageChanged: ((position: Int) -> Unit)? = null) : PagerSnapHelper() {
13+
14+
override fun onFling(velocityX: Int, velocityY: Int): Boolean {
15+
onPageChanged?.invoke(findTargetSnapPosition(layoutManager, velocityX, velocityY))
16+
return super.onFling(velocityX, velocityY)
17+
}
18+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
@file:JvmName("DrawUtil")
2+
3+
package com.sangcomz.fishbun.util
4+
5+
import android.graphics.Paint
6+
import android.graphics.Rect
7+
8+
/**
9+
* Sets the text size for a Paint object so a given string of text will be a
10+
* given width.
11+
*
12+
* @param paint the Paint to set the text size for
13+
* @param desiredWidth the desired width
14+
*/
15+
fun Paint.setTextSizeForWidth(text: String, desiredWidth: Float) {
16+
// Pick a reasonably large value for the test. Larger values produce
17+
// more accurate results, but may cause problems with hardware
18+
// acceleration. But there are workarounds for that, too; refer to
19+
// http://stackoverflow.com/questions/6253528/font-size-too-large-to-fit-in-cache
20+
val defaultTextSize = 44f
21+
val textBounds = Rect()
22+
textSize = defaultTextSize
23+
getTextBounds(text, 0, text.length, textBounds)
24+
// Calculate the desired size as a proportion of our testTextSize.
25+
if (textBounds.width() > desiredWidth) {
26+
val desiredTextSize = defaultTextSize * (desiredWidth / textBounds.width())
27+
// Set the paint for that size.
28+
textSize = desiredTextSize
29+
}
30+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.sangcomz.fishbun.util
2+
3+
import android.graphics.drawable.Drawable
4+
5+
sealed class RadioType {
6+
7+
class RadioText(val text: String) : RadioType()
8+
9+
class RadioDrawable(val drawable: Drawable) : RadioType()
10+
11+
object None : RadioType()
12+
13+
inline infix fun isRadioText(block: RadioText.() -> Unit): RadioType {
14+
if (this is RadioText) {
15+
block()
16+
}
17+
return this
18+
}
19+
20+
inline infix fun isRadioDrawable(block: RadioDrawable.() -> Unit): RadioType {
21+
if (this is RadioDrawable) {
22+
block()
23+
}
24+
return this
25+
}
26+
27+
inline infix fun isRadioNone(block: None.() -> Unit): RadioType {
28+
if (this is None) {
29+
block()
30+
}
31+
return this
32+
}
33+
}

0 commit comments

Comments
 (0)