Skip to content

Commit 281b103

Browse files
DropBox looking good!
Added sync & thumbnail functions
1 parent 86b99a6 commit 281b103

17 files changed

Lines changed: 533 additions & 154 deletions

File tree

AndroidManifest.xml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,13 @@
5959
android:icon="@drawable/icon_flat"
6060
android:label="@string/app_name"
6161
android:largeHeap="true"
62-
android:uiOptions="splitActionBarWhenNarrow" >
62+
android:theme="@style/AppTheme.Dark" >
6363
<activity
6464
android:name="org.brandroid.openmanager.activities.OpenExplorer"
6565
android:configChanges="screenSize|keyboard|keyboardHidden"
6666
android:label="@string/app_name"
6767
android:launchMode="singleTop"
68+
android:uiOptions="splitActionBarWhenNarrow"
6869
android:theme="@style/AppTheme.Dark" >
6970
<intent-filter>
7071
<action android:name="android.intent.action.MAIN" />
@@ -124,6 +125,7 @@
124125
android:launchMode="singleTop" />
125126
<activity
126127
android:name="org.brandroid.openmanager.activities.ServerSetupActivity"
128+
android:uiOptions="none"
127129
android:configChanges="screenSize|keyboard|keyboardHidden" >
128130
</activity>
129131
<activity
@@ -136,8 +138,8 @@
136138
<category android:name="android.intent.category.BROWSABLE" />
137139
<category android:name="android.intent.category.DEFAULT" />
138140

139-
<data android:scheme="db-vjbm22k8blhj61g" />
140-
</intent-filter>
141+
<data android:scheme="db-vajaedmhzkkp3sw" />
142+
</intent-filter>
141143
</activity>
142144
<activity
143145
android:name="org.brandroid.openmanager.activities.FolderPickerActivity"

lint.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
<ignore path="res\layout\title_bar.xml" />
1515
</issue>
1616
<issue id="MissingTranslation" severity="ignore" />
17+
<issue id="StringFormatInvalid">
18+
<ignore path="res/values-de/strings.xml" />
19+
</issue>
1720
<issue id="UnusedResources" severity="warning" />
1821
<issue id="UseCompoundDrawables">
1922
<ignore path="res\layout\grid_content_layout.xml" />

res/drawable-hdpi/icon_dropbox.png

5.84 KB
Loading
7.76 KB
Loading

res/layout/search_grid.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
GNU General Public License for more details.
1515
1616
You should have received a copy of the GNU General Public License
17-
along with this program. If not, see <http://www.gnu.org/licenses/>.
17+
along with this program. If not, see <http://www.gnu.org/licenses/>.
1818
-->
1919

2020
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

res/values-de/strings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@
142142
<string name="s_menu_delete_all">Alle löschen</string>
143143
<string name="s_menu_move_all">Hierhin verschieben</string>
144144
<string name="s_menu_copy_all">Hierher kopieren</string>
145-
<string name="s_confirm_delete" formatted="false">Wollen Sie %s wirklich löschen?</string>
145+
<string name="s_confirm_delete">Wollen Sie %s wirklich löschen?</string>
146146
<string name="s_error_same_destination">Das Zielverzeichnis ist gleich dem Quellverzeichnis.</string>
147147
<string name="s_sample_notification">Kopieren -> SD-Karte: \\n3 Dateien</string>
148148
<string name="s_pref_fullscreen">Vollbild</string>

src/com/dropbox/client2/DropboxAPI.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ public static class Account implements Serializable {
149149
* "uid": "174"}
150150
* </pre>
151151
*/
152-
protected Account(Map<String, Object> map) {
152+
public Account(Map<String, Object> map) {
153153
country = (String) map.get("country");
154154
displayName = (String) map.get("display_name");
155155
uid = getFromMapAsLong(map, "uid");

src/com/dropbox/client2/android/AuthActivity.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,12 @@
44
import java.security.MessageDigest;
55
import java.security.NoSuchAlgorithmException;
66

7+
import org.brandroid.utils.Logger;
8+
79
import android.app.Activity;
10+
import android.content.Context;
811
import android.content.Intent;
12+
import android.content.SharedPreferences;
913
import android.content.pm.PackageInfo;
1014
import android.content.pm.PackageManager;
1115
import android.content.pm.PackageManager.NameNotFoundException;
@@ -110,6 +114,9 @@ protected void onSaveInstanceState(Bundle outState) {
110114
@Override
111115
protected void onResume() {
112116
super.onResume();
117+
118+
Logger.LogDebug("DropBox Auth: Resume!");
119+
onNewIntent(getIntent());
113120

114121
if (consumerKey == null || consumerSecret == null) {
115122
finish();
@@ -148,6 +155,8 @@ protected void onResume() {
148155
@Override
149156
protected void onNewIntent(Intent intent) {
150157
String token = null, secret = null, uid = null;
158+
159+
Logger.LogDebug("DropBox Auth: onNewIntent (" + intent.getExtras().toString() + ")!");
151160

152161
if (intent.hasExtra(EXTRA_ACCESS_TOKEN)) {
153162
// Dropbox app auth.
@@ -168,6 +177,12 @@ protected void onNewIntent(Intent intent) {
168177
}
169178
}
170179
}
180+
181+
SharedPreferences sp = (SharedPreferences)getSharedPreferences("dropbox", Context.MODE_PRIVATE);
182+
sp.edit().putString("token", token).putString("secret", secret).putString("uid", uid).apply();
183+
184+
setIntent(intent);
185+
setResult(1, intent);
171186

172187
// Pass along everything to the calling app.
173188
lastResult = new Intent();

src/org/brandroid/openmanager/activities/ServerSetupActivity.java

Lines changed: 95 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@
3434
import com.box.androidlib.GetTicketListener;
3535
import com.box.androidlib.LogoutListener;
3636
import com.box.androidlib.User;
37+
import com.dropbox.client2.DropboxAPI;
38+
import com.dropbox.client2.DropboxAPI.Account;
3739
import com.dropbox.client2.android.AndroidAuthSession;
3840
import com.dropbox.client2.android.AuthActivity;
3941
import com.dropbox.client2.session.AppKeyPair;
@@ -43,6 +45,7 @@
4345
import android.content.ActivityNotFoundException;
4446
import android.content.Context;
4547
import android.content.Intent;
48+
import android.content.SharedPreferences;
4649
import android.content.pm.PackageManager;
4750
import android.net.Uri;
4851
import android.os.Bundle;
@@ -67,7 +70,7 @@
6770
import android.widget.Toast;
6871

6972
public 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
{

src/org/brandroid/openmanager/adapters/ContentAdapter.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,19 @@ public View getView(int position, View view, ViewGroup parent) {
359359
getContext(), mWidth > 72));
360360
else if (!mShowThumbnails || !file.hasThumbnail()) {
361361
mIcon.setImageResource(ThumbnailCreator.getDefaultResourceId(file, mWidth, mHeight));
362+
} else if (file instanceof OpenPath.ThumbnailHandler) {
363+
((OpenPath.ThumbnailHandler)file).getThumbnail(mWidth, new OpenPath.ThumbnailReturnCallback() {
364+
public void onThumbReturned(Bitmap bmp) {
365+
if(!OpenExplorer.BEFORE_HONEYCOMB)
366+
{
367+
BitmapDrawable d = new BitmapDrawable(getResources(), bmp);
368+
d.setGravity(Gravity.CENTER);
369+
ImageUtils.fadeToDrawable(mIcon, d);
370+
} else
371+
mIcon.setImageBitmap(bmp);
372+
mIcon.setTag(file);
373+
}
374+
});
362375
} else { // if(!ThumbnailCreator.getImagePath(mIcon).equals(file.getPath()))
363376
// {
364377
// Logger.LogDebug("Bitmapping " + file.getPath());

0 commit comments

Comments
 (0)