package com.ese2013.mensaunibe.model.api; import android.app.ProgressDialog; import android.content.Context; import android.os.AsyncTask; import com.ese2013.mensaunibe.R; import com.ese2013.mensaunibe.menu.MenuActivity.TabCollectionPagerAdapter; import com.ese2013.mensaunibe.model.mensa.Mensa; import com.ese2013.mensaunibe.model.menu.DailyMenu; import com.ese2013.mensaunibe.model.menu.Menuplan; import com.memetix.mst.language.Language; import android.util.Log; import android.widget.Toast; import com.memetix.mst.translate.Translate; /** * @author group7 * @author Andreas Hohler */ public class LanguageChanger extends AsyncTask<Void, Void, Boolean> { private static final String CLIENT_ID = "39va9ZXtJS21GVYFGaf6"; private static final String CLIENT_TOKEN = "xqYAW+fcf8icgErpva8EVJHZx5gzBEH4iWOZMmlxiGo="; private static final String TAG = "LanguageChanger"; private ProgressDialog dialog; private Mensa mensa; private Context context; private TabCollectionPagerAdapter adapter; public LanguageChanger(Context context, Mensa mensa) { assert context != null && mensa != null; this.dialog = new ProgressDialog(context); this.mensa = mensa; this.context = context; Translate.setClientId(CLIENT_ID); Translate.setClientSecret(CLIENT_TOKEN); } protected void onPreExecute() { this.dialog.setMessage(context.getString(R.string.translating_menu_data)); this.dialog.show(); } protected void onPostExecute(final Boolean success) { if (dialog.isShowing()) { dialog.dismiss(); } if(success) { Toast.makeText(context, context.getString(R.string.menu_translate_done), Toast.LENGTH_SHORT).show(); if(adapter != null) adapter.notifyDataSetChanged(); } else { Toast.makeText(context, context.getString(R.string.menu_translate_fail), Toast.LENGTH_SHORT).show(); } } /** * Sets the ListAdapter of the menus * @param adapter */ public void setAdapter(TabCollectionPagerAdapter adapter) { assert adapter != null; this.adapter = adapter; } /** * Core - translates a string * @param text * @return the translated string */ private String translate(String text) { String result = ""; try { result = Translate.execute(text, Language.GERMAN, Language.ENGLISH); } catch (Exception e) { Log.e(TAG, e.getMessage()); for(StackTraceElement s: e.getStackTrace()) { Log.e(TAG, s.toString()); } } return result; } protected Boolean doInBackground(Void... params) { String result = ""; int success = 0; for(Menuplan m: mensa.getWeeklyMenu()) { for(DailyMenu d : m) { result = this.translate(d.getMenu().replace("\n", "\r\n")); if(result.length() > 1) { d.setMenu(result); success+=1; } result = ""; result = this.translate(d.getTitle()); if(result.length() > 1) { d.setTitle(result); success+=1; } } } if(success >= 2) { mensa.setLanguage(Language.ENGLISH); return true; } return false; } }