Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package sms.count;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.OutputStreamWriter;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import android.app.Activity;
- import android.database.Cursor;
- import android.net.Uri;
- import android.os.Bundle;
- import android.provider.UserDictionary.Words;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.*;
- public class SMSCount extends Activity
- {
- // dichiarazione oggetti
- TextView smsTot, sms2day, smsSoldi, smsSoldiMese, smsSoldiRicarica;
- Spinner tariffaCombo;
- Button creaTariffa, tariffaScrivi, setData;
- EditText nomeTariffa, smsGratis, nSmsPagamentoPrima, cSmsPagamentoPrima, cSmsPagamentoDopo, cSmsNoGratis, dataRicarica;
- String temp[], split[];
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- System.out.println("!!DEBUG!! app parte");
- super.onCreate(savedInstanceState);
- setContentView(R.layout.bk);
- // richiamo la funzione guiExec
- guiExec();
- }
- protected void guiExec()
- {
- String data_today = new java.text.SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(new java.util.Date (System.currentTimeMillis())).substring(0, 2);
- // assegno gli oggetti ai corrispettivi nella GUI
- smsTot = (TextView) findViewById(R.id.smsTot);
- sms2day = (TextView) findViewById(R.id.sms2day);
- smsSoldi = (TextView) findViewById(R.id.smsSoldi);
- smsSoldiMese = (TextView) findViewById(R.id.smsSoldiMese);
- smsSoldiRicarica = (TextView) findViewById(R.id.smsSoldiRicarica);
- tariffaCombo = (Spinner) findViewById(R.id.tariffaCombo);
- creaTariffa = (Button) findViewById(R.id.creaTariffa);
- dataRicarica = (EditText) findViewById(R.id.dataRicarica);
- setData = (Button) findViewById(R.id.setData);
- // trovo gli sms totali
- smsTot.setText("Messaggi inviati totali: "+getSmsCount(false));
- sms2day.setText("Messaggi inviati oggi: " +getSmsCount(true));
- // calcolo la spesa mensile
- int costo_mese = 0;
- String dbsoldi_read = databaseRead("smscount_soldi.db").replace("\n", "");
- split = dbsoldi_read.split("\\|");
- for (int i=0;i<(split.length)/2;i++)
- if (Integer.parseInt(split[i*2].substring(0,2)) == Integer.parseInt(data_today))
- costo_mese += Integer.parseInt(split[(i*2)+1]);
- smsSoldiMese.setText("Soldi spesi questo mese: "+costo_mese+" cent ("+(float)costo_mese/100+" euro)");
- // aggiungo allo spinner la lista delle tariffe già create
- String db_read = databaseRead("smscount.db").replace("\n", "");
- temp = db_read.split("\\|");
- String nomi[] = new String[(temp.length+1)/6];
- for (int i=1;i<=(temp.length+1)/6;i++)
- {
- nomi[i-1] = temp[(i*6)-1];
- }
- ArrayAdapter tariffaArrAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, nomi);
- tariffaCombo.setAdapter(tariffaArrAdapter);
- // assegno all'evento della selezione della tariffa il calcolo dei soldi spesi
- tariffaCombo.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
- {
- public void onItemSelected(AdapterView parentView, View childView, int position, long id)
- {
- String item = parentView.getItemAtPosition(position).toString();
- // cerco l'item nell'array e calcolo i soldi
- for (int i=0;i<temp.length;i++)
- {
- if (item.equals(temp[i]))
- {
- String data_today = new java.text.SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(new java.util.Date (System.currentTimeMillis())).substring(0, 10);
- int smsGratis = Integer.parseInt(temp[i-5]);
- int smsMandati = getSmsCount(true);
- int soldiPerSms = Integer.parseInt(temp[i-1]);
- int smsPrima = Integer.parseInt(temp[i-4]);
- int costoPrima = Integer.parseInt(temp[i-3]);
- int costoDopo = Integer.parseInt(temp[i-2]);
- /*System.out.println("!!Gratis: "+smsGratis);
- System.out.println("!!Mandati: "+smsMandati);
- System.out.println("!!soldiPerSms: "+soldiPerSms);
- System.out.println("!!smsPrima: "+smsPrima);
- System.out.println("!!costoPrima: "+costoPrima);
- System.out.println("!!costoDopo: "+costoDopo);*/
- int spesa = getSoldiSpesi(smsGratis, smsMandati, soldiPerSms, smsPrima, costoPrima, costoDopo);
- smsSoldi.setText("Soldi spesi oggi: "+spesa+" cent ("+(float)spesa/100+" euro)");
- if (databaseRead("smscount_soldi.db") == "-1")
- {
- try
- {
- System.out.println("!!DEBUG!! scrivo_soldi");
- final String TESTSTRING = new String(data_today+"|"+spesa+"|"); // smsGratis|nPrima|cPrima|cDopo|smsNoGratis|tariffaNome
- FileOutputStream fOut = openFileOutput("smscount_soldi.db", MODE_WORLD_READABLE);
- OutputStreamWriter osw = new OutputStreamWriter(fOut);
- osw.write(TESTSTRING);
- osw.flush();
- osw.close();
- }
- catch (IOException ioe)
- {
- System.out.println("!!DEBUG!! write: non scrivo "+ioe.toString());
- }
- }
- else
- {
- String dbread = databaseRead("smscount_soldi.db");
- if (dbread.lastIndexOf(data_today) != -1)
- {
- String to_replace = dbread.substring(dbread.lastIndexOf(data_today),dbread.length());
- String replace = dbread.replace(to_replace, data_today+"|"+spesa+"|");
- try
- {
- System.out.println("!!DEBUG!! sostituisco");
- FileOutputStream fOut = openFileOutput("smscount_soldi.db", MODE_WORLD_READABLE);
- OutputStreamWriter osw = new OutputStreamWriter(fOut);
- osw.write(replace);
- osw.flush();
- osw.close();
- }
- catch (IOException ioe)
- {
- System.out.println("!!DEBUG!! write: non scrivo "+ioe.toString());
- }
- }
- else
- {
- System.out.println("!! append");
- try
- {
- System.out.println("!!DEBUG!! scrivo_soldi");
- final String TESTSTRING = new String(data_today+"|"+spesa+"|"); // smsGratis|nPrima|cPrima|cDopo|smsNoGratis|tariffaNome
- FileOutputStream fOut = openFileOutput("smscount_soldi.db", MODE_APPEND);
- OutputStreamWriter osw = new OutputStreamWriter(fOut);
- osw.write(TESTSTRING);
- osw.flush();
- osw.close();
- }
- catch (IOException ioe)
- {
- System.out.println("!!DEBUG!! write: non scrivo "+ioe.toString());
- }
- }
- }
- }
- }
- }
- public void onNothingSelected(AdapterView parentView)
- {
- }
- });
- // crea tariffa personalizzata
- creaTariffa.setOnClickListener(new OnClickListener()
- {
- public void onClick(View v)
- {
- _creaTariffa();
- }
- });
- // data ricarica
- String data_ricarica_read = databaseRead("smscount_data.db");
- if (data_ricarica_read != "-1")
- {
- _setData(data_ricarica_read);
- dataRicarica.setText(data_ricarica_read);
- }
- setData.setOnClickListener(new OnClickListener()
- {
- public void onClick(View v)
- {
- _setData(dataRicarica.getText().toString());
- }
- });
- }
- protected void _setData(String p)
- {
- SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy");
- SimpleDateFormat df2 = new SimpleDateFormat("MM/dd/yyyy");
- try
- {
- Date dataRicarica_d = df.parse(p);
- int costo_ricarica = 0;
- String dbsoldi_read = databaseRead("smscount_soldi.db").replace("\n", "");
- split = dbsoldi_read.split("\\|");
- for (int i=0;i<(split.length)/2;i++)
- {
- try
- {
- Date dataLeg = df2.parse(split[i*2]);
- if (dataRicarica_d.before(dataLeg) || dataRicarica_d.equals(dataLeg))
- costo_ricarica += Integer.parseInt(split[(i*2)+1]);
- }
- catch (Exception e) { smsSoldiRicarica.setText("Soldi spesi dall'ultima ricarica: data non valida");}
- }
- smsSoldiRicarica.setText("Soldi spesi dall'ultima ricarica: "+costo_ricarica+" cent ("+(float)costo_ricarica/100+" euro)");
- // scrivo su file la data dell'ultima ricarica
- try
- {
- System.out.println("!!DEBUG!! scrivo_data");
- FileOutputStream fOut = openFileOutput("smscount_data.db", MODE_WORLD_READABLE);
- OutputStreamWriter osw = new OutputStreamWriter(fOut);
- osw.write(p);
- osw.flush();
- osw.close();
- }
- catch (IOException ioe)
- {
- System.out.println("!!DEBUG!! write: non scrivo "+ioe.toString());
- }
- }
- catch (Exception e) { smsSoldiRicarica.setText("Soldi spesi dall'ultima ricarica: data non valida");}
- }
- protected void _creaTariffa()
- {
- ViewFlipper vf = (ViewFlipper) findViewById(R.id.details);
- vf.showNext();
- tariffaScrivi = (Button) findViewById(R.id.tariffaScrivi);
- tariffaScrivi.setOnClickListener(new OnClickListener()
- {
- public void onClick(View v)
- {
- String[] params = new String[6];
- // assegno gli oggetti
- nomeTariffa = (EditText) findViewById(R.id.nomeTariffa);
- smsGratis = (EditText) findViewById(R.id.smsGratis);
- nSmsPagamentoPrima = (EditText) findViewById(R.id.nSmsPagamentoPrima);
- cSmsPagamentoPrima = (EditText) findViewById(R.id.cSmsPagamentoPrima);
- cSmsPagamentoDopo = (EditText) findViewById(R.id.cSmsPagamentoDopo);
- cSmsNoGratis = (EditText) findViewById(R.id.cSmsNoGratis);
- // leggo il testo dagli oggetti
- params[0] = nomeTariffa.getText().toString();
- params[1] = smsGratis.getText().toString();
- params[2] = nSmsPagamentoPrima.getText().toString();
- params[3] = cSmsPagamentoPrima.getText().toString();
- params[4] = cSmsPagamentoDopo.getText().toString();
- params[5] = cSmsNoGratis.getText().toString();
- // aggiungo la nuova tariffa
- try
- {
- System.out.println("!!DEBUG!! scrivo");
- final String TESTSTRING = new String(params[1]+"|"+params[2]+"|"+params[3]+"|"+params[4]+"|"+params[5]+"|"+params[0]+"|"); // smsGratis|nPrima|cPrima|cDopo|smsNoGratis|tariffaNome
- FileOutputStream fOut = openFileOutput("smscount.db", MODE_APPEND);
- OutputStreamWriter osw = new OutputStreamWriter(fOut);
- osw.write(TESTSTRING);
- osw.flush();
- osw.close();
- }
- catch (IOException ioe)
- {
- System.out.println("!!DEBUG!! write: non scrivo "+ioe.toString());
- }
- // torno alla gui principale
- ViewFlipper vf = (ViewFlipper) findViewById(R.id.details);
- vf.showPrevious();
- guiExec();
- }
- });
- }
- protected String databaseRead(String searchFile)
- {
- try
- {
- FileInputStream fIn = openFileInput(searchFile);
- InputStreamReader isr = new InputStreamReader(fIn);
- String index ="";
- char[] inputBuffer = new char[1];
- while ( isr.read(inputBuffer) != -1)
- {
- index = index + new String(inputBuffer);
- }
- //System.out.println("!!DEBUG!! index: "+index);
- fIn.close();
- isr.close();
- return index;
- }
- catch (IOException ioe)
- {
- System.out.println("!!DEBUG!! eccezione: "+ioe.toString());
- return "-1";
- }
- }
- protected int getSoldiSpesi(int smsGratis, int smsMandati, int soldiPerSms,
- int smsPrima, int costoPrima, int costoSmsDopo)
- {
- if (smsGratis == 0)
- return smsMandati*soldiPerSms;
- else
- {
- if (smsMandati >= smsPrima)
- if (smsMandati-smsPrima-smsGratis > 0)
- return (smsPrima*costoPrima) + ( (smsMandati-smsPrima-smsGratis) * costoSmsDopo );
- else
- return (smsPrima*costoPrima);
- else
- return smsMandati*costoPrima;
- }
- }
- protected int getSmsCount(boolean today)
- {
- Uri uri = Uri.parse("content://sms/sent");
- Cursor c= getContentResolver().query(uri, null, null ,null,null);
- if (today == false)
- return c.getCount();
- else
- {
- String data;
- String data_today = new java.text.SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(new java.util.Date (System.currentTimeMillis())).substring(0, 10); // data di oggi
- int ret = 0; // contatore
- if (c.moveToFirst())
- {
- for (int i=0;i<c.getCount();i++)
- {
- data = c.getString(c.getColumnIndexOrThrow("date")).toString();
- data = new java.text.SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(new java.util.Date (Long.parseLong(data))).substring(0, 10); // data del messaggio
- if (data.equals(data_today))
- {
- ret++;
- }
- c.moveToNext(); // vado al prossimo messaggio
- }
- }
- return ret;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement