package edu.berkeley.cs.amplab.carat.android.ui; import android.content.Context; import android.content.pm.PackageInfo; import android.graphics.drawable.Drawable; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import edu.berkeley.cs.amplab.carat.android.CaratApplication; import edu.berkeley.cs.amplab.carat.android.Constants; import edu.berkeley.cs.amplab.carat.android.R; import edu.berkeley.cs.amplab.carat.android.sampling.SamplingLibrary; import edu.berkeley.cs.amplab.carat.android.storage.SimpleHogBug; import edu.berkeley.cs.amplab.carat.android.utils.Tracker; public class DrawView extends View { private Constants.Type type = null; private double ev = 0.0; private double evWithout = 0.0; private int sampleCount = 0; private int sampleCountWo = 0; private double error = 0.0; private double errorWo = 0.0; private String benefit = null; private String appName = null; private Drawable icon; public String getAppName() { return this.appName; } public String getBenefit() { return benefit; } public DrawView(Context context) { super(context); } public Constants.Type getType() { return this.type; } public double getEvWithout() { return evWithout; } public double getEv() { return ev; } public double getError() { return error; } public double getErrorWithout() { return errorWo; } public int getSampleCount() { return sampleCount; } public int getSampleCountWithout() { return sampleCountWo; } public void setHogsBugs(SimpleHogBug bugOrHog, String appName, boolean isBug, View parent) { this.ev = bugOrHog.getExpectedValue(); this.evWithout = bugOrHog.getExpectedValueWithout(); this.benefit = bugOrHog.getBenefitText(); this.error = bugOrHog.getError(); this.errorWo = bugOrHog.getErrorWithout(); this.sampleCount = (int) bugOrHog.getSamples(); this.sampleCountWo = (int) bugOrHog.getSamplesWithout(); this.type = isBug ? Constants.Type.BUG : Constants.Type.HOG; this.appName = appName; setFields(parent, true); } public void setParams(Constants.Type type, String appName, double ev, double evWithout, int sampleCount, int sampleCountWo, double error, double errorWo, View parent) { this.ev = ev; this.evWithout = evWithout; this.sampleCount = sampleCount; this.error = error; this.errorWo = errorWo; this.sampleCount = (int) sampleCount; this.sampleCountWo = (int) sampleCountWo; this.type = type; this.appName = appName; this.icon = CaratApplication.iconForApp(CaratApplication.getMainActivity(), "Carat"); setFields(parent, false); } public void setParams(SimpleHogBug fullObject, View parent) { String ver = ""; Context activity = CaratApplication.getMainActivity(); String label = CaratApplication.labelForApp(activity, fullObject.getAppName()); PackageInfo pak = SamplingLibrary.getPackageInfo(activity, fullObject.getAppName()); if (pak != null) { ver = pak.versionName; if (ver == null) ver = pak.versionCode + ""; } this.appName = label + " " + ver; this.icon = CaratApplication.iconForApp(activity, fullObject.getAppName()); this.type = fullObject.getType(); this.benefit = fullObject.getBenefitText(); this.sampleCount = fullObject.getSamples(); this.sampleCountWo = fullObject.getSamplesWithout(); this.error = fullObject.getError(); this.ev = fullObject.getExpectedValue(); this.evWithout = fullObject.getExpectedValueWithout(); this.errorWo = fullObject.getErrorWithout(); Tracker tracker = Tracker.getInstance(); // the field "type" should be set BEFORE calling this tracking method tracker.trackUser(label, fullObject); setFields(parent, true); } private void setFields(View parent, boolean isApp) { TextView samples = (TextView) parent.findViewById(R.id.samples); // TextView killBenefit = (TextView) parent.findViewById(R.id.killBenefit); // TextView benefitTopTextView = (TextView) parent.findViewById(R.id.benefit); TextView samplesWoT = (TextView) parent.findViewById(R.id.samplesWo); TextView errorText = (TextView) parent.findViewById(R.id.error); TextView appName = (TextView) parent.findViewById(R.id.name); ImageView iconImageView = (ImageView) parent.findViewById(R.id.appIcon); appName.setText(this.appName); iconImageView.setImageDrawable(icon); if (sampleCount > 0) { samplesWoT.setText(sampleCountWo + ""); samples.setText(sampleCount + ""); } else { samples.setText("0"); samplesWoT.setText("0"); } if (ev > 0 || isApp) { errorText.setText(SimpleHogBug.getErrorText(ev, error, evWithout, errorWo)); } // if (textBenefit != null) { // killBenefit.setText(textBenefit); // benefitTopTextView.setText(textBenefit); // } else { // double benefit = 100.0 / evWithout - 100.0 / ev; // if (benefit < 0) { // killBenefit.setText(c.getString(R.string.best)); // } else { // killBenefit.setText(SimpleHogBug.getBenefitText(ev, error, evWithout, errorWo)); // } // } } }