package net.mvla.mvhs.ui; import android.content.Intent; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; import net.mvla.mvhs.BuildConfig; import net.mvla.mvhs.R; import net.mvla.mvhs.Utils; import java.util.ArrayList; import java.util.List; public class AboutActivity extends AppCompatActivity { private List<Developer> mDevelopers; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_about); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { getWindow().setStatusBarColor(ContextCompat.getColor(this, android.R.color.transparent)); } // TextView view = (TextView) findViewById(R.id.activity_about_appname_textview); setTitle(getString(R.string.app_name) + " v" + BuildConfig.VERSION_NAME); mDevelopers = new ArrayList<>(); for (int i = 1; ; i++) { int id = getDevStringResource("" + i); if (id == 0) { break; } Developer dev = new Developer(); dev.name = getString(id); dev.subtitle = getString(getDevStringResource(i + "_subtitle")); dev.desc = getString(getDevStringResource(i + "_desc")); int website = getDevStringResource(i + "_website"); if (website != 0) { dev.website = getString(website); } int email = getDevStringResource(i + "_email"); if (email != 0) { dev.email = getString(email); } mDevelopers.add(dev); } RecyclerView recyclerView = (RecyclerView) findViewById(R.id.activity_about_recycler); recyclerView.setAdapter(new AboutRecyclerAdapter()); recyclerView.setHasFixedSize(true); recyclerView.setLayoutManager(new LinearLayoutManager(this)); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_actionbar); setSupportActionBar(toolbar); //noinspection ConstantConditions getSupportActionBar().setDisplayHomeAsUpEnabled(true); } private int getDevStringResource(String i) { return getResources().getIdentifier("about_dev" + i, "string", getPackageName()); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { // Respond to the action bar's Up/Home button case android.R.id.home: finish(); return true; } return super.onOptionsItemSelected(item); } private class Developer { String name; String subtitle; String desc; String website; String email; } private class AboutRecyclerAdapter extends RecyclerView.Adapter<AboutRecyclerAdapter.ViewHolder> { @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = getLayoutInflater().inflate(R.layout.list_item_about, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(ViewHolder holder, int position) { final Developer developer = mDevelopers.get(position); holder.name.setText(developer.name); holder.subtitle.setText(developer.subtitle); holder.desc.setText(developer.desc); if (developer.email == null && developer.website == null) { holder.actionButtonBar.setVisibility(View.GONE); holder.desc.setPadding(0, 0, 0, Utils.convertDpToPx(AboutActivity.this, 24)); } else { holder.actionButtonBar.setVisibility(View.VISIBLE); holder.desc.setPadding(0, 0, 0, Utils.convertDpToPx(AboutActivity.this, 16)); if (developer.website != null) { holder.website.setVisibility(View.VISIBLE); holder.website.setOnClickListener(v -> { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(developer.website)); startActivity(intent); }); } else { holder.website.setVisibility(View.GONE); } if (developer.email != null) { holder.email.setVisibility(View.VISIBLE); holder.email.setOnClickListener(v -> { Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto", developer.email, null)); startActivity(intent); }); } else { holder.email.setVisibility(View.GONE); } } } @Override public int getItemCount() { return mDevelopers.size(); } public class ViewHolder extends RecyclerView.ViewHolder { private TextView name; private TextView subtitle; private TextView desc; private Button website; private Button email; private LinearLayout actionButtonBar; public ViewHolder(View itemView) { super(itemView); name = (TextView) itemView.findViewById(R.id.list_item_about_name); subtitle = (TextView) itemView.findViewById(R.id.list_item_about_subtitle); desc = (TextView) itemView.findViewById(R.id.list_item_about_desc); website = (Button) itemView.findViewById(R.id.list_item_about_website_button); email = (Button) itemView.findViewById(R.id.list_item_about_email_button); actionButtonBar = (LinearLayout) itemView.findViewById(R.id.list_item_about_actions_bar); } } } }