Skip to content

Commit a9058d1

Browse files
authored
Convert upload to kotlin (part 2) (#6069)
* Convert UploadCategoriesFragment to kotlin * Convert DepictsFragment to kotlin * Convert MediaLicensePresenter to kotlin * Convert MediaLicenseFragment to kotlin * Converted SimilarImageDialogFragment to kotlin * Convert ThumbnailsAdapter to kotlin * Convert UploadPresenter to kotlin * Convert UploadBaseFragment to kotlin * Convert UploadMediaDetailInputFilter to kotlin * Convert UploadItem to kotlin * Convert UploadController to kotlin * Fix nullability of the UploadItem
1 parent 369e79b commit a9058d1

37 files changed

+1830
-2100
lines changed

app/src/main/java/fr/free/nrw/commons/contributions/Contribution.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,13 @@ data class Contribution constructor(
6363
Media(
6464
formatCaptions(item.uploadMediaDetails),
6565
categories,
66-
item.fileName,
66+
item.filename,
6767
formatDescriptions(item.uploadMediaDetails),
6868
sessionManager.userName,
6969
sessionManager.userName,
7070
),
7171
localUri = item.mediaUri,
72-
decimalCoords = item.gpsCoords.decimalCoords,
72+
decimalCoords = item.gpsCoords?.decimalCoords,
7373
dateCreatedSource = "",
7474
depictedItems = depictedItems,
7575
wikidataPlace = from(item.place),

app/src/main/java/fr/free/nrw/commons/filepicker/MimeTypeMapWrapper.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class MimeTypeMapWrapper {
1313
)
1414

1515
@JvmStatic
16-
fun getExtensionFromMimeType(mimeType: String): String? {
16+
fun getExtensionFromMimeType(mimeType: String?): String? {
1717
val result = sMimeTypeToExtensionMap[mimeType]
1818
if (result != null) {
1919
return result

app/src/main/java/fr/free/nrw/commons/repository/UploadRepository.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ class UploadRepository @Inject constructor(
243243
*
244244
* @param licenseName
245245
*/
246-
fun setSelectedLicense(licenseName: String) {
246+
fun setSelectedLicense(licenseName: String?) {
247247
uploadModel.selectedLicense = licenseName
248248
}
249249

app/src/main/java/fr/free/nrw/commons/upload/ImageProcessingService.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class ImageProcessingService @Inject constructor(
4545
}
4646

4747
Timber.d("Checking the validity of image")
48-
val filePath = uploadItem.mediaUri.path
48+
val filePath = uploadItem.mediaUri?.path
4949

5050
return Single.zip(
5151
checkDuplicateImage(filePath),
@@ -107,7 +107,7 @@ class ImageProcessingService @Inject constructor(
107107
return Single.just(EMPTY_CAPTION)
108108
}
109109

110-
return mediaClient.checkPageExistsUsingTitle("File:" + uploadItem.fileName)
110+
return mediaClient.checkPageExistsUsingTitle("File:" + uploadItem.filename)
111111
.map { doesFileExist: Boolean ->
112112
Timber.d("Result for valid title is %s", doesFileExist)
113113
if (doesFileExist) FILE_NAME_EXISTS else IMAGE_OK

app/src/main/java/fr/free/nrw/commons/upload/SimilarImageDialogFragment.java

Lines changed: 0 additions & 109 deletions
This file was deleted.
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
package fr.free.nrw.commons.upload
2+
3+
import android.app.Dialog
4+
import android.content.DialogInterface
5+
import android.net.Uri
6+
import android.os.Bundle
7+
import android.view.LayoutInflater
8+
import android.view.View
9+
import android.view.ViewGroup
10+
import android.view.Window
11+
import androidx.fragment.app.DialogFragment
12+
import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat
13+
import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder
14+
import fr.free.nrw.commons.R
15+
import fr.free.nrw.commons.databinding.FragmentSimilarImageDialogBinding
16+
import java.io.File
17+
18+
/**
19+
* Created by harisanker on 14/2/18.
20+
*/
21+
class SimilarImageDialogFragment : DialogFragment() {
22+
var callback: Callback? = null //Implemented interface from shareActivity
23+
var gotResponse: Boolean = false
24+
25+
private var _binding: FragmentSimilarImageDialogBinding? = null
26+
private val binding: FragmentSimilarImageDialogBinding get() = _binding!!
27+
28+
interface Callback {
29+
fun onPositiveResponse()
30+
31+
fun onNegativeResponse()
32+
}
33+
34+
override fun onCreateView(
35+
inflater: LayoutInflater,
36+
container: ViewGroup?,
37+
savedInstanceState: Bundle?
38+
): View {
39+
_binding = FragmentSimilarImageDialogBinding.inflate(inflater, container, false)
40+
41+
binding.orginalImage.hierarchy =
42+
GenericDraweeHierarchyBuilder.newInstance(resources).setPlaceholderImage(
43+
VectorDrawableCompat.create(
44+
resources, R.drawable.ic_image_black_24dp, requireContext().theme
45+
)
46+
).setFailureImage(
47+
VectorDrawableCompat.create(
48+
resources, R.drawable.ic_error_outline_black_24dp, requireContext().theme
49+
)
50+
).build()
51+
52+
binding.possibleImage.hierarchy =
53+
GenericDraweeHierarchyBuilder.newInstance(resources).setPlaceholderImage(
54+
VectorDrawableCompat.create(
55+
resources, R.drawable.ic_image_black_24dp, requireContext().theme
56+
)
57+
).setFailureImage(
58+
VectorDrawableCompat.create(
59+
resources, R.drawable.ic_error_outline_black_24dp, requireContext().theme
60+
)
61+
).build()
62+
63+
arguments?.let {
64+
binding.orginalImage.setImageURI(
65+
Uri.fromFile(File(it.getString("originalImagePath")!!))
66+
)
67+
binding.possibleImage.setImageURI(
68+
Uri.fromFile(File(it.getString("possibleImagePath")!!))
69+
)
70+
}
71+
72+
binding.postiveButton.setOnClickListener {
73+
callback?.onPositiveResponse()
74+
gotResponse = true
75+
dismiss()
76+
}
77+
78+
binding.negativeButton.setOnClickListener {
79+
callback?.onNegativeResponse()
80+
gotResponse = true
81+
dismiss()
82+
}
83+
84+
return binding.root
85+
}
86+
87+
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
88+
val dialog = super.onCreateDialog(savedInstanceState)
89+
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE)
90+
return dialog
91+
}
92+
93+
override fun onDismiss(dialog: DialogInterface) {
94+
// I user dismisses dialog by pressing outside the dialog.
95+
if (!gotResponse) {
96+
callback?.onNegativeResponse()
97+
}
98+
super.onDismiss(dialog)
99+
}
100+
101+
override fun onDestroy() {
102+
super.onDestroy()
103+
_binding = null
104+
}
105+
}

0 commit comments

Comments
 (0)