summaryrefslogtreecommitdiff
path: root/plugins/de.appplant.cordova.plugin.local-notification/src/android/notification/Notification.java
diff options
context:
space:
mode:
authorArjun Roychowdhury <pliablepixels@gmail.com>2015-10-31 08:21:38 -0400
committerArjun Roychowdhury <pliablepixels@gmail.com>2015-10-31 08:21:38 -0400
commit02811010cf62f1b21a06780d1e470d04bb24c50f (patch)
tree0d933789068aac11c810ed4bb169d14ab16c43c6 /plugins/de.appplant.cordova.plugin.local-notification/src/android/notification/Notification.java
parentbca561c1b3989d62a1fba829e0380c6fbf36caf5 (diff)
removed unecessary files from git
Diffstat (limited to 'plugins/de.appplant.cordova.plugin.local-notification/src/android/notification/Notification.java')
-rw-r--r--plugins/de.appplant.cordova.plugin.local-notification/src/android/notification/Notification.java350
1 files changed, 0 insertions, 350 deletions
diff --git a/plugins/de.appplant.cordova.plugin.local-notification/src/android/notification/Notification.java b/plugins/de.appplant.cordova.plugin.local-notification/src/android/notification/Notification.java
deleted file mode 100644
index 5dba9d54..00000000
--- a/plugins/de.appplant.cordova.plugin.local-notification/src/android/notification/Notification.java
+++ /dev/null
@@ -1,350 +0,0 @@
-/*
- * Copyright (c) 2013-2015 by appPlant UG. All rights reserved.
- *
- * @APPPLANT_LICENSE_HEADER_START@
- *
- * This file contains Original Code and/or Modifications of Original Code
- * as defined in and that are subject to the Apache License
- * Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. Please obtain a copy of the License at
- * http://opensource.org/licenses/Apache-2.0/ and read it before using this
- * file.
- *
- * The Original Code and all software distributed under the License are
- * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
- * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
- * Please see the License for the specific language governing rights and
- * limitations under the License.
- *
- * @APPPLANT_LICENSE_HEADER_END@
- */
-
-package de.appplant.cordova.plugin.notification;
-
-
-import android.app.AlarmManager;
-import android.app.NotificationManager;
-import android.app.PendingIntent;
-import android.content.Context;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.os.Build;
-import android.support.v4.app.NotificationCompat;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.util.Date;
-
-/**
- * Wrapper class around OS notification class. Handles basic operations
- * like show, delete, cancel for a single local notification instance.
- */
-public class Notification {
-
- // Used to differ notifications by their life cycle state
- public enum Type {
- ALL, SCHEDULED, TRIGGERED
- }
-
- // Default receiver to handle the trigger event
- private static Class<?> defaultReceiver = TriggerReceiver.class;
-
- // Key for private preferences
- static final String PREF_KEY = "LocalNotification";
-
- // Application context passed by constructor
- private final Context context;
-
- // Notification options passed by JS
- private final Options options;
-
- // Builder with full configuration
- private final NotificationCompat.Builder builder;
-
- // Receiver to handle the trigger event
- private Class<?> receiver = defaultReceiver;
-
- /**
- * Constructor
- *
- * @param context
- * Application context
- * @param options
- * Parsed notification options
- * @param builder
- * Pre-configured notification builder
- */
- protected Notification (Context context, Options options,
- NotificationCompat.Builder builder, Class<?> receiver) {
-
- this.context = context;
- this.options = options;
- this.builder = builder;
-
- this.receiver = receiver != null ? receiver : defaultReceiver;
- }
-
- /**
- * Get application context.
- */
- public Context getContext () {
- return context;
- }
-
- /**
- * Get notification options.
- */
- public Options getOptions () {
- return options;
- }
-
- /**
- * Get notification ID.
- */
- public int getId () {
- return options.getId();
- }
-
- /**
- * If it's a repeating notification.
- */
- public boolean isRepeating () {
- return getOptions().getRepeatInterval() > 0;
- }
-
- /**
- * If the notification was in the past.
- */
- public boolean wasInThePast () {
- return new Date().after(options.getTriggerDate());
- }
-
- /**
- * If the notification is scheduled.
- */
- public boolean isScheduled () {
- return isRepeating() || !wasInThePast();
- }
-
- /**
- * If the notification is triggered.
- */
- public boolean isTriggered () {
- return wasInThePast();
- }
-
- /**
- * If the notification is an update.
- */
- protected boolean isUpdate () {
-
- if (!options.getDict().has("updatedAt"))
- return false;
-
- long now = new Date().getTime();
-
- long updatedAt = options.getDict().optLong("updatedAt", now);
-
- return (now - updatedAt) < 1000;
- }
-
- /**
- * Notification type can be one of pending or scheduled.
- */
- public Type getType () {
- return isTriggered() ? Type.TRIGGERED : Type.SCHEDULED;
- }
-
- /**
- * Schedule the local notification.
- */
- public void schedule() {
- long triggerTime = options.getTriggerTime();
-
- persist();
-
- // Intent gets called when the Notification gets fired
- Intent intent = new Intent(context, receiver)
- .setAction(options.getIdStr())
- .putExtra(Options.EXTRA, options.toString());
-
- PendingIntent pi = PendingIntent.getBroadcast(
- context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
-
- if (isRepeating()) {
- getAlarmMgr().setRepeating(AlarmManager.RTC_WAKEUP,
- triggerTime, options.getRepeatInterval(), pi);
- } else {
- getAlarmMgr().set(AlarmManager.RTC_WAKEUP, triggerTime, pi);
- }
- }
-
- /**
- * Clear the local notification without canceling repeating alarms.
- *
- */
- public void clear () {
- if (!isRepeating() && wasInThePast()) {
- unpersist();
- } else {
- getNotMgr().cancel(getId());
- }
- }
-
- /**
- * Cancel the local notification.
- *
- * Create an intent that looks similar, to the one that was registered
- * using schedule. Making sure the notification id in the action is the
- * same. Now we can search for such an intent using the 'getService'
- * method and cancel it.
- */
- public void cancel() {
- Intent intent = new Intent(context, receiver)
- .setAction(options.getIdStr());
-
- PendingIntent pi = PendingIntent.
- getBroadcast(context, 0, intent, 0);
-
- getAlarmMgr().cancel(pi);
- getNotMgr().cancel(options.getId());
-
- unpersist();
- }
-
- /**
- * Present the local notification to user.
- */
- public void show () {
- // TODO Show dialog when in foreground
- showNotification();
- }
-
- /**
- * Show as local notification when in background.
- */
- @SuppressWarnings("deprecation")
- private void showNotification () {
- int id = getOptions().getId();
-
- if (Build.VERSION.SDK_INT <= 15) {
- // Notification for HoneyComb to ICS
- getNotMgr().notify(id, builder.getNotification());
- } else {
- // Notification for Jellybean and above
- getNotMgr().notify(id, builder.build());
- }
- }
-
- /**
- * Show as modal dialog when in foreground.
- */
- private void showDialog () {
- // TODO
- }
-
- /**
- * Count of triggers since schedule.
- */
- public int getTriggerCountSinceSchedule() {
- long now = System.currentTimeMillis();
- long triggerTime = options.getTriggerTime();
-
- if (!wasInThePast())
- return 0;
-
- if (!isRepeating())
- return 1;
-
- return (int) ((now - triggerTime) / options.getRepeatInterval());
- }
-
- /**
- * Encode options to JSON.
- */
- public String toString() {
- JSONObject dict = options.getDict();
- JSONObject json = new JSONObject();
-
- try {
- json = new JSONObject(dict.toString());
- } catch (JSONException e) {
- e.printStackTrace();
- }
-
- json.remove("firstAt");
- json.remove("updatedAt");
- json.remove("soundUri");
- json.remove("iconUri");
-
- return json.toString();
- }
-
- /**
- * Persist the information of this notification to the Android Shared
- * Preferences. This will allow the application to restore the notification
- * upon device reboot, app restart, retrieve notifications, aso.
- */
- private void persist () {
- SharedPreferences.Editor editor = getPrefs().edit();
-
- editor.putString(options.getIdStr(), options.toString());
-
- if (Build.VERSION.SDK_INT < 9) {
- editor.commit();
- } else {
- editor.apply();
- }
- }
-
- /**
- * Remove the notification from the Android shared Preferences.
- */
- private void unpersist () {
- SharedPreferences.Editor editor = getPrefs().edit();
-
- editor.remove(options.getIdStr());
-
- if (Build.VERSION.SDK_INT < 9) {
- editor.commit();
- } else {
- editor.apply();
- }
- }
-
- /**
- * Shared private preferences for the application.
- */
- private SharedPreferences getPrefs () {
- return context.getSharedPreferences(PREF_KEY, Context.MODE_PRIVATE);
- }
-
- /**
- * Notification manager for the application.
- */
- private NotificationManager getNotMgr () {
- return (NotificationManager) context
- .getSystemService(Context.NOTIFICATION_SERVICE);
- }
-
- /**
- * Alarm manager for the application.
- */
- private AlarmManager getAlarmMgr () {
- return (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
- }
-
- /**
- * Set default receiver to handle the trigger event.
- *
- * @param receiver
- * broadcast receiver
- */
- public static void setDefaultTriggerReceiver (Class<?> receiver) {
- defaultReceiver = receiver;
- }
-
-}