issue 2931 progress - finally got most functionality + looks decent

Signed-off-by: Julius Linus <juliuslinus1@gmail.com>

Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
This commit is contained in:
rapterjet2004 2023-05-15 15:54:32 -05:00 committed by Andy Scherzinger
parent b91e17ca3d
commit c6eacd30ea
No known key found for this signature in database
GPG Key ID: 6CADC7E3523C308B
3 changed files with 99 additions and 77 deletions

View File

@ -656,12 +656,10 @@ public interface NcApi {
@DELETE
Observable<GenericOverall> sendCommonDeleteRequest(@Header("Authorization") String authorization, @Url String url);
@POST
Observable<TranslationsOverall> translateMessage(@Header("Authorization") String authorization,
@Url String url,
@Field("text") String text,
@Field("fromLanguage") String fromLanguage,
@Field("toLanguage") String toLanguage);
@Url String url);
// @GET
// Observable<TranslationsOverall> getLanguageOptions(@Header("Authorization") String authorization,

View File

@ -1,15 +1,26 @@
package com.nextcloud.talk.translate
import android.app.AlertDialog
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.text.method.ScrollingMovementMethod
import android.view.View
import android.widget.ArrayAdapter
import autodagger.AutoInjector
import com.nextcloud.talk.R
import com.nextcloud.talk.activities.BaseActivity
import com.nextcloud.talk.api.NcApi
import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.databinding.ActivityTranslateBinding
import com.nextcloud.talk.models.json.translations.TranslationsOverall
import com.nextcloud.talk.users.UserManager
import com.nextcloud.talk.utils.ApiUtils
import com.nextcloud.talk.utils.bundle.BundleKeys
import io.reactivex.Observer
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers
import java.util.Locale
import javax.inject.Inject
@ -28,21 +39,27 @@ class TranslateActivity : BaseActivity()
@Inject
lateinit var userManager: UserManager
var fromLanguages = arrayOf("Detect Language")
var toLanguages = arrayOf("Device Default")
var text : String? = null
var fromLanguage : String = "en"
var fromLanguage : String = "de"
val toLanguage : String = "de"
val toLanguage : String = Locale.getDefault().language
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
NextcloudTalkApplication.sharedApplication!!.componentApplication.inject(this)
binding = ActivityTranslateBinding.inflate(layoutInflater)
setupTextViews()
setupActionBar()
setupSpinners()
setContentView(binding.root)
setupTextViews()
setupSpinners()
translate()
getLanguageOptions()
}
private fun setupActionBar() {
@ -74,58 +91,65 @@ class TranslateActivity : BaseActivity()
private fun getLanguageOptions() {
// TODO implement this function to retrieve an array of strings from the server for each language option
// this uses another call to their /languages endpoint which requires another separate function in ncAPI and
// seprarate models for the JSON :|
// weird, for some reason I'm not getting a body from the server, but I'm getting a 200 OK, that's dumb
}
// TODO get this function working
private fun translate() {
// var currentUser = userManager.currentUser.blockingGet()
val currentUser : User = userManager.currentUser.blockingGet()
// Log.d("TranslateActivity Current User", currentUser.toString())
// val credentials = ApiUtils.getCredentials(currentUser.username, currentUser.token)
// val translateURL = currentUser.baseUrl + "/translation" + "/translate"
val credentials : String = ApiUtils.getCredentials(currentUser.username, currentUser.token)
val translateURL = currentUser.baseUrl + "/ocs/v2.php//translation/translate?text=" + text+ "&toLanguage=" + toLanguage
ncApi.translateMessage(credentials, translateURL)
?.subscribeOn(Schedulers.io())
?.observeOn(AndroidSchedulers.mainThread())
?.subscribe(object : Observer<TranslationsOverall> {
override fun onSubscribe(d: Disposable) {
binding.translatedMessageTextview.visibility = View.GONE
binding.progressBar.visibility = View.VISIBLE
}
// ncApi.translateMessage(credentials, translateURL, text, fromLanguage, toLanguage)
// ?.subscribeOn(Schedulers.io())
// ?.observeOn(AndroidSchedulers.mainThread())
// ?.subscribe(object : Observer<TranslationsOverall> {
// override fun onSubscribe(d: Disposable) {
// // TODO set progress bar to show
// binding.translatedMessageTextview.visibility = View.GONE
// binding.progressBar.visibility = View.VISIBLE
// }
override fun onNext(translationOverall: TranslationsOverall) {
binding.progressBar.visibility = View.GONE
binding.translatedMessageTextview.visibility = View.VISIBLE
// binding.translatedMessageTextview.text = "Worked"
binding.translatedMessageTextview.text = translationOverall.ocs?.data?.text
}
override fun onError(e: Throwable) {
binding.progressBar.visibility = View.GONE
//
// override fun onNext(translationOverall: TranslationsOverall) {
// // TODO hide progress bar
// binding.progressBar.visibility = View.GONE
// binding.translatedMessageTextview.visibility = View.VISIBLE
// binding.translatedMessageTextview.text = translationOverall.ocs?.data?.text
// }
//
// override fun onError(e: Throwable) {
// Log.e("TranslateActivity", "Error")
// }
//
// override fun onComplete() {
// // not needed?
// }
// })
val builder = AlertDialog.Builder(this@TranslateActivity)
builder.setTitle("Translation Failed")
builder.setMessage("Could not detect language")
val dialog = builder.create()
dialog.show()
}
override fun onComplete() {
// not needed?
}
})
}
private fun setupSpinners() {
// TODO set spinner options to use array from getLanguageOptions()
// TODO set onClickListener to call server using translate()
// binding.toLanguageSpinner.setOnClickListener(View.OnClickListener {
// // translate()
// })
//
// binding.fromLanguageSpinner.setOnClickListener(View.OnClickListener {
// // translate()
// })
//TODO create a way to show that items are disabled/enabled
binding.fromLanguageSpinner.adapter = ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item,
fromLanguages)
// binding.fromLanguageSpinner.isEnabled = false
binding.toLanguageSpinner.adapter = ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item,
toLanguages)
// binding.toLanguageSpinner.isEnabled = false
}

View File

@ -27,43 +27,40 @@
</com.google.android.material.appbar.AppBarLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/fromLanguage"
android:layout_margin="@dimen/standard_margin"
android:textSize="@dimen/input_text_size"
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_gravity="center"
android:layout_height="wrap_content"
android:text="From:"/>
<TextView
android:id="@+id/toLanguage"
android:layout_margin="@dimen/standard_margin"
android:textSize="@dimen/input_text_size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/fromLanguage"
android:text="To:"/>
android:padding="@dimen/standard_padding">
<Spinner
android:id="@+id/fromLanguageSpinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/standard_margin"
android:layout_marginTop="@dimen/standard_margin"
android:layout_marginEnd="@dimen/standard_margin"
android:layout_marginBottom="@dimen/standard_margin"
android:layout_toRightOf="@id/fromLanguage" />
android:background="@color/grey_200"
android:layout_marginRight="@dimen/standard_margin"
/>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:backgroundTint="@color/colorBackgroundDarker"
android:background="@drawable/ic_chevron_right"
/>
<Spinner
android:id="@+id/toLanguageSpinner"
android:layout_margin="@dimen/standard_margin"
android:layout_toRightOf="@id/toLanguage"
android:layout_below="@id/fromLanguage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
android:layout_height="wrap_content"
android:layout_toRightOf="@id/fromLanguageSpinner"
android:background="@color/grey_200"
android:layout_marginLeft="@dimen/standard_margin"
/>
</RelativeLayout>
</LinearLayout>
<TextView
android:id="@+id/original_message_textview"
@ -74,7 +71,7 @@
android:textColor="@color/nc_incoming_text_default"
android:padding="@dimen/dialog_padding"
android:layout_margin="@dimen/standard_margin"
android:background="@drawable/shape_incoming_message"
android:background="@drawable/shape_grouped_incoming_message"
android:scrollbars="vertical"
android:text="" />
@ -85,8 +82,11 @@
android:layout_margin="@dimen/standard_margin"
android:layout_weight="1"
android:scrollbars="vertical"
android:padding="@dimen/dialog_padding"
android:background="@drawable/shape_grouped_incoming_message"
android:text=""
android:textSize="@dimen/message_text_size"
android:textColor="@color/nc_incoming_text_default"
android:visibility="visible" />
<ProgressBar