mirror of
https://github.com/moparisthebest/k-9
synced 2024-11-27 19:52:17 -05:00
Add multi-account search to the MessagingController
This commit is contained in:
parent
70f35a537e
commit
1b74c176a2
@ -8,6 +8,7 @@ import android.app.PendingIntent;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
|
import android.os.Bundle;
|
||||||
import android.os.PowerManager;
|
import android.os.PowerManager;
|
||||||
import android.os.PowerManager.WakeLock;
|
import android.os.PowerManager.WakeLock;
|
||||||
import android.os.Process;
|
import android.os.Process;
|
||||||
@ -652,6 +653,73 @@ public class MessagingController implements Runnable
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find all messages in any local account which match the query 'query'
|
||||||
|
*
|
||||||
|
* @param account
|
||||||
|
* @param query
|
||||||
|
* @param listener
|
||||||
|
* @throws MessagingException
|
||||||
|
*/
|
||||||
|
public void searchLocalMessages(final Account account, final String query, final MessagingListener listener)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (listener == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
threadPool.execute(new Runnable()
|
||||||
|
{
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
Preferences prefs = Preferences.getPreferences(mApplication.getApplicationContext());
|
||||||
|
Account[] accounts = prefs.getAccounts();
|
||||||
|
|
||||||
|
for (final Account account : accounts)
|
||||||
|
{
|
||||||
|
|
||||||
|
listener.listLocalMessagesStarted(account, null);
|
||||||
|
|
||||||
|
MessageRetrievalListener retrievalListener = new MessageRetrievalListener()
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
int totalDone = 0;
|
||||||
|
|
||||||
|
public void messageStarted(String message, int number, int ofTotal) {}
|
||||||
|
public void messageFinished(Message message, int number, int ofTotal)
|
||||||
|
{
|
||||||
|
List<Message> messages = new ArrayList<Message>();
|
||||||
|
messages.add(message);
|
||||||
|
listener.listLocalMessagesAddMessages(account, null, messages);
|
||||||
|
}
|
||||||
|
public void messagesFinished(int number) {}
|
||||||
|
private void addPendingMessages() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
LocalStore localStore = (LocalStore)Store.getInstance(account.getLocalStoreUri(), mApplication);
|
||||||
|
|
||||||
|
localStore.searchForMessages(retrievalListener, query);
|
||||||
|
listener.listLocalMessagesFinished(account, null);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
listener.listLocalMessagesFailed(account, null, e.getMessage());
|
||||||
|
addErrorMessage(account, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public void loadMoreMessages(Account account, String folder, MessagingListener listener)
|
public void loadMoreMessages(Account account, String folder, MessagingListener listener)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
Loading…
Reference in New Issue
Block a user