+\r
+ \r
+ /**\r
+ * {@inheritDoc}\r
+ */\r
+ @Override\r
+ public FileDownloaderBinder getFileDownloaderBinder() {\r
+ return mDownloaderBinder;\r
+ }\r
+\r
+ \r
+ /**\r
+ * {@inheritDoc}\r
+ */\r
+ @Override\r
+ public FileUploaderBinder getFileUploaderBinder() {\r
+ return mUploaderBinder;\r
+ }\r
+ \r
+ \r
+ /** Defines callbacks for service binding, passed to bindService() */\r
+ private class ListServiceConnection implements ServiceConnection {\r
+\r
+ @Override\r
+ public void onServiceConnected(ComponentName component, IBinder service) {\r
+ if (component.equals(new ComponentName(FileDisplayActivity.this, FileDownloader.class))) {\r
+ Log.d(TAG, "Download service connected");\r
+ mDownloaderBinder = (FileDownloaderBinder) service;\r
+ } else if (component.equals(new ComponentName(FileDisplayActivity.this, FileUploader.class))) {\r
+ Log.d(TAG, "Upload service connected");\r
+ mUploaderBinder = (FileUploaderBinder) service;\r
+ } else {\r
+ return;\r
+ }\r
+ // a new chance to get the mDownloadBinder through getFileDownloadBinder() - THIS IS A MESS\r
+ if (mFileList != null)\r
+ mFileList.listDirectory();\r
+ if (mDualPane) {\r
+ FileDetailFragment fragment = (FileDetailFragment) getSupportFragmentManager().findFragmentByTag(FileDetailFragment.FTAG);\r
+ if (fragment != null)\r
+ fragment.updateFileDetails();\r
+ }\r
+ }\r
+\r
+ @Override\r
+ public void onServiceDisconnected(ComponentName component) {\r
+ if (component.equals(new ComponentName(FileDisplayActivity.this, FileDownloader.class))) {\r
+ Log.d(TAG, "Download service disconnected");\r
+ mDownloaderBinder = null;\r
+ } else if (component.equals(new ComponentName(FileDisplayActivity.this, FileUploader.class))) {\r
+ Log.d(TAG, "Upload service disconnected");\r
+ mUploaderBinder = null;\r
+ }\r
+ }\r
+ }; \r
+\r
+ \r