package dentex.youtube.downloader.docs;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.ListActivity;
import android.content.res.AssetManager;
import android.os.Bundle;
import android.support.v4.app.NavUtils;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import dentex.youtube.downloader.R;
import dentex.youtube.downloader.utils.SectionedAdapter;
import dentex.youtube.downloader.utils.Utils;
public class TranslatorsShowActivity extends ListActivity {
public static final String DEBUG_TAG = "TranslatorsShowActivity";
private String json;
public AssetManager assMan;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Theme init
Utils.themeInit(this);
setContentView(R.layout.activity_translators_show);
setupActionBar();
String[] languagesArray = getLanguages();
for (int i = 0; i < languagesArray.length; i++) {
String[] list = getTranslatorsNames(languagesArray[i]);
adapter.addSection(languagesArray[i], new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list));
}
setListAdapter(adapter);
}
private void setupActionBar() {
getActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
private String[] getLanguages() {
assMan = getAssets();
String[] languagesArray = { "All" };
try {
InputStream in = assMan.open("languages");
InputStreamReader is = new InputStreamReader(in);
StringBuilder sb = new StringBuilder();
BufferedReader br = new BufferedReader(is);
String read = br.readLine();
while(read != null) {
sb.append(read + "_");
read = br.readLine();
}
String languages = sb.toString();
languagesArray = languages.split("_");
Log.i(DEBUG_TAG, languages);
} catch (IOException e) {
Log.e(DEBUG_TAG, e.getMessage());
}
return languagesArray;
}
private String[] getTranslatorsNames(String assetName) {
assMan = getAssets();
try {
InputStream in = assMan.open(assetName);
InputStreamReader is = new InputStreamReader(in);
StringBuilder sb = new StringBuilder();
BufferedReader br = new BufferedReader(is);
String read = br.readLine();
while(read != null) {
sb.append(read);
read = br.readLine();
}
json = sb.toString();
} catch (IOException e) {
Log.e(DEBUG_TAG, e.getMessage());
}
JSONArray jArray = null;
List<String> usernames = new ArrayList<String>();
List<String> fullnames = new ArrayList<String>();
List<String> profileLinks = new ArrayList<String>();
try {
jArray = new JSONArray(json);
for (int i = 0; i < jArray.length(); i++) {
JSONObject jo = jArray.getJSONObject(i);
String username = jo.getString("username");
usernames.add(username);
String fullname = jo.getString("fullname");
if (!username.equals(fullname)) {
fullnames.add(" (" + fullname + ")");
} else {
fullnames.add("");
}
profileLinks.add(jo.getString("profile_link"));
}
} catch (JSONException e) {
Log.e(DEBUG_TAG, e.getMessage());
}
Iterator<String> userIter = usernames.iterator();
Iterator<String> fullIter = fullnames.iterator();
List<String> listEntries = new ArrayList<String>();
while (userIter.hasNext()) {
try {
listEntries.add(userIter.next() + fullIter.next());
} catch (NoSuchElementException e) {
listEntries.add("//");
}
}
return listEntries.toArray(new String[0]);
}
SectionedAdapter adapter = new SectionedAdapter() {
protected View getHeaderView(String caption, int index, View convertView, ViewGroup parent) {
TextView result=(TextView)convertView;
if (convertView == null) {
result=(TextView)getLayoutInflater().inflate(R.layout.activity_translators_header, null);
}
result.setText(caption);
return(result);
}
};
}