package com.zegoggles.smssync.mail; import android.content.res.Resources; import android.provider.CallLog; import com.zegoggles.smssync.R; import java.util.Locale; public class CallFormatter { private final Resources mResources; public CallFormatter(Resources resources) { mResources = resources; } public String format(int callType, String number, int duration) { final StringBuilder text = new StringBuilder(); if (callType != CallLog.Calls.MISSED_TYPE) { text.append(duration) .append("s") .append(" (").append(formattedCallDuration(duration)).append(")") .append("\n"); } text.append(number) .append(" (").append(callTypeString(callType, null)).append(")"); return text.toString(); } public String formatForCalendar(int callType, String number, int duration) { StringBuilder description = new StringBuilder(); description.append(mResources.getString(R.string.call_number_field, number)) .append(" (") .append(callTypeString(callType, null)) .append(")") .append("\n"); if (callType != CallLog.Calls.MISSED_TYPE) { description.append(mResources.getString(R.string.call_duration_field, formattedCallDuration(duration))); } return description.toString(); } public String formattedCallDuration(int duration) { return String.format(Locale.ENGLISH, "%02d:%02d:%02d", duration / 3600, duration % 3600 / 60, duration % 3600 % 60); } public String callTypeString(int callType, String name) { if (name == null) { return mResources.getString( callType == CallLog.Calls.OUTGOING_TYPE ? R.string.call_outgoing : callType == CallLog.Calls.INCOMING_TYPE ? R.string.call_incoming : R.string.call_missed); } else { return mResources.getString( callType == CallLog.Calls.OUTGOING_TYPE ? R.string.call_outgoing_text : callType == CallLog.Calls.INCOMING_TYPE ? R.string.call_incoming_text : R.string.call_missed_text, name); } } }