From db0f0001f905e4140934225ea55f9b24a3041804 Mon Sep 17 00:00:00 2001 From: Lennart Rosam Date: Sat, 4 Feb 2012 16:23:41 +0100 Subject: [PATCH] More refactoring --- res/layout-port/{main.xml => files.xml} | 50 +- res/layout/file_activity_details.xml | 24 +- res/layout/files.xml | 49 ++ res/layout/landing_page.xml | 26 - res/layout/main.xml | 71 +- .../owncloud/ui/FileDetailActivity.java | 76 +- .../owncloud/ui/FileDisplayActivity.java | 708 +++++++++--------- .../alefzero/owncloud/ui/LandingActivity.java | 2 +- .../{ => ui/fragment}/FileDetail.java | 115 +-- .../owncloud/ui/fragment/FileList.java | 211 +++--- 10 files changed, 667 insertions(+), 665 deletions(-) rename res/layout-port/{main.xml => files.xml} (95%) create mode 100644 res/layout/files.xml delete mode 100644 res/layout/landing_page.xml rename src/eu/alefzero/owncloud/{ => ui/fragment}/FileDetail.java (88%) diff --git a/res/layout-port/main.xml b/res/layout-port/files.xml similarity index 95% rename from res/layout-port/main.xml rename to res/layout-port/files.xml index 881645e837..fbb30c3aa5 100644 --- a/res/layout-port/main.xml +++ b/res/layout-port/files.xml @@ -1,26 +1,26 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/layout/file_activity_details.xml b/res/layout/file_activity_details.xml index da5d312aca..3abab9d50a 100644 --- a/res/layout/file_activity_details.xml +++ b/res/layout/file_activity_details.xml @@ -1,13 +1,13 @@ - - - - - + + + + + \ No newline at end of file diff --git a/res/layout/files.xml b/res/layout/files.xml new file mode 100644 index 0000000000..012fb6eef0 --- /dev/null +++ b/res/layout/files.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/layout/landing_page.xml b/res/layout/landing_page.xml deleted file mode 100644 index ef4705b6c7..0000000000 --- a/res/layout/landing_page.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/res/layout/main.xml b/res/layout/main.xml index cddcacb1a0..ef4705b6c7 100644 --- a/res/layout/main.xml +++ b/res/layout/main.xml @@ -1,49 +1,26 @@ - - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + \ No newline at end of file diff --git a/src/eu/alefzero/owncloud/ui/FileDetailActivity.java b/src/eu/alefzero/owncloud/ui/FileDetailActivity.java index 96a457b9b8..989a601b4f 100644 --- a/src/eu/alefzero/owncloud/ui/FileDetailActivity.java +++ b/src/eu/alefzero/owncloud/ui/FileDetailActivity.java @@ -1,38 +1,38 @@ -package eu.alefzero.owncloud.ui; - - -import eu.alefzero.owncloud.FileDetail; -import eu.alefzero.owncloud.R; -import eu.alefzero.owncloud.R.id; -import eu.alefzero.owncloud.R.layout; -import eu.alefzero.owncloud.ui.fragment.ActionBar; -import android.app.Activity; -import android.content.Context; -import android.content.Intent; -import android.content.res.Configuration; -import android.os.Bundle; -import android.support.v4.app.FragmentActivity; -import android.support.v4.app.FragmentTransaction; -import android.util.AttributeSet; -import android.util.Log; -import android.view.View; -import android.view.Window; - -public class FileDetailActivity extends FragmentActivity { - private FileDetail mFileDetail; - -@Override -protected void onCreate(Bundle savedInstanceState) { - // TODO Auto-generated method stub - super.onCreate(savedInstanceState); - getWindow().requestFeature(Window.FEATURE_NO_TITLE); - setContentView(R.layout.file_activity_details); - - mFileDetail = new FileDetail(); - FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); - ft.add(R.id.fileDetail, mFileDetail); - ft.commit(); - -} - -} +package eu.alefzero.owncloud.ui; + + +import eu.alefzero.owncloud.R; +import eu.alefzero.owncloud.R.id; +import eu.alefzero.owncloud.R.layout; +import eu.alefzero.owncloud.ui.fragment.ActionBar; +import eu.alefzero.owncloud.ui.fragment.FileDetail; +import android.app.Activity; +import android.content.Context; +import android.content.Intent; +import android.content.res.Configuration; +import android.os.Bundle; +import android.support.v4.app.FragmentActivity; +import android.support.v4.app.FragmentTransaction; +import android.util.AttributeSet; +import android.util.Log; +import android.view.View; +import android.view.Window; + +public class FileDetailActivity extends FragmentActivity { + private FileDetail mFileDetail; + +@Override +protected void onCreate(Bundle savedInstanceState) { + // TODO Auto-generated method stub + super.onCreate(savedInstanceState); + getWindow().requestFeature(Window.FEATURE_NO_TITLE); + setContentView(R.layout.file_activity_details); + + mFileDetail = new FileDetail(); + FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); + ft.add(R.id.fileDetail, mFileDetail); + ft.commit(); + +} + +} diff --git a/src/eu/alefzero/owncloud/ui/FileDisplayActivity.java b/src/eu/alefzero/owncloud/ui/FileDisplayActivity.java index 07b8425f79..eb882a0edf 100644 --- a/src/eu/alefzero/owncloud/ui/FileDisplayActivity.java +++ b/src/eu/alefzero/owncloud/ui/FileDisplayActivity.java @@ -1,355 +1,355 @@ -/* ownCloud Android client application - * Copyright (C) 2011 Bartek Przybylski - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -package eu.alefzero.owncloud.ui; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.util.LinkedList; -import java.util.Stack; - -import android.accounts.Account; -import android.accounts.AccountManager; -import android.app.AlertDialog; -import android.app.Dialog; -import android.app.ListActivity; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.DialogInterface.OnCancelListener; -import android.content.res.Configuration; -import android.database.Cursor; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.Matrix; -import android.net.Uri; -import android.os.Bundle; -import android.os.Environment; -import android.support.v4.app.FragmentActivity; -import android.support.v4.app.FragmentTransaction; -import android.text.TextUtils; -import android.util.Log; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.view.View; -import android.view.Window; -import android.widget.ImageView; -import android.widget.ListView; -import android.widget.TextView; -import eu.alefzero.owncloud.DbHandler; -import eu.alefzero.owncloud.FileDetail; -import eu.alefzero.owncloud.R; -import eu.alefzero.owncloud.R.id; -import eu.alefzero.owncloud.R.layout; -import eu.alefzero.owncloud.R.menu; -import eu.alefzero.owncloud.R.string; -import eu.alefzero.owncloud.authenticator.AccountAuthenticator; -import eu.alefzero.owncloud.db.ProviderMeta.ProviderTableMeta; -import eu.alefzero.owncloud.ui.fragment.FileList; -import eu.alefzero.owncloud.ui.fragment.ActionBar; -public class FileDisplayActivity extends FragmentActivity { - private DbHandler mDBHandler; - private Stack mParents; - private LinkedList mPath; - private Account mAccount; - private Cursor mCursor; - private boolean mIsDisplayingFile; - - private static final int DIALOG_CHOOSE_ACCOUNT = 0; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - getWindow().requestFeature(Window.FEATURE_NO_TITLE); - setContentView(R.layout.main); - - FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); - //ft.add(R.id.actionBar, new ActionBar()); - ft.add(R.id.fileList, new FileList()); - if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { - ft.add(R.id.fileDetail, new FileDetail()); - } - ft.commit(); - - /*getSupportFragmentManager().beginTransaction().add(arg0, arg1); - FileList fl = new FileList(); - ft.add(R.id.fileList, fl); - ft.commit(); - /* - - - if (savedInstanceState != null) { - mParents = (Stack)savedInstanceState.getSerializable("parentsStack"); - mIsDisplayingFile = savedInstanceState.getBoolean("isDisplayingFile"); - mPath = (LinkedList)savedInstanceState.getSerializable("path"); - } else { - mParents = new Stack(); - mPath = new LinkedList(); - mIsDisplayingFile = false; - } - - mDBHandler = new DbHandler(getBaseContext()); - requestWindowFeature(Window.FEATURE_NO_TITLE); - setContentView(R.layout.main); - - AccountManager accMan = AccountManager.get(this); - Account[] accounts = accMan.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE); - - if (accounts.length == 0) { - // using string value since in API7 this constatn is not defined - // in API7 < this constatant is defined in Settings.ADD_ACCOUNT_SETTINGS - // and Settings.EXTRA_AUTHORITIES - Intent intent = new Intent("android.settings.ADD_ACCOUNT_SETTINGS"); - intent.putExtra("authorities", new String[] {AccountAuthenticator.AUTH_TOKEN_TYPE}); - startActivity(intent); - } else if (accounts.length > 1) { - showDialog(DIALOG_CHOOSE_ACCOUNT); - } else { - mAccount = accounts[0]; - populateFileList(); - }*/ - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.settingsItem : - Intent i = new Intent(this, Preferences.class); - startActivity(i); - break; - } - return true; - } - - @Override - protected Dialog onCreateDialog(int id) { - switch (id) { - case DIALOG_CHOOSE_ACCOUNT: - return createChooseAccountDialog(); - default: - throw new IllegalArgumentException("Unknown dialog id: " + id); - } - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - MenuInflater inflater = getMenuInflater(); - inflater.inflate(R.menu.menu, menu); - return true; - } - - private Dialog createChooseAccountDialog() { - final AccountManager accMan = AccountManager.get(this); - CharSequence[] items = new CharSequence[accMan.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE).length]; - int i = 0; - for (Account a : accMan.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE)) { - items[i++] = a.name; - } - - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setTitle(R.string.common_choose_account); - builder.setCancelable(true); - builder.setItems(items, new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int item) { - mAccount = accMan.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE)[item]; - dialog.dismiss(); - populateFileList(); - } - }); - builder.setOnCancelListener(new OnCancelListener() { - public void onCancel(DialogInterface dialog) { - FileDisplayActivity.this.finish(); - } - }); - AlertDialog alert = builder.create(); - return alert; - } - - //@Override - //public void onBackPressed() { - /*PathLayout pl = (PathLayout) findViewById(R.id.pathLayout1); - if (mIsDisplayingFile) { - mIsDisplayingFile = false; - setContentView(R.layout.main); - pl = (PathLayout) findViewById(R.id.pathLayout1); - Uri uri; - if (mParents.empty()) { - uri = ProviderTableMeta.CONTENT_URI; - } else { - uri = Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_DIR, mParents.peek()); - } - mCursor = managedQuery(uri, - null, - ProviderTableMeta.FILE_ACCOUNT_OWNER+"=?", - new String[]{mAccount.name}, null); - - if (mCursor.moveToFirst()) { - String s = mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_PATH)); - for (String str : s.split("/")) { - if (!TextUtils.isEmpty(str)) - pl.push(DisplayUtils.HtmlDecode(str)); - } - } - getListView().setAdapter(new FileListListAdapter(mCursor, this)); - getListView().invalidate(); - return; - } - if (mParents.size()==0) { - super.onBackPressed(); - return; - } else if (mParents.size() == 1) { - mParents.pop(); - mPath.removeLast(); - pl.pop(); - mCursor = managedQuery(ProviderTableMeta.CONTENT_URI, - null, - ProviderTableMeta.FILE_ACCOUNT_OWNER+"=?", - new String[]{mAccount.name}, - null); - } else { - mParents.pop(); - mPath.removeLast(); - pl.pop(); - mCursor = managedQuery(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_DIR, mParents.peek()), - null, - ProviderTableMeta.FILE_ACCOUNT_OWNER+"=?", - new String[]{mAccount.name}, - null); - } - - setListAdapter(new FileListListAdapter(mCursor, this)); - getListView().invalidate();*/ - //} - - //@Override -/* protected void onListItemClick(ListView l, View v, int position, long id) { - super.onListItemClick(l, v, position, id); - /*PathLayout pl = (PathLayout) findViewById(R.id.pathLayout1); - if (!mCursor.moveToPosition(position)) { - throw new IndexOutOfBoundsException("Incorrect item selected"); - } - if (!mIsDisplayingFile) { - if (mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_CONTENT_TYPE)).equals("DIR")) { - String id_ = mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta._ID)); - String dirname = mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_NAME)); - pl.push(DisplayUtils.HtmlDecode(dirname)); - mPath.addLast(DisplayUtils.HtmlDecode(dirname)); - mParents.push(id_); - mCursor = managedQuery(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_DIR, id_), - null, - ProviderTableMeta.FILE_ACCOUNT_OWNER + "=?", - new String[]{mAccount.name}, null); - setListAdapter(new FileListListAdapter(mCursor, this)); - } else { - mIsDisplayingFile = true; - setContentView(R.layout.file_display); - String id_ = mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta._ID)); - mCursor = managedQuery(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_FILE, id_), - null, - null, - null, - null); - mCursor.moveToFirst(); - // filename - TextView tv = (TextView) findViewById(R.id.textView1); - tv.setText(mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_NAME))); - // filetype - tv = (TextView) findViewById(R.id.textView2); - tv.setText(DisplayUtils.convertMIMEtoPrettyPrint(mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_CONTENT_TYPE)))); - // size - tv = (TextView) findViewById(R.id.textView3); - tv.setText(DisplayUtils.bitsToHumanReadable(mCursor.getLong(mCursor.getColumnIndex(ProviderTableMeta.FILE_CONTENT_LENGTH)))); - // modified - tv = (TextView) findViewById(R.id.textView4); - tv.setText(mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_MODIFIED))); - if (!TextUtils.isEmpty(mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_STORAGE_PATH))) && - mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_CONTENT_TYPE)).matches("image/*")) { - ImageView iv = (ImageView) findViewById(R.id.imageView1); - Bitmap bmp = BitmapFactory.decodeFile(mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_STORAGE_PATH))); - Matrix m = new Matrix(); - float scale; - if (bmp.getWidth() > bmp.getHeight()) { - scale = (float) (200./bmp.getWidth()); - } else { - scale = (float) (200./bmp.getHeight()); - } - m.postScale(scale, scale); - Bitmap newBmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), m, true); - iv.setImageBitmap(newBmp); - } - setListAdapter(new FileListActionListAdapter(mCursor, this, mAccount)); - } - getListView().invalidate(); - } else { - Intent i = (Intent) getListAdapter().getItem(position); - if (i.hasExtra("toDownload")) { - - Intent intent = new Intent(this, FileDownloader.class); - intent.putExtra(FileDownloader.EXTRA_FILE_PATH, "/"+((TextView)findViewById(R.id.textView1)).getText().toString()); - intent.putExtra(FileDownloader.EXTRA_ACCOUNT, mAccount); - startService(intent); - /* - if (i.getBooleanExtra("toDownload", false)) { - startActivityForResult(i, 200); - } else { - startActivity(i); - }*/ - // } - - //} -// } - - private void populateFileList() { - if (mParents.empty()) { - mCursor = getContentResolver().query(ProviderTableMeta.CONTENT_URI, - null, - ProviderTableMeta.FILE_ACCOUNT_OWNER+"=?", - new String[]{mAccount.name}, - null); - } else { - mCursor = getContentResolver().query(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_DIR, mParents.peek()), - null, - ProviderTableMeta.FILE_ACCOUNT_OWNER + "=?", - new String[]{mAccount.name}, null); - if (!mIsDisplayingFile) { - //PathLayout pl = (PathLayout) findViewById(R.id.pathLayout1); - //for (String s : mPath) { - // pl.push(s); - // } - } - } -// setListAdapter(new FileListListAdapter(mCursor, this)); -// getListView().invalidate(); - } - - //@Override - /*protected void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); - } - - @Override - protected void onSaveInstanceState(Bundle outState) { - super.onSaveInstanceState(outState); - outState.putSerializable("parentsStack", mParents); - outState.putSerializable("path", mPath); - outState.putBoolean("isDisplayingFile", mIsDisplayingFile); - }*/ - +/* ownCloud Android client application + * Copyright (C) 2011 Bartek Przybylski + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +package eu.alefzero.owncloud.ui; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.LinkedList; +import java.util.Stack; + +import android.accounts.Account; +import android.accounts.AccountManager; +import android.app.AlertDialog; +import android.app.Dialog; +import android.app.ListActivity; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.DialogInterface.OnCancelListener; +import android.content.res.Configuration; +import android.database.Cursor; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Matrix; +import android.net.Uri; +import android.os.Bundle; +import android.os.Environment; +import android.support.v4.app.FragmentActivity; +import android.support.v4.app.FragmentTransaction; +import android.text.TextUtils; +import android.util.Log; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.Window; +import android.widget.ImageView; +import android.widget.ListView; +import android.widget.TextView; +import eu.alefzero.owncloud.DbHandler; +import eu.alefzero.owncloud.R; +import eu.alefzero.owncloud.R.id; +import eu.alefzero.owncloud.R.layout; +import eu.alefzero.owncloud.R.menu; +import eu.alefzero.owncloud.R.string; +import eu.alefzero.owncloud.authenticator.AccountAuthenticator; +import eu.alefzero.owncloud.db.ProviderMeta.ProviderTableMeta; +import eu.alefzero.owncloud.ui.fragment.FileDetail; +import eu.alefzero.owncloud.ui.fragment.FileList; +import eu.alefzero.owncloud.ui.fragment.ActionBar; +public class FileDisplayActivity extends FragmentActivity { + private DbHandler mDBHandler; + private Stack mParents; + private LinkedList mPath; + private Account mAccount; + private Cursor mCursor; + private boolean mIsDisplayingFile; + + private static final int DIALOG_CHOOSE_ACCOUNT = 0; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + getWindow().requestFeature(Window.FEATURE_NO_TITLE); + setContentView(R.layout.files); + + FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); + //ft.add(R.id.actionBar, new ActionBar()); + ft.add(R.id.fileList, new FileList()); + if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { + ft.add(R.id.fileDetail, new FileDetail()); + } + ft.commit(); + + /*getSupportFragmentManager().beginTransaction().add(arg0, arg1); + FileList fl = new FileList(); + ft.add(R.id.fileList, fl); + ft.commit(); + /* + + + if (savedInstanceState != null) { + mParents = (Stack)savedInstanceState.getSerializable("parentsStack"); + mIsDisplayingFile = savedInstanceState.getBoolean("isDisplayingFile"); + mPath = (LinkedList)savedInstanceState.getSerializable("path"); + } else { + mParents = new Stack(); + mPath = new LinkedList(); + mIsDisplayingFile = false; + } + + mDBHandler = new DbHandler(getBaseContext()); + requestWindowFeature(Window.FEATURE_NO_TITLE); + setContentView(R.layout.main); + + AccountManager accMan = AccountManager.get(this); + Account[] accounts = accMan.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE); + + if (accounts.length == 0) { + // using string value since in API7 this constatn is not defined + // in API7 < this constatant is defined in Settings.ADD_ACCOUNT_SETTINGS + // and Settings.EXTRA_AUTHORITIES + Intent intent = new Intent("android.settings.ADD_ACCOUNT_SETTINGS"); + intent.putExtra("authorities", new String[] {AccountAuthenticator.AUTH_TOKEN_TYPE}); + startActivity(intent); + } else if (accounts.length > 1) { + showDialog(DIALOG_CHOOSE_ACCOUNT); + } else { + mAccount = accounts[0]; + populateFileList(); + }*/ + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.settingsItem : + Intent i = new Intent(this, Preferences.class); + startActivity(i); + break; + } + return true; + } + + @Override + protected Dialog onCreateDialog(int id) { + switch (id) { + case DIALOG_CHOOSE_ACCOUNT: + return createChooseAccountDialog(); + default: + throw new IllegalArgumentException("Unknown dialog id: " + id); + } + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + MenuInflater inflater = getMenuInflater(); + inflater.inflate(R.menu.menu, menu); + return true; + } + + private Dialog createChooseAccountDialog() { + final AccountManager accMan = AccountManager.get(this); + CharSequence[] items = new CharSequence[accMan.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE).length]; + int i = 0; + for (Account a : accMan.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE)) { + items[i++] = a.name; + } + + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle(R.string.common_choose_account); + builder.setCancelable(true); + builder.setItems(items, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int item) { + mAccount = accMan.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE)[item]; + dialog.dismiss(); + populateFileList(); + } + }); + builder.setOnCancelListener(new OnCancelListener() { + public void onCancel(DialogInterface dialog) { + FileDisplayActivity.this.finish(); + } + }); + AlertDialog alert = builder.create(); + return alert; + } + + //@Override + //public void onBackPressed() { + /*PathLayout pl = (PathLayout) findViewById(R.id.pathLayout1); + if (mIsDisplayingFile) { + mIsDisplayingFile = false; + setContentView(R.layout.main); + pl = (PathLayout) findViewById(R.id.pathLayout1); + Uri uri; + if (mParents.empty()) { + uri = ProviderTableMeta.CONTENT_URI; + } else { + uri = Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_DIR, mParents.peek()); + } + mCursor = managedQuery(uri, + null, + ProviderTableMeta.FILE_ACCOUNT_OWNER+"=?", + new String[]{mAccount.name}, null); + + if (mCursor.moveToFirst()) { + String s = mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_PATH)); + for (String str : s.split("/")) { + if (!TextUtils.isEmpty(str)) + pl.push(DisplayUtils.HtmlDecode(str)); + } + } + getListView().setAdapter(new FileListListAdapter(mCursor, this)); + getListView().invalidate(); + return; + } + if (mParents.size()==0) { + super.onBackPressed(); + return; + } else if (mParents.size() == 1) { + mParents.pop(); + mPath.removeLast(); + pl.pop(); + mCursor = managedQuery(ProviderTableMeta.CONTENT_URI, + null, + ProviderTableMeta.FILE_ACCOUNT_OWNER+"=?", + new String[]{mAccount.name}, + null); + } else { + mParents.pop(); + mPath.removeLast(); + pl.pop(); + mCursor = managedQuery(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_DIR, mParents.peek()), + null, + ProviderTableMeta.FILE_ACCOUNT_OWNER+"=?", + new String[]{mAccount.name}, + null); + } + + setListAdapter(new FileListListAdapter(mCursor, this)); + getListView().invalidate();*/ + //} + + //@Override +/* protected void onListItemClick(ListView l, View v, int position, long id) { + super.onListItemClick(l, v, position, id); + /*PathLayout pl = (PathLayout) findViewById(R.id.pathLayout1); + if (!mCursor.moveToPosition(position)) { + throw new IndexOutOfBoundsException("Incorrect item selected"); + } + if (!mIsDisplayingFile) { + if (mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_CONTENT_TYPE)).equals("DIR")) { + String id_ = mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta._ID)); + String dirname = mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_NAME)); + pl.push(DisplayUtils.HtmlDecode(dirname)); + mPath.addLast(DisplayUtils.HtmlDecode(dirname)); + mParents.push(id_); + mCursor = managedQuery(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_DIR, id_), + null, + ProviderTableMeta.FILE_ACCOUNT_OWNER + "=?", + new String[]{mAccount.name}, null); + setListAdapter(new FileListListAdapter(mCursor, this)); + } else { + mIsDisplayingFile = true; + setContentView(R.layout.file_display); + String id_ = mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta._ID)); + mCursor = managedQuery(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_FILE, id_), + null, + null, + null, + null); + mCursor.moveToFirst(); + // filename + TextView tv = (TextView) findViewById(R.id.textView1); + tv.setText(mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_NAME))); + // filetype + tv = (TextView) findViewById(R.id.textView2); + tv.setText(DisplayUtils.convertMIMEtoPrettyPrint(mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_CONTENT_TYPE)))); + // size + tv = (TextView) findViewById(R.id.textView3); + tv.setText(DisplayUtils.bitsToHumanReadable(mCursor.getLong(mCursor.getColumnIndex(ProviderTableMeta.FILE_CONTENT_LENGTH)))); + // modified + tv = (TextView) findViewById(R.id.textView4); + tv.setText(mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_MODIFIED))); + if (!TextUtils.isEmpty(mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_STORAGE_PATH))) && + mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_CONTENT_TYPE)).matches("image/*")) { + ImageView iv = (ImageView) findViewById(R.id.imageView1); + Bitmap bmp = BitmapFactory.decodeFile(mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_STORAGE_PATH))); + Matrix m = new Matrix(); + float scale; + if (bmp.getWidth() > bmp.getHeight()) { + scale = (float) (200./bmp.getWidth()); + } else { + scale = (float) (200./bmp.getHeight()); + } + m.postScale(scale, scale); + Bitmap newBmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), m, true); + iv.setImageBitmap(newBmp); + } + setListAdapter(new FileListActionListAdapter(mCursor, this, mAccount)); + } + getListView().invalidate(); + } else { + Intent i = (Intent) getListAdapter().getItem(position); + if (i.hasExtra("toDownload")) { + + Intent intent = new Intent(this, FileDownloader.class); + intent.putExtra(FileDownloader.EXTRA_FILE_PATH, "/"+((TextView)findViewById(R.id.textView1)).getText().toString()); + intent.putExtra(FileDownloader.EXTRA_ACCOUNT, mAccount); + startService(intent); + /* + if (i.getBooleanExtra("toDownload", false)) { + startActivityForResult(i, 200); + } else { + startActivity(i); + }*/ + // } + + //} +// } + + private void populateFileList() { + if (mParents.empty()) { + mCursor = getContentResolver().query(ProviderTableMeta.CONTENT_URI, + null, + ProviderTableMeta.FILE_ACCOUNT_OWNER+"=?", + new String[]{mAccount.name}, + null); + } else { + mCursor = getContentResolver().query(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_DIR, mParents.peek()), + null, + ProviderTableMeta.FILE_ACCOUNT_OWNER + "=?", + new String[]{mAccount.name}, null); + if (!mIsDisplayingFile) { + //PathLayout pl = (PathLayout) findViewById(R.id.pathLayout1); + //for (String s : mPath) { + // pl.push(s); + // } + } + } +// setListAdapter(new FileListListAdapter(mCursor, this)); +// getListView().invalidate(); + } + + //@Override + /*protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + outState.putSerializable("parentsStack", mParents); + outState.putSerializable("path", mPath); + outState.putBoolean("isDisplayingFile", mIsDisplayingFile); + }*/ + } \ No newline at end of file diff --git a/src/eu/alefzero/owncloud/ui/LandingActivity.java b/src/eu/alefzero/owncloud/ui/LandingActivity.java index a937212848..afc7a3fe41 100644 --- a/src/eu/alefzero/owncloud/ui/LandingActivity.java +++ b/src/eu/alefzero/owncloud/ui/LandingActivity.java @@ -41,7 +41,7 @@ public class LandingActivity extends FragmentActivity implements OnClickListener @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.landing_page); + setContentView(R.layout.main); // Check, if there are ownCloud accounts if(!accountsAreSetup()){ diff --git a/src/eu/alefzero/owncloud/FileDetail.java b/src/eu/alefzero/owncloud/ui/fragment/FileDetail.java similarity index 88% rename from src/eu/alefzero/owncloud/FileDetail.java rename to src/eu/alefzero/owncloud/ui/fragment/FileDetail.java index 23a4f6aa2c..de11bc69ba 100644 --- a/src/eu/alefzero/owncloud/FileDetail.java +++ b/src/eu/alefzero/owncloud/ui/fragment/FileDetail.java @@ -1,56 +1,59 @@ -package eu.alefzero.owncloud; - -import android.content.Intent; -import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; -import android.widget.Toast; - -public class FileDetail extends Fragment { - - public Intent mIntent; - - public void setStuff(Intent intent) { - setStuff(intent, getView()); - } - - private void setStuff(Intent intent, View view) { - String filename = intent.getStringExtra("FILE_NAME"); - String filepath = intent.getStringExtra("FILE_PATH"); - setFilename(filename, view); - } - - @Override - public void onCreate(Bundle savedInstanceState) { - // TODO Auto-generated method stub - super.onCreate(savedInstanceState); - } - - @Override - public void onActivityCreated(Bundle savedInstanceState) { - // TODO Auto-generated method stub - super.onActivityCreated(savedInstanceState); - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - View v = inflater.inflate(R.layout.file_details, container, false); - - if (getActivity().getIntent() != null) setStuff(getActivity().getIntent(), v); - return v; - } - - private void setFilename(String filename, View target_view) { - TextView tv = (TextView) target_view.findViewById(R.id.textView1); - if (tv != null) tv.setText(filename); - } - - public void setFilename(String filename) { - setFilename(filename, getView()); - } -} +package eu.alefzero.owncloud.ui.fragment; + +import eu.alefzero.owncloud.R; +import eu.alefzero.owncloud.R.id; +import eu.alefzero.owncloud.R.layout; +import android.content.Intent; +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; +import android.widget.Toast; + +public class FileDetail extends Fragment { + + public Intent mIntent; + + public void setStuff(Intent intent) { + setStuff(intent, getView()); + } + + private void setStuff(Intent intent, View view) { + String filename = intent.getStringExtra("FILE_NAME"); + String filepath = intent.getStringExtra("FILE_PATH"); + setFilename(filename, view); + } + + @Override + public void onCreate(Bundle savedInstanceState) { + // TODO Auto-generated method stub + super.onCreate(savedInstanceState); + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + // TODO Auto-generated method stub + super.onActivityCreated(savedInstanceState); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View v = inflater.inflate(R.layout.file_details, container, false); + + if (getActivity().getIntent() != null) setStuff(getActivity().getIntent(), v); + return v; + } + + private void setFilename(String filename, View target_view) { + TextView tv = (TextView) target_view.findViewById(R.id.textView1); + if (tv != null) tv.setText(filename); + } + + public void setFilename(String filename) { + setFilename(filename, getView()); + } +} diff --git a/src/eu/alefzero/owncloud/ui/fragment/FileList.java b/src/eu/alefzero/owncloud/ui/fragment/FileList.java index b1fbe8eff8..e3d1f26127 100644 --- a/src/eu/alefzero/owncloud/ui/fragment/FileList.java +++ b/src/eu/alefzero/owncloud/ui/fragment/FileList.java @@ -1,106 +1,105 @@ -package eu.alefzero.owncloud.ui.fragment; - -import eu.alefzero.owncloud.FileDetail; -import eu.alefzero.owncloud.R; -import eu.alefzero.owncloud.R.id; -import eu.alefzero.owncloud.authenticator.AccountAuthenticator; -import eu.alefzero.owncloud.db.ProviderMeta.ProviderTableMeta; -import eu.alefzero.owncloud.ui.FileDetailActivity; -import eu.alefzero.owncloud.ui.adapter.FileListListAdapter; -import eu.alefzero.owncloud.ui.fragment.ActionBar; -import android.accounts.Account; -import android.accounts.AccountManager; -import android.app.Activity; -import android.app.Service; -import android.content.Intent; -import android.database.Cursor; -import android.net.Uri; -import android.os.Bundle; -import android.support.v4.app.FragmentTransaction; -import android.support.v4.app.ListFragment; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ArrayAdapter; -import android.widget.ListView; -import android.widget.TextView; -import android.widget.Toast; - -public class FileList extends ListFragment { - private Cursor mCursor; - private Account mAccount; - private AccountManager mAccountManager; - private View mheaderView; - - - @Override - public void onCreate(Bundle savedInstanceState) { - // TODO Auto-generated method stub - super.onCreate(savedInstanceState); - - mAccountManager = (AccountManager)getActivity().getSystemService(Service.ACCOUNT_SERVICE); - mAccount = mAccountManager.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE)[0]; - populateFileList(); - } - - @Override - public void onActivityCreated(Bundle savedInstanceState) { - // TODO Auto-generated method stub - super.onActivityCreated(savedInstanceState); - } - - @Override - public void onListItemClick(ListView l, View v, int position, long id) { - FileDetail fd = (FileDetail) getFragmentManager().findFragmentById(R.id.fileDetail); - ActionBar ab = (ActionBar) getFragmentManager().findFragmentById(R.id.actionBar); - - if (!mCursor.moveToPosition(position)) { - throw new IndexOutOfBoundsException("Incorrect item selected"); - } - if (mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_CONTENT_TYPE)).equals("DIR")) { - String id_ = mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta._ID)); - String dirname = mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_NAME)); - //ab..push(DisplayUtils.HtmlDecode(dirname)); - //mPath.addLast(DisplayUtils.HtmlDecode(dirname)); - //mParents.push(id_); - mCursor = getActivity().managedQuery(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_DIR, id_), - null, - ProviderTableMeta.FILE_ACCOUNT_OWNER + "=?", - new String[]{mAccount.name}, null); - setListAdapter(new FileListListAdapter(mCursor, getActivity())); - setListShown(false); - setListShown(true); - super.onListItemClick(l, v, position, id); - return; - } - Intent i = new Intent(getActivity(), FileDetailActivity.class); - i.putExtra("FILE_PATH", ab.getCurrentPath()); - i.putExtra("FILE_NAME", ((TextView)v.findViewById(R.id.Filename)).getText()); - if (fd != null) { - fd.setStuff(i); - //fd.use(((TextView)v.findViewById(R.id.Filename)).getText()); - } else { - i.putExtra("FILE_PATH", ab.getCurrentPath()); - i.putExtra("FILE_NAME", ((TextView)v.findViewById(R.id.Filename)).getText()); - startActivity(i); - } - super.onListItemClick(l, v, position, id); - - } - - @Override - public void onDestroyView() { - setListAdapter(null); - super.onDestroyView(); - } - - private void populateFileList() { - mCursor = getActivity().getContentResolver().query(ProviderTableMeta.CONTENT_URI, - null, - ProviderTableMeta.FILE_ACCOUNT_OWNER+"=?", - new String[]{mAccount.name}, - null); - - setListAdapter(new FileListListAdapter(mCursor, getActivity())); - } -} +package eu.alefzero.owncloud.ui.fragment; + +import eu.alefzero.owncloud.R; +import eu.alefzero.owncloud.R.id; +import eu.alefzero.owncloud.authenticator.AccountAuthenticator; +import eu.alefzero.owncloud.db.ProviderMeta.ProviderTableMeta; +import eu.alefzero.owncloud.ui.FileDetailActivity; +import eu.alefzero.owncloud.ui.adapter.FileListListAdapter; +import eu.alefzero.owncloud.ui.fragment.ActionBar; +import android.accounts.Account; +import android.accounts.AccountManager; +import android.app.Activity; +import android.app.Service; +import android.content.Intent; +import android.database.Cursor; +import android.net.Uri; +import android.os.Bundle; +import android.support.v4.app.FragmentTransaction; +import android.support.v4.app.ListFragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.ListView; +import android.widget.TextView; +import android.widget.Toast; + +public class FileList extends ListFragment { + private Cursor mCursor; + private Account mAccount; + private AccountManager mAccountManager; + private View mheaderView; + + + @Override + public void onCreate(Bundle savedInstanceState) { + // TODO Auto-generated method stub + super.onCreate(savedInstanceState); + + mAccountManager = (AccountManager)getActivity().getSystemService(Service.ACCOUNT_SERVICE); + mAccount = mAccountManager.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE)[0]; + populateFileList(); + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + // TODO Auto-generated method stub + super.onActivityCreated(savedInstanceState); + } + + @Override + public void onListItemClick(ListView l, View v, int position, long id) { + FileDetail fd = (FileDetail) getFragmentManager().findFragmentById(R.id.fileDetail); + ActionBar ab = (ActionBar) getFragmentManager().findFragmentById(R.id.actionBar); + + if (!mCursor.moveToPosition(position)) { + throw new IndexOutOfBoundsException("Incorrect item selected"); + } + if (mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_CONTENT_TYPE)).equals("DIR")) { + String id_ = mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta._ID)); + String dirname = mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_NAME)); + //ab..push(DisplayUtils.HtmlDecode(dirname)); + //mPath.addLast(DisplayUtils.HtmlDecode(dirname)); + //mParents.push(id_); + mCursor = getActivity().managedQuery(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_DIR, id_), + null, + ProviderTableMeta.FILE_ACCOUNT_OWNER + "=?", + new String[]{mAccount.name}, null); + setListAdapter(new FileListListAdapter(mCursor, getActivity())); + setListShown(false); + setListShown(true); + super.onListItemClick(l, v, position, id); + return; + } + Intent i = new Intent(getActivity(), FileDetailActivity.class); + i.putExtra("FILE_PATH", ab.getCurrentPath()); + i.putExtra("FILE_NAME", ((TextView)v.findViewById(R.id.Filename)).getText()); + if (fd != null) { + fd.setStuff(i); + //fd.use(((TextView)v.findViewById(R.id.Filename)).getText()); + } else { + i.putExtra("FILE_PATH", ab.getCurrentPath()); + i.putExtra("FILE_NAME", ((TextView)v.findViewById(R.id.Filename)).getText()); + startActivity(i); + } + super.onListItemClick(l, v, position, id); + + } + + @Override + public void onDestroyView() { + setListAdapter(null); + super.onDestroyView(); + } + + private void populateFileList() { + mCursor = getActivity().getContentResolver().query(ProviderTableMeta.CONTENT_URI, + null, + ProviderTableMeta.FILE_ACCOUNT_OWNER+"=?", + new String[]{mAccount.name}, + null); + + setListAdapter(new FileListListAdapter(mCursor, getActivity())); + } +}