浏览代码

Progress on fixing activities for older versions

Mario Danic 8 年之前
父节点
当前提交
fb478debab

+ 75 - 40
src/main/java/com/owncloud/android/ui/activity/ActivitiesListActivity.java

@@ -23,6 +23,9 @@
 package com.owncloud.android.ui.activity;
 
 import android.accounts.Account;
+import android.accounts.AuthenticatorException;
+import android.accounts.OperationCanceledException;
+import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.support.v4.widget.SwipeRefreshLayout;
@@ -36,14 +39,19 @@ import android.widget.LinearLayout;
 import android.widget.ProgressBar;
 import android.widget.TextView;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.authentication.AccountUtils;
+import com.owncloud.android.lib.common.OwnCloudAccount;
+import com.owncloud.android.lib.common.OwnCloudClient;
+import com.owncloud.android.lib.common.OwnCloudClientManagerFactory;
 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.lib.resources.activities.GetRemoteActivitiesOperation;
 import com.owncloud.android.ui.adapter.ActivityListAdapter;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -159,58 +167,85 @@ public class ActivitiesListActivity extends FileActivity {
     }
 
     private void fetchAndSetData() {
+        final Account currentAccount = AccountUtils.getCurrentOwnCloudAccount(MainApp.getAppContext());
+        final Context context = MainApp.getAppContext();
+
         Thread t = new Thread(new Runnable() {
+
+
             public void run() {
-                Account account = AccountUtils.getCurrentOwnCloudAccount(ActivitiesListActivity.this);
-                RemoteOperation getRemoteNotificationOperation = new GetRemoteActivitiesOperation();
-                Log_OC.d(TAG, "BEFORE getRemoteActivitiesOperation.execute");
-                final RemoteOperationResult result =
-                        getRemoteNotificationOperation.execute(account, ActivitiesListActivity.this);
-
-                if (result.isSuccess() && result.getData() != null) {
-                    final ArrayList<Object> activities = result.getData();
-
-                    runOnUiThread(new Runnable() {
-                        @Override
-                        public void run() {
-                            if (activities.size() > 0) {
-                                populateList(activities);
-                                swipeEmptyListRefreshLayout.setVisibility(View.GONE);
-                                swipeListRefreshLayout.setVisibility(View.VISIBLE);
-                            } else {
-                                setEmptyContent(noResultsHeadline, noResultsMessage);
+                OwnCloudAccount ocAccount = null;
+                try {
+                    ocAccount = new OwnCloudAccount(
+                            currentAccount,
+                            context
+                            );
+                    OwnCloudClient mClient = OwnCloudClientManagerFactory.getDefaultSingleton().
+                            getClientFor(ocAccount, MainApp.getAppContext());
+                    mClient.setOwnCloudVersion(AccountUtils.getServerVersion(currentAccount));
+
+                    RemoteOperation getRemoteNotificationOperation = new GetRemoteActivitiesOperation();
+                    Log_OC.d(TAG, "BEFORE getRemoteActivitiesOperation.execute");
+                    final RemoteOperationResult result =
+                            getRemoteNotificationOperation.execute(mClient);
+
+                    if (result.isSuccess() && result.getData() != null) {
+                        final ArrayList<Object> activities = result.getData();
+
+                        runOnUiThread(new Runnable() {
+                            @Override
+                            public void run() {
+                                if (activities.size() > 0) {
+                                    populateList(activities);
+                                    swipeEmptyListRefreshLayout.setVisibility(View.GONE);
+                                    swipeListRefreshLayout.setVisibility(View.VISIBLE);
+                                } else {
+                                    setEmptyContent(noResultsHeadline, noResultsMessage);
+                                }
                             }
+                        });
+                    } else {
+                        Log_OC.d(TAG, result.getLogMessage());
+                        // show error
+                        String logMessage = result.getLogMessage();
+                        if (result.getHttpCode() == 304) {
+                            logMessage = noResultsMessage;
                         }
-                    });
-                } else {
-                    Log_OC.d(TAG, result.getLogMessage());
-                    // show error
-                    String logMessage = result.getLogMessage();
-                    if (result.getHttpCode() == 304) {
-                        logMessage = noResultsMessage;
+                        final String finalLogMessage = logMessage;
+                        runOnUiThread(new Runnable() {
+                            @Override
+                            public void run() {
+                                setEmptyContent(noResultsHeadline, finalLogMessage);
+                            }
+                        });
                     }
-                    final String finalLogMessage = logMessage;
-                    runOnUiThread(new Runnable() {
-                        @Override
-                        public void run() {
-                            setEmptyContent(noResultsHeadline, finalLogMessage);
-                        }
-                    });
-                }
 
-                runOnUiThread(new Runnable() {
-                    @Override
-                    public void run() {
-                        swipeListRefreshLayout.setRefreshing(false);
-                        swipeEmptyListRefreshLayout.setRefreshing(false);
-                    }
-                });
+                    hideRefreshLayoutLoader();
+                } catch (com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException e) {
+                    Log_OC.e(TAG, "Account not found", e);
+                } catch (IOException e) {
+                    Log_OC.e(TAG, "IO error", e);
+                } catch (OperationCanceledException e) {
+                    Log_OC.e(TAG, "Operation has been canceled", e);
+                } catch (AuthenticatorException e) {
+                    Log_OC.e(TAG, "Authentication Exception", e);
+                }
             }
         });
 
         t.start();
     }
 
+    private void hideRefreshLayoutLoader() {
+        runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                swipeListRefreshLayout.setRefreshing(false);
+                swipeEmptyListRefreshLayout.setRefreshing(false);
+            }
+        });
+    }
+
     private void populateList(List<Object> activities) {
 
         adapter.setActivityItems(activities);

+ 12 - 3
src/main/java/com/owncloud/android/ui/adapter/ActivityListAdapter.java

@@ -23,6 +23,7 @@ import android.content.Context;
 import android.graphics.drawable.PictureDrawable;
 import android.net.Uri;
 import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -74,12 +75,20 @@ public class ActivityListAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
 
     @Override
     public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
-        Activity activity =(Activity) mValues.get(position);
-        ((ActivityViewHolder)holder).dateTime.setText(DisplayUtils.getRelativeTimestamp(context, activity.getDatetime().getTime()));
+        Activity activity = (Activity) mValues.get(position);
+        if (activity.getDatetime() != null) {
+            ((ActivityViewHolder) holder).dateTime.setText(DisplayUtils.getRelativeTimestamp(context,
+                    activity.getDatetime().getTime()));
+        } else {
+            ((ActivityViewHolder) holder).dateTime.setText(DisplayUtils.getRelativeTimestamp(context,
+                    activity.getDate().getTime()));
+        }
         ((ActivityViewHolder)holder).subject.setText(activity.getSubject());
         ((ActivityViewHolder)holder).message.setText(activity.getMessage());
 
-        downloadIcon(activity.getIcon(),((ActivityViewHolder)holder).activityIcon);
+        if (!TextUtils.isEmpty(activity.getIcon())) {
+            downloadIcon(activity.getIcon(), ((ActivityViewHolder) holder).activityIcon);
+        }
     }
 
     private void downloadIcon(String icon, ImageView itemViewType) {