3434import com .box .androidlib .GetTicketListener ;
3535import com .box .androidlib .LogoutListener ;
3636import com .box .androidlib .User ;
37+ import com .dropbox .client2 .DropboxAPI ;
38+ import com .dropbox .client2 .DropboxAPI .Account ;
3739import com .dropbox .client2 .android .AndroidAuthSession ;
3840import com .dropbox .client2 .android .AuthActivity ;
3941import com .dropbox .client2 .session .AppKeyPair ;
4345import android .content .ActivityNotFoundException ;
4446import android .content .Context ;
4547import android .content .Intent ;
48+ import android .content .SharedPreferences ;
4649import android .content .pm .PackageManager ;
4750import android .net .Uri ;
4851import android .os .Bundle ;
6770import android .widget .Toast ;
6871
6972public class ServerSetupActivity
70- extends Activity
73+ extends SherlockActivity
7174 implements OnCheckedChangeListener , OnClickListener , OnItemSelectedListener ,
7275 OnMenuItemClickListener , LogoutListener {
7376
@@ -92,9 +95,9 @@ public class ServerSetupActivity
9295 private OpenServer server ;
9396 private View mBaseView ;
9497 private Bundle mArgs ;
95- private int iServersIndex = -1 ;
9698 private boolean mAuthTokenFound = false ;
9799 private WebView mLoginWebView ;
100+ private static boolean DEBUG = OpenExplorer .IS_DEBUG_BUILD && true ;
98101
99102 public int getThemeId () {
100103 String themeName = new Preferences (this )
@@ -123,13 +126,15 @@ protected void onCreate(Bundle savedInstanceState) {
123126 if (mArgs == null )
124127 mArgs = new Bundle ();
125128
126- iServersIndex = mArgs .getInt ("server_index" , -1 );
129+ int iServersIndex = mArgs .getInt ("server_index" , -1 );
127130 int serverType = mArgs .getInt ("server_type" , -1 );
128131
129132 final Context context = this ;
130133 servers = LoadDefaultServers (context );
131134 server = iServersIndex > -1 ? servers .get (iServersIndex )
132135 : new OpenServer ().setName ("New Server" );
136+
137+ server .setServerIndex (iServersIndex );
133138
134139 String t2 = server .getType ().toLowerCase (Locale .US );
135140 if (serverType > -1 ) {
@@ -226,6 +231,12 @@ public void onFocusChange(View v, boolean hasFocus) {
226231
227232 DialogHandler .showServerWarning (context );
228233 }
234+
235+ @ Override
236+ protected void onResume () {
237+ super .onResume ();
238+ handleIntent (getIntent ());
239+ }
229240
230241 @ Override
231242 protected void onActivityResult (int requestCode , int resultCode , Intent data ) {
@@ -242,7 +253,9 @@ protected void onNewIntent(Intent intent) {
242253 }
243254
244255 private void handleIntent (Intent data ) {
245- if (data .getExtras () != null && data .getExtras ().containsKey ("AUTH_TOKEN" ))
256+ if (DEBUG )
257+ Logger .LogDebug ("ServerSetupActivity.handleIntent(" + data .getExtras () + ")" );
258+ if (data != null && data .getExtras () != null && data .getExtras ().containsKey ("AUTH_TOKEN" ))
246259 {
247260 String token = data .getStringExtra ("AUTH_TOKEN" );
248261 server .setPassword (token );
@@ -258,20 +271,59 @@ private void handleIntent(Intent data) {
258271 ViewUtils .setViewsEnabled (mBaseView , false , R .id .server_authenticate );
259272 ViewUtils .setViewsEnabled (mBaseView , true , R .id .server_logout );
260273 } else {
261- String [] vals = new String [3 ];
262- if (OpenDropBox .handleIntent (data , vals ))
274+ if (OpenDropBox .handleIntent (data , server ))
275+ {
276+ ViewUtils .setText (mBaseView , server .getPassword (), R .id .text_password );
277+ ViewUtils .setViewsVisible (mBaseView , false , R .id .server_webview );
278+ ViewUtils .setViewsEnabled (mBaseView , false , R .id .server_authenticate );
279+ ViewUtils .setViewsEnabled (mBaseView , true , R .id .server_logout );
280+ }
281+ }
282+ SharedPreferences sp = getSharedPreferences ("dropbox" , Context .MODE_PRIVATE );
283+ if (sp != null && sp .contains ("token" ))
284+ {
285+ String pass = sp .getString ("token" , "" ) + "," + sp .getString ("secret" , "" );
286+ String uid = sp .getString ("uid" , "dropbox" );
287+ boolean found = false ;
288+ for (OpenServer s : servers )
289+ if (s .getPassword ().equals (pass ) || s .getUser ().equals (uid ))
290+ found = true ;
291+ if (!found )
263292 {
264293 server .setType ("db" );
265- server .setUser (vals [2 ]); // uid
266- AppKeyPair userKP = new AppKeyPair (
267- vals [0 ], // token
268- vals [1 ]); // secret
269- server .setPassword (userKP .toString ());
270- ViewUtils .setText (mBaseView , userKP .toString (), R .id .text_password );
294+ server .setName ("DropBox" );
295+ server .setPassword (pass );
296+ server .setUser (uid );
297+ ViewUtils .setText (mBaseView , server .getPassword (), R .id .text_password );
271298 ViewUtils .setViewsVisible (mBaseView , false , R .id .server_webview );
272299 ViewUtils .setViewsEnabled (mBaseView , false , R .id .server_authenticate );
273300 ViewUtils .setViewsEnabled (mBaseView , true , R .id .server_logout );
301+ AndroidAuthSession sess = OpenDropBox .buildSession (server );
302+ sess .finishAuthentication ();
303+ getDropboxAccountInfo ();
274304 }
305+ sp .edit ().clear ().commit ();
306+ }
307+ }
308+
309+ private void getDropboxAccountInfo ()
310+ {
311+ final OpenDropBox db = (OpenDropBox )(server .getOpenPath ());
312+ if (db .getAccountInfo () != null )
313+ {
314+ db .getAccountInfo (new OpenDropBox .GetAccountInfoCallback () {
315+ public void onException (Exception e ) {
316+ // TODO Auto-generated method stub
317+
318+ }
319+ public void onGetAccountInfo (Account account ) {
320+ server .setName (account .displayName );
321+ db .setName (account .displayName );
322+ ViewUtils .setText (mBaseView , account .displayName , R .id .text_name );
323+ server .setSetting ("quota" , account .quota );
324+ SaveToDefaultServers (servers , ServerSetupActivity .this );
325+ }
326+ });
275327 }
276328 }
277329
@@ -280,6 +332,8 @@ private int getServerTypeDrawable(int serverType) {
280332 {
281333 case 3 :
282334 return R .drawable .icon_box ;
335+ case 4 :
336+ return R .drawable .icon_dropbox ;
283337 default :
284338 return R .drawable .lg_ftp ;
285339 }
@@ -357,8 +411,8 @@ else if (v instanceof Spinner)
357411 server .setSetting (key , val );
358412 }
359413 }
360- if (iServersIndex > -1 )
361- servers .set (iServersIndex , server );
414+ if (server . getServerIndex () > -1 )
415+ servers .set (server . getServerIndex () , server );
362416 else
363417 servers .add (server );
364418 SaveToDefaultServers (servers , this );
@@ -370,9 +424,9 @@ else if (v instanceof Spinner)
370424 finish ();
371425 return true ;
372426 case R .string .s_remove :
373- if (iServersIndex > -1 )
427+ if (server . getServerIndex () > -1 )
374428 {
375- servers .remove (iServersIndex );
429+ servers .remove (server . getServerIndex () );
376430 SaveToDefaultServers (servers , this );
377431 Toast .makeText (this ,
378432 server .getName () + " " + getString (R .string .s_msg_deleted ),
@@ -543,31 +597,31 @@ private void onBoxAuthTokenRetreived(final User authToken) {
543597 onActivityResult (OpenExplorer .REQ_AUTHENTICATE_BOX , RESULT_OK , intent );
544598 }
545599
546- // @Override
547- // public boolean onCreateOptionsMenu(Menu menu) {
548- // getSupportMenuInflater().inflate(R.menu.dialog_buttons, menu);
549- // return true;
550- // }
551- //
552- // @Override
553- // public boolean onOptionsItemSelected(MenuItem item) {
554- // if (onClick(item.getItemId()))
555- // return true;
556- // return super.onOptionsItemSelected(item);
557- // }
558-
559600 @ Override
560- public boolean onCreateOptionsMenu (android . view . Menu menu ) {
561- getMenuInflater ().inflate (R .menu .dialog_buttons , menu );
562- return super . onCreateOptionsMenu ( menu ) ;
601+ public boolean onCreateOptionsMenu (Menu menu ) {
602+ getSupportMenuInflater ().inflate (R .menu .dialog_buttons , menu );
603+ return true ;
563604 }
564-
605+
565606 @ Override
566- public boolean onOptionsItemSelected (android . view . MenuItem item ) {
567- if (onClick (item .getItemId ()))
607+ public boolean onOptionsItemSelected (MenuItem item ) {
608+ if (onClick (item .getItemId ()))
568609 return true ;
569610 return super .onOptionsItemSelected (item );
570611 }
612+
613+ // @Override
614+ // public boolean onCreateOptionsMenu(android.view.Menu menu) {
615+ // getMenuInflater().inflate(R.menu.dialog_buttons, menu);
616+ // return super.onCreateOptionsMenu(menu);
617+ // }
618+ //
619+ // @Override
620+ // public boolean onOptionsItemSelected(android.view.MenuItem item) {
621+ // if(onClick(item.getItemId()))
622+ // return true;
623+ // return super.onOptionsItemSelected(item);
624+ // }
571625
572626 @ Override
573627 public void onItemSelected (AdapterView <?> arg0 , View arg1 , int position , long id ) {
@@ -580,7 +634,7 @@ public void onItemSelected(AdapterView<?> arg0, View arg1, int position, long id
580634 if (position < 3 )
581635 {
582636 ViewUtils .setViewsVisible (v , false , R .id .server_auth_buttons );
583- ViewUtils .setViewsVisible (v , true , R .id .server_texts , R .id .check_port , R .id .text_port );
637+ ViewUtils .setViewsVisible (v , true , R .id .server_texts , R .id .check_port , R .id .text_port , R . id . label_port );
584638 }
585639 if (OnlyOnSMB .length > 0 )
586640 ViewUtils .setViewsVisible (v , position == 2 , OnlyOnSMB );
@@ -596,8 +650,12 @@ else if (position >= 3)
596650 if (position == 3 )
597651 server .setType ("box" );
598652 else if (position == 4 )
653+ {
599654 server .setType ("db" );
600- ViewUtils .setViewsVisible (v , false , R .id .server_texts , R .id .check_port , R .id .text_port );
655+ if (!server .get ("account" , "" ).equals ("" ))
656+ getDropboxAccountInfo ();
657+ }
658+ ViewUtils .setViewsVisible (v , false , R .id .server_texts , R .id .check_port , R .id .text_port , R .id .label_port );
601659 ViewUtils .setViewsVisible (v , true , R .id .server_auth_buttons );
602660 if (!server .getPassword ().equals ("" ))
603661 {
0 commit comments