mirror of
https://github.com/nextcloud/android.git
synced 2024-11-26 23:28:42 +03:00
Remove InstantUploadActivity and related resources
This commit is contained in:
parent
e5f20fb85b
commit
055be96386
6 changed files with 4 additions and 625 deletions
|
@ -59,9 +59,6 @@
|
|||
</activity>
|
||||
<activity android:name=".ui.activity.UploadFilesActivity">
|
||||
</activity>
|
||||
<activity android:name=".ui.activity.InstantUploadActivity">
|
||||
</activity>
|
||||
<activity android:name=".ui.activity.FailedUploadActivity" android:theme="@android:style/Theme.Dialog" android:excludeFromRecents="true"/>
|
||||
<activity android:name=".ui.activity.Uploader" >
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.SEND" >
|
||||
|
|
|
@ -1,104 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
ownCloud Android client application
|
||||
|
||||
Copyright (C) 2012 Bartek Przybylski
|
||||
Copyright (C) 2012-2013 ownCloud Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License version 2,
|
||||
as published by the Free Software Foundation.
|
||||
|
||||
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 <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:background="@color/background_color"
|
||||
android:orientation="vertical"
|
||||
android:id="@+id/failed_files_list_view">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="right"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical" >
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" >
|
||||
|
||||
<TextView
|
||||
android:id="@+id/failed_upload_headline_textview"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.93"
|
||||
android:hint="@string/failed_upload_headline_hint"
|
||||
android:text="@string/failed_upload_headline_text" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|right" >
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/failed_upload_headline_cb"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/failed_upload_all_cb"
|
||||
android:textSize="8sp" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/failed_upload_retry_all_btn"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:minHeight="30dp"
|
||||
android:minWidth="90dp"
|
||||
android:text="@string/failed_upload_headline_retryall_btn"
|
||||
android:textSize="8sp" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/failed_upload_delete_all_btn"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:minHeight="30dp"
|
||||
android:minWidth="90dp"
|
||||
android:text="@string/failed_upload_headline_delete_all_btn"
|
||||
android:textSize="8sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<ScrollView
|
||||
android:id="@+id/failedUploadScrollView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:overScrollMode="ifContentScrolls" >
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/failed_upload_scrollviewlayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
|
||||
</LinearLayout>
|
|
@ -250,17 +250,6 @@
|
|||
<string name="preview_image_error_unknown_format">This image cannot be shown</string>
|
||||
|
||||
<string name="error__upload__local_file_not_copied">%1$s could not be copied to %2$s local folder</string>
|
||||
<string name="actionbar_failed_instant_upload">Failed InstantUpload</string>
|
||||
<string name="failed_upload_headline_text">Failed instant uploads</string>
|
||||
<string name="failed_upload_headline_hint">Summary of all failed instant uploads</string>
|
||||
<string name="failed_upload_all_cb">select all</string>
|
||||
<string name="failed_upload_headline_retryall_btn">retry all selected</string>
|
||||
<string name="failed_upload_headline_delete_all_btn">delete all selected from uploadqueue</string>
|
||||
<string name="failed_upload_retry_text">retry to upload the image: </string>
|
||||
<string name="failed_upload_load_more_images">Load more Pictures</string>
|
||||
<string name="failed_upload_retry_do_nothing_text">do nothing you are not online for instant upload</string>
|
||||
<string name="failed_upload_failure_text">Failure Message: </string>
|
||||
<string name="failed_upload_quota_exceeded_text">Please check your server configuration,maybe your quota is exceeded.</string>
|
||||
|
||||
<string name="share_link_no_support_share_api">Sorry, sharing is not enabled on your server. Please contact your
|
||||
administrator.</string>
|
||||
|
|
|
@ -70,7 +70,6 @@ import com.owncloud.android.operations.UploadFileOperation;
|
|||
import com.owncloud.android.operations.common.SyncOperation;
|
||||
import com.owncloud.android.ui.activity.FileActivity;
|
||||
import com.owncloud.android.ui.activity.FileDisplayActivity;
|
||||
import com.owncloud.android.ui.activity.InstantUploadActivity;
|
||||
import com.owncloud.android.utils.ErrorMessageAdapter;
|
||||
import com.owncloud.android.utils.Log_OC;
|
||||
|
||||
|
@ -769,17 +768,7 @@ public class FileUploader extends Service implements OnDatatransferProgressListe
|
|||
|
||||
mUploadClient = null; // grant that future retries on the same account will get the fresh credentials
|
||||
} else {
|
||||
// TODO put something smart in the contentIntent below
|
||||
|
||||
// we add only for instant-uploads the InstantUploadActivity and the
|
||||
// db entry
|
||||
Intent detailUploadIntent = new Intent(this, InstantUploadActivity.class);
|
||||
detailUploadIntent.putExtra(FileUploader.KEY_ACCOUNT, upload.getAccount());
|
||||
resultBuilder
|
||||
.setContentIntent(PendingIntent.getActivity(
|
||||
this, (int) System.currentTimeMillis(), detailUploadIntent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT
|
||||
))
|
||||
.setContentText(content);
|
||||
resultBuilder.setContentText(content);
|
||||
|
||||
if (upload.isInstant()) {
|
||||
DbHandler db = null;
|
||||
|
|
|
@ -48,7 +48,6 @@ import android.provider.MediaStore;
|
|||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.app.FragmentTransaction;
|
||||
//import android.support.v4.content.LocalBroadcastManager;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -66,11 +65,9 @@ import com.owncloud.android.MainApp;
|
|||
import com.owncloud.android.R;
|
||||
import com.owncloud.android.datamodel.OCFile;
|
||||
import com.owncloud.android.files.services.FileDownloader;
|
||||
import com.owncloud.android.files.services.FileUploader;
|
||||
import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
|
||||
import com.owncloud.android.files.services.FileUploader;
|
||||
import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;
|
||||
import com.owncloud.android.operations.CreateFolderOperation;
|
||||
|
||||
import com.owncloud.android.lib.common.OwnCloudAccount;
|
||||
import com.owncloud.android.lib.common.OwnCloudClient;
|
||||
import com.owncloud.android.lib.common.OwnCloudClientManagerFactory;
|
||||
|
@ -80,6 +77,7 @@ import com.owncloud.android.lib.common.network.CertificateCombinedException;
|
|||
import com.owncloud.android.lib.common.operations.RemoteOperation;
|
||||
import com.owncloud.android.lib.common.operations.RemoteOperationResult;
|
||||
import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode;
|
||||
import com.owncloud.android.operations.CreateFolderOperation;
|
||||
import com.owncloud.android.operations.CreateShareOperation;
|
||||
import com.owncloud.android.operations.RemoveFileOperation;
|
||||
import com.owncloud.android.operations.RenameFileOperation;
|
||||
|
@ -739,23 +737,13 @@ FileFragment.ContainerActivity, OnNavigationListener, OnSslUntrustedCertListener
|
|||
}
|
||||
case DIALOG_CHOOSE_UPLOAD_SOURCE: {
|
||||
|
||||
String[] items = null;
|
||||
|
||||
String[] allTheItems = { getString(R.string.actionbar_upload_files),
|
||||
getString(R.string.actionbar_upload_from_apps),
|
||||
getString(R.string.actionbar_failed_instant_upload) };
|
||||
|
||||
String[] commonItems = { getString(R.string.actionbar_upload_files),
|
||||
getString(R.string.actionbar_upload_from_apps) };
|
||||
|
||||
if (InstantUploadActivity.IS_ENABLED)
|
||||
items = allTheItems;
|
||||
else
|
||||
items = commonItems;
|
||||
|
||||
builder = new AlertDialog.Builder(this);
|
||||
builder.setTitle(R.string.actionbar_upload);
|
||||
builder.setItems(items, new DialogInterface.OnClickListener() {
|
||||
builder.setItems(allTheItems, new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int item) {
|
||||
if (item == 0) {
|
||||
// if (!mDualPane) {
|
||||
|
@ -771,10 +759,6 @@ FileFragment.ContainerActivity, OnNavigationListener, OnSslUntrustedCertListener
|
|||
action = action.setType("*/*").addCategory(Intent.CATEGORY_OPENABLE);
|
||||
startActivityForResult(Intent.createChooser(action, getString(R.string.upload_chooser_title)),
|
||||
ACTION_SELECT_CONTENT_FROM_APPS);
|
||||
} else if (item == 2 && InstantUploadActivity.IS_ENABLED) {
|
||||
Intent action = new Intent(FileDisplayActivity.this, InstantUploadActivity.class);
|
||||
action.putExtra(FileUploader.KEY_ACCOUNT, FileDisplayActivity.this.getAccount());
|
||||
startActivity(action);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -1,476 +0,0 @@
|
|||
/* ownCloud Android client application
|
||||
* Copyright (C) 2012-2013 ownCloud Inc.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.owncloud.android.ui.activity;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.owncloud.android.R;
|
||||
import com.owncloud.android.authentication.AccountUtils;
|
||||
import com.owncloud.android.db.DbHandler;
|
||||
import com.owncloud.android.files.InstantUploadBroadcastReceiver;
|
||||
import com.owncloud.android.files.services.FileUploader;
|
||||
import com.owncloud.android.utils.FileStorageUtils;
|
||||
import com.owncloud.android.utils.Log_OC;
|
||||
|
||||
import android.accounts.Account;
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.database.Cursor;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.os.Bundle;
|
||||
import android.util.SparseArray;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.view.View.OnLongClickListener;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.CompoundButton.OnCheckedChangeListener;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
|
||||
/**
|
||||
* This Activity is used to display a list with images they could not be
|
||||
* uploaded instantly. The images can be selected for delete or for a try again
|
||||
* upload
|
||||
*
|
||||
* The entry-point for this activity is the 'Failed upload Notification" and a
|
||||
* sub-menu underneath the 'Upload' menu-item
|
||||
*
|
||||
* @author andomaex / Matthias Baumann
|
||||
*/
|
||||
public class InstantUploadActivity extends Activity {
|
||||
|
||||
private static final String LOG_TAG = InstantUploadActivity.class.getSimpleName();
|
||||
private LinearLayout listView;
|
||||
private static final String retry_chexbox_tag = "retry_chexbox_tag";
|
||||
public static final boolean IS_ENABLED = false;
|
||||
private static int MAX_LOAD_IMAGES = 5;
|
||||
private int lastLoadImageIdx = 0;
|
||||
|
||||
private SparseArray<String> fileList = null;
|
||||
CheckBox failed_upload_all_cb;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.failed_upload_files);
|
||||
|
||||
Button deleteAllBtn = (Button) findViewById(R.id.failed_upload_delete_all_btn);
|
||||
deleteAllBtn.setOnClickListener(getDeleteListner());
|
||||
Button retryAllBtn = (Button) findViewById(R.id.failed_upload_retry_all_btn);
|
||||
retryAllBtn.setOnClickListener(getRetryListner());
|
||||
this.failed_upload_all_cb = (CheckBox) findViewById(R.id.failed_upload_headline_cb);
|
||||
failed_upload_all_cb.setOnCheckedChangeListener(getCheckAllListener());
|
||||
listView = (LinearLayout) findViewById(R.id.failed_upload_scrollviewlayout);
|
||||
|
||||
loadListView(true);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* init the listview with ImageButtons, checkboxes and filename for every
|
||||
* Image that was not successfully uploaded
|
||||
*
|
||||
* this method is call at Activity creation and on delete one ore more
|
||||
* list-entry an on retry the upload by clicking the ImageButton or by click
|
||||
* to the 'retry all' button
|
||||
*
|
||||
*/
|
||||
private void loadListView(boolean reset) {
|
||||
DbHandler db = new DbHandler(getApplicationContext());
|
||||
Cursor c = db.getFailedFiles();
|
||||
|
||||
if (reset) {
|
||||
fileList = new SparseArray<String>();
|
||||
listView.removeAllViews();
|
||||
lastLoadImageIdx = 0;
|
||||
}
|
||||
if (c != null) {
|
||||
try {
|
||||
c.moveToPosition(lastLoadImageIdx);
|
||||
|
||||
while (c.moveToNext()) {
|
||||
|
||||
lastLoadImageIdx++;
|
||||
String imp_path = c.getString(1);
|
||||
String message = c.getString(4);
|
||||
fileList.put(lastLoadImageIdx, imp_path);
|
||||
LinearLayout rowLayout = getHorizontalLinearLayout(lastLoadImageIdx);
|
||||
rowLayout.addView(getFileCheckbox(lastLoadImageIdx));
|
||||
rowLayout.addView(getImageButton(imp_path, lastLoadImageIdx));
|
||||
rowLayout.addView(getFileButton(imp_path, message, lastLoadImageIdx));
|
||||
listView.addView(rowLayout);
|
||||
Log_OC.d(LOG_TAG, imp_path + " on idx: " + lastLoadImageIdx);
|
||||
if (lastLoadImageIdx % MAX_LOAD_IMAGES == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (lastLoadImageIdx > 0) {
|
||||
addLoadMoreButton(listView);
|
||||
}
|
||||
} finally {
|
||||
db.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void addLoadMoreButton(LinearLayout listView) {
|
||||
if (listView != null) {
|
||||
Button loadmoreBtn = null;
|
||||
View oldButton = listView.findViewById(42);
|
||||
if (oldButton != null) {
|
||||
// remove existing button
|
||||
listView.removeView(oldButton);
|
||||
// to add the button at the end
|
||||
loadmoreBtn = (Button) oldButton;
|
||||
} else {
|
||||
// create a new button to add to the scoll view
|
||||
loadmoreBtn = new Button(this);
|
||||
loadmoreBtn.setId(42);
|
||||
loadmoreBtn.setText(getString(R.string.failed_upload_load_more_images));
|
||||
loadmoreBtn.setBackgroundResource(R.color.background_color);
|
||||
loadmoreBtn.setTextSize(12);
|
||||
loadmoreBtn.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
loadListView(false);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
listView.addView(loadmoreBtn);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* provide a list of CheckBox instances, looked up from parent listview this
|
||||
* list ist used to select/deselect all checkboxes at the list
|
||||
*
|
||||
* @return List<CheckBox>
|
||||
*/
|
||||
private List<CheckBox> getCheckboxList() {
|
||||
List<CheckBox> list = new ArrayList<CheckBox>();
|
||||
for (int i = 0; i < listView.getChildCount(); i++) {
|
||||
Log_OC.d(LOG_TAG, "ListView has Childs: " + listView.getChildCount());
|
||||
View childView = listView.getChildAt(i);
|
||||
if (childView != null && childView instanceof ViewGroup) {
|
||||
View checkboxView = getChildViews((ViewGroup) childView);
|
||||
if (checkboxView != null && checkboxView instanceof CheckBox) {
|
||||
Log_OC.d(LOG_TAG, "found Child: " + checkboxView.getId() + " " + checkboxView.getClass());
|
||||
list.add((CheckBox) checkboxView);
|
||||
}
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* recursive called method, used from getCheckboxList method
|
||||
*
|
||||
* @param View
|
||||
* @return View
|
||||
*/
|
||||
private View getChildViews(ViewGroup view) {
|
||||
if (view != null) {
|
||||
for (int i = 0; i < view.getChildCount(); i++) {
|
||||
View cb = view.getChildAt(i);
|
||||
if (cb != null && cb instanceof ViewGroup) {
|
||||
return getChildViews((ViewGroup) cb);
|
||||
} else if (cb instanceof CheckBox) {
|
||||
return cb;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* create a new OnCheckedChangeListener for the 'check all' checkbox *
|
||||
*
|
||||
* @return OnCheckedChangeListener to select all checkboxes at the list
|
||||
*/
|
||||
private OnCheckedChangeListener getCheckAllListener() {
|
||||
return new OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
List<CheckBox> list = getCheckboxList();
|
||||
for (CheckBox checkbox : list) {
|
||||
((CheckBox) checkbox).setChecked(isChecked);
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Button click Listener for the retry button at the headline
|
||||
*
|
||||
* @return a Listener to perform a retry for all selected images
|
||||
*/
|
||||
private OnClickListener getRetryListner() {
|
||||
return new OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
|
||||
try {
|
||||
|
||||
List<CheckBox> list = getCheckboxList();
|
||||
for (CheckBox checkbox : list) {
|
||||
boolean to_retry = checkbox.isChecked();
|
||||
|
||||
Log_OC.d(LOG_TAG, "Checkbox for " + checkbox.getId() + " was checked: " + to_retry);
|
||||
String img_path = fileList.get(checkbox.getId());
|
||||
if (to_retry) {
|
||||
|
||||
final String msg = "Image-Path " + checkbox.getId() + " was checked: " + img_path;
|
||||
Log_OC.d(LOG_TAG, msg);
|
||||
startUpload(img_path);
|
||||
}
|
||||
|
||||
}
|
||||
} finally {
|
||||
// refresh the List
|
||||
listView.removeAllViews();
|
||||
loadListView(true);
|
||||
if (failed_upload_all_cb != null) {
|
||||
failed_upload_all_cb.setChecked(false);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Button click Listener for the delete button at the headline
|
||||
*
|
||||
* @return a Listener to perform a delete for all selected images
|
||||
*/
|
||||
private OnClickListener getDeleteListner() {
|
||||
|
||||
return new OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
|
||||
final DbHandler dbh = new DbHandler(getApplicationContext());
|
||||
try {
|
||||
List<CheckBox> list = getCheckboxList();
|
||||
for (CheckBox checkbox : list) {
|
||||
boolean to_be_delete = checkbox.isChecked();
|
||||
|
||||
Log_OC.d(LOG_TAG, "Checkbox for " + checkbox.getId() + " was checked: " + to_be_delete);
|
||||
String img_path = fileList.get(checkbox.getId());
|
||||
Log_OC.d(LOG_TAG, "Image-Path " + checkbox.getId() + " was checked: " + img_path);
|
||||
if (to_be_delete) {
|
||||
boolean deleted = dbh.removeIUPendingFile(img_path);
|
||||
Log_OC.d(LOG_TAG, "removing " + checkbox.getId() + " was : " + deleted);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
} finally {
|
||||
dbh.close();
|
||||
// refresh the List
|
||||
listView.removeAllViews();
|
||||
loadListView(true);
|
||||
if (failed_upload_all_cb != null) {
|
||||
failed_upload_all_cb.setChecked(false);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private LinearLayout getHorizontalLinearLayout(int id) {
|
||||
LinearLayout linearLayout = new LinearLayout(getApplicationContext());
|
||||
linearLayout.setId(id);
|
||||
linearLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
|
||||
LinearLayout.LayoutParams.MATCH_PARENT));
|
||||
linearLayout.setGravity(Gravity.RIGHT);
|
||||
linearLayout.setOrientation(LinearLayout.HORIZONTAL);
|
||||
return linearLayout;
|
||||
}
|
||||
|
||||
private LinearLayout getVerticalLinearLayout() {
|
||||
LinearLayout linearLayout = new LinearLayout(getApplicationContext());
|
||||
linearLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
|
||||
LinearLayout.LayoutParams.MATCH_PARENT));
|
||||
linearLayout.setGravity(Gravity.TOP);
|
||||
linearLayout.setOrientation(LinearLayout.VERTICAL);
|
||||
return linearLayout;
|
||||
}
|
||||
|
||||
private View getFileButton(final String img_path, String message, int id) {
|
||||
|
||||
TextView failureTextView = new TextView(this);
|
||||
failureTextView.setText(getString(R.string.failed_upload_failure_text) + message);
|
||||
failureTextView.setBackgroundResource(R.color.background_color);
|
||||
failureTextView.setTextSize(8);
|
||||
failureTextView.setOnLongClickListener(getOnLongClickListener(message));
|
||||
failureTextView.setPadding(5, 5, 5, 10);
|
||||
TextView retryButton = new TextView(this);
|
||||
retryButton.setId(id);
|
||||
retryButton.setText(img_path);
|
||||
retryButton.setBackgroundResource(R.color.background_color);
|
||||
retryButton.setTextSize(8);
|
||||
retryButton.setOnClickListener(getImageButtonOnClickListener(img_path));
|
||||
retryButton.setOnLongClickListener(getOnLongClickListener(message));
|
||||
retryButton.setPadding(5, 5, 5, 10);
|
||||
LinearLayout verticalLayout = getVerticalLinearLayout();
|
||||
verticalLayout.addView(retryButton);
|
||||
verticalLayout.addView(failureTextView);
|
||||
|
||||
return verticalLayout;
|
||||
}
|
||||
|
||||
private OnLongClickListener getOnLongClickListener(final String message) {
|
||||
return new OnLongClickListener() {
|
||||
|
||||
@Override
|
||||
public boolean onLongClick(View v) {
|
||||
Log_OC.d(LOG_TAG, message);
|
||||
Toast toast = Toast.makeText(InstantUploadActivity.this, getString(R.string.failed_upload_retry_text)
|
||||
+ message, Toast.LENGTH_LONG);
|
||||
toast.show();
|
||||
return true;
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
private CheckBox getFileCheckbox(int id) {
|
||||
CheckBox retryCB = new CheckBox(this);
|
||||
retryCB.setId(id);
|
||||
retryCB.setBackgroundResource(R.color.background_color);
|
||||
retryCB.setTextSize(8);
|
||||
retryCB.setTag(retry_chexbox_tag);
|
||||
return retryCB;
|
||||
}
|
||||
|
||||
private ImageButton getImageButton(String img_path, int id) {
|
||||
ImageButton imageButton = new ImageButton(this);
|
||||
imageButton.setId(id);
|
||||
imageButton.setClickable(true);
|
||||
imageButton.setOnClickListener(getImageButtonOnClickListener(img_path));
|
||||
|
||||
// scale and add a thumbnail to the imagebutton
|
||||
int base_scale_size = 32;
|
||||
if (img_path != null) {
|
||||
Log_OC.d(LOG_TAG, "add " + img_path + " to Image Button");
|
||||
BitmapFactory.Options options = new BitmapFactory.Options();
|
||||
options.inJustDecodeBounds = true;
|
||||
Bitmap bitmap = BitmapFactory.decodeFile(img_path, options);
|
||||
int width_tpm = options.outWidth, height_tmp = options.outHeight;
|
||||
int scale = 3;
|
||||
while (true) {
|
||||
if (width_tpm / 2 < base_scale_size || height_tmp / 2 < base_scale_size) {
|
||||
break;
|
||||
}
|
||||
width_tpm /= 2;
|
||||
height_tmp /= 2;
|
||||
scale++;
|
||||
}
|
||||
|
||||
Log_OC.d(LOG_TAG, "scale Imgae with: " + scale);
|
||||
BitmapFactory.Options options2 = new BitmapFactory.Options();
|
||||
options2.inSampleSize = scale;
|
||||
bitmap = BitmapFactory.decodeFile(img_path, options2);
|
||||
|
||||
if (bitmap != null) {
|
||||
Log_OC.d(LOG_TAG, "loaded Bitmap Bytes: " + bitmap.getRowBytes());
|
||||
imageButton.setImageBitmap(bitmap);
|
||||
} else {
|
||||
Log_OC.d(LOG_TAG, "could not load imgage: " + img_path);
|
||||
}
|
||||
}
|
||||
return imageButton;
|
||||
}
|
||||
|
||||
private OnClickListener getImageButtonOnClickListener(final String img_path) {
|
||||
return new OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
startUpload(img_path);
|
||||
loadListView(true);
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* start uploading a file to the INSTANT_UPLOD_DIR
|
||||
*
|
||||
* @param img_path
|
||||
*/
|
||||
private void startUpload(String img_path) {
|
||||
// extract filename
|
||||
String filename = FileStorageUtils.getInstantUploadFilePath(this, img_path);
|
||||
if (canInstantUpload()) {
|
||||
Account account = AccountUtils.getCurrentOwnCloudAccount(InstantUploadActivity.this);
|
||||
// add file again to upload queue
|
||||
DbHandler db = new DbHandler(InstantUploadActivity.this);
|
||||
try {
|
||||
db.updateFileState(img_path, DbHandler.UPLOAD_STATUS_UPLOAD_LATER, null);
|
||||
} finally {
|
||||
db.close();
|
||||
}
|
||||
|
||||
Intent i = new Intent(InstantUploadActivity.this, FileUploader.class);
|
||||
i.putExtra(FileUploader.KEY_ACCOUNT, account);
|
||||
i.putExtra(FileUploader.KEY_LOCAL_FILE, img_path);
|
||||
i.putExtra(FileUploader.KEY_REMOTE_FILE, filename);
|
||||
i.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_SINGLE_FILE);
|
||||
i.putExtra(com.owncloud.android.files.services.FileUploader.KEY_INSTANT_UPLOAD, true);
|
||||
|
||||
final String msg = "try to upload file with name :" + filename;
|
||||
Log_OC.d(LOG_TAG, msg);
|
||||
Toast toast = Toast.makeText(InstantUploadActivity.this, getString(R.string.failed_upload_retry_text)
|
||||
+ filename, Toast.LENGTH_LONG);
|
||||
toast.show();
|
||||
|
||||
startService(i);
|
||||
} else {
|
||||
Toast toast = Toast.makeText(InstantUploadActivity.this,
|
||||
getString(R.string.failed_upload_retry_do_nothing_text) + filename, Toast.LENGTH_LONG);
|
||||
toast.show();
|
||||
}
|
||||
}
|
||||
|
||||
private boolean canInstantUpload() {
|
||||
|
||||
if (!InstantUploadBroadcastReceiver.isOnline(this)
|
||||
|| (InstantUploadBroadcastReceiver.instantPictureUploadViaWiFiOnly(this) && !InstantUploadBroadcastReceiver
|
||||
.isConnectedViaWiFi(this))) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue