Add 'mark all as read' option

pull/1/head
Moxie Marlinspike 11 years ago
parent 4af7fdabda
commit 1aa84b145f

@ -9,6 +9,10 @@
android:id="@+id/menu_clear_passphrase"
android:icon="@android:drawable/ic_menu_close_clear_cancel" />
<item android:title="@string/text_secure_normal__mark_all_as_read"
android:id="@+id/menu_mark_all_read"
android:icon="@android:drawable/ic_menu_set_as" />
<item android:title="@string/text_secure_normal__menu_import_export"
android:icon="@android:drawable/ic_menu_save">
<menu>

@ -504,7 +504,8 @@
<string name="text_secure_normal__menu_import">Import</string>
<string name="text_secure_normal__menu_export">Export</string>
<string name="text_secure_normal__menu_clear_passphrase">Clear Passphrase</string>
<string name="text_secure_normal__mark_all_as_read">Mark All Read</string>
<!-- verify_keys -->
<string name="verify_keys__menu_verified">Verified</string>

@ -2,25 +2,27 @@ package org.thoughtcrime.securesms;
import android.content.Intent;
import android.database.ContentObserver;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.util.Log;
import android.view.WindowManager;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import org.thoughtcrime.securesms.ApplicationExportManager.ApplicationExportListener;
import org.thoughtcrime.securesms.crypto.MasterSecret;
import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.database.ThreadDatabase;
import org.thoughtcrime.securesms.notifications.MessageNotifier;
import org.thoughtcrime.securesms.recipients.RecipientFactory;
import org.thoughtcrime.securesms.recipients.Recipients;
import org.thoughtcrime.securesms.service.KeyCachingService;
import org.thoughtcrime.securesms.service.SendReceiveService;
import org.thoughtcrime.securesms.util.MemoryCleaner;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
public class ConversationListActivity extends PassphraseRequiredSherlockFragmentActivity
implements ConversationListFragment.ConversationSelectedListener
{
@ -76,6 +78,7 @@ public class ConversationListActivity extends PassphraseRequiredSherlockFragment
case R.id.menu_export: handleExportDatabase(); return true;
case R.id.menu_import: handleImportDatabase(); return true;
case R.id.menu_clear_passphrase: handleClearPassphrase(); return true;
case R.id.menu_mark_all_read: handleMarkAllRead(); return true;
}
return false;
@ -127,6 +130,17 @@ public class ConversationListActivity extends PassphraseRequiredSherlockFragment
startService(intent);
}
private void handleMarkAllRead() {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
DatabaseFactory.getThreadDatabase(ConversationListActivity.this).setAllThreadsRead();
MessageNotifier.updateNotification(ConversationListActivity.this, masterSecret);
return null;
}
}.execute();
}
private void initializeContactUpdatesReceiver() {
ContentObserver observer = new ContentObserver(null) {
@Override

@ -273,6 +273,14 @@ public class MmsDatabase extends Database implements MmsSmsColumns {
database.update(TABLE_NAME, contentValues, THREAD_ID + " = ?", new String[] {threadId+""});
}
public void setAllMessagesRead() {
SQLiteDatabase database = databaseHelper.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(READ, 1);
database.update(TABLE_NAME, contentValues, null, null);
}
public SendReq[] getOutgoingMessages(MasterSecret masterSecret, long messageId)
throws MmsException
{

@ -182,11 +182,17 @@ public class SmsDatabase extends Database implements MmsSmsColumns {
ContentValues contentValues = new ContentValues();
contentValues.put(READ, 1);
long start = System.currentTimeMillis();
database.update(TABLE_NAME, contentValues, THREAD_ID + " = ? AND " + READ + " = 0", new String[] {threadId+""});
long end = System.currentTimeMillis();
database.update(TABLE_NAME, contentValues,
THREAD_ID + " = ? AND " + READ + " = 0",
new String[] {threadId+""});
}
public void setAllMessagesRead() {
SQLiteDatabase database = databaseHelper.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(READ, 1);
Log.w("SmsDatabase", "setMessagesRead time: " + (end - start));
database.update(TABLE_NAME, contentValues, null, null);
}
protected void updateMessageBodyAndType(long messageId, String body, long maskOff, long maskOn) {

@ -205,6 +205,18 @@ public class ThreadDatabase extends Database {
}
}
public void setAllThreadsRead() {
SQLiteDatabase db = databaseHelper.getWritableDatabase();
ContentValues contentValues = new ContentValues(1);
contentValues.put(READ, 1);
db.update(TABLE_NAME, contentValues, null, null);
DatabaseFactory.getSmsDatabase(context).setAllMessagesRead();
DatabaseFactory.getMmsDatabase(context).setAllMessagesRead();
notifyConversationListListeners();
}
public void setRead(long threadId) {
ContentValues contentValues = new ContentValues(1);
contentValues.put(READ, 1);

Loading…
Cancel
Save