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
|
@DELETE
|
||||||
Observable<GenericOverall> sendCommonDeleteRequest(@Header("Authorization") String authorization, @Url String url);
|
Observable<GenericOverall> sendCommonDeleteRequest(@Header("Authorization") String authorization, @Url String url);
|
||||||
|
|
||||||
|
|
||||||
@POST
|
@POST
|
||||||
Observable<TranslationsOverall> translateMessage(@Header("Authorization") String authorization,
|
Observable<TranslationsOverall> translateMessage(@Header("Authorization") String authorization,
|
||||||
@Url String url,
|
@Url String url);
|
||||||
@Field("text") String text,
|
|
||||||
@Field("fromLanguage") String fromLanguage,
|
|
||||||
@Field("toLanguage") String toLanguage);
|
|
||||||
|
|
||||||
// @GET
|
// @GET
|
||||||
// Observable<TranslationsOverall> getLanguageOptions(@Header("Authorization") String authorization,
|
// Observable<TranslationsOverall> getLanguageOptions(@Header("Authorization") String authorization,
|
||||||
|
@ -1,15 +1,26 @@
|
|||||||
package com.nextcloud.talk.translate
|
package com.nextcloud.talk.translate
|
||||||
|
import android.app.AlertDialog
|
||||||
import android.graphics.drawable.ColorDrawable
|
import android.graphics.drawable.ColorDrawable
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.text.method.ScrollingMovementMethod
|
import android.text.method.ScrollingMovementMethod
|
||||||
|
import android.view.View
|
||||||
|
import android.widget.ArrayAdapter
|
||||||
import autodagger.AutoInjector
|
import autodagger.AutoInjector
|
||||||
import com.nextcloud.talk.R
|
import com.nextcloud.talk.R
|
||||||
import com.nextcloud.talk.activities.BaseActivity
|
import com.nextcloud.talk.activities.BaseActivity
|
||||||
import com.nextcloud.talk.api.NcApi
|
import com.nextcloud.talk.api.NcApi
|
||||||
import com.nextcloud.talk.application.NextcloudTalkApplication
|
import com.nextcloud.talk.application.NextcloudTalkApplication
|
||||||
|
import com.nextcloud.talk.data.user.model.User
|
||||||
import com.nextcloud.talk.databinding.ActivityTranslateBinding
|
import com.nextcloud.talk.databinding.ActivityTranslateBinding
|
||||||
|
import com.nextcloud.talk.models.json.translations.TranslationsOverall
|
||||||
import com.nextcloud.talk.users.UserManager
|
import com.nextcloud.talk.users.UserManager
|
||||||
|
import com.nextcloud.talk.utils.ApiUtils
|
||||||
import com.nextcloud.talk.utils.bundle.BundleKeys
|
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
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
|
||||||
@ -28,21 +39,27 @@ class TranslateActivity : BaseActivity()
|
|||||||
@Inject
|
@Inject
|
||||||
lateinit var userManager: UserManager
|
lateinit var userManager: UserManager
|
||||||
|
|
||||||
|
var fromLanguages = arrayOf("Detect Language")
|
||||||
|
|
||||||
|
var toLanguages = arrayOf("Device Default")
|
||||||
|
|
||||||
var text : String? = null
|
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?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
NextcloudTalkApplication.sharedApplication!!.componentApplication.inject(this)
|
||||||
binding = ActivityTranslateBinding.inflate(layoutInflater)
|
binding = ActivityTranslateBinding.inflate(layoutInflater)
|
||||||
|
|
||||||
setupTextViews()
|
|
||||||
setupActionBar()
|
setupActionBar()
|
||||||
setupSpinners()
|
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
setupTextViews()
|
||||||
|
setupSpinners()
|
||||||
translate()
|
translate()
|
||||||
|
getLanguageOptions()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupActionBar() {
|
private fun setupActionBar() {
|
||||||
@ -74,58 +91,65 @@ class TranslateActivity : BaseActivity()
|
|||||||
|
|
||||||
private fun getLanguageOptions() {
|
private fun getLanguageOptions() {
|
||||||
// TODO implement this function to retrieve an array of strings from the server for each language option
|
// 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
|
// weird, for some reason I'm not getting a body from the server, but I'm getting a 200 OK, that's dumb
|
||||||
// seprarate models for the JSON :|
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO get this function working
|
|
||||||
private fun translate() {
|
private fun translate() {
|
||||||
// var currentUser = userManager.currentUser.blockingGet()
|
val currentUser : User = userManager.currentUser.blockingGet()
|
||||||
// Log.d("TranslateActivity Current User", currentUser.toString())
|
// Log.d("TranslateActivity Current User", currentUser.toString())
|
||||||
// val credentials = ApiUtils.getCredentials(currentUser.username, currentUser.token)
|
val credentials : String = ApiUtils.getCredentials(currentUser.username, currentUser.token)
|
||||||
// val translateURL = currentUser.baseUrl + "/translation" + "/translate"
|
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)
|
override fun onNext(translationOverall: TranslationsOverall) {
|
||||||
// ?.subscribeOn(Schedulers.io())
|
binding.progressBar.visibility = View.GONE
|
||||||
// ?.observeOn(AndroidSchedulers.mainThread())
|
binding.translatedMessageTextview.visibility = View.VISIBLE
|
||||||
// ?.subscribe(object : Observer<TranslationsOverall> {
|
// binding.translatedMessageTextview.text = "Worked"
|
||||||
// override fun onSubscribe(d: Disposable) {
|
binding.translatedMessageTextview.text = translationOverall.ocs?.data?.text
|
||||||
// // 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 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() {
|
private fun setupSpinners() {
|
||||||
// TODO set spinner options to use array from getLanguageOptions()
|
|
||||||
|
|
||||||
// TODO set onClickListener to call server using translate()
|
//TODO create a way to show that items are disabled/enabled
|
||||||
// binding.toLanguageSpinner.setOnClickListener(View.OnClickListener {
|
binding.fromLanguageSpinner.adapter = ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item,
|
||||||
// // translate()
|
fromLanguages)
|
||||||
// })
|
// binding.fromLanguageSpinner.isEnabled = false
|
||||||
//
|
|
||||||
// binding.fromLanguageSpinner.setOnClickListener(View.OnClickListener {
|
|
||||||
// // translate()
|
|
||||||
// })
|
|
||||||
|
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>
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
|
|
||||||
<RelativeLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:orientation="horizontal"
|
||||||
android:layout_height="wrap_content" >
|
android:layout_width="wrap_content"
|
||||||
<TextView
|
android:layout_gravity="center"
|
||||||
android:id="@+id/fromLanguage"
|
android:layout_height="wrap_content"
|
||||||
android:layout_margin="@dimen/standard_margin"
|
android:padding="@dimen/standard_padding">
|
||||||
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:"/>
|
|
||||||
|
|
||||||
<Spinner
|
<Spinner
|
||||||
android:id="@+id/fromLanguageSpinner"
|
android:id="@+id/fromLanguageSpinner"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="@dimen/standard_margin"
|
android:background="@color/grey_200"
|
||||||
android:layout_marginTop="@dimen/standard_margin"
|
android:layout_marginRight="@dimen/standard_margin"
|
||||||
android:layout_marginEnd="@dimen/standard_margin"
|
/>
|
||||||
android:layout_marginBottom="@dimen/standard_margin"
|
|
||||||
android:layout_toRightOf="@id/fromLanguage" />
|
<ImageButton
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:backgroundTint="@color/colorBackgroundDarker"
|
||||||
|
android:background="@drawable/ic_chevron_right"
|
||||||
|
/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<Spinner
|
<Spinner
|
||||||
android:id="@+id/toLanguageSpinner"
|
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_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
|
<TextView
|
||||||
android:id="@+id/original_message_textview"
|
android:id="@+id/original_message_textview"
|
||||||
@ -74,7 +71,7 @@
|
|||||||
android:textColor="@color/nc_incoming_text_default"
|
android:textColor="@color/nc_incoming_text_default"
|
||||||
android:padding="@dimen/dialog_padding"
|
android:padding="@dimen/dialog_padding"
|
||||||
android:layout_margin="@dimen/standard_margin"
|
android:layout_margin="@dimen/standard_margin"
|
||||||
android:background="@drawable/shape_incoming_message"
|
android:background="@drawable/shape_grouped_incoming_message"
|
||||||
android:scrollbars="vertical"
|
android:scrollbars="vertical"
|
||||||
android:text="" />
|
android:text="" />
|
||||||
|
|
||||||
@ -85,8 +82,11 @@
|
|||||||
android:layout_margin="@dimen/standard_margin"
|
android:layout_margin="@dimen/standard_margin"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:scrollbars="vertical"
|
android:scrollbars="vertical"
|
||||||
|
android:padding="@dimen/dialog_padding"
|
||||||
|
android:background="@drawable/shape_grouped_incoming_message"
|
||||||
android:text=""
|
android:text=""
|
||||||
android:textSize="@dimen/message_text_size"
|
android:textSize="@dimen/message_text_size"
|
||||||
|
android:textColor="@color/nc_incoming_text_default"
|
||||||
android:visibility="visible" />
|
android:visibility="visible" />
|
||||||
|
|
||||||
<ProgressBar
|
<ProgressBar
|
||||||
|
Loading…
Reference in New Issue
Block a user