Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/acomminos/Plumble.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Comminos <andrew@comminos.com>2015-10-24 23:57:14 +0300
committerAndrew Comminos <andrew@comminos.com>2015-10-24 23:57:14 +0300
commitfb30b2122eb883f750755ae4095afd89d42c9b35 (patch)
tree3a4d519380bcda64203de45c4ad40447b56d6aea
parent91ba0f137633326e1cb073e0b358b36f2f352277 (diff)
Migration towards new AIDL-less Jumble interface.
-rw-r--r--app/src/main/java/com/morlunk/mumbleclient/app/PlumbleActivity.java213
-rw-r--r--app/src/main/java/com/morlunk/mumbleclient/channel/AccessTokenFragment.java14
-rw-r--r--app/src/main/java/com/morlunk/mumbleclient/channel/ChannelAdapter.java25
-rw-r--r--app/src/main/java/com/morlunk/mumbleclient/channel/ChannelChatFragment.java67
-rw-r--r--app/src/main/java/com/morlunk/mumbleclient/channel/ChannelEditFragment.java40
-rw-r--r--app/src/main/java/com/morlunk/mumbleclient/channel/ChannelFragment.java22
-rw-r--r--app/src/main/java/com/morlunk/mumbleclient/channel/ChannelListAdapter.java196
-rw-r--r--app/src/main/java/com/morlunk/mumbleclient/channel/ChannelListFragment.java115
-rw-r--r--app/src/main/java/com/morlunk/mumbleclient/channel/ServerInfoFragment.java4
-rw-r--r--app/src/main/java/com/morlunk/mumbleclient/channel/UserMenuProvider.java134
-rw-r--r--app/src/main/java/com/morlunk/mumbleclient/channel/actionmode/ChannelActionModeCallback.java104
-rw-r--r--app/src/main/java/com/morlunk/mumbleclient/channel/actionmode/UserActionModeCallback.java8
-rw-r--r--app/src/main/java/com/morlunk/mumbleclient/channel/comment/ChannelDescriptionFragment.java2
-rw-r--r--app/src/main/java/com/morlunk/mumbleclient/channel/comment/UserCommentFragment.java2
-rw-r--r--app/src/main/java/com/morlunk/mumbleclient/service/IChatMessage.java14
-rw-r--r--app/src/main/java/com/morlunk/mumbleclient/service/PlumbleOverlay.java54
-rw-r--r--app/src/main/java/com/morlunk/mumbleclient/service/PlumbleService.java234
-rw-r--r--app/src/main/java/com/morlunk/mumbleclient/service/ipc/TalkBroadcastReceiver.java27
-rw-r--r--app/src/main/java/com/morlunk/mumbleclient/util/JumbleServiceFragment.java20
-rw-r--r--app/src/main/java/com/morlunk/mumbleclient/util/JumbleServiceProvider.java6
20 files changed, 498 insertions, 803 deletions
diff --git a/app/src/main/java/com/morlunk/mumbleclient/app/PlumbleActivity.java b/app/src/main/java/com/morlunk/mumbleclient/app/PlumbleActivity.java
index 20a4466..e4edf81 100644
--- a/app/src/main/java/com/morlunk/mumbleclient/app/PlumbleActivity.java
+++ b/app/src/main/java/com/morlunk/mumbleclient/app/PlumbleActivity.java
@@ -55,7 +55,7 @@ import com.morlunk.jumble.model.Server;
import com.morlunk.jumble.util.JumbleException;
import com.morlunk.jumble.util.JumbleObserver;
import com.morlunk.jumble.util.MumbleURLParser;
-import com.morlunk.jumble.util.ParcelableByteArray;
+import com.morlunk.mumbleclient.BuildConfig;
import com.morlunk.mumbleclient.R;
import com.morlunk.mumbleclient.Settings;
import com.morlunk.mumbleclient.channel.AccessTokenFragment;
@@ -100,7 +100,7 @@ public class PlumbleActivity extends ActionBarActivity implements ListView.OnIte
*/
public static final String EXTRA_DRAWER_FRAGMENT = "drawer_fragment";
- private PlumbleService.PlumbleBinder mService;
+ private PlumbleService mService;
private PlumbleDatabase mDatabase;
private Settings mSettings;
@@ -119,7 +119,7 @@ public class PlumbleActivity extends ActionBarActivity implements ListView.OnIte
private ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
- mService = (PlumbleService.PlumbleBinder) service;
+ mService = (PlumbleService)((JumbleService.JumbleBinder) service).getService();
try {
mService.registerObserver(mObserver);
mService.clearChatNotifications(); // Clear chat notifications on resume.
@@ -132,15 +132,11 @@ public class PlumbleActivity extends ActionBarActivity implements ListView.OnIte
fragment.setServiceBound(true);
// Re-show server list if we're showing a fragment that depends on the service.
- try {
- if(getSupportFragmentManager().findFragmentById(R.id.content_frame) instanceof JumbleServiceFragment &&
- mService.getConnectionState() != JumbleService.STATE_CONNECTED) {
- loadDrawerFragment(DrawerAdapter.ITEM_FAVOURITES);
- }
- updateConnectionState(getService());
- } catch (RemoteException e) {
- e.printStackTrace();
+ if(getSupportFragmentManager().findFragmentById(R.id.content_frame) instanceof JumbleServiceFragment &&
+ mService.getConnectionState() != JumbleService.ConnectionState.CONNECTED) {
+ loadDrawerFragment(DrawerAdapter.ITEM_FAVOURITES);
}
+ updateConnectionState(getService());
}
@Override
@@ -151,7 +147,7 @@ public class PlumbleActivity extends ActionBarActivity implements ListView.OnIte
private JumbleObserver mObserver = new JumbleObserver() {
@Override
- public void onConnected() throws RemoteException {
+ public void onConnected() {
loadDrawerFragment(DrawerAdapter.ITEM_SERVER);
mDrawerAdapter.notifyDataSetChanged();
supportInvalidateOptionsMenu();
@@ -160,12 +156,12 @@ public class PlumbleActivity extends ActionBarActivity implements ListView.OnIte
}
@Override
- public void onConnecting() throws RemoteException {
+ public void onConnecting() {
updateConnectionState(getService());
}
@Override
- public void onDisconnected(JumbleException e) throws RemoteException {
+ public void onDisconnected(JumbleException e) {
// Re-show server list if we're showing a fragment that depends on the service.
if(getSupportFragmentManager().findFragmentById(R.id.content_frame) instanceof JumbleServiceFragment) {
loadDrawerFragment(DrawerAdapter.ITEM_FAVOURITES);
@@ -177,13 +173,14 @@ public class PlumbleActivity extends ActionBarActivity implements ListView.OnIte
}
@Override
- public void onTLSHandshakeFailed(ParcelableByteArray cert) throws RemoteException {
- byte[] certBytes = cert.getBytes();
+ public void onTLSHandshakeFailed(X509Certificate[] chain) {
final Server lastServer = getService().getConnectedServer();
+ if (chain.length == 0)
+ return;
+
try {
- CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
- final X509Certificate x509 = (X509Certificate) certFactory.generateCertificate(new ByteArrayInputStream(certBytes));
+ final X509Certificate x509 = chain[0];
AlertDialog.Builder adb = new AlertDialog.Builder(PlumbleActivity.this);
adb.setTitle(R.string.untrusted_certificate);
@@ -226,7 +223,7 @@ public class PlumbleActivity extends ActionBarActivity implements ListView.OnIte
}
@Override
- public void onPermissionDenied(String reason) throws RemoteException {
+ public void onPermissionDenied(String reason) {
AlertDialog.Builder adb = new AlertDialog.Builder(PlumbleActivity.this);
adb.setTitle(R.string.perm_denied);
adb.setMessage(reason);
@@ -264,16 +261,11 @@ public class PlumbleActivity extends ActionBarActivity implements ListView.OnIte
@Override
public void onDrawerStateChanged(int newState) {
super.onDrawerStateChanged(newState);
-
- try {
- // Prevent push to talk from getting stuck on when the drawer is opened.
- if (getService() != null
- && getService().getConnectionState() == JumbleService.STATE_CONNECTED
- && getService().isTalking() && !mSettings.isPushToTalkToggle()) {
- getService().setTalkingState(false);
- }
- } catch (RemoteException e) {
- e.printStackTrace();
+ // Prevent push to talk from getting stuck on when the drawer is opened.
+ if (getService() != null
+ && getService().isSynchronized()
+ && getService().isTalking() && !mSettings.isPushToTalkToggle()) {
+ getService().setTalkingState(false);
}
}
@@ -298,14 +290,9 @@ public class PlumbleActivity extends ActionBarActivity implements ListView.OnIte
dadb.setPositiveButton(R.string.confirm, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
- try {
- if(mService != null
- && mService.getConnectionState() == JumbleService.STATE_CONNECTED)
- mService.disconnect();
- loadDrawerFragment(DrawerAdapter.ITEM_FAVOURITES);
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ if(mService != null && mService.isSynchronized())
+ mService.disconnect();
+ loadDrawerFragment(DrawerAdapter.ITEM_FAVOURITES);
}
});
dadb.setNegativeButton(android.R.string.cancel, null);
@@ -364,14 +351,12 @@ public class PlumbleActivity extends ActionBarActivity implements ListView.OnIte
if (mConnectingDialog != null)
mConnectingDialog.dismiss();
- if(mService != null)
- try {
- for(JumbleServiceFragment fragment : mServiceFragments)
- fragment.setServiceBound(false);
- mService.unregisterObserver(mObserver);
- } catch (RemoteException e) {
- e.printStackTrace();
+ if(mService != null) {
+ for (JumbleServiceFragment fragment : mServiceFragments) {
+ fragment.setServiceBound(false);
}
+ mService.unregisterObserver(mObserver);
+ }
unbindService(mConnection);
}
@@ -386,12 +371,7 @@ public class PlumbleActivity extends ActionBarActivity implements ListView.OnIte
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem disconnectButton = menu.findItem(R.id.action_disconnect);
- try {
- disconnectButton.setVisible(mService != null &&
- mService.getConnectionState() == JumbleService.STATE_CONNECTED);
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ disconnectButton.setVisible(mService != null && mService.isSynchronized());
// Color the action bar icons to the primary text color of the theme.
int foregroundColor = getSupportActionBar().getThemedContext()
@@ -422,11 +402,7 @@ public class PlumbleActivity extends ActionBarActivity implements ListView.OnIte
switch (item.getItemId()) {
case R.id.action_disconnect:
- try {
- getService().disconnect();
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ getService().disconnect();
return true;
}
@@ -442,11 +418,7 @@ public class PlumbleActivity extends ActionBarActivity implements ListView.OnIte
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (mService != null && keyCode == mSettings.getPushToTalkKey()) {
- try {
- mService.onTalkKeyDown();
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ mService.onTalkKeyDown();
return true;
}
return super.onKeyDown(keyCode, event);
@@ -455,11 +427,7 @@ public class PlumbleActivity extends ActionBarActivity implements ListView.OnIte
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (mService != null && keyCode == mSettings.getPushToTalkKey()) {
- try {
- mService.onTalkKeyUp();
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ mService.onTalkKeyUp();
return true;
}
return super.onKeyUp(keyCode, event);
@@ -467,14 +435,9 @@ public class PlumbleActivity extends ActionBarActivity implements ListView.OnIte
@Override
public void onBackPressed() {
- try {
- if(mService != null &&
- mService.getConnectionState() == JumbleService.STATE_CONNECTED) {
- mDisconnectPromptBuilder.show();
- return;
- }
- } catch (RemoteException e) {
- e.printStackTrace();
+ if(mService != null && mService.isSynchronized()) {
+ mDisconnectPromptBuilder.show();
+ return;
}
super.onBackPressed();
}
@@ -531,12 +494,8 @@ public class PlumbleActivity extends ActionBarActivity implements ListView.OnIte
break;
case DrawerAdapter.ITEM_ACCESS_TOKENS:
fragmentClass = AccessTokenFragment.class;
- try {
- args.putLong("server", mService.getConnectedServer().getId());
- args.putStringArrayList("access_tokens", (ArrayList<String>) mDatabase.getAccessTokens(mService.getConnectedServer().getId()));
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ args.putLong("server", mService.getConnectedServer().getId());
+ args.putStringArrayList("access_tokens", (ArrayList<String>) mDatabase.getAccessTokens(mService.getConnectedServer().getId()));
break;
case DrawerAdapter.ITEM_PINNED_CHANNELS:
fragmentClass = ChannelFragment.class;
@@ -565,35 +524,26 @@ public class PlumbleActivity extends ActionBarActivity implements ListView.OnIte
public void connectToServer(final Server server) {
// Check if we're already connected to a server; if so, inform user.
- try {
- if(mService != null &&
- mService.getConnectionState() == JumbleService.STATE_CONNECTED) {
- AlertDialog.Builder adb = new AlertDialog.Builder(this);
- adb.setMessage(R.string.reconnect_dialog_message);
- adb.setPositiveButton(R.string.connect, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- try {
- // Register an observer to reconnect to the new server once disconnected.
- mService.registerObserver(new JumbleObserver() {
- @Override
- public void onDisconnected(JumbleException e) throws RemoteException {
- connectToServer(server);
- mService.unregisterObserver(this);
- }
- });
- mService.disconnect();
- } catch (RemoteException e) {
- e.printStackTrace();
+ if(mService != null && mService.isConnectionEstablished()) {
+ AlertDialog.Builder adb = new AlertDialog.Builder(this);
+ adb.setMessage(R.string.reconnect_dialog_message);
+ adb.setPositiveButton(R.string.connect, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ // Register an observer to reconnect to the new server once disconnected.
+ mService.registerObserver(new JumbleObserver() {
+ @Override
+ public void onDisconnected(JumbleException e) {
+ connectToServer(server);
+ mService.unregisterObserver(this);
}
- }
- });
- adb.setNegativeButton(android.R.string.cancel, null);
- adb.show();
- return;
- }
- } catch (RemoteException e) {
- e.printStackTrace();
+ });
+ mService.disconnect();
+ }
+ });
+ adb.setNegativeButton(android.R.string.cancel, null);
+ adb.show();
+ return;
}
// Prompt to start Orbot if enabled but not running
@@ -651,14 +601,14 @@ public class PlumbleActivity extends ActionBarActivity implements ListView.OnIte
* connection state updates.
* @param service A bound IJumbleService.
*/
- private void updateConnectionState(IJumbleService service) throws RemoteException {
+ private void updateConnectionState(IJumbleService service) {
if (mConnectingDialog != null)
mConnectingDialog.dismiss();
if (mErrorDialog != null)
mErrorDialog.dismiss();
switch (mService.getConnectionState()) {
- case JumbleService.STATE_CONNECTING:
+ case CONNECTING:
Server server = service.getConnectedServer();
mConnectingDialog = new ProgressDialog(this);
mConnectingDialog.setIndeterminate(true);
@@ -666,20 +616,16 @@ public class PlumbleActivity extends ActionBarActivity implements ListView.OnIte
mConnectingDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
- try {
- mService.disconnect();
- Toast.makeText(PlumbleActivity.this, R.string.cancelled,
- Toast.LENGTH_SHORT).show();
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ mService.disconnect();
+ Toast.makeText(PlumbleActivity.this, R.string.cancelled,
+ Toast.LENGTH_SHORT).show();
}
});
mConnectingDialog.setMessage(getString(R.string.connecting_to_server, server.getHost(),
server.getPort()));
mConnectingDialog.show();
break;
- case JumbleService.STATE_CONNECTION_LOST:
+ case CONNECTION_LOST:
// Only bother the user if the error hasn't already been shown.
if (!getService().isErrorShown()) {
JumbleException error = getService().getConnectionError();
@@ -691,12 +637,8 @@ public class PlumbleActivity extends ActionBarActivity implements ListView.OnIte
@Override
public void onClick(DialogInterface dialog, int which) {
if (getService() != null) {
- try {
- getService().cancelReconnect();
- getService().markErrorShown();
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ getService().cancelReconnect();
+ getService().markErrorShown();
}
}
});
@@ -724,7 +666,7 @@ public class PlumbleActivity extends ActionBarActivity implements ListView.OnIte
*/
@Override
- public PlumbleService.PlumbleBinder getService() {
+ public PlumbleService getService() {
return mService;
}
@@ -764,27 +706,18 @@ public class PlumbleActivity extends ActionBarActivity implements ListView.OnIte
@Override
public boolean isConnected() {
- try {
- return mService != null
- && mService.getConnectionState() == JumbleService.STATE_CONNECTED;
- } catch (RemoteException e) {
- e.printStackTrace();
- return false;
- }
+ return mService != null && mService.isSynchronized();
}
@Override
public String getConnectedServerName() {
- try {
- if(mService != null
- && mService.getConnectionState() == JumbleService.STATE_CONNECTED) {
- Server server = mService.getConnectedServer();
- return server.getName().equals("") ? server.getHost() : server.getName();
- }
- } catch (RemoteException e) {
- e.printStackTrace();
+ if(mService != null && mService.isSynchronized()) {
+ Server server = mService.getConnectedServer();
+ return server.getName().equals("") ? server.getHost() : server.getName();
}
- return null;
+ if (BuildConfig.DEBUG)
+ throw new RuntimeException("getConnectedServerName should only be called if connected!");
+ return "";
}
@Override
diff --git a/app/src/main/java/com/morlunk/mumbleclient/channel/AccessTokenFragment.java b/app/src/main/java/com/morlunk/mumbleclient/channel/AccessTokenFragment.java
index a778c73..bb6efe5 100644
--- a/app/src/main/java/com/morlunk/mumbleclient/channel/AccessTokenFragment.java
+++ b/app/src/main/java/com/morlunk/mumbleclient/channel/AccessTokenFragment.java
@@ -113,18 +113,14 @@ public class AccessTokenFragment extends JumbleServiceFragment {
mTokenField.setText("");
- Log.i(Constants.TAG, "Adding token: "+tokenText);
+ Log.i(Constants.TAG, "Adding token: " + tokenText);
mTokens.add(tokenText);
mTokenAdapter.notifyDataSetChanged();
mTokenList.smoothScrollToPosition(mTokens.size() - 1);
mProvider.getDatabase().addAccessToken(getServerId(), tokenText);
- try {
- getService().sendAccessTokens(mTokens);
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ getService().sendAccessTokens(mTokens);
}
private long getServerId() {
@@ -162,11 +158,7 @@ public class AccessTokenFragment extends JumbleServiceFragment {
mTokens.remove(position);
notifyDataSetChanged();
mProvider.getDatabase().removeAccessToken(getServerId(), token);
- try {
- getService().sendAccessTokens(mTokens);
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ getService().sendAccessTokens(mTokens);
}
});
diff --git a/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelAdapter.java b/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelAdapter.java
index b0a1229..200e79e 100644
--- a/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelAdapter.java
+++ b/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelAdapter.java
@@ -26,7 +26,6 @@ import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
-import com.morlunk.jumble.IJumbleService;
import com.morlunk.jumble.model.Channel;
import com.morlunk.jumble.model.IChannel;
import com.morlunk.jumble.model.IUser;
@@ -50,33 +49,19 @@ public class ChannelAdapter extends BaseAdapter {
@Override
public int getCount() {
- try {
- return mChannel.getUsers().size();
- } catch (RemoteException e) {
- e.printStackTrace();
- return 0;
- }
+ return mChannel.getUsers().size();
}
@Override
public Object getItem(int position) {
- try {
- return mChannel.getUsers().get(position);
- } catch (RemoteException e) {
- e.printStackTrace();
- }
- return null;
+ return mChannel.getUsers().get(position);
}
@Override
public long getItemId(int position) {
- try {
- IUser user = (IUser) mChannel.getUsers().get(position);
- if (user != null)
- return user.getUserId();
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ IUser user = mChannel.getUsers().get(position);
+ if (user != null)
+ return user.getUserId();
return -1;
}
diff --git a/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelChatFragment.java b/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelChatFragment.java
index c763aa2..1011a04 100644
--- a/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelChatFragment.java
+++ b/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelChatFragment.java
@@ -42,7 +42,6 @@ import android.widget.ListView;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;
-import com.morlunk.jumble.IJumbleObserver;
import com.morlunk.jumble.IJumbleService;
import com.morlunk.jumble.model.Channel;
import com.morlunk.jumble.model.IChannel;
@@ -50,6 +49,7 @@ import com.morlunk.jumble.model.IMessage;
import com.morlunk.jumble.model.IUser;
import com.morlunk.jumble.model.Message;
import com.morlunk.jumble.model.User;
+import com.morlunk.jumble.util.IJumbleObserver;
import com.morlunk.jumble.util.JumbleObserver;
import com.morlunk.mumbleclient.R;
import com.morlunk.mumbleclient.service.IChatMessage;
@@ -72,27 +72,27 @@ public class ChannelChatFragment extends JumbleServiceFragment implements ChatTa
private IJumbleObserver mServiceObserver = new JumbleObserver() {
@Override
- public void onMessageLogged(IMessage message) throws RemoteException {
+ public void onMessageLogged(IMessage message) {
addChatMessage(new IChatMessage.TextMessage(message), true);
}
@Override
- public void onLogInfo(String message) throws RemoteException {
+ public void onLogInfo(String message) {
addChatMessage(new IChatMessage.InfoMessage(IChatMessage.InfoMessage.Type.INFO, message), true);
}
@Override
- public void onLogWarning(String message) throws RemoteException {
+ public void onLogWarning(String message) {
addChatMessage(new IChatMessage.InfoMessage(IChatMessage.InfoMessage.Type.WARNING, message), true);
}
@Override
- public void onLogError(String message) throws RemoteException {
+ public void onLogError(String message) {
addChatMessage(new IChatMessage.InfoMessage(IChatMessage.InfoMessage.Type.ERROR, message), true);
}
@Override
- public void onUserJoinedChannel(IUser user, IChannel newChannel, IChannel oldChannel) throws RemoteException {
+ public void onUserJoinedChannel(IUser user, IChannel newChannel, IChannel oldChannel) {
if (user != null && getService().getSessionUser() != null &&
user.equals(getService().getSessionUser()) &&
mTargetProvider.getChatTarget() == null) {
@@ -184,11 +184,7 @@ public class ChannelChatFragment extends JumbleServiceFragment implements ChatTa
}
});
- try {
- updateChatTargetText(mTargetProvider.getChatTarget());
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ updateChatTargetText(mTargetProvider.getChatTarget());
return view;
}
@@ -270,7 +266,7 @@ public class ChannelChatFragment extends JumbleServiceFragment implements ChatTa
/**
* Updates hint displaying chat target.
*/
- public void updateChatTargetText(ChatTargetProvider.ChatTarget target) throws RemoteException {
+ public void updateChatTargetText(ChatTargetProvider.ChatTarget target) {
if(getService() == null) return;
String hint = null;
@@ -305,11 +301,7 @@ public class ChannelChatFragment extends JumbleServiceFragment implements ChatTa
@Override
public void onChatTargetSelected(ChatTargetProvider.ChatTarget target) {
- try {
- updateChatTargetText(target);
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ updateChatTargetText(target);
}
private static class ChannelChatAdapter extends ArrayAdapter<IChatMessage> {
@@ -342,30 +334,25 @@ public class ChannelChatFragment extends JumbleServiceFragment implements ChatTa
public void visit(IChatMessage.TextMessage message) {
IMessage textMessage = message.getMessage();
String targetMessage = getContext().getString(R.string.unknown);
- boolean selfAuthored = false;
- try {
- selfAuthored = textMessage.getActor() == mService.getSession();
-
- if (textMessage.getTargetChannels() != null && !textMessage.getTargetChannels().isEmpty()) {
- IChannel currentChannel = (IChannel) textMessage.getTargetChannels().get(0);
- if (currentChannel != null && currentChannel.getName() != null) {
- targetMessage = getContext().getString(R.string.chat_message_to, textMessage.getActorName(), currentChannel.getName());
- }
- } else if (textMessage.getTargetTrees() != null && !textMessage.getTargetTrees().isEmpty()) {
- IChannel currentChannel = (IChannel) textMessage.getTargetTrees().get(0);
- if (currentChannel != null && currentChannel.getName() != null) {
- targetMessage = getContext().getString(R.string.chat_message_to, textMessage.getActorName(), currentChannel.getName());
- }
- } else if (textMessage.getTargetUsers() != null && !textMessage.getTargetUsers().isEmpty()) {
- User user = (User) textMessage.getTargetUsers().get(0);
- if (user != null && user.getName() != null) {
- targetMessage = getContext().getString(R.string.chat_message_to, textMessage.getActorName(), user.getName());
- }
- } else {
- targetMessage = textMessage.getActorName();
+ boolean selfAuthored = textMessage.getActor() == mService.getSession();
+
+ if (textMessage.getTargetChannels() != null && !textMessage.getTargetChannels().isEmpty()) {
+ IChannel currentChannel = (IChannel) textMessage.getTargetChannels().get(0);
+ if (currentChannel != null && currentChannel.getName() != null) {
+ targetMessage = getContext().getString(R.string.chat_message_to, textMessage.getActorName(), currentChannel.getName());
+ }
+ } else if (textMessage.getTargetTrees() != null && !textMessage.getTargetTrees().isEmpty()) {
+ IChannel currentChannel = (IChannel) textMessage.getTargetTrees().get(0);
+ if (currentChannel != null && currentChannel.getName() != null) {
+ targetMessage = getContext().getString(R.string.chat_message_to, textMessage.getActorName(), currentChannel.getName());
+ }
+ } else if (textMessage.getTargetUsers() != null && !textMessage.getTargetUsers().isEmpty()) {
+ User user = (User) textMessage.getTargetUsers().get(0);
+ if (user != null && user.getName() != null) {
+ targetMessage = getContext().getString(R.string.chat_message_to, textMessage.getActorName(), user.getName());
}
- } catch (RemoteException e) {
- e.printStackTrace();
+ } else {
+ targetMessage = textMessage.getActorName();
}
int gravity = selfAuthored ? Gravity.RIGHT : Gravity.LEFT;
diff --git a/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelEditFragment.java b/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelEditFragment.java
index 4b95401..6004c24 100644
--- a/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelEditFragment.java
+++ b/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelEditFragment.java
@@ -66,18 +66,14 @@ public class ChannelEditFragment extends DialogFragment {
mPositionField = (TextView) view.findViewById(R.id.channel_edit_position);
mTemporaryBox = (CheckBox) view.findViewById(R.id.channel_edit_temporary);
- try {
- // If we can only make temporary channels, remove the option.
- IChannel parentChannel = mServiceProvider.getService().getChannel(getParent());
- int combinedPermissions = mServiceProvider.getService().getPermissions() | parentChannel.getPermissions();
- boolean canMakeChannel = (combinedPermissions & Permissions.MakeChannel) > 0;
- boolean canMakeTempChannel = (combinedPermissions & Permissions.MakeTempChannel) > 0;
- boolean onlyTemp = canMakeTempChannel && !canMakeChannel;
- mTemporaryBox.setChecked(onlyTemp);
- mTemporaryBox.setEnabled(!onlyTemp);
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ // If we can only make temporary channels, remove the option.
+ IChannel parentChannel = mServiceProvider.getService().getChannel(getParent());
+ int combinedPermissions = mServiceProvider.getService().getPermissions() | parentChannel.getPermissions();
+ boolean canMakeChannel = (combinedPermissions & Permissions.MakeChannel) > 0;
+ boolean canMakeTempChannel = (combinedPermissions & Permissions.MakeTempChannel) > 0;
+ boolean onlyTemp = canMakeTempChannel && !canMakeChannel;
+ mTemporaryBox.setChecked(onlyTemp);
+ mTemporaryBox.setEnabled(!onlyTemp);
return new AlertDialog.Builder(getActivity())
.setTitle(isAdding() ? R.string.channel_add : R.string.channel_edit)
@@ -85,18 +81,14 @@ public class ChannelEditFragment extends DialogFragment {
.setPositiveButton(isAdding() ? R.string.add : R.string.save, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
- try {
- if(isAdding()) {
- mServiceProvider.getService().createChannel(getParent(),
- mNameField.getText().toString(),
- mDescriptionField.getText().toString(),
- Integer.parseInt(mPositionField.getText().toString()), // We can guarantee this to be an int. InputType is numberSigned.
- mTemporaryBox.isChecked());
- } else {
- // TODO
- }
- } catch (RemoteException e) {
- e.printStackTrace();
+ if(isAdding()) {
+ mServiceProvider.getService().createChannel(getParent(),
+ mNameField.getText().toString(),
+ mDescriptionField.getText().toString(),
+ Integer.parseInt(mPositionField.getText().toString()), // We can guarantee this to be an int. InputType is numberSigned.
+ mTemporaryBox.isChecked());
+ } else {
+ // TODO
}
}
})
diff --git a/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelFragment.java b/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelFragment.java
index 411f106..e0f01c7 100644
--- a/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelFragment.java
+++ b/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelFragment.java
@@ -37,9 +37,9 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
-import com.morlunk.jumble.IJumbleObserver;
import com.morlunk.jumble.model.IUser;
import com.morlunk.jumble.model.User;
+import com.morlunk.jumble.util.IJumbleObserver;
import com.morlunk.jumble.util.JumbleObserver;
import com.morlunk.mumbleclient.R;
import com.morlunk.mumbleclient.Settings;
@@ -65,7 +65,7 @@ public class ChannelFragment extends JumbleServiceFragment implements SharedPref
private JumbleObserver mObserver = new JumbleObserver() {
@Override
- public void onUserTalkStateUpdated(IUser user) throws RemoteException {
+ public void onUserTalkStateUpdated(IUser user) {
if (user != null && user.getSession() == getService().getSession()) {
// Manually set button selection colour when we receive a talk state update.
// This allows representation of talk state when using hot corners and PTT toggle.
@@ -113,17 +113,13 @@ public class ChannelFragment extends JumbleServiceFragment implements SharedPref
@Override
public boolean onTouch(View v, MotionEvent event) {
- try {
- switch (event.getAction()) {
- case MotionEvent.ACTION_DOWN:
- getService().onTalkKeyDown();
- break;
- case MotionEvent.ACTION_UP:
- getService().onTalkKeyUp();
- break;
- }
- } catch (RemoteException e) {
- e.printStackTrace();
+ switch (event.getAction()) {
+ case MotionEvent.ACTION_DOWN:
+ getService().onTalkKeyDown();
+ break;
+ case MotionEvent.ACTION_UP:
+ getService().onTalkKeyUp();
+ break;
}
return true;
}
diff --git a/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelListAdapter.java b/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelListAdapter.java
index e1257cc..0617c90 100644
--- a/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelListAdapter.java
+++ b/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelListAdapter.java
@@ -116,86 +116,74 @@ public class ChannelListAdapter extends RecyclerView.Adapter implements UserMenu
@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
final Node node = mNodes.get(position);
- try {
- if (node.isChannel()) {
- final IChannel channel = node.getChannel();
- ChannelViewHolder cvh = (ChannelViewHolder) viewHolder;
- cvh.itemView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mChannelClickListener != null) {
- mChannelClickListener.onChannelClick(channel);
- }
- }
- });
-
- final boolean expandUsable = channel.getSubchannels().size() > 0 ||
- channel.getSubchannelUserCount() > 0;
- cvh.mChannelExpandToggle.setImageResource(node.isExpanded() ?
- R.drawable.ic_action_expanded : R.drawable.ic_action_collapsed);
- cvh.mChannelExpandToggle.setOnClickListener(new View.OnClickListener() {
-
- @Override
- public void onClick(View v) {
- try {
- mExpandedChannels.put(channel.getId(), !node.isExpanded());
- updateChannels(); // FIXME: very inefficient.
- } catch (RemoteException e) {
- e.printStackTrace();
- }
- notifyDataSetChanged();
+ if (node.isChannel()) {
+ final IChannel channel = node.getChannel();
+ ChannelViewHolder cvh = (ChannelViewHolder) viewHolder;
+ cvh.itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (mChannelClickListener != null) {
+ mChannelClickListener.onChannelClick(channel);
}
- });
- // Dim channel expand toggle when no subchannels exist
- cvh.mChannelExpandToggle.setEnabled(expandUsable);
- cvh.mChannelExpandToggle.setVisibility(expandUsable ? View.VISIBLE : View.INVISIBLE);
-
- cvh.mChannelName.setText(channel.getName());
-
- int userCount = channel.getSubchannelUserCount();
- cvh.mChannelUserCount.setText(String.format("%d", userCount));
-
- // Pad the view depending on channel's nested level.
- DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();
- float margin = node.getDepth() * TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 25, metrics);
- cvh.mChannelHolder.setPadding((int) margin,
- cvh.mChannelHolder.getPaddingTop(),
- cvh.mChannelHolder.getPaddingRight(),
- cvh.mChannelHolder.getPaddingBottom());
- } else if (node.isUser()) {
- final IUser user = node.getUser();
- UserViewHolder uvh = (UserViewHolder) viewHolder;
- uvh.itemView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mUserClickListener != null) {
- mUserClickListener.onUserClick(user);
- }
+ }
+ });
+
+ final boolean expandUsable = channel.getSubchannels().size() > 0 ||
+ channel.getSubchannelUserCount() > 0;
+ cvh.mChannelExpandToggle.setImageResource(node.isExpanded() ?
+ R.drawable.ic_action_expanded : R.drawable.ic_action_collapsed);
+ cvh.mChannelExpandToggle.setOnClickListener(new View.OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ mExpandedChannels.put(channel.getId(), !node.isExpanded());
+ updateChannels(); // FIXME: very inefficient.
+ notifyDataSetChanged();
+ }
+ });
+ // Dim channel expand toggle when no subchannels exist
+ cvh.mChannelExpandToggle.setEnabled(expandUsable);
+ cvh.mChannelExpandToggle.setVisibility(expandUsable ? View.VISIBLE : View.INVISIBLE);
+
+ cvh.mChannelName.setText(channel.getName());
+
+ int userCount = channel.getSubchannelUserCount();
+ cvh.mChannelUserCount.setText(String.format("%d", userCount));
+
+ // Pad the view depending on channel's nested level.
+ DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();
+ float margin = node.getDepth() * TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 25, metrics);
+ cvh.mChannelHolder.setPadding((int) margin,
+ cvh.mChannelHolder.getPaddingTop(),
+ cvh.mChannelHolder.getPaddingRight(),
+ cvh.mChannelHolder.getPaddingBottom());
+ } else if (node.isUser()) {
+ final IUser user = node.getUser();
+ UserViewHolder uvh = (UserViewHolder) viewHolder;
+ uvh.itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (mUserClickListener != null) {
+ mUserClickListener.onUserClick(user);
}
- });
-
- uvh.mUserName.setText(user.getName());
- try {
- uvh.mUserName.setTypeface(null, user.getSession() == mService.getSession() ? Typeface.BOLD : Typeface.NORMAL);
- } catch (RemoteException e) {
- e.printStackTrace();
}
+ });
- uvh.mUserTalkHighlight.setImageDrawable(getTalkStateDrawable(user));
+ uvh.mUserName.setText(user.getName());
+ uvh.mUserName.setTypeface(null, user.getSession() == mService.getSession() ? Typeface.BOLD : Typeface.NORMAL);
- // Pad the view depending on channel's nested level.
- DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();
- float margin = (node.getDepth() + 1) * TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 25, metrics);
- uvh.mUserHolder.setPadding((int) margin,
- uvh.mUserHolder.getPaddingTop(),
- uvh.mUserHolder.getPaddingRight(),
- uvh.mUserHolder.getPaddingBottom());
+ uvh.mUserTalkHighlight.setImageDrawable(getTalkStateDrawable(user));
- uvh.mMoreButton.setOnClickListener(new UserMenuProvider(mContext, user,
- (PlumbleService.PlumbleBinder) mService, mFragmentManager, this));
- }
- } catch (RemoteException e) {
- e.printStackTrace();
+ // Pad the view depending on channel's nested level.
+ DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();
+ float margin = (node.getDepth() + 1) * TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 25, metrics);
+ uvh.mUserHolder.setPadding((int) margin,
+ uvh.mUserHolder.getPaddingTop(),
+ uvh.mUserHolder.getPaddingRight(),
+ uvh.mUserHolder.getPaddingBottom());
+
+ uvh.mMoreButton.setOnClickListener(new UserMenuProvider(mContext, user,
+ (PlumbleService) mService, mFragmentManager, this));
}
}
@@ -230,7 +218,7 @@ public class ChannelListAdapter extends RecyclerView.Adapter implements UserMenu
* Updates the channel tree model.
* To be used after any channel tree modifications.
*/
- public void updateChannels() throws RemoteException {
+ public void updateChannels() {
mNodes.clear();
for (int cid : mRootChannels) {
IChannel channel = mService.getChannel(cid);
@@ -245,7 +233,7 @@ public class ChannelListAdapter extends RecyclerView.Adapter implements UserMenu
* @param user The user to update.
* @param view The view containing this adapter.
*/
- public void animateUserStateUpdate(IUser user, RecyclerView view) throws RemoteException {
+ public void animateUserStateUpdate(IUser user, RecyclerView view) {
long itemId = user.getSession() | USER_ID_MASK;
UserViewHolder uvh = (UserViewHolder) view.findViewHolderForItemId(itemId);
if (uvh != null) {
@@ -266,7 +254,7 @@ public class ChannelListAdapter extends RecyclerView.Adapter implements UserMenu
}
}
- private Drawable getTalkStateDrawable(IUser user) throws RemoteException {
+ private Drawable getTalkStateDrawable(IUser user) {
Resources resources = mContext.getResources();
if (user.isSelfDeafened()) {
return resources.getDrawable(R.drawable.outline_circle_deafened);
@@ -341,7 +329,7 @@ public class ChannelListAdapter extends RecyclerView.Adapter implements UserMenu
* @param nodes An accumulator to store generated nodes into.
*/
private void constructNodes(Node parent, IChannel channel, int depth,
- List<Node> nodes) throws RemoteException {
+ List<Node> nodes) {
Node channelNode = new Node(parent, depth, channel);
nodes.add(channelNode);
@@ -366,9 +354,8 @@ public class ChannelListAdapter extends RecyclerView.Adapter implements UserMenu
/**
* Changes the service backing the adapter. Updates the list as well.
* @param service The new service to retrieve channels from.
- * @throws RemoteException
*/
- public void setService(IJumbleService service) throws RemoteException {
+ public void setService(IJumbleService service) {
mService = service;
updateChannels();
notifyDataSetChanged();
@@ -376,36 +363,27 @@ public class ChannelListAdapter extends RecyclerView.Adapter implements UserMenu
@Override
public void onLocalUserStateUpdated(final IUser user) {
- try {
- notifyDataSetChanged();
-
- // Add or remove registered user from local mute history
- final Server server = mService.getConnectedServer();
-
- if (user.getUserId() >= 0 && server.isSaved()) {
- new Thread(new Runnable() {
- @Override
- public void run() {
- // TODO: use dedicated database worker thread?
- try {
- if (user.isLocalMuted()) {
- mDatabase.addLocalMutedUser(server.getId(), user.getUserId());
- } else {
- mDatabase.removeLocalMutedUser(server.getId(), user.getUserId());
- }
- if (user.isLocalIgnored()) {
- mDatabase.addLocalIgnoredUser(server.getId(), user.getUserId());
- } else {
- mDatabase.removeLocalIgnoredUser(server.getId(), user.getUserId());
- }
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ notifyDataSetChanged();
+
+ // Add or remove registered user from local mute history
+ final Server server = mService.getConnectedServer();
+
+ if (user.getUserId() >= 0 && server.isSaved()) {
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ if (user.isLocalMuted()) {
+ mDatabase.addLocalMutedUser(server.getId(), user.getUserId());
+ } else {
+ mDatabase.removeLocalMutedUser(server.getId(), user.getUserId());
}
- }).start();
- }
- } catch (RemoteException e) {
- e.printStackTrace();
+ if (user.isLocalIgnored()) {
+ mDatabase.addLocalIgnoredUser(server.getId(), user.getUserId());
+ } else {
+ mDatabase.removeLocalIgnoredUser(server.getId(), user.getUserId());
+ }
+ }
+ }).start();
}
}
diff --git a/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelListFragment.java b/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelListFragment.java
index a5d27dc..f610885 100644
--- a/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelListFragment.java
+++ b/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelListFragment.java
@@ -41,7 +41,6 @@ import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
-import com.morlunk.jumble.IJumbleObserver;
import com.morlunk.jumble.IJumbleService;
import com.morlunk.jumble.JumbleService;
import com.morlunk.jumble.model.Channel;
@@ -49,6 +48,7 @@ import com.morlunk.jumble.model.IChannel;
import com.morlunk.jumble.model.IUser;
import com.morlunk.jumble.model.Server;
import com.morlunk.jumble.model.User;
+import com.morlunk.jumble.util.IJumbleObserver;
import com.morlunk.jumble.util.JumbleException;
import com.morlunk.jumble.util.JumbleObserver;
import com.morlunk.mumbleclient.R;
@@ -63,12 +63,12 @@ public class ChannelListFragment extends JumbleServiceFragment implements OnChan
private IJumbleObserver mServiceObserver = new JumbleObserver() {
@Override
- public void onDisconnected(JumbleException e) throws RemoteException {
+ public void onDisconnected(JumbleException e) {
mChannelView.setAdapter(null);
}
@Override
- public void onUserJoinedChannel(IUser user, IChannel newChannel, IChannel oldChannel) throws RemoteException {
+ public void onUserJoinedChannel(IUser user, IChannel newChannel, IChannel oldChannel) {
mChannelListAdapter.updateChannels();
mChannelListAdapter.notifyDataSetChanged();
if(getService().getSession() == user.getSession()) {
@@ -77,43 +77,43 @@ public class ChannelListFragment extends JumbleServiceFragment implements OnChan
}
@Override
- public void onChannelAdded(IChannel channel) throws RemoteException {
+ public void onChannelAdded(IChannel channel) {
mChannelListAdapter.updateChannels();
mChannelListAdapter.notifyDataSetChanged();
}
@Override
- public void onChannelRemoved(IChannel channel) throws RemoteException {
+ public void onChannelRemoved(IChannel channel) {
mChannelListAdapter.updateChannels();
mChannelListAdapter.notifyDataSetChanged();
}
@Override
- public void onChannelStateUpdated(IChannel channel) throws RemoteException {
+ public void onChannelStateUpdated(IChannel channel) {
mChannelListAdapter.updateChannels();
mChannelListAdapter.notifyDataSetChanged();
}
@Override
- public void onUserConnected(IUser user) throws RemoteException {
+ public void onUserConnected(IUser user) {
mChannelListAdapter.updateChannels();
mChannelListAdapter.notifyDataSetChanged();
}
@Override
- public void onUserRemoved(IUser user, String reason) throws RemoteException {
+ public void onUserRemoved(IUser user, String reason) {
mChannelListAdapter.updateChannels();
mChannelListAdapter.notifyDataSetChanged();
}
@Override
- public void onUserStateUpdated(IUser user) throws RemoteException {
+ public void onUserStateUpdated(IUser user) {
mChannelListAdapter.animateUserStateUpdate(user, mChannelView);
getActivity().supportInvalidateOptionsMenu(); // Update self mute/deafen state
}
@Override
- public void onUserTalkStateUpdated(IUser user) throws RemoteException {
+ public void onUserTalkStateUpdated(IUser user) {
mChannelListAdapter.animateUserStateUpdate(user, mChannelView);
}
};
@@ -201,30 +201,19 @@ public class ChannelListFragment extends JumbleServiceFragment implements OnChan
MenuItem muteItem = menu.findItem(R.id.menu_mute_button);
MenuItem deafenItem = menu.findItem(R.id.menu_deafen_button);
- try {
- if(getService() != null
- && getService().getConnectionState() == JumbleService.STATE_CONNECTED
- && getService().getSessionUser() != null) {
- // Color the action bar icons to the primary text color of the theme, TODO move this elsewhere
- int foregroundColor = getActivity().getTheme().obtainStyledAttributes(new int[]{android.R.attr.textColorPrimaryInverse}).getColor(0, -1);
+ if(getService() != null
+ && getService().isSynchronized()) {
+ // Color the action bar icons to the primary text color of the theme, TODO move this elsewhere
+ int foregroundColor = getActivity().getTheme().obtainStyledAttributes(new int[]{android.R.attr.textColorPrimaryInverse}).getColor(0, -1);
- IUser self = getService().getSessionUser();
- muteItem.setIcon(self.isSelfMuted() ? R.drawable.ic_action_microphone_muted : R.drawable.ic_action_microphone);
- deafenItem.setIcon(self.isSelfDeafened() ? R.drawable.ic_action_audio_muted : R.drawable.ic_action_audio);
- muteItem.getIcon().mutate().setColorFilter(foregroundColor, PorterDuff.Mode.MULTIPLY);
- deafenItem.getIcon().mutate().setColorFilter(foregroundColor, PorterDuff.Mode.MULTIPLY);
- }
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ IUser self = getService().getSessionUser();
+ muteItem.setIcon(self.isSelfMuted() ? R.drawable.ic_action_microphone_muted : R.drawable.ic_action_microphone);
+ deafenItem.setIcon(self.isSelfDeafened() ? R.drawable.ic_action_audio_muted : R.drawable.ic_action_audio);
+ muteItem.getIcon().mutate().setColorFilter(foregroundColor, PorterDuff.Mode.MULTIPLY);
+ deafenItem.getIcon().mutate().setColorFilter(foregroundColor, PorterDuff.Mode.MULTIPLY);
- try {
- if(getService() != null) {
- MenuItem bluetoothItem = menu.findItem(R.id.menu_bluetooth);
- bluetoothItem.setChecked(getService().usingBluetoothSco());
- }
- } catch (RemoteException e) {
- e.printStackTrace();
+ MenuItem bluetoothItem = menu.findItem(R.id.menu_bluetooth);
+ bluetoothItem.setChecked(getService().usingBluetoothSco());
}
}
@@ -251,14 +240,10 @@ public class ChannelListFragment extends JumbleServiceFragment implements OnChan
String itemType = cursor.getString(typeColumn);
int itemId = cursor.getInt(dataIdColumn);
if(ChannelSearchProvider.INTENT_DATA_CHANNEL.equals(itemType)) {
- try {
- if(getService().getSessionChannel().getId() != itemId) {
- getService().joinChannel(itemId);
- } else {
- scrollToChannel(itemId);
- }
- } catch (RemoteException e) {
- e.printStackTrace();
+ if(getService().getSessionChannel().getId() != itemId) {
+ getService().joinChannel(itemId);
+ } else {
+ scrollToChannel(itemId);
}
return true;
} else if(ChannelSearchProvider.INTENT_DATA_USER.equals(itemType)) {
@@ -274,44 +259,34 @@ public class ChannelListFragment extends JumbleServiceFragment implements OnChan
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
- case R.id.menu_mute_button:
- try {
- IUser self = getService().getSessionUser();
-
- boolean muted = !self.isSelfMuted();
- boolean deafened = self.isSelfDeafened();
- deafened &= muted; // Undeafen if mute is off
- getService().setSelfMuteDeafState(muted, deafened);
-
- getActivity().supportInvalidateOptionsMenu();
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ case R.id.menu_mute_button: {
+ IUser self = getService().getSessionUser();
+
+ boolean muted = !self.isSelfMuted();
+ boolean deafened = self.isSelfDeafened();
+ deafened &= muted; // Undeafen if mute is off
+ getService().setSelfMuteDeafState(muted, deafened);
+
+ getActivity().supportInvalidateOptionsMenu();
return true;
- case R.id.menu_deafen_button:
- try {
- IUser self = getService().getSessionUser();
+ }
+ case R.id.menu_deafen_button: {
+ IUser self = getService().getSessionUser();
- boolean deafened = !self.isSelfDeafened();
- getService().setSelfMuteDeafState(deafened, deafened);
+ boolean deafened = !self.isSelfDeafened();
+ getService().setSelfMuteDeafState(deafened, deafened);
- getActivity().supportInvalidateOptionsMenu();
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ getActivity().supportInvalidateOptionsMenu();
return true;
+ }
case R.id.menu_search:
return false;
case R.id.menu_bluetooth:
item.setChecked(!item.isChecked());
- try {
- if (item.isChecked()) {
- getService().enableBluetoothSco();
- } else {
- getService().disableBluetoothSco();
- }
- } catch (RemoteException e) {
- e.printStackTrace();
+ if (item.isChecked()) {
+ getService().enableBluetoothSco();
+ } else {
+ getService().disableBluetoothSco();
}
return true;
}
diff --git a/app/src/main/java/com/morlunk/mumbleclient/channel/ServerInfoFragment.java b/app/src/main/java/com/morlunk/mumbleclient/channel/ServerInfoFragment.java
index 8695f20..ff173b0 100644
--- a/app/src/main/java/com/morlunk/mumbleclient/channel/ServerInfoFragment.java
+++ b/app/src/main/java/com/morlunk/mumbleclient/channel/ServerInfoFragment.java
@@ -78,7 +78,7 @@ public class ServerInfoFragment extends JumbleServiceFragment {
*/
public void updateData() throws RemoteException {
if(getService() == null
- || getService().getConnectionState() != JumbleService.STATE_CONNECTED)
+ || !getService().isSynchronized())
return;
mProtocolView.setText(getString(R.string.server_info_protocol, getService().getServerRelease()));
@@ -88,7 +88,7 @@ public class ServerInfoFragment extends JumbleServiceFragment {
mHostView.setText(getString(R.string.server_info_host, getService().getConnectedServer().getHost(), getService().getConnectedServer().getPort()));
String codecName;
- JumbleUDPMessageType codecType = JumbleUDPMessageType.values()[getService().getCodec()];
+ JumbleUDPMessageType codecType = getService().getCodec();
switch (codecType) {
case UDPVoiceOpus:
codecName = "Opus";
diff --git a/app/src/main/java/com/morlunk/mumbleclient/channel/UserMenuProvider.java b/app/src/main/java/com/morlunk/mumbleclient/channel/UserMenuProvider.java
index 9ec6879..cbdee20 100644
--- a/app/src/main/java/com/morlunk/mumbleclient/channel/UserMenuProvider.java
+++ b/app/src/main/java/com/morlunk/mumbleclient/channel/UserMenuProvider.java
@@ -48,25 +48,25 @@ import java.util.List;
public class UserMenuProvider implements View.OnClickListener, PopupMenu.OnMenuItemClickListener, PopupMenu.OnDismissListener {
private final Context mContext;
private final IUser mUser;
- private final PlumbleService.PlumbleBinder mService;
+ private final PlumbleService mService;
private final FragmentManager mFragmentManager;
private final Listener mListener;
private final JumbleObserver mPermissionObserver = new JumbleObserver() {
@Override
- public void onUserStateUpdated(IUser user) throws RemoteException {
+ public void onUserStateUpdated(IUser user) {
if (user.getSession() == mUser.getSession())
configureMenu(mMenu);
}
@Override
- public void onChannelPermissionsUpdated(IChannel channel) throws RemoteException {
+ public void onChannelPermissionsUpdated(IChannel channel) {
if (mMenu != null)
configureMenu(mMenu);
}
};
private Menu mMenu;
- public UserMenuProvider(Context context, IUser user, PlumbleService.PlumbleBinder service,
+ public UserMenuProvider(Context context, IUser user, PlumbleService service,
FragmentManager fragmentManager, Listener listener) {
mContext = context;
mUser = user;
@@ -83,18 +83,14 @@ public class UserMenuProvider implements View.OnClickListener, PopupMenu.OnMenuI
menu.setOnDismissListener(this);
mMenu = menu.getMenu();
- try {
- // Observer permissions changes, configure menu when we receive an update
- mService.registerObserver(mPermissionObserver);
- // Request permissions update from server, if we don't have channel permissions
- IChannel channel = mUser.getChannel();
- if (channel != null && channel.getPermissions() == 0) {
- mService.requestPermissions(channel.getId());
- } else {
- configureMenu(mMenu);
- }
- } catch (RemoteException e) {
- e.printStackTrace();
+ // Observer permissions changes, configure menu when we receive an update
+ mService.registerObserver(mPermissionObserver);
+ // Request permissions update from server, if we don't have channel permissions
+ IChannel channel = mUser.getChannel();
+ if (channel != null && channel.getPermissions() == 0) {
+ mService.requestPermissions(channel.getId());
+ } else {
+ configureMenu(mMenu);
}
menu.show();
@@ -105,52 +101,48 @@ public class UserMenuProvider implements View.OnClickListener, PopupMenu.OnMenuI
* @param menu A menu inflated from R.menu.context_user.
*/
public void configureMenu(Menu menu) {
- try {
- // Use permission data to determine the actions available.
- boolean self = mUser.getSession() == mService.getSession();
- int perms = mService.getPermissions();
- IChannel channel = mUser.getChannel();
- int channelPerms = channel.getId() != 0 ? channel.getPermissions() : perms;
+ // Use permission data to determine the actions available.
+ boolean self = mUser.getSession() == mService.getSession();
+ int perms = mService.getPermissions();
+ IChannel channel = mUser.getChannel();
+ int channelPerms = channel.getId() != 0 ? channel.getPermissions() : perms;
- menu.findItem(R.id.context_kick).setVisible(
- !self && (perms & (Permissions.Kick | Permissions.Ban | Permissions.Write)) > 0);
- menu.findItem(R.id.context_ban).setVisible(
- !self && (perms & (Permissions.Ban | Permissions.Write)) > 0);
- menu.findItem(R.id.context_mute).setVisible(
- ((channelPerms & (Permissions.Write | Permissions.MuteDeafen)) > 0 &&
- (!self || mUser.isMuted() || mUser.isSuppressed())));
- menu.findItem(R.id.context_deafen).setVisible(
- ((channelPerms & (Permissions.Write | Permissions.MuteDeafen)) > 0 &&
- (!self || mUser.isDeafened())));
- menu.findItem(R.id.context_priority).setVisible(
- ((channelPerms & (Permissions.Write | Permissions.MuteDeafen)) > 0));
- menu.findItem(R.id.context_move).setVisible(
- !self && (perms & Permissions.Move) > 0);
- menu.findItem(R.id.context_change_comment).setVisible(self);
- menu.findItem(R.id.context_reset_comment).setVisible(
- !self && mUser.getCommentHash() != null &&
- (perms & (Permissions.Move | Permissions.Write)) > 0);
- menu.findItem(R.id.context_view_comment).setVisible(
- (mUser.getComment() != null && !mUser.getComment().isEmpty()) ||
- (mUser.getCommentHash() != null));
- menu.findItem(R.id.context_register).setVisible(mUser.getUserId() < 0 &&
- (mUser.getHash() != null && !mUser.getHash().isEmpty()) &&
- (perms & ((self ? Permissions.SelfRegister : Permissions.Register) | Permissions.Write)) > 0);
- menu.findItem(R.id.context_local_mute).setVisible(!self);
- menu.findItem(R.id.context_ignore_messages).setVisible(!self);
+ menu.findItem(R.id.context_kick).setVisible(
+ !self && (perms & (Permissions.Kick | Permissions.Ban | Permissions.Write)) > 0);
+ menu.findItem(R.id.context_ban).setVisible(
+ !self && (perms & (Permissions.Ban | Permissions.Write)) > 0);
+ menu.findItem(R.id.context_mute).setVisible(
+ ((channelPerms & (Permissions.Write | Permissions.MuteDeafen)) > 0 &&
+ (!self || mUser.isMuted() || mUser.isSuppressed())));
+ menu.findItem(R.id.context_deafen).setVisible(
+ ((channelPerms & (Permissions.Write | Permissions.MuteDeafen)) > 0 &&
+ (!self || mUser.isDeafened())));
+ menu.findItem(R.id.context_priority).setVisible(
+ ((channelPerms & (Permissions.Write | Permissions.MuteDeafen)) > 0));
+ menu.findItem(R.id.context_move).setVisible(
+ !self && (perms & Permissions.Move) > 0);
+ menu.findItem(R.id.context_change_comment).setVisible(self);
+ menu.findItem(R.id.context_reset_comment).setVisible(
+ !self && mUser.getCommentHash() != null &&
+ (perms & (Permissions.Move | Permissions.Write)) > 0);
+ menu.findItem(R.id.context_view_comment).setVisible(
+ (mUser.getComment() != null && !mUser.getComment().isEmpty()) ||
+ (mUser.getCommentHash() != null));
+ menu.findItem(R.id.context_register).setVisible(mUser.getUserId() < 0 &&
+ (mUser.getHash() != null && !mUser.getHash().isEmpty()) &&
+ (perms & ((self ? Permissions.SelfRegister : Permissions.Register) | Permissions.Write)) > 0);
+ menu.findItem(R.id.context_local_mute).setVisible(!self);
+ menu.findItem(R.id.context_ignore_messages).setVisible(!self);
- // TODO info
+ // TODO info
// informationItem.enabled = (((perms & (Permissions.Write | Permissions.Register))) > 0 || (channelPermissions & (Permissions.Write | Permissions.Enter)) > 0 || (mUser.getSession() == mService.getSession()));
- // Highlight toggles
- menu.findItem(R.id.context_mute).setChecked(mUser.isMuted() || mUser.isSuppressed());
- menu.findItem(R.id.context_deafen).setChecked(mUser.isDeafened());
- menu.findItem(R.id.context_priority).setChecked(mUser.isPrioritySpeaker());
- menu.findItem(R.id.context_local_mute).setChecked(mUser.isLocalMuted());
- menu.findItem(R.id.context_ignore_messages).setChecked(mUser.isLocalIgnored());
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ // Highlight toggles
+ menu.findItem(R.id.context_mute).setChecked(mUser.isMuted() || mUser.isSuppressed());
+ menu.findItem(R.id.context_deafen).setChecked(mUser.isDeafened());
+ menu.findItem(R.id.context_priority).setChecked(mUser.isPrioritySpeaker());
+ menu.findItem(R.id.context_local_mute).setChecked(mUser.isLocalMuted());
+ menu.findItem(R.id.context_ignore_messages).setChecked(mUser.isLocalIgnored());
}
private void showUserComment(final boolean edit) throws RemoteException {
@@ -174,11 +166,7 @@ public class UserMenuProvider implements View.OnClickListener, PopupMenu.OnMenuI
@Override
public void onClick(DialogInterface dialog, int which) {
IChannel channel = channels.get(which);
- try {
- mService.moveUserToChannel(mUser.getSession(), channel.getId());
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ mService.moveUserToChannel(mUser.getSession(), channel.getId());
}
});
adb.show();
@@ -198,12 +186,8 @@ public class UserMenuProvider implements View.OnClickListener, PopupMenu.OnMenuI
alertBuilder.setPositiveButton(R.string.user_menu_kick, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
- try {
- mService.kickBanUser(mUser.getSession(),
- reasonField.getText().toString(), menuItem.getItemId() == R.id.context_ban);
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ mService.kickBanUser(mUser.getSession(),
+ reasonField.getText().toString(), menuItem.getItemId() == R.id.context_ban);
}
});
alertBuilder.setNegativeButton(android.R.string.cancel, null);
@@ -241,11 +225,7 @@ public class UserMenuProvider implements View.OnClickListener, PopupMenu.OnMenuI
.setPositiveButton(R.string.confirm, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
- try {
- mService.setUserComment(mUser.getSession(), "");
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ mService.setUserComment(mUser.getSession(), "");
}
})
.setNegativeButton(android.R.string.cancel, null)
@@ -267,11 +247,7 @@ public class UserMenuProvider implements View.OnClickListener, PopupMenu.OnMenuI
@Override
public void onDismiss(PopupMenu popupMenu) {
- try {
- mService.unregisterObserver(mPermissionObserver);
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ mService.unregisterObserver(mPermissionObserver);
}
public interface Listener {
diff --git a/app/src/main/java/com/morlunk/mumbleclient/channel/actionmode/ChannelActionModeCallback.java b/app/src/main/java/com/morlunk/mumbleclient/channel/actionmode/ChannelActionModeCallback.java
index 79b1215..226174d 100644
--- a/app/src/main/java/com/morlunk/mumbleclient/channel/actionmode/ChannelActionModeCallback.java
+++ b/app/src/main/java/com/morlunk/mumbleclient/channel/actionmode/ChannelActionModeCallback.java
@@ -78,38 +78,30 @@ public class ChannelActionModeCallback extends ChatTargetActionModeCallback {
TintedMenuInflater inflater = new TintedMenuInflater(mContext, actionMode.getMenuInflater());
inflater.inflate(R.menu.context_channel, menu);
- try {
- actionMode.setTitle(mChannel.getName());
- actionMode.setSubtitle(R.string.current_chat_target);
- // Request permissions update from server, if we don't have channel permissions
- if(mChannel.getPermissions() == 0)
- mService.requestPermissions(mChannel.getId());
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ actionMode.setTitle(mChannel.getName());
+ actionMode.setSubtitle(R.string.current_chat_target);
+ // Request permissions update from server, if we don't have channel permissions
+ if(mChannel.getPermissions() == 0)
+ mService.requestPermissions(mChannel.getId());
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) {
- try {
- int perms = mChannel.getPermissions();
+ int perms = mChannel.getPermissions();
- // This breaks uMurmur ACL. Put in a fix based on server version perhaps?
- //menu.getMenu().findItem(R.id.menu_channel_add)
- // .setVisible((permissions & (Permissions.MakeChannel | Permissions.MakeTempChannel)) > 0);
- menu.findItem(R.id.context_channel_edit).setVisible((perms & Permissions.Write) > 0);
- menu.findItem(R.id.context_channel_remove).setVisible((perms & Permissions.Write) > 0);
- menu.findItem(R.id.context_channel_view_description)
- .setVisible(mChannel.getDescription() != null ||
- mChannel.getDescriptionHash() != null);
- Server server = mService.getConnectedServer();
- if(server != null) {
- menu.findItem(R.id.context_channel_pin)
- .setChecked(mDatabase.isChannelPinned(server.getId(), mChannel.getId()));
- }
- } catch (RemoteException e) {
- e.printStackTrace();
+ // This breaks uMurmur ACL. Put in a fix based on server version perhaps?
+ //menu.getMenu().findItem(R.id.menu_channel_add)
+ // .setVisible((permissions & (Permissions.MakeChannel | Permissions.MakeTempChannel)) > 0);
+ menu.findItem(R.id.context_channel_edit).setVisible((perms & Permissions.Write) > 0);
+ menu.findItem(R.id.context_channel_remove).setVisible((perms & Permissions.Write) > 0);
+ menu.findItem(R.id.context_channel_view_description)
+ .setVisible(mChannel.getDescription() != null ||
+ mChannel.getDescriptionHash() != null);
+ Server server = mService.getConnectedServer();
+ if(server != null) {
+ menu.findItem(R.id.context_channel_pin)
+ .setChecked(mDatabase.isChannelPinned(server.getId(), mChannel.getId()));
}
return false;
@@ -120,26 +112,18 @@ public class ChannelActionModeCallback extends ChatTargetActionModeCallback {
boolean adding = false;
switch(menuItem.getItemId()) {
case R.id.context_channel_join:
- try {
- mService.joinChannel(mChannel.getId());
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ mService.joinChannel(mChannel.getId());
break;
case R.id.context_channel_add:
adding = true;
case R.id.context_channel_edit:
- try {
- ChannelEditFragment addFragment = new ChannelEditFragment();
- Bundle args = new Bundle();
- if (adding) args.putInt("parent", mChannel.getId());
- else args.putInt("channel", mChannel.getId());
- args.putBoolean("adding", adding);
- addFragment.setArguments(args);
- addFragment.show(mFragmentManager, "ChannelAdd");
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ ChannelEditFragment addFragment = new ChannelEditFragment();
+ Bundle args = new Bundle();
+ if (adding) args.putInt("parent", mChannel.getId());
+ else args.putInt("channel", mChannel.getId());
+ args.putBoolean("adding", adding);
+ addFragment.setArguments(args);
+ addFragment.show(mFragmentManager, "ChannelAdd");
break;
case R.id.context_channel_remove:
AlertDialog.Builder adb = new AlertDialog.Builder(mContext);
@@ -148,38 +132,26 @@ public class ChannelActionModeCallback extends ChatTargetActionModeCallback {
adb.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
- try {
- mService.removeChannel(mChannel.getId());
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ mService.removeChannel(mChannel.getId());
}
});
adb.setNegativeButton(android.R.string.cancel, null);
adb.show();
break;
case R.id.context_channel_view_description:
- try {
- Bundle commentArgs = new Bundle();
- commentArgs.putInt("channel", mChannel.getId());
- commentArgs.putString("comment", mChannel.getDescription());
- commentArgs.putBoolean("editing", false);
- DialogFragment commentFragment = (DialogFragment) Fragment.instantiate(mContext,
- ChannelDescriptionFragment.class.getName(), commentArgs);
- commentFragment.show(mFragmentManager, ChannelDescriptionFragment.class.getName());
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ Bundle commentArgs = new Bundle();
+ commentArgs.putInt("channel", mChannel.getId());
+ commentArgs.putString("comment", mChannel.getDescription());
+ commentArgs.putBoolean("editing", false);
+ DialogFragment commentFragment = (DialogFragment) Fragment.instantiate(mContext,
+ ChannelDescriptionFragment.class.getName(), commentArgs);
+ commentFragment.show(mFragmentManager, ChannelDescriptionFragment.class.getName());
break;
case R.id.context_channel_pin:
- try {
- long serverId = mService.getConnectedServer().getId();
- boolean pinned = mDatabase.isChannelPinned(serverId, mChannel.getId());
- if(!pinned) mDatabase.addPinnedChannel(serverId, mChannel.getId());
- else mDatabase.removePinnedChannel(serverId, mChannel.getId());
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ long serverId = mService.getConnectedServer().getId();
+ boolean pinned = mDatabase.isChannelPinned(serverId, mChannel.getId());
+ if(!pinned) mDatabase.addPinnedChannel(serverId, mChannel.getId());
+ else mDatabase.removePinnedChannel(serverId, mChannel.getId());
break;
}
actionMode.finish();
diff --git a/app/src/main/java/com/morlunk/mumbleclient/channel/actionmode/UserActionModeCallback.java b/app/src/main/java/com/morlunk/mumbleclient/channel/actionmode/UserActionModeCallback.java
index fb6b257..e0680ca 100644
--- a/app/src/main/java/com/morlunk/mumbleclient/channel/actionmode/UserActionModeCallback.java
+++ b/app/src/main/java/com/morlunk/mumbleclient/channel/actionmode/UserActionModeCallback.java
@@ -62,12 +62,8 @@ public class UserActionModeCallback extends ChatTargetActionModeCallback {
@Override
public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
super.onCreateActionMode(actionMode, menu);
- try {
- actionMode.setTitle(mUser.getName());
- actionMode.setSubtitle(R.string.current_chat_target);
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ actionMode.setTitle(mUser.getName());
+ actionMode.setSubtitle(R.string.current_chat_target);
return true;
}
diff --git a/app/src/main/java/com/morlunk/mumbleclient/channel/comment/ChannelDescriptionFragment.java b/app/src/main/java/com/morlunk/mumbleclient/channel/comment/ChannelDescriptionFragment.java
index da470fd..7e200f3 100644
--- a/app/src/main/java/com/morlunk/mumbleclient/channel/comment/ChannelDescriptionFragment.java
+++ b/app/src/main/java/com/morlunk/mumbleclient/channel/comment/ChannelDescriptionFragment.java
@@ -33,7 +33,7 @@ public class ChannelDescriptionFragment extends AbstractCommentFragment {
public void requestComment(final IJumbleService service) throws RemoteException {
service.registerObserver(new JumbleObserver() {
@Override
- public void onChannelStateUpdated(IChannel channel) throws RemoteException {
+ public void onChannelStateUpdated(IChannel channel) {
if(channel.getId() == getChannelId() &&
channel.getDescription() != null) {
loadComment(channel.getDescription());
diff --git a/app/src/main/java/com/morlunk/mumbleclient/channel/comment/UserCommentFragment.java b/app/src/main/java/com/morlunk/mumbleclient/channel/comment/UserCommentFragment.java
index f003d9d..9e74427 100644
--- a/app/src/main/java/com/morlunk/mumbleclient/channel/comment/UserCommentFragment.java
+++ b/app/src/main/java/com/morlunk/mumbleclient/channel/comment/UserCommentFragment.java
@@ -33,7 +33,7 @@ public class UserCommentFragment extends AbstractCommentFragment {
public void requestComment(final IJumbleService service) throws RemoteException {
service.registerObserver(new JumbleObserver() {
@Override
- public void onUserStateUpdated(IUser user) throws RemoteException {
+ public void onUserStateUpdated(IUser user) {
if(user.getSession() == getSession() &&
user.getComment() != null) {
loadComment(user.getComment());
diff --git a/app/src/main/java/com/morlunk/mumbleclient/service/IChatMessage.java b/app/src/main/java/com/morlunk/mumbleclient/service/IChatMessage.java
index 37bfccf..9ecdeb5 100644
--- a/app/src/main/java/com/morlunk/mumbleclient/service/IChatMessage.java
+++ b/app/src/main/java/com/morlunk/mumbleclient/service/IChatMessage.java
@@ -61,22 +61,12 @@ public interface IChatMessage {
@Override
public String getBody() {
- try {
- return mMessage.getMessage();
- } catch (RemoteException e) {
- e.printStackTrace();
- return null;
- }
+ return mMessage.getMessage();
}
@Override
public long getReceivedTime() {
- try {
- return mMessage.getReceivedTime();
- } catch (RemoteException e) {
- e.printStackTrace();
- return 0;
- }
+ return mMessage.getReceivedTime();
}
@Override
diff --git a/app/src/main/java/com/morlunk/mumbleclient/service/PlumbleOverlay.java b/app/src/main/java/com/morlunk/mumbleclient/service/PlumbleOverlay.java
index 17b1288..934ea35 100644
--- a/app/src/main/java/com/morlunk/mumbleclient/service/PlumbleOverlay.java
+++ b/app/src/main/java/com/morlunk/mumbleclient/service/PlumbleOverlay.java
@@ -48,23 +48,23 @@ public class PlumbleOverlay {
private JumbleObserver mObserver = new JumbleObserver() {
@Override
- public void onUserTalkStateUpdated(IUser user) throws RemoteException {
+ public void onUserTalkStateUpdated(IUser user) {
mChannelAdapter.notifyDataSetChanged();
}
@Override
- public void onUserStateUpdated(IUser user) throws RemoteException {
+ public void onUserStateUpdated(IUser user) {
if(user.getChannel() != null &&
- user.getChannel().equals(mService.getBinder().getSessionChannel()))
+ user.getChannel().equals(mService.getSessionChannel()))
mChannelAdapter.notifyDataSetChanged();
}
@Override
- public void onUserJoinedChannel(IUser user, IChannel newChannel, IChannel oldChannel) throws RemoteException {
- if(user.getSession() == mService.getBinder().getSession()) // Session user has changed channels
- mChannelAdapter.setChannel(mService.getBinder().getSessionChannel());
- else if(newChannel.getId() == mService.getBinder().getSessionChannel().getId() ||
- oldChannel.getId() == mService.getBinder().getSessionChannel().getId())
+ public void onUserJoinedChannel(IUser user, IChannel newChannel, IChannel oldChannel) {
+ if(user.getSession() == mService.getSession()) // Session user has changed channels
+ mChannelAdapter.setChannel(mService.getSessionChannel());
+ else if(newChannel.getId() == mService.getSessionChannel().getId() ||
+ oldChannel.getId() == mService.getSessionChannel().getId())
mChannelAdapter.notifyDataSetChanged();
}
};
@@ -160,16 +160,12 @@ public class PlumbleOverlay {
mTalkButton.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
- try {
- if(MotionEvent.ACTION_DOWN == event.getAction()) {
- mService.getBinder().setTalkingState(true);
- return true;
- } else if(MotionEvent.ACTION_UP == event.getAction()) {
- mService.getBinder().setTalkingState(false);
- return true;
- }
- } catch (RemoteException e) {
- e.printStackTrace();
+ if(MotionEvent.ACTION_DOWN == event.getAction()) {
+ mService.setTalkingState(true);
+ return true;
+ } else if(MotionEvent.ACTION_UP == event.getAction()) {
+ mService.setTalkingState(false);
+ return true;
}
return false;
}
@@ -206,30 +202,22 @@ public class PlumbleOverlay {
if(mShown)
return;
mShown = true;
- try {
- mChannelAdapter = new ChannelAdapter(mService, mService.getBinder().getSessionChannel());
- mOverlayList.setAdapter(mChannelAdapter);
- mService.getBinder().registerObserver(mObserver);
- WindowManager windowManager = (WindowManager) mService.getSystemService(Context.WINDOW_SERVICE);
- windowManager.addView(mOverlayView, mOverlayParams);
- } catch (RemoteException e) {
- e.printStackTrace();
- } catch (IllegalArgumentException e) {
- e.printStackTrace();
- }
+ mChannelAdapter = new ChannelAdapter(mService, mService.getSessionChannel());
+ mOverlayList.setAdapter(mChannelAdapter);
+ mService.registerObserver(mObserver);
+ WindowManager windowManager = (WindowManager) mService.getSystemService(Context.WINDOW_SERVICE);
+ windowManager.addView(mOverlayView, mOverlayParams);
}
public void hide() {
if(!mShown)
return;
mShown = false;
+ mService.unregisterObserver(mObserver);
+ mOverlayList.setAdapter(null);
try {
- mService.getBinder().unregisterObserver(mObserver);
- mOverlayList.setAdapter(null);
WindowManager windowManager = (WindowManager) mService.getSystemService(Context.WINDOW_SERVICE);
windowManager.removeView(mOverlayView);
- } catch (RemoteException e) {
- e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
diff --git a/app/src/main/java/com/morlunk/mumbleclient/service/PlumbleService.java b/app/src/main/java/com/morlunk/mumbleclient/service/PlumbleService.java
index 127bbf8..a033e46 100644
--- a/app/src/main/java/com/morlunk/mumbleclient/service/PlumbleService.java
+++ b/app/src/main/java/com/morlunk/mumbleclient/service/PlumbleService.java
@@ -33,6 +33,7 @@ import android.view.WindowManager;
import com.morlunk.jumble.Constants;
import com.morlunk.jumble.JumbleService;
+import com.morlunk.jumble.exception.AudioException;
import com.morlunk.jumble.model.IMessage;
import com.morlunk.jumble.model.IUser;
import com.morlunk.jumble.model.TalkState;
@@ -63,7 +64,6 @@ public class PlumbleService extends JumbleService implements
public static final int TTS_THRESHOLD = 250; // Maximum number of characters to read
public static final int RECONNECT_DELAY = 10000;
- private PlumbleBinder mBinder = new PlumbleBinder();
private Settings mSettings;
private PlumbleNotification mNotification;
private PlumbleReconnectNotification mReconnectNotification;
@@ -96,20 +96,12 @@ public class PlumbleService extends JumbleService implements
private PlumbleHotCorner.PlumbleHotCornerListener mHotCornerListener = new PlumbleHotCorner.PlumbleHotCornerListener() {
@Override
public void onHotCornerDown() {
- try {
- mBinder.onTalkKeyDown();
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ onTalkKeyDown();
}
@Override
public void onHotCornerUp() {
- try {
- mBinder.onTalkKeyUp();
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ onTalkKeyUp();
}
};
@@ -118,7 +110,7 @@ public class PlumbleService extends JumbleService implements
private JumbleObserver mObserver = new JumbleObserver() {
@Override
- public void onConnecting() throws RemoteException {
+ public void onConnecting() {
// Remove old notification left from reconnect,
if (mReconnectNotification != null) {
mReconnectNotification.hide();
@@ -133,7 +125,7 @@ public class PlumbleService extends JumbleService implements
}
@Override
- public void onConnected() throws RemoteException {
+ public void onConnected() {
if (mNotification != null) {
mNotification.setCustomTicker(getString(R.string.plumbleConnected));
mNotification.setCustomContentText(getString(R.string.connected));
@@ -143,7 +135,7 @@ public class PlumbleService extends JumbleService implements
}
@Override
- public void onDisconnected(JumbleException e) throws RemoteException {
+ public void onDisconnected(JumbleException e) {
if (mNotification != null) {
mNotification.hide();
mNotification = null;
@@ -151,23 +143,23 @@ public class PlumbleService extends JumbleService implements
if (e != null) {
mReconnectNotification =
PlumbleReconnectNotification.show(PlumbleService.this, e.getMessage(),
- getBinder().isReconnecting(),
+ isReconnecting(),
PlumbleService.this);
}
}
@Override
- public void onUserConnected(IUser user) throws RemoteException {
+ public void onUserConnected(IUser user) {
if (user.getTextureHash() != null &&
user.getTexture() == null) {
// Request avatar data if available.
- getBinder().requestAvatar(user.getSession());
+ requestAvatar(user.getSession());
}
}
@Override
- public void onUserStateUpdated(IUser user) throws RemoteException {
- if(user.getSession() == mBinder.getSession()) {
+ public void onUserStateUpdated(IUser user) {
+ if(user.getSession() == getSession()) {
mSettings.setMutedAndDeafened(user.isSelfMuted(), user.isSelfDeafened()); // Update settings mute/deafen state
if(mNotification != null) {
String contentText;
@@ -185,12 +177,12 @@ public class PlumbleService extends JumbleService implements
if (user.getTextureHash() != null &&
user.getTexture() == null) {
// Update avatar data if available.
- getBinder().requestAvatar(user.getSession());
+ requestAvatar(user.getSession());
}
}
@Override
- public void onMessageLogged(IMessage message) throws RemoteException {
+ public void onMessageLogged(IMessage message) {
// Split on / strip all HTML tags.
Document parsedMessage = Jsoup.parseBodyFragment(message.getMessage());
String strippedMessage = parsedMessage.text();
@@ -220,8 +212,8 @@ public class PlumbleService extends JumbleService implements
if(mSettings.isTextToSpeechEnabled() &&
mTTS != null &&
formattedTtsMessage.length() <= TTS_THRESHOLD &&
- getBinder().getSessionUser() != null &&
- !getBinder().getSessionUser().isSelfDeafened()) {
+ getSessionUser() != null &&
+ !getSessionUser().isSelfDeafened()) {
mTTS.speak(formattedTtsMessage, TextToSpeech.QUEUE_ADD, null);
}
@@ -229,22 +221,22 @@ public class PlumbleService extends JumbleService implements
}
@Override
- public void onLogInfo(String message) throws RemoteException {
+ public void onLogInfo(String message) {
mMessageLog.add(new IChatMessage.InfoMessage(IChatMessage.InfoMessage.Type.INFO, message));
}
@Override
- public void onLogWarning(String message) throws RemoteException {
+ public void onLogWarning(String message) {
mMessageLog.add(new IChatMessage.InfoMessage(IChatMessage.InfoMessage.Type.WARNING, message));
}
@Override
- public void onLogError(String message) throws RemoteException {
+ public void onLogError(String message) {
mMessageLog.add(new IChatMessage.InfoMessage(IChatMessage.InfoMessage.Type.ERROR, message));
}
@Override
- public void onPermissionDenied(String reason) throws RemoteException {
+ public void onPermissionDenied(String reason) {
if(mSettings.isChatNotifyEnabled() &&
mNotification != null) {
mNotification.setCustomTicker(reason);
@@ -253,10 +245,10 @@ public class PlumbleService extends JumbleService implements
}
@Override
- public void onUserTalkStateUpdated(IUser user) throws RemoteException {
- if (isConnected() &&
- mBinder.getSession() == user.getSession() &&
- mBinder.getTransmitMode() == Constants.TRANSMIT_PUSH_TO_TALK &&
+ public void onUserTalkStateUpdated(IUser user) {
+ if (isConnectionEstablished() &&
+ getSession() == user.getSession() &&
+ getTransmitMode() == Constants.TRANSMIT_PUSH_TO_TALK &&
user.getTalkState() == TalkState.TALKING &&
mPTTSoundEnabled) {
AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
@@ -268,11 +260,7 @@ public class PlumbleService extends JumbleService implements
@Override
public void onCreate() {
super.onCreate();
- try {
- getBinder().registerObserver(mObserver);
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ registerObserver(mObserver);
// Register for preference changes
mSettings = Settings.getInstance(this);
@@ -293,7 +281,7 @@ public class PlumbleService extends JumbleService implements
if(mSettings.isTextToSpeechEnabled())
mTTS = new TextToSpeech(this, mTTSInitListener);
- mTalkReceiver = new TalkBroadcastReceiver(getBinder());
+ mTalkReceiver = new TalkBroadcastReceiver(this);
mMessageLog = new ArrayList<>();
}
@@ -316,11 +304,7 @@ public class PlumbleService extends JumbleService implements
e.printStackTrace();
}
- try {
- getBinder().unregisterObserver(mObserver);
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ unregisterObserver(mObserver);
if(mTTS != null) mTTS.shutdown();
mMessageLog = null;
super.onDestroy();
@@ -332,11 +316,7 @@ public class PlumbleService extends JumbleService implements
// Restore mute/deafen state
if(mSettings.isMuted() || mSettings.isDeafened()) {
- try {
- getBinder().setSelfMuteDeafState(mSettings.isMuted(), mSettings.isDeafened());
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ setSelfMuteDeafState(mSettings.isMuted(), mSettings.isDeafened());
}
registerReceiver(mTalkReceiver, new IntentFilter(TalkBroadcastReceiver.BROADCAST_TALK));
@@ -384,7 +364,7 @@ public class PlumbleService extends JumbleService implements
mChannelOverlay.setPushToTalkShown(inputMethod == Constants.TRANSMIT_PUSH_TO_TALK);
break;
case Settings.PREF_HANDSET_MODE:
- setProximitySensorOn(isConnected() && mSettings.isHandsetMode());
+ setProximitySensorOn(isConnectionEstablished() && mSettings.isHandsetMode());
changedExtras.putInt(JumbleService.EXTRAS_AUDIO_STREAM, mSettings.isHandsetMode() ?
AudioManager.STREAM_VOICE_CALL : AudioManager.STREAM_MUSIC);
break;
@@ -394,7 +374,7 @@ public class PlumbleService extends JumbleService implements
break;
case Settings.PREF_HOT_CORNER_KEY:
mHotCorner.setGravity(mSettings.getHotCornerGravity());
- mHotCorner.setShown(isConnected() && mSettings.isHotCornerEnabled());
+ mHotCorner.setShown(isConnectionEstablished() && mSettings.isHotCornerEnabled());
break;
case Settings.PREF_USE_TTS:
if (mTTS == null && mSettings.isTextToSpeechEnabled())
@@ -443,13 +423,13 @@ public class PlumbleService extends JumbleService implements
if (changedExtras.size() > 0) {
try {
// Reconfigure the service appropriately.
- requiresReconnect |= mBinder.reconfigure(changedExtras);
- } catch (RemoteException e) {
+ requiresReconnect |= configureExtras(changedExtras);
+ } catch (AudioException e) {
e.printStackTrace();
}
}
- if (requiresReconnect && isConnected()) {
+ if (requiresReconnect && isConnectionEstablished()) {
AlertDialog ad = new AlertDialog.Builder(this)
.setTitle(R.string.information)
.setMessage(R.string.change_requires_reconnect)
@@ -472,38 +452,20 @@ public class PlumbleService extends JumbleService implements
}
@Override
- public PlumbleBinder getBinder() {
- return mBinder;
- }
-
- @Override
- public IBinder onBind(Intent intent) {
- return mBinder;
- }
-
- @Override
public void onMuteToggled() {
- try {
- IUser user = mBinder.getSessionUser();
- if (isConnected() && user != null) {
- boolean muted = !user.isSelfMuted();
- boolean deafened = user.isSelfDeafened() && muted;
- mBinder.setSelfMuteDeafState(muted, deafened);
- }
- } catch (RemoteException e) {
- e.printStackTrace();
+ IUser user = getSessionUser();
+ if (isConnectionEstablished() && user != null) {
+ boolean muted = !user.isSelfMuted();
+ boolean deafened = user.isSelfDeafened() && muted;
+ setSelfMuteDeafState(muted, deafened);
}
}
@Override
public void onDeafenToggled() {
- try {
- IUser user = mBinder.getSessionUser();
- if (isConnected() && user != null) {
- mBinder.setSelfMuteDeafState(!user.isSelfDeafened(), !user.isSelfDeafened());
- }
- } catch (RemoteException e) {
- e.printStackTrace();
+ IUser user = getSessionUser();
+ if (isConnectionEstablished() && user != null) {
+ setSelfMuteDeafState(!user.isSelfDeafened(), !user.isSelfDeafened());
}
}
@@ -528,87 +490,73 @@ public class PlumbleService extends JumbleService implements
@Override
public void cancelReconnect() {
- try {
- mBinder.cancelReconnect();
- } catch (RemoteException e) {
- e.printStackTrace();
+ if (mReconnectNotification != null) {
+ mReconnectNotification.hide();
+ mReconnectNotification = null;
}
+ super.cancelReconnect();
}
- /**
- * An extension of JumbleBinder to add Plumble-specific functionality.
- */
- public class PlumbleBinder extends JumbleBinder {
- public void setOverlayShown(boolean showOverlay) {
- if(!mChannelOverlay.isShown()) {
- mChannelOverlay.show();
- } else {
- mChannelOverlay.hide();
- }
- }
-
- public boolean isOverlayShown() {
- return mChannelOverlay.isShown();
- }
-
- public void clearChatNotifications() throws RemoteException {
- if (mNotification != null) {
- mNotification.clearMessages();
- mNotification.show();
- }
+ public void setOverlayShown(boolean showOverlay) {
+ if(!mChannelOverlay.isShown()) {
+ mChannelOverlay.show();
+ } else {
+ mChannelOverlay.hide();
}
+ }
- public void markErrorShown() {
- mErrorShown = true;
- }
+ public boolean isOverlayShown() {
+ return mChannelOverlay.isShown();
+ }
- public boolean isErrorShown() {
- return mErrorShown;
+ public void clearChatNotifications() throws RemoteException {
+ if (mNotification != null) {
+ mNotification.clearMessages();
+ mNotification.show();
}
+ }
- public void cancelReconnect() throws RemoteException {
- if (mReconnectNotification != null) {
- mReconnectNotification.hide();
- mReconnectNotification = null;
- }
+ public void markErrorShown() {
+ mErrorShown = true;
+ }
- super.cancelReconnect();
- }
+ public boolean isErrorShown() {
+ return mErrorShown;
+ }
- /**
- * Called when a user presses a talk key down (i.e. when they want to talk).
- * Accounts for talk logic if toggle PTT is on.
- */
- public void onTalkKeyDown() throws RemoteException {
- if(isConnected()
- && Settings.ARRAY_INPUT_METHOD_PTT.equals(mSettings.getInputMethod())) {
- if (!mSettings.isPushToTalkToggle() && !isTalking()) {
- setTalkingState(true); // Start talking
- }
+ /**
+ * Called when a user presses a talk key down (i.e. when they want to talk).
+ * Accounts for talk logic if toggle PTT is on.
+ */
+ public void onTalkKeyDown() {
+ if(isConnectionEstablished()
+ && Settings.ARRAY_INPUT_METHOD_PTT.equals(mSettings.getInputMethod())) {
+ if (!mSettings.isPushToTalkToggle() && !isTalking()) {
+ setTalkingState(true); // Start talking
}
}
+ }
- /**
- * Called when a user releases a talk key (i.e. when they do not want to talk).
- * Accounts for talk logic if toggle PTT is on.
- */
- public void onTalkKeyUp() throws RemoteException {
- if(isConnected()
- && Settings.ARRAY_INPUT_METHOD_PTT.equals(mSettings.getInputMethod())) {
- if (mSettings.isPushToTalkToggle()) {
- setTalkingState(!isTalking()); // Toggle talk state
- } else if (isTalking()) {
- setTalkingState(false); // Stop talking
- }
+ /**
+ * Called when a user releases a talk key (i.e. when they do not want to talk).
+ * Accounts for talk logic if toggle PTT is on.
+ */
+ public void onTalkKeyUp() {
+ if(isConnectionEstablished()
+ && Settings.ARRAY_INPUT_METHOD_PTT.equals(mSettings.getInputMethod())) {
+ if (mSettings.isPushToTalkToggle()) {
+ setTalkingState(!isTalking()); // Toggle talk state
+ } else if (isTalking()) {
+ setTalkingState(false); // Stop talking
}
}
+ }
- public List<IChatMessage> getMessageLog() {
- return Collections.unmodifiableList(mMessageLog);
- }
+ public List<IChatMessage> getMessageLog() {
+ return Collections.unmodifiableList(mMessageLog);
+ }
- public void clearMessageLog() {
- mMessageLog.clear();
- }
+ public void clearMessageLog() {
+ mMessageLog.clear();
}
}
diff --git a/app/src/main/java/com/morlunk/mumbleclient/service/ipc/TalkBroadcastReceiver.java b/app/src/main/java/com/morlunk/mumbleclient/service/ipc/TalkBroadcastReceiver.java
index 57772cd..9166fbf 100644
--- a/app/src/main/java/com/morlunk/mumbleclient/service/ipc/TalkBroadcastReceiver.java
+++ b/app/src/main/java/com/morlunk/mumbleclient/service/ipc/TalkBroadcastReceiver.java
@@ -20,7 +20,6 @@ package com.morlunk.mumbleclient.service.ipc;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
-import android.os.RemoteException;
import com.morlunk.jumble.IJumbleService;
@@ -42,22 +41,18 @@ public class TalkBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
- try {
- if (BROADCAST_TALK.equals(intent.getAction())) {
- String status = intent.getStringExtra(EXTRA_TALK_STATUS);
- if (status == null) status = TALK_STATUS_TOGGLE;
- if (TALK_STATUS_ON.equals(status)) {
- mService.setTalkingState(true);
- } else if (TALK_STATUS_OFF.equals(status)) {
- mService.setTalkingState(false);
- } else if (TALK_STATUS_TOGGLE.equals(status)) {
- mService.setTalkingState(!mService.isTalking());
- }
- } else {
- throw new UnsupportedOperationException();
+ if (BROADCAST_TALK.equals(intent.getAction())) {
+ String status = intent.getStringExtra(EXTRA_TALK_STATUS);
+ if (status == null) status = TALK_STATUS_TOGGLE;
+ if (TALK_STATUS_ON.equals(status)) {
+ mService.setTalkingState(true);
+ } else if (TALK_STATUS_OFF.equals(status)) {
+ mService.setTalkingState(false);
+ } else if (TALK_STATUS_TOGGLE.equals(status)) {
+ mService.setTalkingState(!mService.isTalking());
}
- } catch (RemoteException e) {
- e.printStackTrace();
+ } else {
+ throw new UnsupportedOperationException();
}
}
}
diff --git a/app/src/main/java/com/morlunk/mumbleclient/util/JumbleServiceFragment.java b/app/src/main/java/com/morlunk/mumbleclient/util/JumbleServiceFragment.java
index b1025eb..cde3c7c 100644
--- a/app/src/main/java/com/morlunk/mumbleclient/util/JumbleServiceFragment.java
+++ b/app/src/main/java/com/morlunk/mumbleclient/util/JumbleServiceFragment.java
@@ -24,8 +24,8 @@ import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.View;
-import com.morlunk.jumble.IJumbleObserver;
import com.morlunk.jumble.IJumbleService;
+import com.morlunk.jumble.util.IJumbleObserver;
import com.morlunk.mumbleclient.service.PlumbleService;
/**
@@ -78,24 +78,16 @@ public abstract class JumbleServiceFragment extends Fragment {
private void onServiceAttached(IJumbleService service) {
mBound = true;
- try {
- if(getServiceObserver() != null)
- service.registerObserver(getServiceObserver());
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ if(getServiceObserver() != null)
+ service.registerObserver(getServiceObserver());
onServiceBound(service);
}
private void onServiceDetached(IJumbleService service) {
mBound = false;
- try {
- if(getServiceObserver() != null)
- service.unregisterObserver(getServiceObserver());
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ if(getServiceObserver() != null)
+ service.unregisterObserver(getServiceObserver());
onServiceUnbound();
}
@@ -107,7 +99,7 @@ public abstract class JumbleServiceFragment extends Fragment {
onServiceDetached(mServiceProvider.getService());
}
- public PlumbleService.PlumbleBinder getService() {
+ public PlumbleService getService() {
return mServiceProvider.getService();
}
}
diff --git a/app/src/main/java/com/morlunk/mumbleclient/util/JumbleServiceProvider.java b/app/src/main/java/com/morlunk/mumbleclient/util/JumbleServiceProvider.java
index 8e98054..797c68a 100644
--- a/app/src/main/java/com/morlunk/mumbleclient/util/JumbleServiceProvider.java
+++ b/app/src/main/java/com/morlunk/mumbleclient/util/JumbleServiceProvider.java
@@ -24,7 +24,7 @@ import com.morlunk.mumbleclient.service.PlumbleService;
* Created by andrew on 03/08/13.
*/
public interface JumbleServiceProvider {
- public PlumbleService.PlumbleBinder getService();
- public void addServiceFragment(JumbleServiceFragment fragment);
- public void removeServiceFragment(JumbleServiceFragment fragment);
+ PlumbleService getService();
+ void addServiceFragment(JumbleServiceFragment fragment);
+ void removeServiceFragment(JumbleServiceFragment fragment);
}