// Path: app/src/main/java/ca/rmen/android/scrumchatter/provider/MeetingMemberCursorWrapper.java
// public class MeetingMemberCursorWrapper extends CursorWrapper {
//     private final HashMap<String, Integer> mColumnIndexes = new HashMap<>();
// 
//     public MeetingMemberCursorWrapper(Cursor cursor) {
//         super(cursor);
//     }
// 
//     public long getMeetingId() {
//         return getLongField(MeetingMemberColumns.MEETING_ID);
//     }
// 
//     public long getMemberId() {
//         return getLongField(MeetingMemberColumns.MEMBER_ID);
//     }
// 
//     public String getMemberName() {
//         Integer index = getIndex(MemberColumns.NAME);
//         if (isNull(index)) return null;
//         return getString(index);
//     }
// 
//     public long getDuration() {
//         return getLongField(MeetingMemberColumns.DURATION);
//     }
// 
//     public long getTotalDuration() {
//         return getLongField(MeetingColumns.TOTAL_DURATION);
//     }
// 
//     public long getTalkStartTime() {
//         return getLongField(MeetingMemberColumns.TALK_START_TIME);
//     }
// 
//     public long getMeetingDate() {
//         return getLongField(MeetingColumns.MEETING_DATE);
//     }
// 
//     public State getMeetingState() {
//         Integer index = getIndex(MeetingColumns.STATE);
//         if (isNull(index)) return State.NOT_STARTED;
//         int stateInt = getInt(index);
//         return State.values()[stateInt];
//     }
// 
//     private long getLongField(String columnName) {
//         Integer index = getIndex(columnName);
//         if (isNull(index)) return 0;
//         return getLong(index);
//     }
// 
//     private Integer getIndex(String columnName) {
//         Integer index = mColumnIndexes.get(columnName);
//         if (index == null) {
//             index = getColumnIndexOrThrow(columnName);
//             mColumnIndexes.put(columnName, index);
//         }
//         return index;
//     }
// }
// 
// Path: app/src/main/java/ca/rmen/android/scrumchatter/util/TextUtils.java
// public class TextUtils {
//     public static String formatDateTime(Context context, long dateMillis) {
//         return DateUtils.formatDateTime(context, dateMillis, DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_TIME);
//     }
// 
//     public static String formatDate(Context context, long dateMillis) {
//         return DateUtils.formatDateTime(context, dateMillis, DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_ALL |DateUtils.FORMAT_NUMERIC_DATE);
//     }
// 
// }


import android.content.Context;
import android.database.Cursor;
import android.support.annotation.NonNull;
import android.text.format.DateUtils;
import android.util.DisplayMetrics;
import android.view.ViewGroup;
import android.view.WindowManager;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import ca.rmen.android.scrumchatter.R;
import ca.rmen.android.scrumchatter.provider.MeetingMemberCursorWrapper;
import ca.rmen.android.scrumchatter.util.TextUtils;
import lecho.lib.hellocharts.gesture.ZoomType;
import lecho.lib.hellocharts.model.Axis;
import lecho.lib.hellocharts.model.AxisValue;
import lecho.lib.hellocharts.model.Column;
import lecho.lib.hellocharts.model.ColumnChartData;
import lecho.lib.hellocharts.model.SubcolumnValue;
import lecho.lib.hellocharts.view.ColumnChartView;
                String memberName = cursorWrapper.getMemberName();
                SubcolumnValue subcolumnValue = new SubcolumnValue();
                String durationString = DateUtils.formatElapsedTime(cursorWrapper.getDuration());
                subcolumnValue.setLabel(String.format("%s (%s)", memberName, durationString));
                int color = ChartUtils.getMemberColor(context, memberId);
                subcolumnValue.setColor(color);
                memberColors.put(cursorWrapper.getMemberName(), color);
                subcolumnValue.setValue((float) cursorWrapper.getDuration() / 60);
                subcolumnValues.add(subcolumnValue);
                lastMeetingId = currentMeetingId;
            } while (cursorWrapper.moveToNext());
        }
        cursor.moveToPosition(-1);

        legendView.removeAllViews();
        for (String memberName : memberColors.keySet()) {
            ChartUtils.addLegendEntry(context, legendView, memberName, memberColors.get(memberName));
        }

        setupChart(context,
                chart,
                xAxisValues,
                context.getString(R.string.chart_speaking_time),
                columns);

    }

    private static void setupChart(Context context, ColumnChartView chart, List<AxisValue> xAxisValues, String yAxisLabel, List<Column> columns) {
        Axis xAxis = new Axis(xAxisValues);
        ChartUtils.setupXAxis(context, xAxis);
// Path: app/src/main/java/ca/rmen/android/scrumchatter/provider/MeetingMemberCursorWrapper.java
// public class MeetingMemberCursorWrapper extends CursorWrapper {
//     private final HashMap<String, Integer> mColumnIndexes = new HashMap<>();
// 
//     public MeetingMemberCursorWrapper(Cursor cursor) {
//         super(cursor);
//     }
// 
//     public long getMeetingId() {
//         return getLongField(MeetingMemberColumns.MEETING_ID);
//     }
// 
//     public long getMemberId() {
//         return getLongField(MeetingMemberColumns.MEMBER_ID);
//     }
// 
//     public String getMemberName() {
//         Integer index = getIndex(MemberColumns.NAME);
//         if (isNull(index)) return null;
//         return getString(index);
//     }
// 
//     public long getDuration() {
//         return getLongField(MeetingMemberColumns.DURATION);
//     }
// 
//     public long getTotalDuration() {
//         return getLongField(MeetingColumns.TOTAL_DURATION);
//     }
// 
//     public long getTalkStartTime() {
//         return getLongField(MeetingMemberColumns.TALK_START_TIME);
//     }
// 
//     public long getMeetingDate() {
//         return getLongField(MeetingColumns.MEETING_DATE);
//     }
// 
//     public State getMeetingState() {
//         Integer index = getIndex(MeetingColumns.STATE);
//         if (isNull(index)) return State.NOT_STARTED;
//         int stateInt = getInt(index);
//         return State.values()[stateInt];
//     }
// 
//     private long getLongField(String columnName) {
//         Integer index = getIndex(columnName);
//         if (isNull(index)) return 0;
//         return getLong(index);
//     }
// 
//     private Integer getIndex(String columnName) {
//         Integer index = mColumnIndexes.get(columnName);
//         if (index == null) {
//             index = getColumnIndexOrThrow(columnName);
//             mColumnIndexes.put(columnName, index);
//         }
//         return index;
//     }
// }
// 
// Path: app/src/main/java/ca/rmen/android/scrumchatter/util/TextUtils.java
// public class TextUtils {
//     public static String formatDateTime(Context context, long dateMillis) {
//         return DateUtils.formatDateTime(context, dateMillis, DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_TIME);
//     }
// 
//     public static String formatDate(Context context, long dateMillis) {
//         return DateUtils.formatDateTime(context, dateMillis, DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_ALL |DateUtils.FORMAT_NUMERIC_DATE);
//     }
// 
// }


// Path: app/src/main/java/ca/rmen/android/scrumchatter/chart/MemberSpeakingTimeColumnChart.java
import android.content.Context;
import android.database.Cursor;
import android.support.annotation.NonNull;
import android.text.format.DateUtils;
import android.util.DisplayMetrics;
import android.view.ViewGroup;
import android.view.WindowManager;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import ca.rmen.android.scrumchatter.R;
import ca.rmen.android.scrumchatter.provider.MeetingMemberCursorWrapper;
import ca.rmen.android.scrumchatter.util.TextUtils;
import lecho.lib.hellocharts.gesture.ZoomType;
import lecho.lib.hellocharts.model.Axis;
import lecho.lib.hellocharts.model.AxisValue;
import lecho.lib.hellocharts.model.Column;
import lecho.lib.hellocharts.model.ColumnChartData;
import lecho.lib.hellocharts.model.SubcolumnValue;
import lecho.lib.hellocharts.view.ColumnChartView;

                String memberName = cursorWrapper.getMemberName();
                SubcolumnValue subcolumnValue = new SubcolumnValue();
                String durationString = DateUtils.formatElapsedTime(cursorWrapper.getDuration());
                subcolumnValue.setLabel(String.format("%s (%s)", memberName, durationString));
                int color = ChartUtils.getMemberColor(context, memberId);
                subcolumnValue.setColor(color);
                memberColors.put(cursorWrapper.getMemberName(), color);
                subcolumnValue.setValue((float) cursorWrapper.getDuration() / 60);
                subcolumnValues.add(subcolumnValue);
                lastMeetingId = currentMeetingId;
            } while (cursorWrapper.moveToNext());
        }
        cursor.moveToPosition(-1);

        legendView.removeAllViews();
        for (String memberName : memberColors.keySet()) {
            ChartUtils.addLegendEntry(context, legendView, memberName, memberColors.get(memberName));
        }

        setupChart(context,
                chart,
                xAxisValues,
                context.getString(R.string.chart_speaking_time),
                columns);

    }

    private static void setupChart(Context context, ColumnChartView chart, List<AxisValue> xAxisValues, String yAxisLabel, List<Column> columns) {
        Axis xAxis = new Axis(xAxisValues);
        ChartUtils.setupXAxis(context, xAxis);
        Axis yAxis = new Axis();