package com.codigoparallevar.minicards; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.View; import android.widget.ListView; import java.io.File; import java.io.IOException; import java.util.List; import java.util.Vector; public class DeckPreviewActivity extends AppCompatActivity { public static final String INTENT = "com.codigoparallevar.minicards.DECK"; private ListView listView; private CardPreviewArrayAdapter cardArrayAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_deck_preview); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.create_new_card_fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); listView = (ListView) findViewById(R.id.card_deck_list); cardArrayAdapter = new CardPreviewArrayAdapter(getApplicationContext(), listAvailableCards()); listView.setAdapter(cardArrayAdapter); } private PreviewCard[] listAvailableCards() { String cardsPath = CardFile.getDefaultCardStorage(this); File cardsDir = new File(cardsPath); if (!cardsDir.exists()) { cardsDir.mkdir(); } File[] cardFiles = cardsDir.listFiles(); if (cardFiles.length == 0){ try { CardFile.createDefaultCards(cardsDir); } catch (IOException e) { Log.e("Minicards Deck preview", "IOException when creating default cards", e); } cardFiles = cardsDir.listFiles(); } List cards = new Vector<>(cardFiles.length); for (File cardFile : cardFiles) { try { CardFile card = CardFile.load(cardFile.getAbsolutePath(), new StubPartGrid()); cards.add(new PreviewCard(card.getName(), card.getBackgroundColor(), card.getPath())); } catch (ErrorLoadingCardException e) { Log.e("Minicards Deck preview", "Error loading card, [reason=" + e.getReason() + "; path=" + cardFile.getAbsolutePath(), e); } catch (IOException e) { Log.e("Minicards Deck preview", "IOException loading card, [msg=" + e.getMessage() + "; path=" + cardFile.getAbsolutePath(), e); } } return cards.toArray(new PreviewCard[cards.size()]); } }