android:layout_height="fill_parent" android:divider="@drawable/uploader_list_separator"
android:dividerHeight="1dip"></ListView>
</FrameLayout>
- <LinearLayout android:id="@+id/linearLayout1"
- android:layout_width="fill_parent" android:layout_alignParentBottom="true" android:layout_height="wrap_content" android:orientation="vertical">
- <Button android:layout_gravity="bottom" android:layout_height="wrap_content"
- android:layout_width="fill_parent" android:id="@+id/uploader_choose_folder"
- android:text="@string/uploader_btn_upload_text"/>
+
+ <LinearLayout
+ android:id="@+id/linearLayout1"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_alignParentBottom="true"
+ android:orientation="horizontal" >
+
+ <Button
+ android:id="@+id/uploader_new_folder"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="bottom"
+ android:layout_weight="1"
+ android:text="@string/uploader_btn_new_folder_text" />
+
+ <Button
+ android:id="@+id/uploader_choose_folder"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="bottom"
+ android:layout_weight="1"
+ android:text="@string/uploader_btn_upload_text" />
+
</LinearLayout>
</RelativeLayout>
import java.util.Stack;
import java.util.Vector;
-import com.owncloud.android.MainApp;
-import com.owncloud.android.R;
-import com.owncloud.android.authentication.AccountAuthenticator;
-import com.owncloud.android.datamodel.FileDataStorageManager;
-import com.owncloud.android.datamodel.OCFile;
-import com.owncloud.android.files.services.FileUploader;
-import com.owncloud.android.lib.common.utils.Log_OC;
-
import android.accounts.Account;
import android.accounts.AccountManager;
import android.app.AlertDialog;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.content.SharedPreferences;
+import android.content.res.Resources.NotFoundException;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.EditText;
+import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import com.actionbarsherlock.app.ActionBar;
-import com.actionbarsherlock.app.SherlockListActivity;
import com.actionbarsherlock.view.MenuItem;
+import com.owncloud.android.MainApp;
+import com.owncloud.android.R;
+import com.owncloud.android.authentication.AccountAuthenticator;
+import com.owncloud.android.datamodel.FileDataStorageManager;
+import com.owncloud.android.datamodel.OCFile;
+import com.owncloud.android.files.services.FileUploader;
+import com.owncloud.android.lib.common.operations.RemoteOperation;
+import com.owncloud.android.lib.common.operations.RemoteOperationResult;
+import com.owncloud.android.lib.common.utils.Log_OC;
+import com.owncloud.android.operations.CreateFolderOperation;
+import com.owncloud.android.ui.dialog.CreateFolderDialogFragment;
import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.ErrorMessageAdapter;
+
/**
* This can be used to upload things to an ownCloud instance.
* @author Bartek Przybylski
*
*/
-public class Uploader extends SherlockListActivity implements OnItemClickListener, android.view.View.OnClickListener {
+public class Uploader extends FileActivity implements OnItemClickListener, android.view.View.OnClickListener {
private static final String TAG = "ownCloudUploader";
private Account mAccount;
private String mUploadPath;
private FileDataStorageManager mStorageManager;
private OCFile mFile;
-
+
private final static int DIALOG_NO_ACCOUNT = 0;
private final static int DIALOG_WAITING = 1;
private final static int DIALOG_NO_STREAM = 2;
uploadFiles();
break;
+
+ case R.id.uploader_new_folder:
+ CreateFolderDialogFragment dialog = CreateFolderDialogFragment.newInstance(mFile);
+ dialog.show(getSupportFragmentManager(), "createdirdialog");
+ break;
+
+
default:
throw new IllegalArgumentException("Wrong element clicked");
}
private void populateDirectoryList() {
setContentView(R.layout.uploader_layout);
+
+ ListView mListView = (ListView) findViewById(android.R.id.list);
String current_dir = mParents.peek();
if(current_dir.equals("")){
R.layout.uploader_list_item_layout,
new String[] {"dirname"},
new int[] {R.id.textView1});
- setListAdapter(sa);
- Button btn = (Button) findViewById(R.id.uploader_choose_folder);
- btn.setOnClickListener(this);
- getListView().setOnItemClickListener(this);
+
+ mListView.setAdapter(sa);
+ Button btnChooseFolder = (Button) findViewById(R.id.uploader_choose_folder);
+ btnChooseFolder.setOnClickListener(this);
+
+ Button btnNewFolder = (Button) findViewById(R.id.uploader_new_folder);
+ btnNewFolder.setOnClickListener(this);
+
+ mListView.setOnItemClickListener(this);
}
}
}
}
+ @Override
+ public void onRemoteOperationFinish(RemoteOperation operation, RemoteOperationResult result) {
+ super.onRemoteOperationFinish(operation, result);
+
+
+ if (operation instanceof CreateFolderOperation) {
+ onCreateFolderOperationFinish((CreateFolderOperation)operation, result);
+ }
+
+ }
+
+ /**
+ * Updates the view associated to the activity after the finish of an operation trying create a new folder
+ *
+ * @param operation Creation operation performed.
+ * @param result Result of the creation.
+ */
+ private void onCreateFolderOperationFinish(CreateFolderOperation operation, RemoteOperationResult result) {
+ if (result.isSuccess()) {
+ dismissLoadingDialog();
+ populateDirectoryList();
+ } else {
+ dismissLoadingDialog();
+ try {
+ Toast msg = Toast.makeText(this,
+ ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()),
+ Toast.LENGTH_LONG);
+ msg.show();
+
+ } catch (NotFoundException e) {
+ Log_OC.e(TAG, "Error while trying to show fail message " , e);
+ }
+ }
+ }
+
+
/**
* Loads the target folder initialize shown to the user.
*