package com.cfap.cfadevicemanager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.v4.content.LocalBroadcastManager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.cfap.cfadevicemanager.dbmodels.DataTrackerDBModel;
import com.cfap.cfadevicemanager.dbmodels.DatabaseHelper;
import com.cfap.cfadevicemanager.models.AppTrafficRecord;
import com.cfap.cfadevicemanager.services.AppTrackerService;
import com.cfap.cfadevicemanager.utils.Intents;
import java.io.IOException;
import java.util.List;
/**
* Created by PraveenKatha on 30/09/15.
*/
public class DemoActivity extends AppCompatActivity{
private RecyclerView recyclerView;
private DatabaseHelper myDbHelp;
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.demo_activity);
myDbHelp = DatabaseHelper.getInstance(getApplicationContext());
try {
myDbHelp.createDataBase();
} catch (IOException e) {
// TODO Auto-generated catch block;
e.printStackTrace();
}
recyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
adapter = new MyAdapter();
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
adapter.setData(DataTrackerDBModel.getAppRecordsForToday(this));
LocalBroadcastManager.getInstance(this).registerReceiver(appDataUpdateStatusReceiver,
new IntentFilter(Intents.APP_DATA_UPDATED_EVENT));
}
@Override
protected void onResume() {
super.onResume();
Intent i = new Intent(this,AppTrackerService.class);
i.setAction("APP_DATA_REFRESH");
startService(i);
}
@Override
protected void onDestroy() {
super.onDestroy();
LocalBroadcastManager.getInstance(this).unregisterReceiver(appDataUpdateStatusReceiver);
}
private void refreshData() {
adapter.setData(DataTrackerDBModel.getAppRecordsForToday(this));
}
class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<AppTrafficRecord> trafficRecords;
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int i) {
View itemView = LayoutInflater.from(parent.getContext()).
inflate(R.layout.list_item, parent, false);
return new ViewHolder(itemView);
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
AppTrafficRecord appTrafficRecord = trafficRecords.get(i);
viewHolder.appNameTv.setText(""+appTrafficRecord.getName());
viewHolder.wifiDataTv.setText("Wifi data: "+appTrafficRecord.getWifiData());
viewHolder.mobileDataTv.setText("Mobile Data: "+appTrafficRecord.getNetworkData());
}
public void setData(List<AppTrafficRecord> trafficRecords) {
this.trafficRecords = trafficRecords;
notifyDataSetChanged();
}
@Override
public int getItemCount() {
if(trafficRecords == null)
return 0;
return trafficRecords.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
ImageView iv;
TextView appNameTv;
TextView mobileDataTv;
TextView wifiDataTv;
public ViewHolder(View itemView) {
super(itemView);
iv = (ImageView) itemView.findViewById(R.id.app_icon);
appNameTv = (TextView) itemView.findViewById(R.id.app_name);
mobileDataTv = (TextView) itemView.findViewById(R.id.mobile_data);
wifiDataTv = (TextView) itemView.findViewById(R.id.wifi_data);
}
}
}
private BroadcastReceiver appDataUpdateStatusReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Get extra data included in the Intent
Toast.makeText(DemoActivity.this,"Data Updated",Toast.LENGTH_SHORT).show();
refreshData();
}
};
}