package br.com.suelengc.calctributospj.view.activity;
import android.annotation.SuppressLint;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.GradientDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.Toast;
import br.com.suelengc.calctributospj.R;
import br.com.suelengc.calctributospj.domain.TipoBaseCalculo;
import br.com.suelengc.calctributospj.domain.TipoTributacao;
import br.com.suelengc.calctributospj.model.NotaFiscal;
import br.com.suelengc.calctributospj.preference.Preferencias;
import br.com.suelengc.calctributospj.preference.PreferenciasCalculo;
import br.com.suelengc.calctributospj.share.Email;
import br.com.suelengc.calctributospj.view.fragment.EntradaDadosCalculoValorBrutoFragment;
import br.com.suelengc.calctributospj.view.fragment.EntradaDadosCalculoValorPorHoraFragment;
import br.com.suelengc.calctributospj.view.fragment.SaidaDadosCalculoLucroPresumidoFragment;
import br.com.suelengc.calctributospj.view.fragment.SaidaDadosCalculoSimplesNacionalFragment;
import br.com.suelengc.calctributospj.view.listener.CalcularListener;
import br.com.suelengc.calctributospj.view.listener.CalcularListener.CalculatorCallback;
import br.com.suelengc.calctributospj.view.menu.MyMenu;
import com.actionbarsherlock.app.SherlockFragment;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
public class CalculatorActivity extends BaseActivity implements CalculatorCallback {
public static final String EXTRA_FORMATO_TELA = "1";
Button btnCalcular;
TipoBaseCalculo baseCalculo;
NotaFiscal notaFiscal;
PreferenciasCalculo preferencias;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.calculator);
baseCalculo = (TipoBaseCalculo) getIntent().getSerializableExtra(EXTRA_FORMATO_TELA);
GradientDrawable bg = (GradientDrawable) getResources().getDrawable(R.drawable.bg_gradient);
getSupportActionBar().setBackgroundDrawable(bg);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
// Impedir que o teclado seja aberto ao abrir a activity
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
// Carrega preferencias de calculo
preferencias = new PreferenciasCalculo(getApplicationContext());
if (baseCalculo.equals(TipoBaseCalculo.VALOR_BRUTO)) {
setTitle("C�lculo pelo Valor Bruto");
} else {
setTitle("C�lculo pelo Valor/Hora");
}
if (savedInstanceState == null) {
/** Cria fragment entrada */
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
SherlockFragment myFragmentDadosEntrada = null;
/**
* Escolhe qual fragment de entrada ser� apresentado a depender do
* tipo do tributo
*/
if (baseCalculo.equals(TipoBaseCalculo.VALOR_BRUTO)) {
myFragmentDadosEntrada = new EntradaDadosCalculoValorBrutoFragment();
} else {
myFragmentDadosEntrada = new EntradaDadosCalculoValorPorHoraFragment();
}
ft.replace(R.id_calc.dadosEntradaCalculo, myFragmentDadosEntrada);
ft.commit();
/** Cria fragment saida */
SherlockFragment myFragmentDadosSaida = null;
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
if (preferencias.getTipoTributacao().equals(TipoTributacao.LUCRO_PRESUMIDO)) {
myFragmentDadosSaida = new SaidaDadosCalculoLucroPresumidoFragment();
} else if (preferencias.getTipoTributacao().equals(TipoTributacao.SIMPLES_NACIONAL)) {
myFragmentDadosSaida = new SaidaDadosCalculoSimplesNacionalFragment();
}
fragmentTransaction.replace(R.id_calc.dadosSaidaCalculo, myFragmentDadosSaida);
fragmentTransaction.commit();
}
// Mostrar popup para avalia��o
Preferencias p = new Preferencias(this);
boolean rate = p.getBoolean("rate");
if (rate == false) {
RatingDialogFragment ratingDialogFragment = new RatingDialogFragment();
ratingDialogFragment.show(getSupportFragmentManager(), "dialog");
}
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
notaFiscal = (NotaFiscal) savedInstanceState.getSerializable("notaFiscal");
super.onRestoreInstanceState(savedInstanceState);
}
@Override
protected void onStart() {
super.onStart();
CalcularListener calcularListener = new CalcularListener(preferencias, baseCalculo, this);
btnCalcular = (Button) findViewById(R.id_calc.btcalcular);
btnCalcular.setOnClickListener(calcularListener);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater mi = new MenuInflater(getApplicationContext());
mi.inflate(R.menu.menu, menu);
// Ocultar menus desta tela
menu.findItem(MyMenu.SETTINGS).setVisible(false);
menu.findItem(MyMenu.ABOUT).setVisible(false);
return true;
}
@Override
public void onFinishCalculator(boolean sucess, NotaFiscal notaFiscal) {
if (sucess) {
this.notaFiscal = notaFiscal;
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putSerializable("notaFiscal", notaFiscal);
super.onSaveInstanceState(outState);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MyMenu.COPY:
if (!isNotaFiscalIsNull()) {
copyToTransferArea();
}
return true;
case MyMenu.EMAIL:
if (!isNotaFiscalIsNull()) {
sendViaEmail();
}
return true;
}
return super.onOptionsItemSelected(item);
}
private boolean isNotaFiscalIsNull() {
if (notaFiscal == null) {
Toast.makeText(this, "Voc� deve calcular antes de copiar", Toast.LENGTH_LONG).show();
return true;
} else {
return false;
}
}
@SuppressWarnings("deprecation")
@SuppressLint("NewApi")
private void copyToTransferArea() {
String content = notaFiscal.toString();
int sdk = android.os.Build.VERSION.SDK_INT;
if (sdk < android.os.Build.VERSION_CODES.HONEYCOMB) {
android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText(content.toString());
} else {
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("tributos", content.toString());
clipboard.setPrimaryClip(clip);
}
Toast.makeText(this, "Copiado para a �rea de transfer�ncia", Toast.LENGTH_LONG).show();
}
private void sendViaEmail() {
Email email = new Email();
email.setContent(notaFiscal.toString());
email.openIntentEmail(this);
}
}