X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/9b5c3965b5bbb271d0cd74825b829bb2e004bd16..a6e98cc7dc4c7f765f442015b1ac793e63884b75:/src/eu/alefzero/owncloud/ui/activity/FileDisplayActivity.java diff --git a/src/eu/alefzero/owncloud/ui/activity/FileDisplayActivity.java b/src/eu/alefzero/owncloud/ui/activity/FileDisplayActivity.java index 7a79a915..a7546283 100644 --- a/src/eu/alefzero/owncloud/ui/activity/FileDisplayActivity.java +++ b/src/eu/alefzero/owncloud/ui/activity/FileDisplayActivity.java @@ -22,23 +22,25 @@ import android.accounts.Account; import android.accounts.AccountManager; import android.app.AlertDialog; import android.app.Dialog; +import android.app.AlertDialog.Builder; import android.content.DialogInterface; -import android.content.Intent; import android.content.DialogInterface.OnCancelListener; -import android.content.res.Configuration; +import android.content.DialogInterface.OnClickListener; +import android.content.Intent; +import android.net.Uri; import android.os.Bundle; import android.support.v4.app.ActionBar; -import android.support.v4.app.FragmentTransaction; import android.support.v4.app.ActionBar.OnNavigationListener; import android.support.v4.view.Menu; import android.support.v4.view.MenuItem; import android.view.MenuInflater; import android.widget.ArrayAdapter; +import android.widget.EditText; import eu.alefzero.owncloud.R; -import eu.alefzero.owncloud.R.id; import eu.alefzero.owncloud.authenticator.AccountAuthenticator; -import eu.alefzero.owncloud.ui.fragment.FileDetail; +import eu.alefzero.owncloud.datamodel.OCFile; import eu.alefzero.owncloud.ui.fragment.FileList; +import eu.alefzero.webdav.WebdavClient; /** * Displays, what files the user has available in his ownCloud. @@ -61,6 +63,46 @@ public class FileDisplayActivity extends android.support.v4.app.FragmentActivity } @Override + protected Dialog onCreateDialog(int id, Bundle args) { + final AlertDialog.Builder builder = new Builder(this); + final EditText dirName = new EditText(getBaseContext()); + builder.setView(dirName); + builder.setTitle(R.string.uploader_info_dirname); + + builder.setPositiveButton(R.string.common_ok, new OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + String s = dirName.getText().toString(); + if (s.trim().isEmpty()) { + dialog.cancel(); + return; + } + AccountManager am = (AccountManager) getSystemService(ACCOUNT_SERVICE); + // following account choosing is incorrect and needs to be replaced + // with some sort of session mechanism + Account a = am.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE)[0]; + + String path = ""; + for (int i = mDirectories.getCount()-2; i >= 0; --i) { + path += "/" + mDirectories.getItem(i); + } + OCFile parent = new OCFile(getContentResolver(), a, path+"/"); + path += "/" + s + "/"; + Thread thread = new Thread(new DirectoryCreator(path, a, am)); + thread.start(); + OCFile.createNewFile(getContentResolver(), a, path, 0, 0, 0, "DIR", parent.getFileId()).save(); + + dialog.dismiss(); + } + }); + builder.setNegativeButton(R.string.common_cancel, new OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + dialog.cancel(); + } + }); + return builder.create(); + } + + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mDirectories = new ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item); @@ -70,22 +112,22 @@ public class FileDisplayActivity extends android.support.v4.app.FragmentActivity action_bar.setNavigationMode(android.support.v4.app.ActionBar.NAVIGATION_MODE_LIST); action_bar.setDisplayShowTitleEnabled(false); action_bar.setListNavigationCallbacks(mDirectories, this); - - FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); - ft.add(R.id.file_list_container, new FileList()); - if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { - ft.add(R.id.fileDetail, new FileDetail()); - } - ft.commit(); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.settingsItem : + { Intent i = new Intent(this, Preferences.class); startActivity(i); break; + } + case R.id.createDirectoryItem: + { + showDialog(0); + break; + } } return true; } @@ -150,6 +192,32 @@ public class FileDisplayActivity extends android.support.v4.app.FragmentActivity super.onBackPressed(); return; } - ((FileList)getSupportFragmentManager().findFragmentById(id.file_list_container)).onBackPressed(); + ((FileList)getSupportFragmentManager().findFragmentById(R.id.fileList)).onBackPressed(); + } + + private class DirectoryCreator implements Runnable { + private String mTargetPath; + private Account mAccount; + private AccountManager mAm; + + public DirectoryCreator(String targetPath, Account account, AccountManager am) { + mTargetPath = targetPath; + mAccount = account; + mAm = am; + } + + @Override + public void run() { + WebdavClient wdc = new WebdavClient(Uri.parse(mAm.getUserData(mAccount, + AccountAuthenticator.KEY_OC_URL))); + + String username = mAccount.name.substring(0, mAccount.name.lastIndexOf('@')); + String password = mAm.getPassword(mAccount); + + wdc.setCredentials(username, password); + wdc.allowUnsignedCertificates(); + wdc.createDirectory(mTargetPath); + } + } } \ No newline at end of file