package com.eslab.osmonitor.providerDB;
import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ExpandableListView;
import android.widget.ResourceCursorTreeAdapter;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.TwoLineListItem;
import com.eolwral.osmonitor.R;
public class SaveInformationActivity extends Activity {
final int _ID = 0;
final int POWER = 1;
final int CPULOADAVG = 2;
final int CPULOADSD = 3;
final int CPUFREQAVG = 4;
final int CPUFREQSD = 5;
final int LEDTIMEAVG = 6;
final int LEDBRIGHTAVG = 7;
final int LEDBRIGHTSD = 8;
final int COUNT = 9;
final int STARTPOINT = 10;
final int ENDPOINT = 11;
final int VOLTAGEAVG = 12;
final int VOLTAGESD = 13;
final int WIFI_TIME_AVG = 14;
final int WIFI_PACKET_RATE_AVG = 15;
final int WIFI_PACKET_RATE_SD = 16;
private ExpandableListView mMyList;
private SQLiteDatabase mDb; // SQLite DB에 접근하기위한 변수
private Cursor mCursor;
private DatabaseHelper mSaveDatabases;
// 커스터 마이징 한 어뎁터이다.
MyExpandableListAdapter mAdapter;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.loadsave);
mMyList = (ExpandableListView)findViewById(R.id.gamesavelistview);
mSaveDatabases = new DatabaseHelper(this);
mDb = mSaveDatabases.getWritableDatabase();
CursorRefresh();
mAdapter = new MyExpandableListAdapter(this, mCursor,
android.R.layout.simple_expandable_list_item_2,
R.layout.chunk_list_item);
mMyList.setAdapter(mAdapter);
}
OnClickListener pOnClickListener = new OnClickListener() {
public void onClick(View v) {
}
};
public void CursorRefresh(){
mCursor = mDb.rawQuery("select _id, power, cpu_load_avg, cpu_load_sd," +
"cpu_freq_avg, cpu_freq_sd, led_time_avg, " +
"led_bright_avg, led_bright_sd, " +
"count, start_point, end_point, voltage_avg, voltage_sd, " +
"wifi_on_time, wifi_avg_packet_rate, wifi_sd_packet_rate " +
"from chunkset", null);
}
//option menu를 생성한다.
public boolean onCreateOptionsMenu(Menu optionMenu)
{
super.onCreateOptionsMenu(optionMenu);
optionMenu.add(0, 1, 0, getResources().getString(R.string.options_dbtable_delete));
return true;
}
// option menu에 대한 처리를 담당 한다.
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
super.onOptionsItemSelected(item);
switch(item.getItemId())
{
case 1:
// 삭제시 포지션 값을 화면에 출력 하여 준다.
Toast.makeText(SaveInformationActivity.this,String.format("모든 데이터를 삭제 하셨습니다."), Toast.LENGTH_SHORT)
.show();
mDb.delete("chunkset",null,null);
//커서의 내용을 다시 변경 한다.
CursorRefresh();
//어뎁터의 커서를 갱신 시킨다.
mAdapter.changeCursor(mCursor);
break;
}
return true;
}
public class MyExpandableListAdapter extends ResourceCursorTreeAdapter {
// 생성자로 기본적인 자료를 넘겨 주어야 한다.
public MyExpandableListAdapter(Context context, Cursor cursor,
int groupLayout, int childLayout) {
super(context, cursor, groupLayout, childLayout);
// TODO Auto-generated constructor stub
}
@Override
protected void bindChildView(View view, Context context, Cursor cursor,
boolean isLastChild) {
// TODO Auto-generated method stub
TextView mInfoView = (TextView)view.findViewById(R.id.chunk_detail_info);
/*
mInfoView.setPadding(3, 3, 3, 3);
mInfoView.setTextSize(8);*/
mInfoView.setText("CPU LOAD : "+cursor.getString(CPULOADAVG)+"%\t\t\tSD:"+cursor.getString(CPULOADSD)+"\n");
mInfoView.append("CPU Freq : "+cursor.getString(CPUFREQAVG)+"hz\t\t\tSD:"+cursor.getString(CPUFREQSD)+"\n");
mInfoView.append("LED TIME AVG : "+cursor.getString(LEDTIMEAVG)+"\t\t\tTOTAL TIME:"+cursor.getString(COUNT)+"sec\n");
mInfoView.append("LED BRIGHT AVG : "+cursor.getString(LEDBRIGHTAVG)+"(max:255)\t\t\tSD:"+cursor.getString(LEDBRIGHTSD)+"\n");
mInfoView.append("VOLTAGE : "+cursor.getString(VOLTAGEAVG)+"V\t\t\tSD:"+cursor.getString(VOLTAGESD)+"\n");
mInfoView.append("WIFI Time : "+cursor.getString(WIFI_TIME_AVG)+"\n");
mInfoView.append("WIFI Packet Rate: "+cursor.getString(WIFI_PACKET_RATE_AVG)+"\t\t\tSD:"+cursor.getString(WIFI_PACKET_RATE_SD)+"\n");
}
/*
@Override
public View newChildView(Context context, Cursor cursor,
boolean isLastChild, ViewGroup parent) {
// TODO Auto-generated method stub
return super.newChildView(context, cursor, isLastChild, parent);
}*/
@Override
protected void bindGroupView(View view, Context context, Cursor cursor,
boolean isExpanded) {
// TODO Auto-generated method stub
TwoLineListItem mTwoLineList = (TwoLineListItem)view;
TextView mInfoView = mTwoLineList.getText1();
TextView mInfoView2 = mTwoLineList.getText2();
mInfoView.setTextSize(15);
mInfoView.setTextColor(Color.GREEN);
mInfoView2.setTextSize(15);
mInfoView2.setTextColor(Color.BLUE);
mInfoView.setText(cursor.getString(_ID)+" Power: "+cursor.getString(POWER)+"mW");
mInfoView2.setText(" Range:\t"+cursor.getString(STARTPOINT)+"% ~ "+cursor.getString(ENDPOINT)+"%");
}
@Override
protected Cursor getChildrenCursor(Cursor groupCursor) {
// TODO Auto-generated method stub
Cursor childCurosr = mDb.rawQuery("select _id, power, cpu_load_avg, cpu_load_sd," +
"cpu_freq_avg, cpu_freq_sd, led_time_avg, " +
"led_bright_avg, led_bright_sd, " +
"count, start_point, end_point, voltage_avg, voltage_sd, " +
"wifi_on_time, wifi_avg_packet_rate, wifi_sd_packet_rate " +
"from chunkset where _id = "+groupCursor.getString(_ID), null);
return childCurosr;
}
}
/*
//커서 어뎁터의 커스터 마이징 원하는 값을 출력 해주기 위해서 한다.
private final class ContactListItemAdapter extends ResourceCursorAdapter {
public ContactListItemAdapter(Context context, int layout, Cursor c) {
super(context, layout, c);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
final ContactListItemCache cache = (ContactListItemCache) view.getTag();
//캐쉬에서 꺼내는 작업
TextView bitemId = cache.itemId;
TextView bitemPower = cache.itemPower;
TextView bitemCpuLoadAvg = cache.itemCpuLoadAvg;
TextView bitemCpuFreqAvg = cache.itemCpuFreqAvg;
TextView bitemLedTimeAvg = cache.itemLedTimeAvg;
TextView bitemLedBrightAvg = cache.itemLedBrightAvg;
TextView bitemCount = cache.itemCount;
TextView bitemRange = cache.itemRange;
TextView bitemVoltageAvg = cache.itemVoltageAvg;
bitemId.setText(cursor.getString(_ID));
bitemPower.setText(cursor.getString(POWER));
bitemCpuLoadAvg.setText(cursor.getString(CPULOADAVG));
bitemCpuFreqAvg.setText(cursor.getString(CPUFREQAVG));
bitemLedTimeAvg.setText(cursor.getString(LEDTIMEAVG));
bitemLedBrightAvg.setText(cursor.getString(LEDBRIGHTAVG));
bitemCount.setText(cursor.getString(COUNT));
bitemRange.setText(cursor.getString(RANGE));
bitemVoltageAvg.setText(cursor.getString(VOLTAGE));
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View view = super.newView(context, cursor, parent);
ContactListItemCache cache = new ContactListItemCache();
cache.itemId = (TextView) view.findViewById(R.id.chunk_id);
cache.itemPower = (TextView) view.findViewById(R.id.chunk_power);
cache.itemCpuLoadAvg = (TextView) view.findViewById(R.id.chunk_cpuloadavg);
cache.itemCpuFreqAvg = (TextView) view.findViewById(R.id.chunk_cpufreqavg);
cache.itemLedTimeAvg = (TextView) view.findViewById(R.id.chunk_ledtimeavg);
cache.itemLedBrightAvg = (TextView) view.findViewById(R.id.chunk_ledbrightavg);
cache.itemCount = (TextView) view.findViewById(R.id.chunk_count);
cache.itemRange = (TextView) view.findViewById(R.id.chunk_range);
cache.itemVoltageAvg = (TextView) view.findViewById(R.id.chunk_voltage);
view.setTag(cache);
return view;
}
}
*/
final static class ContactListItemCache {
public TextView itemId;
public TextView itemPower;
public TextView itemCpuLoadAvg;
public TextView itemCpuFreqAvg;
public TextView itemLedTimeAvg;
public TextView itemLedBrightAvg;
public TextView itemCount;
public TextView itemRange;
public TextView itemVoltageAvg;
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
//DB를 쓰고난 다음에 닫아 주어야 한다.
mDb.close();
mCursor.close();
}
}