k-9/src/com/fsck/k9/activity/ActivityListener.java

163 lines
4.8 KiB
Java

package com.fsck.k9.activity;
import java.text.DateFormat;
import android.content.Context;
import com.fsck.k9.Account;
import com.fsck.k9.K9;
import com.fsck.k9.R;
import com.fsck.k9.controller.MessagingListener;
import com.fsck.k9.service.MailService;
public class ActivityListener extends MessagingListener
{
private String mLoadingFolderName = null;
private String mLoadingAccountDescription = null;
private String mSendingAccountDescription = null;
private int mFolderCompleted = 0;
private int mFolderTotal = 0;
private String mProcessingAccountDescription = null;
private String mProcessingCommandTitle = null;
public String formatHeader(Context context, String activityPrefix, int unreadMessageCount, DateFormat timeFormat)
{
String operation = null;
String progress = null;
if (mLoadingAccountDescription != null || mSendingAccountDescription != null || mProcessingAccountDescription != null)
{
progress = (mFolderTotal > 0 ? context.getString(R.string.folder_progress, mFolderCompleted, mFolderTotal) : "");
if (mLoadingFolderName != null)
{
String displayName = mLoadingFolderName;
if (K9.INBOX.equalsIgnoreCase(displayName))
{
displayName = context.getString(R.string.special_mailbox_name_inbox);
}
operation = context.getString(R.string.status_loading_account_folder, mLoadingAccountDescription, displayName, progress);
}
else if (mSendingAccountDescription != null)
{
operation = context.getString(R.string.status_sending_account, mSendingAccountDescription, progress);
}
else if (mProcessingAccountDescription != null)
{
operation = context.getString(R.string.status_processing_account, mProcessingAccountDescription,
mProcessingCommandTitle != null ? mProcessingCommandTitle : "",
progress);
}
}
else
{
long nextPollTime = MailService.getNextPollTime();
if (nextPollTime != -1)
{
operation = context.getString(R.string.status_next_poll, timeFormat.format(nextPollTime));
}
else
{
operation = context.getString(R.string.status_polling_off);
}
}
return context.getString(R.string.activity_header_format, activityPrefix,
(unreadMessageCount > 0 ? context.getString(R.string.activity_unread_count, unreadMessageCount) : ""),
operation);
}
@Override
public void synchronizeMailboxFinished(
Account account,
String folder,
int totalMessagesInMailbox,
int numNewMessages)
{
mLoadingAccountDescription = null;
mLoadingFolderName = null;
}
@Override
public void synchronizeMailboxStarted(Account account, String folder)
{
mLoadingAccountDescription = account.getDescription();
mLoadingFolderName = folder;
mFolderCompleted = 0;
mFolderTotal = 0;
}
@Override
public void synchronizeMailboxProgress(Account account, String folder, int completed, int total)
{
mFolderCompleted = completed;
mFolderTotal = total;
}
@Override
public void synchronizeMailboxFailed(Account account, String folder,
String message)
{
mLoadingAccountDescription = null;
mLoadingFolderName = null;
}
@Override
public void sendPendingMessagesStarted(Account account)
{
mSendingAccountDescription = account.getDescription();
}
@Override
public void sendPendingMessagesCompleted(Account account)
{
mSendingAccountDescription = null;
}
@Override
public void sendPendingMessagesFailed(Account account)
{
mSendingAccountDescription = null;
}
@Override
public void pendingCommandsProcessing(Account account)
{
mProcessingAccountDescription = account.getDescription();
mFolderCompleted = 0;
mFolderTotal = 0;
}
@Override
public void pendingCommandsFinished(Account account)
{
mProcessingAccountDescription = null;
}
@Override
public void pendingCommandStarted(Account account, String commandTitle)
{
mProcessingCommandTitle = commandTitle;
}
@Override
public void pendingCommandCompleted(Account account, String commandTitle)
{
mProcessingCommandTitle = null;
}
public int getFolderCompleted()
{
return mFolderCompleted;
}
public int getFolderTotal()
{
return mFolderTotal;
}
}