/*
* Materialize - Materialize all those not material
* Copyright (C) 2015 XiNGRZ <xxx@oxo.ooo>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package ooo.oxo.apps.materialize;
import android.content.Intent;
import android.databinding.DataBindingUtil;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.util.ArrayMap;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import ooo.oxo.apps.materialize.databinding.AboutActivityBinding;
import ooo.oxo.apps.materialize.databinding.AboutHeaderBinding;
import ooo.oxo.apps.materialize.databinding.AboutLibraryItemBinding;
import ooo.oxo.library.databinding.support.widget.BindingRecyclerView;
public class AboutActivity extends AppCompatActivity {
private final ArrayMap<String, String> libraries = new ArrayMap<>();
@Override
@SuppressWarnings("SpellCheckingInspection")
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AboutActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.about_activity);
binding.toolbar.setNavigationOnClickListener(v -> supportFinishAfterTransition());
libraries.put("romannurik / AndroidAssetStudio", "https://github.com/romannurik/AndroidAssetStudio");
binding.libraries.setAdapter(new LibrariesAdapter());
}
private void open(String url) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
class LibrariesAdapter extends RecyclerView.Adapter<BindingRecyclerView.ViewHolder> {
private final LayoutInflater inflater = getLayoutInflater();
@Override
public BindingRecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return viewType == 0
? new HeaderViewHolder(AboutHeaderBinding.inflate(inflater, parent, false))
: new ItemViewHolder(AboutLibraryItemBinding.inflate(inflater, parent, false));
}
@Override
public void onBindViewHolder(BindingRecyclerView.ViewHolder holder, int position) {
if (holder.getItemViewType() == 0) {
((HeaderViewHolder) holder).binding.setName(position == 0
? R.string.fork_me_on_github
: R.string.libraries_used);
} else {
ItemViewHolder itemHolder = (ItemViewHolder) holder;
if (position == 1) {
itemHolder.binding.setName("oxoooo / materialize");
} else {
itemHolder.binding.setName(libraries.keyAt(position - 3));
}
}
}
@Override
public int getItemViewType(int position) {
return position == 0 || position == 2 ? 0 : 1;
}
@Override
public int getItemCount() {
return libraries.size() + 3;
}
private void handleItemClick(int position) {
if (position == 1) {
open("https://github.com/oxoooo/materialize");
} else {
open(libraries.valueAt(position - 3));
}
}
class HeaderViewHolder extends BindingRecyclerView.ViewHolder<AboutHeaderBinding> {
public HeaderViewHolder(AboutHeaderBinding binding) {
super(binding);
}
}
class ItemViewHolder extends BindingRecyclerView.ViewHolder<AboutLibraryItemBinding> {
public ItemViewHolder(AboutLibraryItemBinding binding) {
super(binding);
itemView.setOnClickListener(v -> handleItemClick(getAdapterPosition()));
}
}
}
}