/* * Copyright (C) 2012-2016 The Android Money Manager Ex Project Team * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 3 * of the License, or (at your option) any later version. * * 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.money.manager.ex.sync; import android.app.Notification; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Build; import android.support.v4.app.NotificationCompat; import com.mikepenz.iconics.IconicsDrawable; import com.mikepenz.mmex_icon_font_typeface_library.MMXIconFont; import com.money.manager.ex.Constants; import com.money.manager.ex.R; import com.money.manager.ex.core.UIHelper; import com.money.manager.ex.home.MainActivity; /** * Creates notifications for sync messages. */ public class SyncNotificationFactory { public SyncNotificationFactory(Context context) { this.context = context; } private Context context; public Context getContext() { return this.context; } /** * Get the builder of a notification for download * @return notification */ public Notification getNotificationForDownload() { NotificationCompat.Builder notification = new NotificationCompat.Builder(getContext()) .setContentTitle(getContext().getString(R.string.sync_notification_title)) .setAutoCancel(false) .setDefaults(Notification.FLAG_FOREGROUND_SERVICE) .setContentText(getContext().getString(R.string.sync_downloading)) //.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_action_dropbox_dark)) .setSmallIcon(R.drawable.ic_stat_notification) .setColor(getContext().getResources().getColor(R.color.md_primary)); // only for previous version! if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { Intent intent = new Intent(getContext(), MainActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(getContext(), 0, intent, 0); notification.setContentIntent(pendingIntent); } return notification.build(); } /** * Get notification builder for download complete */ public Notification getNotificationDownloadComplete(PendingIntent pendingIntent) { // compose notification big view NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle(); inboxStyle.setBigContentTitle(getContext().getString(R.string.sync_notification_title)); inboxStyle.addLine(getContext().getString(R.string.dropbox_file_ready_for_use)); inboxStyle.addLine(getContext().getString(R.string.dropbox_open_database_downloaded)); return new NotificationCompat.Builder(getContext()) .addAction(R.drawable.ic_action_folder_open_dark, getContext().getString(R.string.open_database), pendingIntent) .setAutoCancel(true) .setContentIntent(pendingIntent) .setContentTitle(getContext().getString(R.string.sync_notification_title)) .setContentText(getContext().getString(R.string.dropbox_open_database_downloaded)) ////.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_action_dropbox_dark)) .setSmallIcon(R.drawable.ic_stat_notification) .setTicker(getContext().getString(R.string.dropbox_file_ready_for_use)) .setStyle(inboxStyle) .setColor(getContext().getResources().getColor(R.color.md_primary)) .build(); } /** * Get the builder of a notification for upload */ public Notification getNotificationUploading() { NotificationCompat.Builder notification = new NotificationCompat.Builder(getContext()) .setContentTitle(getContext().getString(R.string.sync_notification_title)) .setAutoCancel(false) // .setContentInfo(getContext().getString(R.string.sync_uploading)) .setContentText(getContext().getString(R.string.sync_uploading)) //.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_action_dropbox_dark)) .setSmallIcon(R.drawable.ic_stat_notification) .setColor(getContext().getResources().getColor(R.color.md_primary)); // only for previous version! if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { Intent intent = new Intent(getContext(), MainActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(getContext(), 0, intent, 0); notification.setContentIntent(pendingIntent); } return notification.build(); } /** * Get notification builder for upload complete */ public Notification getNotificationUploadComplete(PendingIntent pendingIntent) { // compose notification big view NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle(); inboxStyle.setBigContentTitle(getContext().getString(R.string.sync_notification_title)); inboxStyle.addLine(getContext().getString(R.string.upload_file_complete)); Notification notification = new NotificationCompat.Builder(getContext()) //.addAction(R.drawable.ic_action_folder_open_dark, context.getString(R.string.open_database), pendingIntent) .setAutoCancel(true) .setContentIntent(pendingIntent) .setContentTitle(getContext().getString(R.string.sync_notification_title)) .setContentText(getContext().getString(R.string.upload_file_complete)) //.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_action_dropbox_dark)) .setSmallIcon(R.drawable.ic_stat_notification) .setStyle(inboxStyle) .setTicker(getContext().getString(R.string.upload_file_complete)) .setColor(getContext().getResources().getColor(R.color.md_primary)) .build(); return notification; } /** * Get a notification builder with progress bar * @param notification existing builder * @param totalBytes total bytes to transfer * @param bytes bytes transfer * @return notification */ public Notification getNotificationBuilderProgress(NotificationCompat.Builder notification, int totalBytes, int bytes) { notification.setProgress(totalBytes, bytes, false); notification.setContentInfo(String.format("%1dKB/%2dKB", bytes / 1024, totalBytes / 1024)); return notification.build(); } public Notification getNotificationForConflict() { UIHelper uiHelper = new UIHelper(getContext()); // IconicsDrawable icon = new IconicsDrawable(getContext()) // .icon(MMXIconFont.Icon.mmx_alert) // .color(uiHelper.getSecondaryColor()) // .sizeDp(Constants.NotificationBigIconSize); NotificationCompat.Builder notification = new NotificationCompat.Builder(getContext()) .setContentTitle(getContext().getString(R.string.sync_notification_title)) .setAutoCancel(false) .setSubText(getContext().getString(R.string.sync_conflict)) .setContentText(getContext().getString(R.string.both_files_modified)) // .setLargeIcon(icon.toBitmap()) .setSmallIcon(R.drawable.ic_stat_notification) .setColor(uiHelper.getToolbarItemColor()); return notification.build(); } }