Android Open Source - budget-envelopes Pin Activity






From Project

Back to project page budget-envelopes.

License

The source code is released under:

GNU General Public License

If you think the Android project budget-envelopes listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * This file is a part of Budget with Envelopes.
 * Copyright 2013 Anatolij Zelenin <az@azapps.de>
 *// www  .  ja va  2  s  .  co m
 * Budget 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.
 *
 * Budget 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 Budget. If not, see <http://www.gnu.org/licenses/>.
 */

package com.notriddle.budget;

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Parcelable;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;
import android.widget.Toast;

public class PinActivity extends Activity {
    private EditText mPin;
    private SharedPreferences mPrefs;
    private PendingIntent mNextActivity;

    @Override protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mPrefs = PreferenceManager
                 .getDefaultSharedPreferences(getApplicationContext());

        Intent i = getIntent();

        if (i != null && "com.notriddle.budget.LOCK".equals(i.getAction())) {
            lock();
        } else if (mPrefs.getString("com.notriddle.budget.pin", "").equals("")
                   || mPrefs.getBoolean("com.notriddle.budget.unlocked", false)) {
            finishSuccessful();
        } else {
            Parcelable nextActivity
             = i == null
               ? null
               : i.getParcelableExtra("com.notriddle.budget.NEXT_ACTIVITY");
            mNextActivity = (PendingIntent) nextActivity;
            Log.d("Budget", "mNextActivity="+mNextActivity);

            setContentView(R.layout.activity_pin);

            mPin = (EditText) findViewById(R.id.pin);
            mPin.setOnEditorActionListener(new OnEditorActionListener() {
                public boolean onEditorAction(TextView v, int actionId,
                        KeyEvent event) {
                    if (actionId == EditorInfo.IME_ACTION_DONE) {
                        check();
                        return true;
                    }
                    return false;
                }
            });
        }
    }

    @Override public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.ok, menu);
        return true;
    }

    @Override public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.ok_menuItem:
                check();
                return true;
        }
        return super.onOptionsItemSelected(item);
    }

    private void check() {
        if (mPin.getText()
                 .toString()
                  .equals(mPrefs.getString("com.notriddle.budget.pin", ""))) {
            unlock();
        } else {
            Toast.makeText(getApplicationContext(), R.string.pin_toast_wrong,
                    Toast.LENGTH_LONG).show();
        }
    }

    private void finishSuccessful() {
        try {
            if (mNextActivity != null) {
                mNextActivity.send(this, 0, null);
            } else {
                if (getIntent() != null
                    && getIntent()
                       .hasExtra(AppWidgetManager.EXTRA_APPWIDGET_ID)) {
                    Intent i = new Intent();
                    i.putExtra(
                        AppWidgetManager.EXTRA_APPWIDGET_ID,
                        getIntent()
                        .getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
                                     AppWidgetManager.INVALID_APPWIDGET_ID)
                    );
                    setResult(RESULT_OK, i);
                } else {
                  if(getIntent()!=null && getIntent().getAction().equals("android.intent.action.MAIN")){
                  Intent intent = new Intent(PinActivity.this,
                      EnvelopesActivity.class);
                  startActivity(intent);
                      
                  }
                    setResult(RESULT_OK);
                }
            }
        } catch (PendingIntent.CanceledException e) {
            throw new Error(e);
        }
        finish();
    }

    private void unlock() {
        notify(this);
        mPrefs.edit()
               .putBoolean("com.notriddle.budget.unlocked", true)
               .apply();
        finishSuccessful();
    }

    private void lock() {
        NotificationManager nM = (NotificationManager)
                                 getSystemService(NOTIFICATION_SERVICE);
        nM.cancel(R.string.pin_notify);
        mPrefs.edit()
               .putBoolean("com.notriddle.budget.unlocked", false)
               .apply();
        finish();
    }

    private static void notify(Activity cntx) {
        SharedPreferences prefs
         = PreferenceManager
           .getDefaultSharedPreferences(cntx.getApplicationContext());
        if (prefs.getString("com.notriddle.budget.pin", "").equals("")) {
            return;
        }
        Notification.Builder nB = new Notification.Builder(cntx);
        nB.setSmallIcon(R.drawable.ic_notification);
        nB.setContentTitle(cntx.getText(R.string.app_name));
        nB.setContentText(cntx.getText(R.string.pin_notify));
        Intent i = new Intent(cntx, PinActivity.class);
        i.setAction("com.notriddle.budget.LOCK");
        PendingIntent pI = PendingIntent.getActivity(cntx, 0, i, 0);
        nB.setContentIntent(pI);
        nB.setDeleteIntent(pI);
        nB.setAutoCancel(true);
        NotificationManager nM = (NotificationManager)
                                 cntx.getSystemService(NOTIFICATION_SERVICE);
        nM.notify(R.string.pin_notify, nB.getNotification());
    }

    public static boolean ensureUnlocked(Activity a) {
        SharedPreferences prefs
         = PreferenceManager
           .getDefaultSharedPreferences(a.getApplicationContext());
        
        boolean done
         = prefs.getString("com.notriddle.budget.pin", "").equals("")
           || prefs.getBoolean("com.notriddle.budget.unlocked", false);

        if (!done) {
            Intent i = new Intent(a, PinActivity.class);
            Intent j = new Intent(a.getApplicationContext(), a.getClass());
            //j.setData(a.getIntent().getData());
            //j.setAction(a.getIntent().getAction());
            j.putExtras(a.getIntent());
            PendingIntent pJ = PendingIntent.getActivity(a.getApplicationContext(), 0, j, PendingIntent.FLAG_UPDATE_CURRENT);
            Log.d("Budget", "pJ="+pJ);
            i.putExtra("com.notriddle.budget.NEXT_ACTIVITY",
                       (Parcelable)pJ);
            a.startActivity(i);
        } else {
            notify(a);
        }

        return done;
    }
}




Java Source Code List

com.notriddle.budget.AboutFragment.java
com.notriddle.budget.AllTransactionsFragment.java
com.notriddle.budget.CheckableLinearLayout.java
com.notriddle.budget.CheckableRelativeLayout.java
com.notriddle.budget.ColorFragment.java
com.notriddle.budget.CustomActionBarFragment.java
com.notriddle.budget.DeleteAdapter.java
com.notriddle.budget.DeleteView.java
com.notriddle.budget.EditMoney.java
com.notriddle.budget.EditTextDefaultFocus.java
com.notriddle.budget.EditTransactionFragment.java
com.notriddle.budget.EnvelopeDetailsFragment.java
com.notriddle.budget.EnvelopesActivity.java
com.notriddle.budget.EnvelopesAdapter.java
com.notriddle.budget.EnvelopesFragment.java
com.notriddle.budget.EnvelopesOpenHelper.java
com.notriddle.budget.ExportFragment.java
com.notriddle.budget.FileCreatorFragment.java
com.notriddle.budget.GraphFragment.java
com.notriddle.budget.ImportFragment.java
com.notriddle.budget.LockedActivity.java
com.notriddle.budget.LogAdapter.java
com.notriddle.budget.MonitorScrollView.java
com.notriddle.budget.NavAdapter.java
com.notriddle.budget.OkFragment.java
com.notriddle.budget.PaycheckEnvelopesAdapter.java
com.notriddle.budget.PaycheckFragment.java
com.notriddle.budget.PinActivity.java
com.notriddle.budget.SQLiteLoader.java
com.notriddle.budget.SettingsFragment.java
com.notriddle.budget.SimpleEnvelopesAdapter.java
com.notriddle.budget.SimpleLogAdapter.java
com.notriddle.budget.SpendFragment.java
com.notriddle.budget.TACGridView.java
com.notriddle.budget.TitleFragment.java
com.notriddle.budget.TransferFragment.java
com.notriddle.budget.Util.java
com.notriddle.budget.WidgetProvider.java
com.notriddle.budget.WidgetService.java
com.notriddle.budget.csv.CSVReader.java
com.notriddle.budget.csv.CSVWriter.java