Explorar o código

Removed classes for compatibility of notifications with Android API level lesser than 14, not supported any more

David A. Velasco %!s(int64=9) %!d(string=hai) anos
pai
achega
d41accdb6a

+ 3 - 4
src/com/owncloud/android/files/services/FileDownloader.java

@@ -50,8 +50,7 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.lib.resources.files.FileUtils;
-import com.owncloud.android.notifications.NotificationBuilderWithProgressBar;
-import com.owncloud.android.notifications.NotificationDelayer;
+import com.owncloud.android.ui.notifications.NotificationUtils;
 import com.owncloud.android.operations.DownloadFileOperation;
 import com.owncloud.android.ui.activity.FileActivity;
 import com.owncloud.android.ui.activity.FileDisplayActivity;
@@ -483,7 +482,7 @@ public class FileDownloader extends Service
         /// create status notification with a progress bar
         mLastPercent = 0;
         mNotificationBuilder =
-                NotificationBuilderWithProgressBar.newNotificationBuilderWithProgressBar(this);
+                NotificationUtils.newNotificationBuilder(this);
         mNotificationBuilder
                 .setSmallIcon(R.drawable.notification_icon)
                 .setTicker(getString(R.string.downloader_download_in_progress_ticker))
@@ -591,7 +590,7 @@ public class FileDownloader extends Service
             // Remove success notification
             if (downloadResult.isSuccess()) {
                 // Sleep 2 seconds, so show the notification before remove it
-                NotificationDelayer.cancelWithDelay(
+                NotificationUtils.cancelWithDelay(
                         mNotificationManager,
                         R.string.downloader_download_succeeded_ticker,
                         2000);

+ 3 - 4
src/com/owncloud/android/files/services/FileUploader.java

@@ -61,8 +61,7 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCo
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.lib.resources.files.FileUtils;
 import com.owncloud.android.lib.resources.status.OwnCloudVersion;
-import com.owncloud.android.notifications.NotificationBuilderWithProgressBar;
-import com.owncloud.android.notifications.NotificationDelayer;
+import com.owncloud.android.ui.notifications.NotificationUtils;
 import com.owncloud.android.operations.UploadFileOperation;
 import com.owncloud.android.ui.activity.FileActivity;
 import com.owncloud.android.ui.activity.UploadListActivity;
@@ -959,7 +958,7 @@ public class FileUploader extends Service
         // / create status notification with a progress bar
         mLastPercent = 0;
         mNotificationBuilder =
-                NotificationBuilderWithProgressBar.newNotificationBuilderWithProgressBar(this);
+                NotificationUtils.newNotificationBuilder(this);
         mNotificationBuilder
                 .setOngoing(true)
                 .setSmallIcon(R.drawable.notification_icon)
@@ -1081,7 +1080,7 @@ public class FileUploader extends Service
             if (uploadResult.isSuccess()) {
                 mPendingUploads.remove(upload.getAccount().name, upload.getFile().getRemotePath());
                 // remove success notification, with a delay of 2 seconds
-                NotificationDelayer.cancelWithDelay(
+                NotificationUtils.cancelWithDelay(
                         mNotificationManager,
                         R.string.uploader_upload_succeeded_ticker,
                         2000);

+ 0 - 134
src/com/owncloud/android/notifications/NotificationBuilderWithProgressBar.java

@@ -1,134 +0,0 @@
-/**
- *   ownCloud Android client application
- *
- *   @author David A. Velasco
- *   Copyright (C) 2015 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.notifications;
-
-import com.owncloud.android.R;
-
-import android.app.Notification;
-import android.content.Context;
-import android.os.Build;
-import android.support.v4.app.NotificationCompat;
-import android.view.View;
-import android.widget.RemoteViews;
-
-/**
- * Extends the support class {@link NotificationCompat.Builder} to grant that
- * a progress bar is available in every Android version, because 
- * {@link NotificationCompat.Builder#setProgress(int, int, boolean)} has no
- * real effect for Android < 4.0
- */
-public class NotificationBuilderWithProgressBar extends NotificationCompat.Builder {
-
-    /**
-     * Custom view to replace the original layout of the notifications
-     */
-    private RemoteViews mContentView = null;
-    
-    /**
-     * Fatory method.
-     * 
-     * Instances of this class will be only returned in Android versions needing it.
-     * 
-     * @param context       Context that will use the builder to create notifications
-     * @return              An instance of this class, or of the regular 
-     *                      {@link NotificationCompat.Builder}, when it is good enough.
-     */
-    public static NotificationCompat.Builder newNotificationBuilderWithProgressBar(Context context) {
-        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
-            return new NotificationBuilderWithProgressBar(context); 
-        } else {
-            return new NotificationCompat.Builder(context).
-                    setColor(context.getResources().getColor(R.color.primary));
-        }
-    }
-    
-    /**
-     * Constructor.
-     * 
-     * @param context       Context that will use the builder to create notifications.
-     */
-    private NotificationBuilderWithProgressBar(Context context) {
-        super(context);
-        mContentView = new RemoteViews(context.getPackageName(), R.layout.notification_with_progress_bar);
-        setContent(mContentView);
-    }
-    
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public NotificationCompat.Builder setProgress(int max, int progress, boolean indeterminate) {
-        mContentView.setProgressBar(R.id.progress, max, progress, indeterminate);
-        if (max > 0) {
-            mContentView.setViewVisibility(R.id.progressHolder, View.VISIBLE);
-        } else {
-            mContentView.setViewVisibility(R.id.progressHolder, View.GONE);
-        }
-        return this;
-    }
-    
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public NotificationCompat.Builder setSmallIcon(int icon) {
-        super.setSmallIcon(icon);   // necessary
-        mContentView.setImageViewResource(R.id.icon, icon);
-        return this;
-    }
-    
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public NotificationCompat.Builder setContentTitle(CharSequence title) {
-        super.setContentTitle(title);
-        mContentView.setTextViewText(R.id.title, title);
-        return this;
-    }
-    
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public NotificationCompat.Builder setContentText(CharSequence text) {
-        super.setContentText(text);
-        mContentView.setTextViewText(R.id.text, text);
-        if (text != null && text.length() > 0) {
-            mContentView.setViewVisibility(R.id.text, View.VISIBLE);
-        } else {
-            mContentView.setViewVisibility(R.id.text, View.GONE);
-        }
-        return this;
-    }
-
-    @Override
-    public Notification build() {
-        Notification result = super.build();
-        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
-            // super.build() in Android 2.x totally ruins whatever was made #setContent 
-            result.contentView = mContentView;
-        }
-        return result;
-    }
-    
-    
-}

+ 28 - 3
src/com/owncloud/android/notifications/NotificationDelayer.java → src/com/owncloud/android/ui/notifications/NotificationUtils.java

@@ -17,17 +17,42 @@
  *
  */
 
-package com.owncloud.android.notifications;
+package com.owncloud.android.ui.notifications;
 
 import java.util.Random;
 
 import android.app.NotificationManager;
+import android.content.Context;
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.Process;
+import android.support.v4.app.NotificationCompat;
+
+import com.owncloud.android.R;
+
+public class NotificationUtils {
+
+    /**
+     * Factory method for {@link android.support.v4.app.NotificationCompat.Builder} instances.
+     *
+     * Not strictly needed from the moment when the minimum API level supported by the app
+     * was raised to 14 (Android 4.0).
+     *
+     * Formerly, returned a customized implementation of {@link android.support.v4.app.NotificationCompat.Builder}
+     * for Android API levels >= 8 and < 14.
+     *
+     * Kept in place for the extra abstraction level; notifications in the app need a review, and they
+     * change a lot in different Android versions.
+     *
+     * @param context       Context that will use the builder to create notifications
+     * @return              An instance of the regular {@link NotificationCompat.Builder}.
+     */
+    public static NotificationCompat.Builder newNotificationBuilder(Context context) {
+        return new NotificationCompat.Builder(context).
+            setColor(context.getResources().getColor(R.color.primary));
+    }
+
 
-public class NotificationDelayer {
-    
     public static void cancelWithDelay(
             final NotificationManager notificationManager,
             final int notificationId,