Search in sources :

Example 31 with AppSettings

use of com.klinker.android.twitter.settings.AppSettings in project Talon-for-Twitter by klinker24.

the class IOUtils method trimDatabase.

public static boolean trimDatabase(Context context, int account) {
    try {
        AppSettings settings = AppSettings.getInstance(context);
        SharedPreferences sharedPrefs = context.getSharedPreferences("com.klinker.android.twitter_world_preferences", 0);
        InteractionsDataSource interactions = InteractionsDataSource.getInstance(context);
        Cursor inters = interactions.getCursor(account);
        if (inters.getCount() > 50) {
            if (inters.moveToPosition(inters.getCount() - 50)) {
                do {
                    interactions.deleteInteraction(inters.getLong(inters.getColumnIndex(InteractionsSQLiteHelper.COLUMN_ID)));
                } while (inters.moveToPrevious());
            }
        }
        inters.close();
        HomeDataSource home = HomeDataSource.getInstance(context);
        home.deleteDups(settings.currentAccount);
        Cursor timeline = home.getTrimmingCursor(account);
        Log.v("trimming", "timeline size: " + timeline.getCount());
        Log.v("trimming", "timeline settings size: " + settings.timelineSize);
        if (timeline.getCount() > settings.timelineSize) {
            if (timeline.moveToPosition(timeline.getCount() - settings.timelineSize)) {
                Log.v("trimming", "in the trim section");
                do {
                    home.deleteTweet(timeline.getLong(timeline.getColumnIndex(HomeSQLiteHelper.COLUMN_TWEET_ID)));
                } while (timeline.moveToPrevious());
            }
        }
        timeline.close();
        // trimming the lists
        ListDataSource lists = ListDataSource.getInstance(context);
        int account1List1 = sharedPrefs.getInt("account_" + account + "_list_1", 0);
        int account1List2 = sharedPrefs.getInt("account_" + account + "_list_2", 0);
        lists.deleteDups(account1List1);
        lists.deleteDups(account1List2);
        Cursor list1 = lists.getTrimmingCursor(account1List1);
        Log.v("trimming", "lists size: " + list1.getCount());
        Log.v("trimming", "lists settings size: " + 400);
        if (list1.getCount() > 400) {
            if (list1.moveToPosition(list1.getCount() - 400)) {
                Log.v("trimming", "in the trim section");
                do {
                    lists.deleteTweet(list1.getLong(list1.getColumnIndex(ListSQLiteHelper.COLUMN_TWEET_ID)));
                } while (list1.moveToPrevious());
            }
        }
        list1.close();
        Cursor list2 = lists.getTrimmingCursor(account1List2);
        Log.v("trimming", "lists size: " + list2.getCount());
        Log.v("trimming", "lists settings size: " + 400);
        if (list2.getCount() > 400) {
            if (list2.moveToPosition(list2.getCount() - 400)) {
                Log.v("trimming", "in the trim section");
                do {
                    lists.deleteTweet(list2.getLong(list2.getColumnIndex(ListSQLiteHelper.COLUMN_TWEET_ID)));
                } while (list2.moveToPrevious());
            }
        }
        list2.close();
        MentionsDataSource mentions = MentionsDataSource.getInstance(context);
        mentions.deleteDups(settings.currentAccount);
        timeline = mentions.getTrimmingCursor(account);
        Log.v("trimming", "mentions size: " + timeline.getCount());
        Log.v("trimming", "mentions settings size: " + settings.mentionsSize);
        if (timeline.getCount() > settings.mentionsSize) {
            if (timeline.moveToPosition(timeline.getCount() - settings.mentionsSize)) {
                do {
                    mentions.deleteTweet(timeline.getLong(timeline.getColumnIndex(HomeSQLiteHelper.COLUMN_TWEET_ID)));
                } while (timeline.moveToPrevious());
            }
        }
        timeline.close();
        DMDataSource dm = DMDataSource.getInstance(context);
        dm.deleteDups(settings.currentAccount);
        timeline = dm.getCursor(account);
        Log.v("trimming", "dm size: " + timeline.getCount());
        Log.v("trimming", "dm settings size: " + settings.dmSize);
        if (timeline.getCount() > settings.dmSize) {
            if (timeline.moveToPosition(timeline.getCount() - settings.dmSize)) {
                do {
                    dm.deleteTweet(timeline.getLong(timeline.getColumnIndex(HomeSQLiteHelper.COLUMN_TWEET_ID)));
                } while (timeline.moveToPrevious());
            }
        }
        timeline.close();
        HashtagDataSource hashtag = HashtagDataSource.getInstance(context);
        timeline = hashtag.getCursor("");
        Log.v("trimming", "hashtag size: " + timeline.getCount());
        if (timeline.getCount() > 300) {
            if (timeline.moveToPosition(timeline.getCount() - 300)) {
                do {
                    hashtag.deleteTag(timeline.getString(timeline.getColumnIndex(HashtagSQLiteHelper.COLUMN_TAG)));
                } while (timeline.moveToPrevious());
            }
        }
        timeline.close();
        ActivityDataSource activity = ActivityDataSource.getInstance(context);
        Cursor actCurs = activity.getCursor(account);
        Log.v("trimming", "activity size: " + actCurs.getCount());
        Log.v("trimming", "activity settings size: " + 200);
        if (actCurs.getCount() > 200) {
            int toDelete = actCurs.getCount() - 200;
            if (actCurs.moveToFirst()) {
                do {
                    activity.deleteItem(actCurs.getLong(actCurs.getColumnIndex(ActivitySQLiteHelper.COLUMN_ID)));
                    toDelete--;
                } while (timeline.moveToNext() && toDelete > 0);
            }
        }
        actCurs.close();
        FavoriteTweetsDataSource favtweets = FavoriteTweetsDataSource.getInstance(context);
        favtweets.deleteDups(settings.currentAccount);
        timeline = favtweets.getCursor(account);
        Log.v("trimming", "favtweets size: " + timeline.getCount());
        Log.v("trimming", "favtweets settings size: " + 200);
        if (timeline.getCount() > 200) {
            if (timeline.moveToPosition(timeline.getCount() - 200)) {
                do {
                    favtweets.deleteTweet(timeline.getLong(timeline.getColumnIndex(FavoriteTweetsSQLiteHelper.COLUMN_TWEET_ID)));
                } while (timeline.moveToPrevious());
            }
        }
        timeline.close();
        return true;
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }
}
Also used : HashtagDataSource(com.klinker.android.twitter.data.sq_lite.HashtagDataSource) AppSettings(com.klinker.android.twitter.settings.AppSettings) SharedPreferences(android.content.SharedPreferences) Cursor(android.database.Cursor) MentionsDataSource(com.klinker.android.twitter.data.sq_lite.MentionsDataSource) ListDataSource(com.klinker.android.twitter.data.sq_lite.ListDataSource) DMDataSource(com.klinker.android.twitter.data.sq_lite.DMDataSource) IOException(java.io.IOException) FileNotFoundException(java.io.FileNotFoundException) FavoriteTweetsDataSource(com.klinker.android.twitter.data.sq_lite.FavoriteTweetsDataSource) InteractionsDataSource(com.klinker.android.twitter.data.sq_lite.InteractionsDataSource) ActivityDataSource(com.klinker.android.twitter.data.sq_lite.ActivityDataSource) HomeDataSource(com.klinker.android.twitter.data.sq_lite.HomeDataSource)

Example 32 with AppSettings

use of com.klinker.android.twitter.settings.AppSettings in project Talon-for-Twitter by klinker24.

the class NotificationUtils method makeFavsNotification.

public static void makeFavsNotification(ArrayList<String[]> tweets, Context context, boolean toDrawer) {
    String shortText;
    String longText;
    String title;
    int smallIcon = R.drawable.ic_stat_icon;
    Bitmap largeIcon;
    Intent resultIntent;
    if (toDrawer) {
        resultIntent = new Intent(context, RedirectToDrawer.class);
    } else {
        resultIntent = new Intent(context, NotiTweetPager.class);
    }
    PendingIntent resultPendingIntent = PendingIntent.getActivity(context, 0, resultIntent, 0);
    NotificationCompat.InboxStyle inbox = null;
    if (tweets.size() == 1) {
        title = tweets.get(0)[0];
        shortText = tweets.get(0)[1];
        longText = shortText;
        largeIcon = getImage(context, tweets.get(0)[2]);
    } else {
        inbox = new NotificationCompat.InboxStyle();
        title = context.getResources().getString(R.string.favorite_users);
        shortText = tweets.size() + " " + context.getResources().getString(R.string.fav_user_tweets);
        longText = "";
        try {
            inbox.setBigContentTitle(shortText);
        } catch (Exception e) {
        }
        if (tweets.size() <= 5) {
            for (String[] s : tweets) {
                inbox.addLine(Html.fromHtml("<b>" + s[0] + ":</b> " + s[1]));
            }
        } else {
            for (int i = 0; i < 5; i++) {
                inbox.addLine(Html.fromHtml("<b>" + tweets.get(i)[0] + ":</b> " + tweets.get(i)[1]));
            }
            inbox.setSummaryText("+" + (tweets.size() - 5) + " " + context.getString(R.string.tweets));
        }
        largeIcon = BitmapFactory.decodeResource(context.getResources(), R.drawable.drawer_user_dark);
    }
    NotificationCompat.Builder mBuilder;
    AppSettings settings = AppSettings.getInstance(context);
    if (shortText.contains("@" + settings.myScreenName)) {
        // return because there is a mention notification for this already
        return;
    }
    Intent deleteIntent = new Intent(context, NotificationDeleteReceiverOne.class);
    mBuilder = new NotificationCompat.Builder(context).setContentTitle(title).setContentText(TweetLinkUtils.removeColorHtml(shortText, settings)).setSmallIcon(smallIcon).setLargeIcon(largeIcon).setContentIntent(resultPendingIntent).setAutoCancel(true).setDeleteIntent(PendingIntent.getBroadcast(context, 0, deleteIntent, 0)).setPriority(NotificationCompat.PRIORITY_HIGH);
    if (inbox == null) {
        mBuilder.setStyle(new NotificationCompat.BigTextStyle().bigText(Html.fromHtml(settings.addonTheme ? longText.replaceAll("FF8800", settings.accentColor) : longText)));
    } else {
        mBuilder.setStyle(inbox);
    }
    if (settings.vibrate) {
        mBuilder.setDefaults(Notification.DEFAULT_VIBRATE);
    }
    if (settings.sound) {
        try {
            mBuilder.setSound(Uri.parse(settings.ringtone));
        } catch (Exception e) {
            mBuilder.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
        }
    }
    if (settings.led)
        mBuilder.setLights(0xFFFFFF, 1000, 1000);
    if (settings.notifications) {
        NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
        notificationManager.notify(2, mBuilder.build());
        // if we want to wake the screen on a new message
        if (settings.wakeScreen) {
            PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
            final PowerManager.WakeLock wakeLock = pm.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "TAG");
            wakeLock.acquire(5000);
        }
        // Pebble notification
        if (context.getSharedPreferences("com.klinker.android.twitter_world_preferences", 0).getBoolean("pebble_notification", false)) {
            sendAlertToPebble(context, title, shortText);
        }
        // Light Flow notification
        sendToLightFlow(context, title, shortText);
    }
}
Also used : NotiTweetPager(com.klinker.android.twitter.activities.tweet_viewer.NotiTweetPager) AppSettings(com.klinker.android.twitter.settings.AppSettings) NotificationManagerCompat(android.support.v4.app.NotificationManagerCompat) Intent(android.content.Intent) PendingIntent(android.app.PendingIntent) PowerManager(android.os.PowerManager) Bitmap(android.graphics.Bitmap) RedirectToDrawer(com.klinker.android.twitter.utils.redirects.RedirectToDrawer) NotificationCompat(android.support.v4.app.NotificationCompat) PendingIntent(android.app.PendingIntent)

Example 33 with AppSettings

use of com.klinker.android.twitter.settings.AppSettings in project Talon-for-Twitter by klinker24.

the class NotificationUtils method getMentionsInboxStyle.

private static NotificationCompat.InboxStyle getMentionsInboxStyle(int numberNew, int accountNumber, Context context, String title) {
    NotificationCompat.InboxStyle style = new NotificationCompat.InboxStyle();
    Cursor cursor = MentionsDataSource.getInstance(context).getCursor(accountNumber);
    if (!cursor.moveToLast()) {
        return style;
    }
    AppSettings settings = AppSettings.getInstance(context);
    if (numberNew > 5) {
        if (numberNew - 5 == 1) {
            style.setSummaryText("+" + (numberNew - 5) + " " + context.getString(R.string.new_mention));
        } else {
            style.setSummaryText("+" + (numberNew - 5) + " " + context.getString(R.string.new_mentions));
        }
        for (int i = 0; i < 5; i++) {
            String handle = cursor.getString(cursor.getColumnIndex(MentionsSQLiteHelper.COLUMN_SCREEN_NAME));
            String text = cursor.getString(cursor.getColumnIndex(MentionsSQLiteHelper.COLUMN_TEXT));
            String longText = "<b>@" + handle + "</b>: " + text;
            style.addLine(Html.fromHtml(settings.addonTheme ? longText.replaceAll("FF8800", settings.accentColor) : longText));
            cursor.moveToPrevious();
        }
    } else {
        for (int i = 0; i < numberNew; i++) {
            String handle = cursor.getString(cursor.getColumnIndex(MentionsSQLiteHelper.COLUMN_SCREEN_NAME));
            String text = cursor.getString(cursor.getColumnIndex(MentionsSQLiteHelper.COLUMN_TEXT));
            String longText = "<b>@" + handle + "</b>: " + text;
            style.addLine(Html.fromHtml(settings.addonTheme ? longText.replaceAll("FF8800", settings.accentColor) : longText));
            cursor.moveToPrevious();
        }
    }
    style.setBigContentTitle(title);
    return style;
}
Also used : AppSettings(com.klinker.android.twitter.settings.AppSettings) NotificationCompat(android.support.v4.app.NotificationCompat) Cursor(android.database.Cursor)

Aggregations

AppSettings (com.klinker.android.twitter.settings.AppSettings)33 Intent (android.content.Intent)18 PendingIntent (android.app.PendingIntent)10 Context (android.content.Context)10 NotificationCompat (android.support.v4.app.NotificationCompat)9 SharedPreferences (android.content.SharedPreferences)6 Cursor (android.database.Cursor)6 Bitmap (android.graphics.Bitmap)6 PowerManager (android.os.PowerManager)6 NotificationManagerCompat (android.support.v4.app.NotificationManagerCompat)6 Paging (twitter4j.Paging)6 ArrayList (java.util.ArrayList)5 Twitter (twitter4j.Twitter)5 HomeDataSource (com.klinker.android.twitter.data.sq_lite.HomeDataSource)4 MentionsDataSource (com.klinker.android.twitter.data.sq_lite.MentionsDataSource)4 Status (twitter4j.Status)4 AlarmManager (android.app.AlarmManager)3 Handler (android.os.Handler)3 RemoteInput (android.support.v4.app.RemoteInput)3 DMDataSource (com.klinker.android.twitter.data.sq_lite.DMDataSource)3