From 17455f57d2943a8c4d1c894bdceff4a864d617de Mon Sep 17 00:00:00 2001 From: Bartek Przybylski Date: Sat, 14 Jan 2012 00:31:56 +0100 Subject: [PATCH] fragments branch initial commit --- AndroidManifest.xml | 5 +- res/layout-port/main.xml | 26 ++++++++ res/layout/action_bar.xml | 39 ++++++++++++ res/layout/file_activity_details.xml | 13 ++++ res/layout/{file_display.xml => file_details.xml} | 3 - res/layout/main.xml | 65 ++++++++++++++------ src/eu/alefzero/owncloud/FileDetail.java | 38 ++++++++++++ src/eu/alefzero/owncloud/FileDetailActivity.java | 23 +++++++ src/eu/alefzero/owncloud/FileDownloader.java | 28 ++------- src/eu/alefzero/owncloud/FileList.java | 65 ++++++++++++++++++++ .../{OwnCloudMainScreen.java => MainScreen.java} | 71 +++++++++++++--------- src/eu/alefzero/owncloud/ui/ActionBar.java | 29 +++++++++ 12 files changed, 328 insertions(+), 77 deletions(-) create mode 100644 res/layout-port/main.xml create mode 100644 res/layout/action_bar.xml create mode 100644 res/layout/file_activity_details.xml rename res/layout/{file_display.xml => file_details.xml} (76%) create mode 100644 src/eu/alefzero/owncloud/FileDetail.java create mode 100644 src/eu/alefzero/owncloud/FileDetailActivity.java create mode 100644 src/eu/alefzero/owncloud/FileList.java rename src/eu/alefzero/owncloud/{OwnCloudMainScreen.java => MainScreen.java} (89%) create mode 100644 src/eu/alefzero/owncloud/ui/ActionBar.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index a625c01a..1d6c69cc 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -21,11 +21,11 @@ android:name="android.permission.READ_SYNC_SETTINGS" /> - + - @@ -70,5 +70,6 @@ + \ No newline at end of file diff --git a/res/layout-port/main.xml b/res/layout-port/main.xml new file mode 100644 index 00000000..00b71cf1 --- /dev/null +++ b/res/layout-port/main.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/layout/action_bar.xml b/res/layout/action_bar.xml new file mode 100644 index 00000000..4d69c6a2 --- /dev/null +++ b/res/layout/action_bar.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/layout/file_activity_details.xml b/res/layout/file_activity_details.xml new file mode 100644 index 00000000..da5d312a --- /dev/null +++ b/res/layout/file_activity_details.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/res/layout/file_display.xml b/res/layout/file_details.xml similarity index 76% rename from res/layout/file_display.xml rename to res/layout/file_details.xml index 53564051..56469919 100644 --- a/res/layout/file_display.xml +++ b/res/layout/file_details.xml @@ -2,9 +2,6 @@ - - - - - - - - - - - + android:layout_width="fill_parent" + android:layout_height="fill_parent" + android:background="#F7F7F7" + android:orientation="vertical" > + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/eu/alefzero/owncloud/FileDetail.java b/src/eu/alefzero/owncloud/FileDetail.java new file mode 100644 index 00000000..76f0fb9e --- /dev/null +++ b/src/eu/alefzero/owncloud/FileDetail.java @@ -0,0 +1,38 @@ +package eu.alefzero.owncloud; + +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 { + @Override + public void onCreate(Bundle savedInstanceState) { + // TODO Auto-generated method stub + super.onCreate(savedInstanceState); + Log.e("TEST", "TEST"); + } + + @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); + return v; + } + + public void use(CharSequence text) { + Toast.makeText(getActivity(), text, Toast.LENGTH_LONG).show(); + // TODO Auto-generated method stub + + } +} diff --git a/src/eu/alefzero/owncloud/FileDetailActivity.java b/src/eu/alefzero/owncloud/FileDetailActivity.java new file mode 100644 index 00000000..c0e0147b --- /dev/null +++ b/src/eu/alefzero/owncloud/FileDetailActivity.java @@ -0,0 +1,23 @@ +package eu.alefzero.owncloud; + +import android.app.Activity; +import android.content.res.Configuration; +import android.os.Bundle; +import android.support.v4.app.FragmentActivity; +import android.support.v4.app.FragmentTransaction; +import android.view.Window; + +public class FileDetailActivity extends FragmentActivity { +@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); + + FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); + ft.add(R.id.fileDetail, new FileDetail()); + ft.commit(); + +} +} diff --git a/src/eu/alefzero/owncloud/FileDownloader.java b/src/eu/alefzero/owncloud/FileDownloader.java index 0c550445..9e4ab76e 100644 --- a/src/eu/alefzero/owncloud/FileDownloader.java +++ b/src/eu/alefzero/owncloud/FileDownloader.java @@ -1,30 +1,9 @@ package eu.alefzero.owncloud; import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.UnknownHostException; -import java.util.Date; - -import org.apache.http.HttpHost; -import org.apache.http.HttpResponse; -import org.apache.http.auth.AuthScope; -import org.apache.http.auth.UsernamePasswordCredentials; -import org.apache.http.client.ClientProtocolException; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.impl.auth.BasicScheme; -import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.http.protocol.BasicHttpContext; - -import eu.alefzero.owncloud.authenticator.AccountAuthenticator; -import eu.alefzero.webdav.HttpPropFind; import android.accounts.Account; import android.accounts.AccountManager; -import android.accounts.AuthenticatorException; -import android.accounts.OperationCanceledException; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; @@ -34,7 +13,7 @@ import android.net.Uri; import android.os.Environment; import android.os.IBinder; import android.util.Log; -import android.widget.FrameLayout; +import eu.alefzero.owncloud.authenticator.AccountAuthenticator; public class FileDownloader extends Service { static final String EXTRA_ACCOUNT = "ACCOUNT"; @@ -78,7 +57,7 @@ public class FileDownloader extends Service { wdc.allowUnsignedCertificates(); Notification n = new Notification(R.drawable.icon, "Downloading file", System.currentTimeMillis()); - PendingIntent pi = PendingIntent.getActivity(this, 1, new Intent(this, OwnCloudMainScreen.class), 0); + PendingIntent pi = PendingIntent.getActivity(this, 1, new Intent(this, MainScreen.class), 0); n.setLatestEventInfo(this, "A", "B", pi); nm.notify(1, n); @@ -91,5 +70,6 @@ public class FileDownloader extends Service { return START_NOT_STICKY; } - + + } diff --git a/src/eu/alefzero/owncloud/FileList.java b/src/eu/alefzero/owncloud/FileList.java new file mode 100644 index 00000000..1f62b85a --- /dev/null +++ b/src/eu/alefzero/owncloud/FileList.java @@ -0,0 +1,65 @@ +package eu.alefzero.owncloud; + +import eu.alefzero.owncloud.authenticator.AccountAuthenticator; +import eu.alefzero.owncloud.db.ProviderMeta.ProviderTableMeta; +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.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; + + @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) { + // TODO Auto-generated method stub + FileDetail fd = (FileDetail) getFragmentManager().findFragmentById(R.id.fileDetail); + if (fd != null) { + fd.use(((TextView)v.findViewById(R.id.Filename)).getText()); + } else { + Intent i = new Intent(getActivity(), FileDetailActivity.class); + startActivity(i); + } + super.onListItemClick(l, v, position, id); + } + + 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())); + } +} diff --git a/src/eu/alefzero/owncloud/OwnCloudMainScreen.java b/src/eu/alefzero/owncloud/MainScreen.java similarity index 89% rename from src/eu/alefzero/owncloud/OwnCloudMainScreen.java rename to src/eu/alefzero/owncloud/MainScreen.java index c89672ce..4ec6adc3 100644 --- a/src/eu/alefzero/owncloud/OwnCloudMainScreen.java +++ b/src/eu/alefzero/owncloud/MainScreen.java @@ -41,6 +41,8 @@ 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; @@ -54,7 +56,7 @@ import android.widget.TextView; import eu.alefzero.owncloud.authenticator.AccountAuthenticator; import eu.alefzero.owncloud.db.ProviderMeta.ProviderTableMeta; -public class OwnCloudMainScreen extends ListActivity { +public class MainScreen extends FragmentActivity { private DbHandler mDBHandler; private Stack mParents; private LinkedList mPath; @@ -64,10 +66,25 @@ public class OwnCloudMainScreen extends ListActivity { private static final int DIALOG_CHOOSE_ACCOUNT = 0; - @SuppressWarnings("unchecked") @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.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"); @@ -98,7 +115,7 @@ public class OwnCloudMainScreen extends ListActivity { } else { mAccount = accounts[0]; populateFileList(); - } + }*/ } @Override @@ -128,12 +145,6 @@ public class OwnCloudMainScreen extends ListActivity { inflater.inflate(R.menu.menu, menu); return true; } - - @Override - protected void onDestroy() { - mDBHandler.close(); - super.onDestroy(); - } private Dialog createChooseAccountDialog() { final AccountManager accMan = AccountManager.get(this); @@ -155,16 +166,16 @@ public class OwnCloudMainScreen extends ListActivity { }); builder.setOnCancelListener(new OnCancelListener() { public void onCancel(DialogInterface dialog) { - OwnCloudMainScreen.this.finish(); + MainScreen.this.finish(); } }); AlertDialog alert = builder.create(); return alert; } - @Override - public void onBackPressed() { - PathLayout pl = (PathLayout) findViewById(R.id.pathLayout1); + //@Override + //public void onBackPressed() { + /*PathLayout pl = (PathLayout) findViewById(R.id.pathLayout1); if (mIsDisplayingFile) { mIsDisplayingFile = false; setContentView(R.layout.main); @@ -215,13 +226,13 @@ public class OwnCloudMainScreen extends ListActivity { } setListAdapter(new FileListListAdapter(mCursor, this)); - getListView().invalidate(); - } + getListView().invalidate();*/ + //} - @Override - protected void onListItemClick(ListView l, View v, int position, long id) { + //@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); + /*PathLayout pl = (PathLayout) findViewById(R.id.pathLayout1); if (!mCursor.moveToPosition(position)) { throw new IndexOutOfBoundsException("Incorrect item selected"); } @@ -291,10 +302,10 @@ public class OwnCloudMainScreen extends ListActivity { } else { startActivity(i); }*/ - } + // } - } - } + //} +// } private void populateFileList() { if (mParents.empty()) { @@ -309,18 +320,18 @@ public class OwnCloudMainScreen extends ListActivity { 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); - } + //PathLayout pl = (PathLayout) findViewById(R.id.pathLayout1); + //for (String s : mPath) { + // pl.push(s); + // } } } - setListAdapter(new FileListListAdapter(mCursor, this)); - getListView().invalidate(); +// setListAdapter(new FileListListAdapter(mCursor, this)); +// getListView().invalidate(); } - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { + //@Override + /*protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); } @@ -330,6 +341,6 @@ public class OwnCloudMainScreen extends ListActivity { 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/ActionBar.java b/src/eu/alefzero/owncloud/ui/ActionBar.java new file mode 100644 index 00000000..c3b13bc1 --- /dev/null +++ b/src/eu/alefzero/owncloud/ui/ActionBar.java @@ -0,0 +1,29 @@ +package eu.alefzero.owncloud.ui; + +import eu.alefzero.owncloud.R; +import android.app.Activity; +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +public class ActionBar extends Fragment { + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + } + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View v = inflater.inflate(R.layout.action_bar, container, false); + return v; + } + + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + } +} -- 2.11.0