Add cancel and retry buttons on layout contribution
|
|
@ -1,6 +1,8 @@
|
||||||
package fr.free.nrw.commons.contributions;
|
package fr.free.nrw.commons.contributions;
|
||||||
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.widget.Button;
|
||||||
|
import android.widget.ImageButton;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
|
@ -13,6 +15,8 @@ class ContributionViewHolder {
|
||||||
final TextView stateView;
|
final TextView stateView;
|
||||||
final TextView seqNumView;
|
final TextView seqNumView;
|
||||||
final ProgressBar progressView;
|
final ProgressBar progressView;
|
||||||
|
final ImageButton retryButton;
|
||||||
|
final ImageButton cancelButton;
|
||||||
|
|
||||||
ContributionViewHolder(View parent) {
|
ContributionViewHolder(View parent) {
|
||||||
imageView = parent.findViewById(R.id.contributionImage);
|
imageView = parent.findViewById(R.id.contributionImage);
|
||||||
|
|
@ -20,5 +24,7 @@ class ContributionViewHolder {
|
||||||
stateView = parent.findViewById(R.id.contributionState);
|
stateView = parent.findViewById(R.id.contributionState);
|
||||||
seqNumView = parent.findViewById(R.id.contributionSequenceNumber);
|
seqNumView = parent.findViewById(R.id.contributionSequenceNumber);
|
||||||
progressView = parent.findViewById(R.id.contributionProgress);
|
progressView = parent.findViewById(R.id.contributionProgress);
|
||||||
|
retryButton = parent.findViewById(R.id.retryButton);
|
||||||
|
cancelButton = parent.findViewById(R.id.cancelButton);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ package fr.free.nrw.commons.contributions;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.support.v4.widget.CursorAdapter;
|
import android.support.v4.widget.CursorAdapter;
|
||||||
|
import android.util.Log;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|
@ -37,20 +38,40 @@ class ContributionsListAdapter extends CursorAdapter {
|
||||||
views.seqNumView.setText(String.valueOf(cursor.getPosition() + 1));
|
views.seqNumView.setText(String.valueOf(cursor.getPosition() + 1));
|
||||||
views.seqNumView.setVisibility(View.VISIBLE);
|
views.seqNumView.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
|
views.retryButton.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {
|
||||||
|
Log.d("deneme","Retry button is clicked");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
views.cancelButton.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {
|
||||||
|
Log.d("deneme","Cancel button is clicked");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
switch (contribution.getState()) {
|
switch (contribution.getState()) {
|
||||||
case Contribution.STATE_COMPLETED:
|
case Contribution.STATE_COMPLETED:
|
||||||
views.stateView.setVisibility(View.GONE);
|
views.stateView.setVisibility(View.GONE);
|
||||||
views.progressView.setVisibility(View.GONE);
|
views.progressView.setVisibility(View.GONE);
|
||||||
|
views.retryButton.setVisibility(View.GONE);
|
||||||
|
views.cancelButton.setVisibility(View.GONE);
|
||||||
views.stateView.setText("");
|
views.stateView.setText("");
|
||||||
break;
|
break;
|
||||||
case Contribution.STATE_QUEUED:
|
case Contribution.STATE_QUEUED:
|
||||||
views.stateView.setVisibility(View.VISIBLE);
|
views.stateView.setVisibility(View.VISIBLE);
|
||||||
views.progressView.setVisibility(View.GONE);
|
views.progressView.setVisibility(View.GONE);
|
||||||
views.stateView.setText(R.string.contribution_state_queued);
|
views.stateView.setText(R.string.contribution_state_queued);
|
||||||
|
views.retryButton.setVisibility(View.GONE);
|
||||||
|
views.cancelButton.setVisibility(View.GONE);
|
||||||
break;
|
break;
|
||||||
case Contribution.STATE_IN_PROGRESS:
|
case Contribution.STATE_IN_PROGRESS:
|
||||||
views.stateView.setVisibility(View.GONE);
|
views.stateView.setVisibility(View.GONE);
|
||||||
views.progressView.setVisibility(View.VISIBLE);
|
views.progressView.setVisibility(View.VISIBLE);
|
||||||
|
views.retryButton.setVisibility(View.GONE);
|
||||||
|
views.cancelButton.setVisibility(View.GONE);
|
||||||
long total = contribution.getDataLength();
|
long total = contribution.getDataLength();
|
||||||
long transferred = contribution.getTransferred();
|
long transferred = contribution.getTransferred();
|
||||||
if (transferred == 0 || transferred >= total) {
|
if (transferred == 0 || transferred >= total) {
|
||||||
|
|
@ -63,6 +84,8 @@ class ContributionsListAdapter extends CursorAdapter {
|
||||||
views.stateView.setVisibility(View.VISIBLE);
|
views.stateView.setVisibility(View.VISIBLE);
|
||||||
views.stateView.setText(R.string.contribution_state_failed);
|
views.stateView.setText(R.string.contribution_state_failed);
|
||||||
views.progressView.setVisibility(View.GONE);
|
views.progressView.setVisibility(View.GONE);
|
||||||
|
views.retryButton.setVisibility(View.VISIBLE);
|
||||||
|
views.cancelButton.setVisibility(View.VISIBLE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import android.support.annotation.NonNull;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.support.annotation.VisibleForTesting;
|
import android.support.annotation.VisibleForTesting;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
|
|
||||||
|
|
@ -897,6 +898,7 @@ public class ApacheHttpClientMediaWikiApi implements MediaWikiApi {
|
||||||
|
|
||||||
if (!resultStatus.equals("Success")) {
|
if (!resultStatus.equals("Success")) {
|
||||||
String errorCode = result.getString("/api/error/@code");
|
String errorCode = result.getString("/api/error/@code");
|
||||||
|
Log.d("deneme","error code: "+errorCode);
|
||||||
Timber.e(errorCode);
|
Timber.e(errorCode);
|
||||||
return new UploadResult(resultStatus, errorCode);
|
return new UploadResult(resultStatus, errorCode);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
BIN
app/src/main/res/drawable-hdpi/ic_cancel_white.png
Normal file
|
After Width: | Height: | Size: 351 B |
BIN
app/src/main/res/drawable-hdpi/ic_retry_white.png
Normal file
|
After Width: | Height: | Size: 449 B |
BIN
app/src/main/res/drawable-mdpi/ic_cancel_white.png
Normal file
|
After Width: | Height: | Size: 256 B |
BIN
app/src/main/res/drawable-mdpi/ic_retry_white.png
Normal file
|
After Width: | Height: | Size: 279 B |
BIN
app/src/main/res/drawable-xhdpi/ic_cancel_white.png
Normal file
|
After Width: | Height: | Size: 470 B |
BIN
app/src/main/res/drawable-xhdpi/ic_retry_white.png
Normal file
|
After Width: | Height: | Size: 570 B |
BIN
app/src/main/res/drawable-xxhdpi/ic_cancel_white.png
Normal file
|
After Width: | Height: | Size: 764 B |
BIN
app/src/main/res/drawable-xxhdpi/ic_retry_white.png
Normal file
|
After Width: | Height: | Size: 945 B |
BIN
app/src/main/res/drawable-xxxhdpi/ic_cancel_white.png
Normal file
|
After Width: | Height: | Size: 1,016 B |
BIN
app/src/main/res/drawable-xxxhdpi/ic_retry_white.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
|
|
@ -28,8 +28,17 @@
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
android:layout_gravity="center|bottom"
|
android:layout_gravity="center|bottom"
|
||||||
android:background="#AA000000"
|
android:background="#AA000000"
|
||||||
|
android:weightSum="4"
|
||||||
|
>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="3"
|
||||||
|
android:layout_gravity="center|bottom"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:padding="@dimen/small_gap"
|
android:padding="@dimen/small_gap"
|
||||||
>
|
>
|
||||||
|
|
@ -61,6 +70,41 @@
|
||||||
android:maxLines="2"
|
android:maxLines="2"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:padding="@dimen/small_gap"
|
||||||
|
>
|
||||||
|
|
||||||
|
<ImageButton
|
||||||
|
android:id="@+id/cancelButton"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:src="@drawable/ic_cancel_white"
|
||||||
|
android:text="@string/menu_cancel_upload"
|
||||||
|
android:background="@android:color/transparent"
|
||||||
|
android:layout_margin="8dp"
|
||||||
|
android:visibility="gone"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<ImageButton
|
||||||
|
android:id="@+id/retryButton"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:src="@drawable/ic_retry_white"
|
||||||
|
android:text="@string/menu_retry_upload"
|
||||||
|
android:background="@android:color/transparent"
|
||||||
|
android:layout_margin="8dp"
|
||||||
|
android:visibility="gone"
|
||||||
|
/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||