mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-19 19:49:33 +01:00
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:
parent
b91e17ca3d
commit
c6eacd30ea
@ -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,
|
||||
|
@ -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) {
|
||||
// // 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?
|
||||
// }
|
||||
// })
|
||||
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
|
||||
//
|
||||
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
|
||||
}
|
||||
|
||||
|
||||
|
@ -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"
|
||||
android:layout_width="wrap_content"
|
||||
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:"/>
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_height="wrap_content"
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user