Search in sources :

Example 1 with Snackbar

use of com.nispok.snackbar.Snackbar in project CoCoin by Nightonke.

the class ReportViewFragment method onViewCreated.

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    IS_EMPTY = RecordManager.getInstance(CoCoinApplication.getAppContext()).RECORDS.isEmpty();
    mScrollView = (ObservableScrollView) view.findViewById(R.id.scrollView);
    MaterialViewPagerHelper.registerScrollView(getActivity(), mScrollView, null);
    expenseTV = (TextView) view.findViewById(R.id.expense);
    expenseTV.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    expenseTV.setText(CoCoinUtil.GetInMoney(0));
    tagsTV = (TextView) view.findViewById(R.id.tags);
    tagsTV.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    tagsTV.setText("");
    title = (TextView) view.findViewById(R.id.title);
    title.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    pieLayout = (LinearLayout) view.findViewById(R.id.pie_layout);
    pieLayout.setVisibility(View.GONE);
    pieTitle = (TextView) view.findViewById(R.id.pie_title);
    pieTitle.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    pie = (PieChartView) view.findViewById(R.id.chart_pie);
    pie.setChartRotationEnabled(false);
    pie.setOnValueTouchListener(new PieChartOnValueSelectListener() {

        @Override
        public void onValueSelected(int p, SliceValue sliceValue) {
            // snack bar
            String text;
            tagId = Integer.valueOf(String.valueOf(sliceValue.getLabelAsChars()));
            double percent = sliceValue.getValue() / expense * 100;
            if ("zh".equals(CoCoinUtil.GetLanguage())) {
                text = CoCoinUtil.GetSpendString((int) sliceValue.getValue()) + CoCoinUtil.GetPercentString(percent) + "\n" + "于" + CoCoinUtil.GetTagName(tagId);
            } else {
                text = CoCoinUtil.GetSpendString((int) sliceValue.getValue()) + " (takes " + String.format("%.2f", percent) + "%)\n" + "in " + CoCoinUtil.GetTagName(tagId);
            }
            if ("zh".equals(CoCoinUtil.GetLanguage())) {
                if (selectYear) {
                    dialogTitle = from.get(Calendar.YEAR) + "年" + "\n" + CoCoinUtil.GetSpendString((int) sliceValue.getValue()) + "于" + CoCoinUtil.GetTagName(tagId);
                } else {
                    dialogTitle = from.get(Calendar.YEAR) + "年" + (from.get(Calendar.MONTH) + 1) + "月" + "\n" + CoCoinUtil.GetSpendString((int) sliceValue.getValue()) + "于" + CoCoinUtil.GetTagName(tagId);
                }
            } else {
                if (selectYear) {
                    dialogTitle = CoCoinUtil.GetSpendString((int) sliceValue.getValue()) + " in " + from.get(Calendar.YEAR) + "\n" + "on " + CoCoinUtil.GetTagName(tagId);
                } else {
                    dialogTitle = CoCoinUtil.GetSpendString((int) sliceValue.getValue()) + " in " + CoCoinUtil.GetMonthShort(from.get(Calendar.MONTH) + 1) + " " + from.get(Calendar.YEAR) + "\n" + "on " + CoCoinUtil.GetTagName(tagId);
                }
            }
            Snackbar snackbar = Snackbar.with(mContext).type(SnackbarType.MULTI_LINE).duration(Snackbar.SnackbarDuration.LENGTH_SHORT).position(Snackbar.SnackbarPosition.BOTTOM).margin(15, 15).backgroundDrawable(CoCoinUtil.GetSnackBarBackground(-3)).text(text).textTypeface(CoCoinUtil.GetTypeface()).textColor(Color.WHITE).actionLabelTypeface(CoCoinUtil.GetTypeface()).actionLabel(mContext.getResources().getString(R.string.check)).actionColor(Color.WHITE).actionListener(new ActionClickListener() {

                @Override
                public void onActionClicked(Snackbar snackbar) {
                    new GetData(from, to, tagId, dialogTitle).execute();
                }
            });
            SnackbarManager.show(snackbar);
            if (p == lastPieSelectedPosition) {
                return;
            } else {
                lastPieSelectedPosition = p;
            }
        }

        @Override
        public void onValueDeselected() {
        }
    });
    iconRight = (MaterialIconView) view.findViewById(R.id.icon_right);
    iconRight.setOnClickListener(this);
    iconLeft = (MaterialIconView) view.findViewById(R.id.icon_left);
    iconLeft.setOnClickListener(this);
    emptyTip = (TextView) view.findViewById(R.id.empty_tip);
    emptyTip.setTypeface(CoCoinUtil.GetTypeface());
    if (RecordManager.getInstance(CoCoinApplication.getAppContext()).RECORDS.size() != 0) {
        emptyTip.setText(mContext.getResources().getString(R.string.report_view_please_select_data));
    } else {
        emptyTip.setText(mContext.getResources().getString(R.string.report_view_no_data));
        isEmpty = true;
    }
    highestTagLayout = (LinearLayout) view.findViewById(R.id.highest_tag_layout);
    highestTagLayout.setVisibility(View.GONE);
    highestTagTitle = (TextView) view.findViewById(R.id.highest_tag_title);
    highestTagTitle.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestFirst = (LinearLayout) view.findViewById(R.id.highest_first);
    highestFirst.setOnClickListener(this);
    highestTagIcon = (ImageView) view.findViewById(R.id.highest_tag_icon);
    highestTagText = (TextView) view.findViewById(R.id.highest_tag_text);
    highestTagText.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestTagExpenseTV = (TextView) view.findViewById(R.id.highest_tag_expense);
    highestTagExpenseTV.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestTagRecord = (TextView) view.findViewById(R.id.highest_tag_sum);
    highestTagRecord.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestTags = (ExpandedListView) view.findViewById(R.id.highest_tags);
    highestTagsLayout = (ExpandableRelativeLayout) view.findViewById(R.id.expand_highest_tag);
    highestTagMore = (LinearLayout) view.findViewById(R.id.highest_tag_more);
    highestTagMore.setOnClickListener(this);
    highestTagMoreText = (TextView) view.findViewById(R.id.highest_tag_more_text);
    highestTagMoreText.setTypeface(CoCoinUtil.getInstance().GetTypeface());
    highestTags.setOnItemClickListener(this);
    lowestTagLayout = (LinearLayout) view.findViewById(R.id.lowest_tag_layout);
    lowestTagLayout.setVisibility(View.GONE);
    lowestTagTitle = (TextView) view.findViewById(R.id.lowest_tag_title);
    lowestTagTitle.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    lowestFirst = (LinearLayout) view.findViewById(R.id.lowest_first);
    lowestFirst.setOnClickListener(this);
    lowestTagIcon = (ImageView) view.findViewById(R.id.lowest_tag_icon);
    lowestTagText = (TextView) view.findViewById(R.id.lowest_tag_text);
    lowestTagText.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    lowestTagExpenseTV = (TextView) view.findViewById(R.id.lowest_tag_expense);
    lowestTagExpenseTV.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    lowestTagRecord = (TextView) view.findViewById(R.id.lowest_tag_sum);
    lowestTagRecord.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    lowestTags = (ExpandedListView) view.findViewById(R.id.lowest_tags);
    lowestTagsLayout = (ExpandableRelativeLayout) view.findViewById(R.id.expand_lowest_tag);
    lowestTagMore = (LinearLayout) view.findViewById(R.id.lowest_tag_more);
    lowestTagMore.setOnClickListener(this);
    lowestTagMoreText = (TextView) view.findViewById(R.id.lowest_tag_more_text);
    lowestTagMoreText.setTypeface(CoCoinUtil.getInstance().GetTypeface());
    lowestTags.setOnItemClickListener(this);
    lineLayout = (LinearLayout) view.findViewById(R.id.line_layout);
    lineLayout.setVisibility(View.GONE);
    lineTitle = (TextView) view.findViewById(R.id.line_title);
    lineTitle.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    line = (LineChartView) view.findViewById(R.id.chart_line);
    line.setZoomEnabled(false);
    line.setOnValueTouchListener(new LineChartOnValueSelectListener() {

        @Override
        public void onValueSelected(int lineIndex, int pointIndex, PointValue value) {
            // snack bar
            String text;
            double percent = value.getY() / expense * 100;
            if ("zh".equals(CoCoinUtil.GetLanguage())) {
                if (selectYear) {
                    text = "在" + reportYear + " " + CoCoinUtil.getInstance().GetMonthShort((int) value.getX() + 1) + "\n" + CoCoinUtil.GetSpendString((int) value.getY()) + CoCoinUtil.GetPercentString(percent);
                } else {
                    text = "在" + CoCoinUtil.getInstance().GetMonthShort(reportMonth) + " " + ((int) value.getX() + 1) + CoCoinUtil.getInstance().GetWhetherFuck() + "\n" + CoCoinUtil.GetSpendString((int) value.getY()) + CoCoinUtil.GetPercentString(percent);
                }
            } else {
                if (selectYear) {
                    text = CoCoinUtil.GetSpendString((int) value.getY()) + CoCoinUtil.GetPercentString(percent) + "\n" + "in " + reportYear + " " + CoCoinUtil.getInstance().GetMonthShort((int) value.getX() + 1);
                } else {
                    text = CoCoinUtil.GetSpendString((int) value.getY()) + CoCoinUtil.GetPercentString(percent) + "\n" + "on " + CoCoinUtil.getInstance().GetMonthShort(reportMonth) + " " + ((int) value.getX() + 1) + CoCoinUtil.getInstance().GetWhetherFuck();
                }
            }
            if ("zh".equals(CoCoinUtil.GetLanguage())) {
                if (selectYear) {
                    dialogTitle = "在" + reportYear + " " + CoCoinUtil.getInstance().GetMonthShort((int) value.getX() + 1) + "\n" + CoCoinUtil.GetSpendString((int) value.getY()) + CoCoinUtil.GetPercentString(percent);
                } else {
                    dialogTitle = "在" + CoCoinUtil.getInstance().GetMonthShort(reportMonth) + " " + ((int) value.getX() + 1) + CoCoinUtil.getInstance().GetWhetherFuck() + "\n" + CoCoinUtil.GetSpendString((int) value.getY()) + CoCoinUtil.GetPercentString(percent);
                }
            } else {
                if (selectYear) {
                    dialogTitle = CoCoinUtil.GetSpendString((int) value.getY()) + CoCoinUtil.GetPercentString(percent) + "\n" + "in " + reportYear + " " + CoCoinUtil.getInstance().GetMonthShort((int) value.getX() + 1);
                } else {
                    dialogTitle = CoCoinUtil.GetSpendString((int) value.getY()) + CoCoinUtil.GetPercentString(percent) + "\n" + "on " + CoCoinUtil.getInstance().GetMonthShort(reportMonth) + " " + ((int) value.getX() + 1) + CoCoinUtil.getInstance().GetWhetherFuck();
                }
            }
            final Calendar tempFrom = Calendar.getInstance();
            final Calendar tempTo = Calendar.getInstance();
            if (selectYear) {
                tempFrom.set(reportYear, (int) value.getX(), 1, 0, 0, 0);
                tempFrom.add(Calendar.SECOND, 0);
                tempTo.set(reportYear, (int) value.getX(), tempFrom.getActualMaximum(Calendar.DAY_OF_MONTH), 23, 59, 59);
                tempTo.add(Calendar.SECOND, 0);
            } else {
                tempFrom.set(reportYear, reportMonth - 1, (int) value.getX() + 1, 0, 0, 0);
                tempFrom.add(Calendar.SECOND, 0);
                tempTo.set(reportYear, reportMonth - 1, (int) value.getX() + 1, 23, 59, 59);
                tempTo.add(Calendar.SECOND, 0);
            }
            Snackbar snackbar = Snackbar.with(mContext).type(SnackbarType.MULTI_LINE).duration(Snackbar.SnackbarDuration.LENGTH_SHORT).position(Snackbar.SnackbarPosition.BOTTOM).margin(15, 15).backgroundDrawable(CoCoinUtil.GetSnackBarBackground(-3)).text(text).textTypeface(CoCoinUtil.GetTypeface()).textColor(Color.WHITE).actionLabelTypeface(CoCoinUtil.GetTypeface()).actionLabel(mContext.getResources().getString(R.string.check)).actionColor(Color.WHITE).actionListener(new ActionClickListener() {

                @Override
                public void onActionClicked(Snackbar snackbar) {
                    new GetData(tempFrom, tempTo, Integer.MIN_VALUE, dialogTitle).execute();
                }
            });
            SnackbarManager.show(snackbar);
            if (pointIndex == lastLineSelectedPosition) {
                return;
            } else {
                lastLineSelectedPosition = pointIndex;
            }
        }

        @Override
        public void onValueDeselected() {
        }
    });
    iconRightLine = (MaterialIconView) view.findViewById(R.id.icon_right_line);
    iconRightLine.setOnClickListener(this);
    iconLeftLine = (MaterialIconView) view.findViewById(R.id.icon_left_line);
    iconLeftLine.setOnClickListener(this);
    highestMonthLayout = (LinearLayout) view.findViewById(R.id.highest_month_layout);
    highestMonthLayout.setVisibility(View.GONE);
    monthTitle = (TextView) view.findViewById(R.id.month_title);
    monthTitle.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestFirstMonth = (LinearLayout) view.findViewById(R.id.highest_first_month);
    highestFirstMonth.setOnClickListener(this);
    highestFirstIcon = (TextView) view.findViewById(R.id.highest_month_icon);
    highestFirstIcon.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestFirstText = (TextView) view.findViewById(R.id.highest_month_text);
    highestFirstText.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestFirstExpenseTV = (TextView) view.findViewById(R.id.highest_month_expense);
    highestFirstExpenseTV.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestFirstRecord = (TextView) view.findViewById(R.id.highest_month_sum);
    highestFirstRecord.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestMonths = (ExpandedListView) view.findViewById(R.id.highest_month);
    highestMonths.setOnItemClickListener(this);
    highestMonthsLayout = (ExpandableRelativeLayout) view.findViewById(R.id.expand_highest_month);
    highestLast = (LinearLayout) view.findViewById(R.id.highest_last_month);
    highestLast.setOnClickListener(this);
    highestLastIcon = (TextView) view.findViewById(R.id.lowest_month_icon);
    highestLastIcon.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestLastText = (TextView) view.findViewById(R.id.lowest_month_text);
    highestLastText.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestLastExpenseTV = (TextView) view.findViewById(R.id.lowest_month_expense);
    highestLastExpenseTV.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestLastRecord = (TextView) view.findViewById(R.id.lowest_month_sum);
    highestLastRecord.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestMonthMore = (LinearLayout) view.findViewById(R.id.highest_month_more);
    highestMonthMore.setOnClickListener(this);
    highestMonthMoreText = (TextView) view.findViewById(R.id.highest_month_more_text);
    highestMonthMoreText.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    averageMonthText = (TextView) view.findViewById(R.id.average_month_text);
    averageMonthText.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    averageMonthExpenseTV = (TextView) view.findViewById(R.id.average_month_expense);
    averageMonthExpenseTV.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    averageMonthRecordTV = (TextView) view.findViewById(R.id.average_month_sum);
    averageMonthRecordTV.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestDayLayout = (LinearLayout) view.findViewById(R.id.highest_day_layout);
    highestDayLayout.setVisibility(View.GONE);
    highestDayTitle = (TextView) view.findViewById(R.id.highest_day_title);
    highestDayTitle.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestFirstDay = (LinearLayout) view.findViewById(R.id.highest_first_day);
    highestFirstDay.setOnClickListener(this);
    highestDayIcon = (TextView) view.findViewById(R.id.highest_day_icon);
    highestDayIcon.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestDayText = (TextView) view.findViewById(R.id.highest_day_text);
    highestDayText.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestDayExpenseTV = (TextView) view.findViewById(R.id.highest_day_expense);
    highestDayExpenseTV.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestDayRecord = (TextView) view.findViewById(R.id.highest_day_sum);
    highestDayRecord.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestDays = (ExpandedListView) view.findViewById(R.id.highest_days);
    highestDaysLayout = (ExpandableRelativeLayout) view.findViewById(R.id.expand_highest_day);
    highestDayMore = (LinearLayout) view.findViewById(R.id.highest_day_more);
    highestDayMore.setOnClickListener(this);
    highestDayMoreText = (TextView) view.findViewById(R.id.highest_day_more_text);
    highestDayMoreText.setTypeface(CoCoinUtil.getInstance().GetTypeface());
    highestDays.setOnItemClickListener(this);
    lowestDayLayout = (LinearLayout) view.findViewById(R.id.lowest_day_layout);
    lowestDayLayout.setVisibility(View.GONE);
    lowestDayTitle = (TextView) view.findViewById(R.id.lowest_day_title);
    lowestDayTitle.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    lowestFirstDay = (LinearLayout) view.findViewById(R.id.lowest_first_day);
    lowestFirstDay.setOnClickListener(this);
    lowestDayIcon = (TextView) view.findViewById(R.id.lowest_day_icon);
    lowestDayIcon.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    lowestDayText = (TextView) view.findViewById(R.id.lowest_day_text);
    lowestDayText.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    lowestDayExpenseTV = (TextView) view.findViewById(R.id.lowest_day_expense);
    lowestDayExpenseTV.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    lowestDayRecord = (TextView) view.findViewById(R.id.lowest_day_sum);
    lowestDayRecord.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    lowestDays = (ExpandedListView) view.findViewById(R.id.lowest_days);
    lowestDaysLayout = (ExpandableRelativeLayout) view.findViewById(R.id.expand_lowest_day);
    lowestDayMore = (LinearLayout) view.findViewById(R.id.lowest_day_more);
    lowestDayMore.setOnClickListener(this);
    lowestDayMoreText = (TextView) view.findViewById(R.id.lowest_day_more_text);
    lowestDayMoreText.setTypeface(CoCoinUtil.getInstance().GetTypeface());
    lowestDays.setOnItemClickListener(this);
    averageDayText = (TextView) view.findViewById(R.id.average_day_text);
    averageDayText.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    averageDayExpenseTV = (TextView) view.findViewById(R.id.average_day_expense);
    averageDayExpenseTV.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    averageDayRecordTV = (TextView) view.findViewById(R.id.average_day_sum);
    averageDayRecordTV.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    foot = (TextView) view.findViewById(R.id.foot);
    foot.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    foot.setVisibility(View.GONE);
    if (IS_EMPTY) {
        emptyTip.setVisibility(View.GONE);
    }
    button = (FloatingActionButton) view.findViewById(R.id.button);
    button.setOnClickListener(this);
    new GetSelectListData(false).execute();
}
Also used : PieChartOnValueSelectListener(lecho.lib.hellocharts.listener.PieChartOnValueSelectListener) PointValue(lecho.lib.hellocharts.model.PointValue) Calendar(java.util.Calendar) SliceValue(lecho.lib.hellocharts.model.SliceValue) ActionClickListener(com.nispok.snackbar.listeners.ActionClickListener) Snackbar(com.nispok.snackbar.Snackbar) LineChartOnValueSelectListener(lecho.lib.hellocharts.listener.LineChartOnValueSelectListener)

Example 2 with Snackbar

use of com.nispok.snackbar.Snackbar in project CoCoin by Nightonke.

the class CustomViewFragment method select.

private void select() {
    if (RecordManager.getInstance(CoCoinApplication.getAppContext()).RECORDS == null || RecordManager.getInstance(CoCoinApplication.getAppContext()).RECORDS.size() == 0) {
        return;
    }
    start = -1;
    end = 0;
    Sum = 0;
    lastPieSelectedPosition = -1;
    if (from.after(RecordManager.RECORDS.get(RecordManager.RECORDS.size() - 1).getCalendar())) {
        return;
    }
    if (to.before(RecordManager.RECORDS.get(0).getCalendar())) {
        return;
    }
    for (int i = RecordManager.RECORDS.size() - 1; i >= 0; i--) {
        if (RecordManager.RECORDS.get(i).getCalendar().before(from)) {
            end = i + 1;
            break;
        } else if (RecordManager.RECORDS.get(i).getCalendar().before(to)) {
            if (start == -1) {
                start = i;
            }
        }
    }
    startDayCalendar = (Calendar) from.clone();
    startDayCalendar.set(Calendar.HOUR_OF_DAY, 0);
    startDayCalendar.set(Calendar.MINUTE, 0);
    startDayCalendar.set(Calendar.SECOND, 0);
    final long startDay = TimeUnit.MILLISECONDS.toDays(startDayCalendar.getTimeInMillis());
    final long days = TimeUnit.MILLISECONDS.toDays(to.getTimeInMillis()) - startDay + 1;
    TagExpanse = new TreeMap<>();
    Expanse = new HashMap<>();
    originalTargets = new float[(int) days];
    int size = RecordManager.TAGS.size();
    for (int j = 2; j < size; j++) {
        TagExpanse.put(RecordManager.TAGS.get(j).getId(), Double.valueOf(0));
        Expanse.put(RecordManager.TAGS.get(j).getId(), new ArrayList<CoCoinRecord>());
    }
    for (int i = start; i >= end; i--) {
        CoCoinRecord coCoinRecord = RecordManager.RECORDS.get(i);
        TagExpanse.put(coCoinRecord.getTag(), TagExpanse.get(coCoinRecord.getTag()) + Double.valueOf(coCoinRecord.getMoney()));
        Expanse.get(coCoinRecord.getTag()).add(coCoinRecord);
        Sum += coCoinRecord.getMoney();
        originalTargets[(int) (TimeUnit.MILLISECONDS.toDays(coCoinRecord.getCalendar().getTimeInMillis()) - startDay)] += coCoinRecord.getMoney();
    }
    expense.setText(CoCoinUtil.GetInMoney(Sum));
    emptyTip.setVisibility(View.GONE);
    TagExpanse = CoCoinUtil.SortTreeMapByValues(TagExpanse);
    final ArrayList<SliceValue> sliceValues = new ArrayList<>();
    for (Map.Entry<Integer, Double> entry : TagExpanse.entrySet()) {
        if (entry.getValue() >= 1) {
            SliceValue sliceValue = new SliceValue((float) (double) entry.getValue(), CoCoinUtil.GetTagColor(entry.getKey()));
            sliceValue.setLabel(String.valueOf(entry.getKey()));
            sliceValues.add(sliceValue);
        }
    }
    final PieChartData pieChartData = new PieChartData(sliceValues);
    pieChartData.setHasLabels(false);
    pieChartData.setHasLabelsOnlyForSelected(false);
    pieChartData.setHasLabelsOutside(false);
    pieChartData.setHasCenterCircle(SettingManager.getInstance().getIsHollow());
    pie.setPieChartData(pieChartData);
    pie.setChartRotationEnabled(false);
    pie.setVisibility(View.VISIBLE);
    iconRight.setVisibility(View.VISIBLE);
    iconRight.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (lastPieSelectedPosition != -1) {
                pieSelectedPosition = lastPieSelectedPosition;
            }
            pieSelectedPosition = (pieSelectedPosition - 1 + sliceValues.size()) % sliceValues.size();
            SelectedValue selectedValue = new SelectedValue(pieSelectedPosition, 0, SelectedValue.SelectedValueType.NONE);
            pie.selectValue(selectedValue);
        }
    });
    iconLeft.setVisibility(View.VISIBLE);
    iconLeft.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (lastPieSelectedPosition != -1) {
                pieSelectedPosition = lastPieSelectedPosition;
            }
            pieSelectedPosition = (pieSelectedPosition + 1) % sliceValues.size();
            SelectedValue selectedValue = new SelectedValue(pieSelectedPosition, 0, SelectedValue.SelectedValueType.NONE);
            pie.selectValue(selectedValue);
        }
    });
    // set value touch listener of pie//////////////////////////////////////////////////////////////////
    dateShownString = mContext.getResources().getString(R.string.from) + " " + CoCoinUtil.GetMonthShort(from.get(Calendar.MONTH) + 1) + " " + from.get(Calendar.DAY_OF_MONTH) + " " + from.get(Calendar.YEAR) + " " + mContext.getResources().getString(R.string.to) + " " + CoCoinUtil.GetMonthShort(to.get(Calendar.MONTH) + 1) + " " + to.get(Calendar.DAY_OF_MONTH) + " " + to.get(Calendar.YEAR);
    pie.setOnValueTouchListener(new PieChartOnValueSelectListener() {

        @Override
        public void onValueSelected(int p, SliceValue sliceValue) {
            // snack bar
            String text;
            tagId = Integer.valueOf(String.valueOf(sliceValue.getLabelAsChars()));
            double percent = sliceValue.getValue() / Sum * 100;
            if ("zh".equals(CoCoinUtil.GetLanguage())) {
                text = CoCoinUtil.GetSpendString((int) sliceValue.getValue()) + CoCoinUtil.GetPercentString(percent) + "\n" + "于" + CoCoinUtil.GetTagName(tagId);
            } else {
                text = CoCoinUtil.GetSpendString((int) sliceValue.getValue()) + " (takes " + String.format("%.2f", percent) + "%)\n" + "in " + CoCoinUtil.GetTagName(tagId);
            }
            if ("zh".equals(CoCoinUtil.GetLanguage())) {
                dialogTitle = dateShownString + "\n" + CoCoinUtil.GetSpendString((int) sliceValue.getValue()) + " " + "于" + CoCoinUtil.GetTagName(tagId);
            } else {
                dialogTitle = CoCoinUtil.GetSpendString((int) sliceValue.getValue()) + " " + mContext.getResources().getString(R.string.from) + " " + CoCoinUtil.GetMonthShort(from.get(Calendar.MONTH) + 1) + " " + from.get(Calendar.DAY_OF_MONTH) + " " + from.get(Calendar.YEAR) + "\n" + mContext.getResources().getString(R.string.to) + " " + CoCoinUtil.GetMonthShort(to.get(Calendar.MONTH) + 1) + " " + to.get(Calendar.DAY_OF_MONTH) + " " + to.get(Calendar.YEAR) + " " + "in " + CoCoinUtil.GetTagName(tagId);
            }
            Snackbar snackbar = Snackbar.with(mContext).type(SnackbarType.MULTI_LINE).duration(Snackbar.SnackbarDuration.LENGTH_SHORT).position(Snackbar.SnackbarPosition.BOTTOM).margin(15, 15).backgroundDrawable(CoCoinUtil.GetSnackBarBackground(-3)).text(text).textTypeface(CoCoinUtil.GetTypeface()).textColor(Color.WHITE).actionLabelTypeface(CoCoinUtil.GetTypeface()).actionLabel(mContext.getResources().getString(R.string.check)).actionColor(Color.WHITE).actionListener(new mActionClickListenerForPie());
            SnackbarManager.show(snackbar);
            if (p == lastPieSelectedPosition) {
                return;
            } else {
                lastPieSelectedPosition = p;
            }
        }

        @Override
        public void onValueDeselected() {
        }
    });
    all.setVisibility(View.VISIBLE);
    all.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            List<CoCoinRecord> data = new LinkedList<CoCoinRecord>();
            for (int i = start; i >= end; i--) data.add(RecordManager.RECORDS.get(i));
            if ("zh".equals(CoCoinUtil.GetLanguage())) {
                dialogTitle = dateShownString + "\n" + CoCoinUtil.GetSpendString(Sum) + "于" + CoCoinUtil.GetTagName(tagId);
            } else {
                dialogTitle = CoCoinUtil.GetSpendString(Sum) + " " + mContext.getResources().getString(R.string.from) + " " + CoCoinUtil.GetMonthShort(from.get(Calendar.MONTH) + 1) + " " + from.get(Calendar.DAY_OF_MONTH) + " " + from.get(Calendar.YEAR) + "\n" + mContext.getResources().getString(R.string.to) + " " + CoCoinUtil.GetMonthShort(to.get(Calendar.MONTH) + 1) + " " + to.get(Calendar.DAY_OF_MONTH) + " " + to.get(Calendar.YEAR) + " " + "in " + CoCoinUtil.GetTagName(tagId);
            }
            ((FragmentActivity) mContext).getSupportFragmentManager().beginTransaction().add(new RecordCheckDialogFragment(mContext, data, dialogTitle), "MyDialog").commit();
        }
    });
}
Also used : ArrayList(java.util.ArrayList) SliceValue(lecho.lib.hellocharts.model.SliceValue) ArrayList(java.util.ArrayList) LinkedList(java.util.LinkedList) List(java.util.List) SelectedValue(lecho.lib.hellocharts.model.SelectedValue) PieChartData(lecho.lib.hellocharts.model.PieChartData) ObservableScrollView(com.github.ksoichiro.android.observablescrollview.ObservableScrollView) View(android.view.View) PieChartView(lecho.lib.hellocharts.view.PieChartView) TextView(android.widget.TextView) MaterialIconView(net.steamcrafted.materialiconlib.MaterialIconView) CoCoinRecord(com.nightonke.saver.model.CoCoinRecord) PieChartOnValueSelectListener(lecho.lib.hellocharts.listener.PieChartOnValueSelectListener) FragmentActivity(android.support.v4.app.FragmentActivity) HashMap(java.util.HashMap) Map(java.util.Map) TreeMap(java.util.TreeMap) Snackbar(com.nispok.snackbar.Snackbar)

Example 3 with Snackbar

use of com.nispok.snackbar.Snackbar in project sharelock-android by auth0.

the class ComposeActivity method onResume.

@Override
protected void onResume() {
    super.onResume();
    final int entryCount = getSupportFragmentManager().getBackStackEntryCount();
    final ClipboardManager clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
    if (entryCount == 0 && clipboardManager.hasPrimaryClip() && clipboardManager.getPrimaryClip().getItemCount() > 0) {
        final ClipData primaryClip = clipboardManager.getPrimaryClip();
        final ClipData.Item item = primaryClip.getItemAt(0);
        final String text = item.coerceToText(this).toString();
        if (text.trim().length() > 0) {
            final Snackbar snackbar = Snackbar.with(this).text(getString(R.string.paste_from_clipboard_prompt)).actionLabel(getString(R.string.paste_clipboard_action)).actionColorResource(R.color.sharelock_orange).actionListener(new ActionClickListener() {

                @Override
                public void onActionClicked(Snackbar snackbar) {
                    bus.postSticky(new ClipboardSecretEvent(text));
                    clipboardManager.setPrimaryClip(ClipData.newPlainText("", ""));
                }
            }).duration(Snackbar.SnackbarDuration.LENGTH_INDEFINITE);
            SnackbarManager.show(snackbar);
        }
    }
}
Also used : ClipboardManager(android.content.ClipboardManager) ClipData(android.content.ClipData) ActionClickListener(com.nispok.snackbar.listeners.ActionClickListener) Snackbar(com.nispok.snackbar.Snackbar) ClipboardSecretEvent(com.auth0.sharelock.event.ClipboardSecretEvent)

Example 4 with Snackbar

use of com.nispok.snackbar.Snackbar in project sharelock-android by auth0.

the class ComposeActivity method onEvent.

public void onEvent(RequestLinkEvent event) {
    final Secret secret = event.getSecret();
    final EventBus bus = this.bus;
    SharedPreferences preferences = getSharedPreferences(getPackageName(), MODE_PRIVATE);
    client = new LinkAPIClient(preferences.getString(LinkAPIClient.SHARELOCK_ENDPOINT_KEY, LinkAPIClient.DEFAULT_URL));
    client.generateLinkForSecret(secret, this, new LinkAPIClient.LinkCallback() {

        @Override
        public void onSuccess(final Uri link) {
            Log.d(TAG, "Obtained link path " + link);
            handler.postDelayed(new Runnable() {

                @Override
                public void run() {
                    bus.postSticky(new NewLinkEvent(link));
                    final ClipboardManager clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
                    final ClipData clipData = ClipData.newRawUri("sharelocked-link", link);
                    clipboardManager.setPrimaryClip(clipData);
                    Snackbar snackbar = Snackbar.with(ComposeActivity.this).text(R.string.link_in_clipboard_message).duration(Snackbar.SnackbarDuration.LENGTH_SHORT);
                    SnackbarManager.show(snackbar);
                }
            }, DELAY_MILLIS);
        }

        @Override
        public void onError(Throwable reason) {
            Log.e(TAG, "Failed to generate link", reason);
            bus.post(new SharelockAPIErrorEvent());
            AlertDialog dialog = new AlertDialog.Builder(ComposeActivity.this).setTitle(R.string.link_generation_failed_title).setMessage(R.string.link_generation_failed).setCancelable(true).setPositiveButton(R.string.retry_button, new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    bus.post(new RequestLinkEvent(secret));
                }
            }).setNegativeButton(R.string.cancel_button, null).create();
            dialog.show();
        }
    });
}
Also used : ClipboardManager(android.content.ClipboardManager) AlertDialog(android.app.AlertDialog) SharedPreferences(android.content.SharedPreferences) DialogInterface(android.content.DialogInterface) EventBus(de.greenrobot.event.EventBus) Uri(android.net.Uri) RequestLinkEvent(com.auth0.sharelock.event.RequestLinkEvent) NewLinkEvent(com.auth0.sharelock.event.NewLinkEvent) ClipData(android.content.ClipData) SharelockAPIErrorEvent(com.auth0.sharelock.event.SharelockAPIErrorEvent) Snackbar(com.nispok.snackbar.Snackbar)

Example 5 with Snackbar

use of com.nispok.snackbar.Snackbar in project UltimateAndroid by cymcsg.

the class SnackbarSampleActivity method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.snack_bar_activity_sample);
    Button singleLineButton = (Button) findViewById(R.id.single_line);
    singleLineButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            SnackbarManager.show(Snackbar.with(SnackbarSampleActivity.this).text("Single-line snackbar"));
        }
    });
    Button singleLineWithActionButton = (Button) findViewById(R.id.single_line_with_action);
    singleLineWithActionButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            SnackbarManager.show(Snackbar.with(SnackbarSampleActivity.this).text("Something has been done").actionLabel("Undo").swipeListener(new ActionSwipeListener() {

                @Override
                public void onSwipeToDismiss() {
                    Toast.makeText(SnackbarSampleActivity.this, "swipe to dismiss", Toast.LENGTH_SHORT).show();
                }
            }).actionListener(new ActionClickListener() {

                @Override
                public void onActionClicked(Snackbar snackbar) {
                    Toast.makeText(SnackbarSampleActivity.this, "Action undone", Toast.LENGTH_SHORT).show();
                }
            }));
        }
    });
    Button multiLineButton = (Button) findViewById(R.id.multi_line);
    multiLineButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            SnackbarManager.show(Snackbar.with(SnackbarSampleActivity.this).type(SnackbarType.MULTI_LINE).text("This is a multi-line snackbar. Keep in mind that snackbars" + " are meant for VERY short messages"));
        }
    });
    Button multiLineWithActionButton = (Button) findViewById(R.id.multi_line_with_action);
    multiLineWithActionButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            SnackbarManager.show(Snackbar.with(SnackbarSampleActivity.this).type(SnackbarType.MULTI_LINE).text("This is a multi-line snackbar with an action button. Note " + "that multi-line snackbars are 2 lines max").actionLabel("Action").actionListener(new ActionClickListener() {

                @Override
                public void onActionClicked(Snackbar snackbar) {
                    Toast.makeText(SnackbarSampleActivity.this, "Action clicked", Toast.LENGTH_SHORT).show();
                }
            }));
        }
    });
    Button noAnimationButton = (Button) findViewById(R.id.no_animation);
    noAnimationButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            SnackbarManager.show(Snackbar.with(SnackbarSampleActivity.this).text("No animation :(").animation(false).duration(2500l));
        }
    });
    Button eventListenerButton = (Button) findViewById(R.id.event_listener);
    eventListenerButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            SnackbarManager.show(Snackbar.with(SnackbarSampleActivity.this).text("I'm showing a toast on exit").eventListener(new EventListener() {

                @Override
                public void onShow(Snackbar snackbar) {
                    Log.i(TAG, String.format("Snackbar will show. Width: %d Height: %d Offset: %d", snackbar.getWidth(), snackbar.getHeight(), snackbar.getOffset()));
                }

                @Override
                public void onShowByReplace(Snackbar snackbar) {
                    Log.i(TAG, String.format("Snackbar will show by replace. Width: %d Height: %d Offset: %d", snackbar.getWidth(), snackbar.getHeight(), snackbar.getOffset()));
                }

                @Override
                public void onShown(Snackbar snackbar) {
                    Log.i(TAG, String.format("Snackbar shown. Width: %d Height: %d Offset: %d", snackbar.getWidth(), snackbar.getHeight(), snackbar.getOffset()));
                }

                @Override
                public void onDismiss(Snackbar snackbar) {
                    Log.i(TAG, String.format("Snackbar will dismiss. Width: %d Height: %d Offset: %d", snackbar.getWidth(), snackbar.getHeight(), snackbar.getOffset()));
                }

                @Override
                public void onDismissByReplace(Snackbar snackbar) {
                    Log.i(TAG, String.format("Snackbar will dismiss by replace. Width: %d Height: %d Offset: %d", snackbar.getWidth(), snackbar.getHeight(), snackbar.getOffset()));
                }

                @Override
                public void onDismissed(Snackbar snackbar) {
                    Toast.makeText(SnackbarSampleActivity.this, String.format("Snackbar dismissed. Width: %d Height: %d Offset: %d", snackbar.getWidth(), snackbar.getHeight(), snackbar.getOffset()), Toast.LENGTH_SHORT).show();
                }
            }));
        }
    });
    Button customColorsButton = (Button) findViewById(R.id.custom_colors);
    customColorsButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            SnackbarManager.show(Snackbar.with(SnackbarSampleActivity.this).text("Different colors!!!").textColor(Color.parseColor("#ff9d9d9c")).color(Color.parseColor("#ff914300")).actionLabel("Action").actionColor(Color.parseColor("#ff5a2900")).actionListener(new ActionClickListener() {

                @Override
                public void onActionClicked(Snackbar snackbar) {
                    Log.i(TAG, "Action touched");
                }
            }).duration(Snackbar.SnackbarDuration.LENGTH_SHORT));
        }
    });
    Button unswipeableButton = (Button) findViewById(R.id.unswipeable);
    unswipeableButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            SnackbarManager.show(Snackbar.with(SnackbarSampleActivity.this).text("Try to swipe me off from the screen").swipeToDismiss(false));
        }
    });
    Button indefiniteButton = (Button) findViewById(R.id.indefinite);
    indefiniteButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            SnackbarManager.show(Snackbar.with(SnackbarSampleActivity.this).type(SnackbarType.MULTI_LINE).duration(Snackbar.SnackbarDuration.LENGTH_INDEFINITE).text("Indefinite duration, ideal for communicating errors"));
        }
    });
    Button listSampleButton = (Button) findViewById(R.id.list_example);
    listSampleButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent sampleIntent = new Intent(SnackbarSampleActivity.this, SnackbarListViewSampleActivity.class);
            startActivity(sampleIntent);
        }
    });
    Button recyclerSampleButton = (Button) findViewById(R.id.recycler_example);
    recyclerSampleButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent sampleIntent = new Intent(SnackbarSampleActivity.this, SnackbarRecyclerViewSampleActivity.class);
            startActivity(sampleIntent);
        }
    });
    Button customTypefaceButton = (Button) findViewById(R.id.typeface_example);
    customTypefaceButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/Roboto-LightItalic.ttf");
            SnackbarManager.show(Snackbar.with(SnackbarSampleActivity.this).text("Custom font!").textTypeface(tf).actionLabel("Cool").actionLabelTypeface(tf));
        }
    });
    Button navigationBarTranslucentButton = (Button) findViewById(R.id.navigation_bar_translucent);
    navigationBarTranslucentButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (SnackbarNavigationBarTranslucentSampleActivity.isTranslucentSystemBarsCapable()) {
                Intent sampleIntent = new Intent(SnackbarSampleActivity.this, SnackbarNavigationBarTranslucentSampleActivity.class);
                startActivity(sampleIntent);
            } else {
                Toast.makeText(SnackbarSampleActivity.this, "Translucent System bars only available for KITKAT or newer", Toast.LENGTH_SHORT).show();
            }
        }
    });
    Button immersiveModeButton = (Button) findViewById(R.id.immersive_mode_example);
    immersiveModeButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (SnackbarImmersiveModeSampleActivity.isImmersiveModeCapable()) {
                Intent sampleIntent = new Intent(SnackbarSampleActivity.this, SnackbarImmersiveModeSampleActivity.class);
                startActivity(sampleIntent);
            } else {
                Toast.makeText(SnackbarSampleActivity.this, "Immersive mode only available for KITKAT or newer", Toast.LENGTH_SHORT).show();
            }
        }
    });
    Button showInDialogButton = (Button) findViewById(R.id.show_in_dialog_example);
    showInDialogButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent sampleIntent = new Intent(SnackbarSampleActivity.this, SnackbarShowInDialogSampleActivity.class);
            startActivity(sampleIntent);
        }
    });
    Button singleLineMarginsButton = (Button) findViewById(R.id.single_line_margins);
    singleLineMarginsButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            SnackbarManager.show(Snackbar.with(SnackbarSampleActivity.this).margin(25).text("Single-line Margins"));
        }
    });
    Button singleLineTopButton = (Button) findViewById(R.id.single_line_top);
    singleLineTopButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            SnackbarManager.show(Snackbar.with(SnackbarSampleActivity.this).position(Snackbar.SnackbarPosition.TOP).text("Single-line Top"));
        }
    });
    Button singleLineButtonInside = (Button) findViewById(R.id.single_line_inside);
    singleLineButtonInside.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            SnackbarManager.show(Snackbar.with(SnackbarSampleActivity.this).text("Single-line Inside RelativeLayout"), (android.view.ViewGroup) findViewById(R.id.view_relative_layout));
        }
    });
    Button singleLineTopButtonInside = (Button) findViewById(R.id.single_line_top_inside);
    singleLineTopButtonInside.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            SnackbarManager.show(Snackbar.with(SnackbarSampleActivity.this).position(Snackbar.SnackbarPosition.TOP).margin(25, 15).text("Single-line TOP Inside LinearLayout"), (android.view.ViewGroup) findViewById(R.id.view_linear_layout));
        }
    });
    Button singleLineButtonCustomShape = (Button) findViewById(R.id.single_line_shape);
    singleLineButtonCustomShape.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            SnackbarManager.show(Snackbar.with(SnackbarSampleActivity.this).position(Snackbar.SnackbarPosition.TOP).margin(15, 15).backgroundDrawable(R.drawable.snack_bar_custom_shape).text("Single-line Custom Shape"));
        }
    });
}
Also used : Typeface(android.graphics.Typeface) ActionSwipeListener(com.nispok.snackbar.listeners.ActionSwipeListener) Intent(android.content.Intent) View(android.view.View) ActionClickListener(com.nispok.snackbar.listeners.ActionClickListener) Button(android.widget.Button) EventListener(com.nispok.snackbar.listeners.EventListener) Snackbar(com.nispok.snackbar.Snackbar)

Aggregations

Snackbar (com.nispok.snackbar.Snackbar)10 ActionClickListener (com.nispok.snackbar.listeners.ActionClickListener)5 View (android.view.View)4 EventListener (com.nispok.snackbar.listeners.EventListener)3 PieChartOnValueSelectListener (lecho.lib.hellocharts.listener.PieChartOnValueSelectListener)3 SliceValue (lecho.lib.hellocharts.model.SliceValue)3 ClipData (android.content.ClipData)2 ClipboardManager (android.content.ClipboardManager)2 Intent (android.content.Intent)2 Typeface (android.graphics.Typeface)2 FragmentActivity (android.support.v4.app.FragmentActivity)2 Button (android.widget.Button)2 TextView (android.widget.TextView)2 CoCoinRecord (com.nightonke.saver.model.CoCoinRecord)2 ActionSwipeListener (com.nispok.snackbar.listeners.ActionSwipeListener)2 ArrayList (java.util.ArrayList)2 HashMap (java.util.HashMap)2 Map (java.util.Map)2 TreeMap (java.util.TreeMap)2 PieChartData (lecho.lib.hellocharts.model.PieChartData)2