package com.door43.translationstudio.newui.home;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.door43.translationstudio.AppContext;
import com.door43.translationstudio.R;
import com.door43.translationstudio.core.Library;
import com.door43.translationstudio.core.Project;
import com.door43.translationstudio.core.TargetLanguage;
import com.door43.translationstudio.core.TargetTranslation;
import org.unfoldingword.gogsclient.Repository;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
/**
* Created by joel on 11/6/2015.
*/
public class RestoreFromCloudAdapter extends BaseAdapter {
private List<Repository> repositories = new ArrayList<>();
private final Library library;
public RestoreFromCloudAdapter() {
this.library = AppContext.getLibrary();
}
@Override
public int getCount() {
return this.repositories.size();
}
@Override
public Repository getItem(int position) {
return this.repositories.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
ViewHolder holder;
if (convertView == null) {
v = LayoutInflater.from(parent.getContext()).inflate(R.layout.fragment_restore_from_cloud_list_item, null);
holder = new ViewHolder(v);
} else {
holder = (ViewHolder) v.getTag();
}
holder.setRepository(getItem(position));
return v;
}
/**
* Sets the data to display
* @param repositories
*/
public void setRepositories(List<Repository> repositories) {
this.repositories = repositories;
notifyDataSetChanged();
}
private class ViewHolder {
private final TextView projectName;
private final TextView targetLanguageName;
private final TextView repoUrl;
private final ImageView privacy;
private Repository repository;
public ViewHolder(View v) {
projectName = (TextView)v.findViewById(R.id.project_name);
targetLanguageName = (TextView)v.findViewById(R.id.target_language_name);
privacy = (ImageView)v.findViewById(R.id.privacy);
repoUrl = (TextView)v.findViewById(R.id.repository_url);
v.setTag(this);
}
public void setRepository(Repository repository) {
projectName.setText("");
targetLanguageName.setText("");
this.repository = repository;
if(this.repository.getIsPrivate()) {
this.privacy.setImageResource(R.drawable.ic_lock_black_18dp);
} else {
this.privacy.setImageResource(R.drawable.ic_lock_open_black_18dp);
}
repoUrl.setText(repository.getHtmlUrl());
String[] repoName = this.repository.getFullName().split("/");
if(repoName.length > 0) {
String targetTranslationSlug = repoName[repoName.length - 1];
try {
String projectSlug = TargetTranslation.getProjectSlugFromId(targetTranslationSlug);
String targetLanguageSlug = TargetTranslation.getTargetLanguageSlugFromId(targetTranslationSlug);
Project p = library.getProject(projectSlug, Locale.getDefault().getLanguage());
if (p != null) {
projectName.setText(p.name);
} else {
projectName.setText(targetTranslationSlug);
}
TargetLanguage tl = library.getTargetLanguage(targetLanguageSlug);
if (tl != null) {
targetLanguageName.setText(tl.name);
}
} catch (StringIndexOutOfBoundsException e) {
e.printStackTrace();
projectName.setText(targetTranslationSlug);
}
}
}
}
}