package com.cgcl.cloudesk.screens.act;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Vector;
import android.R.color;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.util.AttributeSet;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.View.MeasureSpec;
import android.view.ViewGroup.LayoutParams;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.RatingBar;
import android.widget.Toast;
import android.widget.RatingBar.OnRatingBarChangeListener;
import android.widget.Spinner;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import com.cgcl.cloudesk.cloudeskmain.screens.act.R;
import com.cgcl.cloudesk.manage.app.AppData;
import com.cgcl.cloudesk.manage.config.UIConfig;
import com.cgcl.cloudesk.manage.core.Controller;
import com.cgcl.cloudesk.screens.act.aid.MyApplicationAid;
public class DyGradeSystemActivity extends BaseActivity {
private int total = 5;
private TableLayout table;
private Button reset;
private Button showDetails;
private Button submit;
private TableRow tablerow[];
private String gradeGrid[][];
private Spinner spinner[][];
private String gradeView[];
private TextView issueView[];
private int proid;
private boolean isInstall = false;
private ProgressBar loadingPBar;
private TextView loadingText;
private Vector<String> issue;
private LinkedList<String> gradeList;
private Vector<String> grade;
private int id[];
private LinearLayout loadingBar;
private Resources r ;
private String username ;
private static final String[] level30={"未评价","0","1","2","3","4","5",
"6","7","8","9","10",
"11","12","13","14","15",
"16","17","18","19","20",
"21","22","23","24","25",
"26","27","28","29","30"};
private static final String[] level20={"未评价","0","1","2","3","4","5",
"6","7","8","9","10",
"11","12","13","14","15",
"16","17","18","19","20"};
private static final String[] level10={"未评价","0","1","2","3","4","5",
"6","7","8","9","10"};
private ArrayAdapter<String> adapter[][];
//private Array<String>
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.CurrentActivity = this;
AppData appData = (AppData)getApplicationContext();
setUIController(appData.getController());
setType(UIConfig.gradeSystemFormType);
setContentView(R.layout.dynamic_gradesystem);
r = this.getBaseContext().getResources();
username = Controller.username;
getInit();
findviews();
listeners();
//notifyGetGradeResult(new LinkedList<String>());
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
Log.v("start", "ok");
MoblieClientUI.currentActivity = this;
}
private void getInit()
{
controller.getGrade("AllUsers");
}
private boolean checkUser()
{
return true;
}
private void findviews()
{
submit =(Button)findViewById(R.id.submit1);
table = (TableLayout)findViewById(R.id.tableLayout3);
showDetails = (Button)findViewById(R.id.showdetails);
showDetails.setVisibility(View.INVISIBLE);
reset =(Button)findViewById(R.id.reset1);
loadingBar = (LinearLayout)findViewById(R.id.LinearLoadingBar);
loadingPBar= (ProgressBar)findViewById(R.id.loadingPBar);
loadingText= (TextView)findViewById(R.id.loadingText);
}
private int getRowNo(int proid)
{
for (int i = 0 ; i < total ; ++i)
{
if (proid == id[i])
return i;
}
return -1;
}
public void notifyGetGradeResult(LinkedList<String> gradeList)
{
if (isInstall == false)
{
Log.i("gradeResult", "getResult");
this.gradeList = gradeList;
total = 0;
issue = new Vector<String>();
grade = new Vector<String>();
Iterator<String> it = this.gradeList.iterator();
if (it.hasNext())
{
total = Integer.parseInt(it.next());
Log.i("total= ", Integer.toString(total));
id = new int[total];
gradeGrid = new String[total][7];
for (int i = 0; i < total ; ++i)
for (int j = 1; j <= 5; ++j)
{
gradeGrid[i][j] = "未评价";
}
for (int i = 0 ; i <total; ++i)
{
id[i] = Integer.parseInt(it.next());
Log.i("id[i]= ", Integer.toString(id[i]));
issue.add(it.next());
Log.i("issue[i]= ", issue.elementAt(i));
}
while (it.hasNext())
{
String userId = (it.next());
if (userId.equals(username))
{
proid = Integer.parseInt(it.next());
int j = getRowNo(proid);
for(int k = 1; k <=6; ++k)
{
gradeGrid[j][k] = it.next();
}
}
else
{
for (int i = 0 ; i <= 6; ++i)
{
it.next();
}
}
}
spinner = new Spinner[total][6];
gradeView = new String[total];
issueView = new TextView[total];
tablerow = new TableRow[total];
adapter = new ArrayAdapter[total][6];
for (int i = 0 ; i < total; ++i)
{
tablerow[i] = new TableRow(this);
issueView[i] = new TextView(this);
gradeView[i] = new String("-10000");
for (int j = 1; j <= 5; ++j)
{
spinner[i][j] = new Spinner(this);
switch (j)
{
case 1 :adapter[i][j] = new ArrayAdapter<String>(this, android.R.layout.preference_category, level30); break;
case 2 :adapter[i][j] = new ArrayAdapter<String>(this, android.R.layout.preference_category, level10); break;
case 3 :;
case 4 :;
case 5 :;adapter[i][j] = new ArrayAdapter<String>(this, android.R.layout.preference_category, level20); break;
default : break;
}
}
}
}
isInstall = true;
refresh();
}
else
{
String msg[] = new String[gradeList.size()];
for (int i = 0 ; i < gradeList.size(); ++i)
msg[i] = gradeList.get(i);
Intent intent = new Intent();
intent.putExtra("list", msg);
intent.putExtra("total", Integer.parseInt(gradeList.get(0)));
intent.putExtra("length", gradeList.size());
intent.setClass(DyGradeSystemActivity.this, BoardActivity.class);
startActivity(intent);
}
}
public void refresh()
{
for (int i = 0 ; i < total; ++i)
{
for (int j = 1; j <= 5; ++j)
spinner[i][j].setOnItemSelectedListener(mylistener);
};
this.runOnUiThread(new Runnable() {
@Override
public void run() {
if (checkUser())
{
showDetails.setVisibility(View.GONE);
}
else
{
showDetails.setVisibility(View.GONE);
}
// TODO Auto-generated method stub
loadingBar.setVisibility(View.GONE);
loadingPBar.setVisibility(View.GONE);
loadingText.setVisibility(View.GONE);
table.setVerticalScrollBarEnabled(true);
for (int i = 0 ; i < total; ++i)
{
Log.i("now i = ", Integer.toString(i));
//tablerow[i].setLayoutParams(new TableRow.LayoutParams(6));
tablerow[i].setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT,TableRow.LayoutParams.WRAP_CONTENT));
tablerow[i].setGravity(Gravity.CENTER_HORIZONTAL);
tablerow[i].setGravity(Gravity.CENTER_VERTICAL);
issueView[i].setText(issue.get(i));
issueView[i].setTextColor(r.getColor(R.color.black));
issueView[i].setTextSize(18);
issueView[i].setGravity(Gravity.CENTER_HORIZONTAL);
issueView[i].setGravity(Gravity.CENTER_VERTICAL);
tablerow[i].addView(issueView[i]);
for (int j = 1; j <= 5; ++j)
{
//ratingbar[i][j]= new MyRatingBar(this,null,android.R.attr.ratingBarStyleSmall);
//ratingbar[i][j].setContentDescription();
//ratingbar[i][j].setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.MATCH_PARENT));
//ratingbar[i][j].setMax(5);
//ratingbar[i][j].setNumStars(5);
///ratingbar[i][j].setStepSize(1);
///ratingbar[i][j].setIsIndicator(false);
//ratingbar[i][j].setRating(3);
adapter[i][j].setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
spinner[i][j].setAdapter(adapter[i][j]);
//展开的标题
switch(j)
{
case 1:spinner[i][j].setPrompt((String)r.getString(R.string.working_condition_1)); break;
case 2:spinner[i][j].setPrompt((String)r.getString(R.string.working_condition_2)); break;
case 3:spinner[i][j].setPrompt((String)r.getString(R.string.research_foreground_1)); break;
case 4:spinner[i][j].setPrompt((String)r.getString(R.string.research_foreground_2)); break;
case 5:spinner[i][j].setPrompt((String)r.getString(R.string.research_foreground_3)); break;
default :break;
}
if (gradeGrid[i][j].equalsIgnoreCase("未评价"))
spinner[i][j].setSelection(0);
else
spinner[i][j].setSelection(Integer.parseInt(gradeGrid[i][j])+1);
/* if (gradeGrid[i][j].equals("优"))
spinner[i][j].setSelection(2);
if (gradeGrid[i][j].equals("良"))
spinner[i][j].setSelection(3);
if (gradeGrid[i][j].equals("中"))
spinner[i][j].setSelection(4);
if (gradeGrid[i][j].equals("差"))
spinner[i][j].setSelection(5);
*/
spinner[i][j].setVisibility(View.VISIBLE);
tablerow[i].addView(spinner[i][j]);
//ratingbar[i][j].setLayoutParams(new LinearLayout.LayoutParams(0,0));
}
//gradeView[i].setText(gradeGrid[i][5]);
//gradeView[i].setTextColor(r.getColor(R.color.black));
//gradeView[i].setGravity(Gravity.CENTER_HORIZONTAL);
// gradeView[i].setGravity(Gravity.CENTER_VERTICAL);
//tablerow[i].addView(gradeView[i]);
table.addView(tablerow[i]);
}
};
});
}
private AdapterView.OnItemSelectedListener mylistener;
private void listeners()
{
mylistener = new AdapterView.OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int position, long arg3) {
for (int i = 0; i < total; ++i)
{
int temp = 0;
for (int j = 1; j <= 5; ++j)
{
String t_str =(String)spinner[i][j].getSelectedItem();
if (t_str.equals("未评价"))
temp = -10000;
else
temp += spinner[i][j].getSelectedItemPosition()-1;
}
//修改到此处
gradeView[i] = Integer.toString(temp);
}
}
// TODO Auto-generated method stub
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
};
reset.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View view)
{
for (int i = 0 ; i < total; ++i)
{
for (int j = 1; j <=5 ; ++j)
{
spinner[i][j].setSelection(0);
}
}
}
});
submit.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
LinkedList<String> Scoring = new LinkedList<String>();
Scoring.add(username);
boolean flag = false;
for (int i = 0 ; i <total; ++i )
{
// if (Integer.parseInt(gradeView[i]) < 0)
// continue;
Scoring.add(Integer.toString(id[i]));
for (int j = 1; j <= 5; j++)
{
if (spinner[i][j].getSelectedItemPosition() == 0)
Scoring.add("未评价");
else
{
Scoring.add(Integer.toString(spinner[i][j].getSelectedItemPosition()-1));
flag = true;
}
}
if (Integer.parseInt(gradeView[i]) < 0)
Scoring.add("未评价");
else
{
Scoring.add(gradeView[i]);
flag = true;
}
}
if (flag)
{
controller.scoring(Scoring);
}
else
{
runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
showToast("请先打分再提交");
};
});
}
}
});
showDetails.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
/*String msg[] = new String[gradeList.size()];
for (int i = 0 ; i < gradeList.size(); ++i)
msg[i] = gradeList.get(i);
Intent intent = new Intent();
intent.putExtra("list", msg);
intent.putExtra("total", total);
intent.putExtra("length", gradeList.size());
intent.setClass(DyGradeSystemActivity.this, BoardActivity.class);
startActivity(intent);
*/
controller.getGrade("AllUsers");
}
});
}
public void notifyScoringResult(String scoringResult)
{
if(scoringResult.equalsIgnoreCase("success"))
{
this.runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
showToast("打分成功");
};
});
}
else
{
this.runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
showToast("打分失败");
}
});
}
}
private void showToast(String msg) {
Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();
}
@Override
public void showError()
{
controller.logout();
AppData appData = (AppData)getApplicationContext();
appData.setInstall(false);
MainActivity.isInitSuceessed=false;
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
this.runOnUiThread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
AlertDialog.Builder builder = new AlertDialog.Builder(DyGradeSystemActivity.this);
builder.setTitle(R.string.error_load_title);
builder.setMessage(R.string.error_network_content);
builder.setPositiveButton(R.string.exit_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
AppData appData = (AppData)getApplicationContext();
appData.setInstall(false);
MyApplicationAid.getInstance().exit();
System.exit(0);
}
});
builder.show();
}
});
}
}