use rowid as notification id for all types of games, and cancel when

games deleted.
This commit is contained in:
Eric House 2012-11-28 19:32:50 -08:00
parent 19333e33ac
commit 4bae56e631
6 changed files with 20 additions and 35 deletions

View file

@ -444,7 +444,7 @@ public class BTService extends Service {
result = BTCmd.INVITE_ACCPT; result = BTCmd.INVITE_ACCPT;
String body = Utils.format( BTService.this, String body = Utils.format( BTService.this,
R.string.new_bt_bodyf, sender ); R.string.new_bt_bodyf, sender );
postNotification( gameID, R.string.new_bt_title, body ); postNotification( gameID, R.string.new_bt_title, body, rowid );
} }
} else { } else {
result = BTCmd.INVITE_DUPID; result = BTCmd.INVITE_DUPID;
@ -497,7 +497,7 @@ public class BTService extends Service {
buffer, addr, buffer, addr,
m_btMsgSink ) ) { m_btMsgSink ) ) {
postNotification( gameID, R.string.new_btmove_title, postNotification( gameID, R.string.new_btmove_title,
R.string.new_move_body ); R.string.new_move_body, rowid );
// do nothing // do nothing
} else { } else {
DbgUtils.logf( "nobody took msg for gameID %X", DbgUtils.logf( "nobody took msg for gameID %X",
@ -967,16 +967,17 @@ public class BTService extends Service {
return dos; return dos;
} }
private void postNotification( int gameID, int title, int body ) private void postNotification( int gameID, int title, int body, long rowid )
{ {
postNotification( gameID, title, getString( body ) ); postNotification( gameID, title, getString( body ), rowid );
} }
private void postNotification( int gameID, int title, String body ) private void postNotification( int gameID, int title, String body,
long rowid )
{ {
Intent intent = GamesList.makeGameIDIntent( this, gameID ); Intent intent = GamesList.makeGameIDIntent( this, gameID );
Utils.postNotification( this, intent, R.string.new_btmove_title, Utils.postNotification( this, intent, R.string.new_btmove_title,
body, gameID ); body, (int)rowid );
} }
private Thread killSocketIn( final BluetoothSocket socket ) private Thread killSocketIn( final BluetoothSocket socket )

View file

@ -1732,7 +1732,7 @@ public class BoardActivity extends XWActivity
if ( null != m_xport ) { if ( null != m_xport ) {
warnIfNoTransport(); warnIfNoTransport();
trySendChats(); trySendChats();
removeNotifications(); Utils.cancelNotification( this, (int)m_rowid );
m_xport.tickle( m_connType ); m_xport.tickle( m_connType );
tryInvites(); tryInvites();
} }
@ -1923,26 +1923,6 @@ public class BoardActivity extends XWActivity
} }
} }
private void removeNotifications()
{
int id = 0;
switch( m_connType ) {
case COMMS_CONN_BT:
case COMMS_CONN_SMS:
id = m_gi.gameID;
break;
case COMMS_CONN_RELAY:
String relayID = DBUtils.getRelayID( this, m_rowid );
if ( null != relayID ) {
id = relayID.hashCode();
}
break;
}
if ( 0 != id ) {
Utils.cancelNotification( this, id );
}
}
private void tryInvites() private void tryInvites()
{ {
if ( XWApp.BTSUPPORTED || XWApp.SMSSUPPORTED ) { if ( XWApp.BTSUPPORTED || XWApp.SMSSUPPORTED ) {

View file

@ -311,6 +311,7 @@ public class GameUtils {
GameLock lock = new GameLock( rowid, true ); GameLock lock = new GameLock( rowid, true );
if ( lock.tryLock() ) { if ( lock.tryLock() ) {
tellDied( context, lock, informNow ); tellDied( context, lock, informNow );
Utils.cancelNotification( context, (int)rowid );
DBUtils.deleteGame( context, lock ); DBUtils.deleteGame( context, lock );
lock.unlock(); lock.unlock();
} else { } else {

View file

@ -69,7 +69,7 @@ public class RelayService extends Service {
String msg = Utils.format( this, R.string.notify_bodyf, String msg = Utils.format( this, R.string.notify_bodyf,
GameUtils.getName( this, rowid ) ); GameUtils.getName( this, rowid ) );
Utils.postNotification( this, intent, R.string.notify_title, Utils.postNotification( this, intent, R.string.notify_title,
msg, relayID.hashCode() ); msg, (int)rowid );
} }
} }
} }

View file

@ -432,7 +432,8 @@ public class SMSService extends Service {
MultiService.OWNER_SMS ); MultiService.OWNER_SMS );
intent.putExtra( MultiService.INVITER, intent.putExtra( MultiService.INVITER,
Utils.phoneToContact( this, phone, true ) ); Utils.phoneToContact( this, phone, true ) );
MultiService.postMissingDictNotification( this, intent, gameID ); MultiService.postMissingDictNotification( this, intent,
gameID );
} }
break; break;
case DATA: case DATA:
@ -542,7 +543,7 @@ public class SMSService extends Service {
String owner = Utils.phoneToContact( this, phone, true ); String owner = Utils.phoneToContact( this, phone, true );
String body = Utils.format( this, R.string.new_name_bodyf, String body = Utils.format( this, R.string.new_name_bodyf,
owner ); owner );
postNotification( gameID, R.string.new_sms_title, body ); postNotification( gameID, R.string.new_sms_title, body, rowid );
ackInvite( phone, gameID ); ackInvite( phone, gameID );
} }
@ -607,18 +608,19 @@ public class SMSService extends Service {
if ( GameUtils.feedMessage( this, rowid, msg, addr, if ( GameUtils.feedMessage( this, rowid, msg, addr,
sink ) ) { sink ) ) {
postNotification( gameID, R.string.new_smsmove_title, postNotification( gameID, R.string.new_smsmove_title,
getString(R.string.new_move_body) getString(R.string.new_move_body),
); rowid );
} }
} }
} }
} }
} }
private void postNotification( int gameID, int title, String body ) private void postNotification( int gameID, int title, String body,
long rowid )
{ {
Intent intent = GamesList.makeGameIDIntent( this, gameID ); Intent intent = GamesList.makeGameIDIntent( this, gameID );
Utils.postNotification( this, intent, title, body, gameID ); Utils.postNotification( this, intent, title, body, (int)rowid );
} }
// Runs in separate thread // Runs in separate thread

View file

@ -174,7 +174,8 @@ public class Utils {
} }
public static void postNotification( Context context, Intent intent, public static void postNotification( Context context, Intent intent,
String title, String body, int id ) String title, String body,
int id )
{ {
/* s_nextCode: per this link /* s_nextCode: per this link
http://stackoverflow.com/questions/10561419/scheduling-more-than-one-pendingintent-to-same-activity-using-alarmmanager http://stackoverflow.com/questions/10561419/scheduling-more-than-one-pendingintent-to-same-activity-using-alarmmanager