Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?xml version="1.0" encoding="utf-8"?>
- <!-- nav_menu.xml -->
- <menu
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto">
- <item
- app:showAsAction="always"
- android:title="menu"
- >
- <menu>
- <item
- android:icon="@drawable/ic_baseline_file_download_off_24"
- android:id="@+id/idMenuItemLoad"
- android:title="@string/strMenuItemLoad"/>
- <item
- android:icon="@drawable/ic_baseline_save_24"
- android:id="@+id/idMenuItemSave"
- android:title="@string/strMenuItemSave"/>
- <item
- android:id="@+id/idMenuItemGoSettings"
- android:title="@string/strMenuItemGoSettings"
- />
- <item
- android:id="@+id/idMenuItemQuitApp"
- android:title="@string/strMenuItemQuitApp"
- />
- <item
- android:icon="@drawable/ic_baseline_clear_24"
- android:id="@+id/idMenuItemClear"
- android:title="@string/strMenuItemClear"/>
- </menu>
- </item>
- </menu>
- *****************************************************
- //PassGen.java
- package com.joythis.android.passwordsgenerator;
- import androidx.annotation.NonNull;
- import androidx.appcompat.app.AppCompatActivity;
- import android.app.Activity;
- import android.content.Context;
- import android.content.Intent;
- import android.content.SharedPreferences;
- import android.os.Bundle;
- import android.view.Menu;
- import android.view.MenuInflater;
- import android.view.MenuItem;
- import android.view.View;
- import android.widget.ArrayAdapter;
- import android.widget.Button;
- import android.widget.ListView;
- import android.widget.TextView;
- import android.widget.Toast;
- import java.util.ArrayList;
- import java.util.HashSet;
- import java.util.Set;
- public class PassGen extends AppCompatActivity {
- public final static String PASSWORDS_DB = "PWDS.DB";
- public final static String SETTINGS_DB = "SETTINGS.DB";
- public final static String KEY_BCL = "KEY_BCL";
- public final static String KEY_BSL = "KEY_BSL";
- public final static String KEY_BDigits = "KEY_BD";
- public final static String KEY_SS = "KEY_SS";
- public final static String KEY_SIZE = "KEY_SIZE";
- public final static int DEFAULT_SIZE = 16;
- public final static boolean DEFAULT_BCL = true;
- public final static boolean DEFAULT_BSL = true;
- public final static boolean DEFAULT_BDigits = true;
- //public final static String DEFAULT_SS = "???";
- Context mContext;
- Activity mSelfActivity;
- SharedPreferences mSp;
- TextView mTvCurrentSettings;
- Button mBtnGenPass;
- ListView mLvPasswords; //visualização
- ArrayAdapter<String> mAd; //intermediação
- ArrayList<String> mPwds; //dados
- View.OnClickListener mClickHandler =
- new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String p =
- AmRandomTools.randomPassword(
- miSize,
- mbCL,
- mbSL,
- mbDigits,
- mSpecialSymbols
- );
- if(p.length()>0) {
- mPwds.add(0, p);
- mAd.notifyDataSetChanged();
- }
- else{
- Toast t = Toast.makeText(
- mSelfActivity,
- "Must accept at least 1 type of symbols.",
- Toast.LENGTH_LONG
- );
- t.show();
- }
- }//onClick
- };//OnClickListener
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- //setContentView(R.layout.activity_pass_gen);
- setContentView(R.layout.rl_pass_gen_v1);
- init();
- }//onCreate
- void init(){
- //1 - assocs
- mSelfActivity = this;
- mContext = this;
- mTvCurrentSettings = findViewById(R.id.idTvCurrentSettings);
- mSp = this.getSharedPreferences(
- SETTINGS_DB,
- MODE_PRIVATE
- );
- mSpPwds = this.getSharedPreferences(
- PASSWORDS_DB,
- MODE_PRIVATE
- );
- mBtnGenPass = findViewById(
- R.id.idBtnGenPass
- );
- mLvPasswords = findViewById(
- R.id.idLvPasswords
- );
- //2 behaviors
- if(mBtnGenPass!=null)
- mBtnGenPass.setOnClickListener
- (mClickHandler);
- if(mLvPasswords!=null){
- mPwds = new ArrayList<String>();
- mAd = new ArrayAdapter<String>(
- mContext,
- android.R.layout.simple_list_item_1,
- mPwds
- );
- mLvPasswords.setAdapter(mAd);
- }
- //3
- loadSettingsFromSP();
- }//init
- int miSize;
- boolean mbCL, mbSL, mbDigits;
- String mSpecialSymbols;
- public void loadSettingsFromSP(){
- if (mSp!=null){
- // leitura
- miSize = mSp.getInt(KEY_SIZE, DEFAULT_SIZE);
- mbCL = mSp.getBoolean(KEY_BCL, DEFAULT_BCL);
- mbSL = mSp.getBoolean(KEY_BSL, DEFAULT_BSL);
- mbDigits = mSp.getBoolean(KEY_BDigits, DEFAULT_BDigits);
- mSpecialSymbols = mSp.getString(KEY_SS, getString(R.string.strSSDefault));
- String strDashboard =
- String.format(
- "size:%d CL:%s SL:%s D:%s SS:%s",
- miSize,
- mbCL ? "YES" : "NO",
- mbSL ? "YES" : "NO",
- mbDigits ? "YES" : "NO",
- mSpecialSymbols
- );
- mTvCurrentSettings.setText(strDashboard);
- }
- }//loadSettingsFromSP
- @Override
- public boolean onCreateOptionsMenu(Menu pMenu) {
- MenuInflater minf = this.getMenuInflater();
- minf.inflate(
- R.menu.nav_menu,
- pMenu
- );
- return super.onCreateOptionsMenu(pMenu);
- }//onCreateOptionsMenu
- // menu items' behavior
- @Override
- public boolean onOptionsItemSelected(@NonNull MenuItem item) {
- switch(item.getItemId()){
- case R.id.idMenuItemLoad:
- actionLoad();
- break;
- case R.id.idMenuItemSave:
- actionSave();
- break;
- case R.id.idMenuItemClear:
- actionClear();
- break;
- case R.id.idMenuItemGoSettings:
- actionGoSettings();
- break;
- case R.id.idMenuItemQuitApp:
- actionQuitApp();
- break;
- }//switch
- return super.onOptionsItemSelected(item);
- }//onOptionsItemSelected
- void actionGoSettings(){
- Intent goSettings = new Intent(
- PassGen.this,
- PassSettings.class
- );
- if(goSettings!=null){
- startActivity(goSettings);
- }//if
- }//actionGoSettings
- void actionQuitApp(){
- Intent quit = new Intent(Intent.ACTION_MAIN);
- if (quit!=null){
- quit.addCategory(Intent.CATEGORY_HOME);
- quit.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- startActivity(quit);
- this.finish();
- }
- }//actionQuitApp
- /*
- MANUTENÇÃO DE ESTADO
- */
- /*
- O que não quisermos perder
- da visualização na interface
- deve ser preservado agora
- */
- public final static String KEY_PWDS = "KEY_PWDS";
- @Override
- protected void onSaveInstanceState(@NonNull Bundle outState) {
- // escrever na Bundle, em chave adequada
- // a lista das passwords
- if(outState!=null) {
- outState.putStringArrayList(
- KEY_PWDS,
- mPwds
- );
- }//if
- super.onSaveInstanceState(outState);
- }//onSaveInstanceState
- SharedPreferences mSpPwds;
- int limparTodasAsPasswordsEmSP(){
- SharedPreferences.Editor ed = mSpPwds.edit();
- if(ed!=null){
- int iQuantasDestruidas = mPwds.size();
- mPwds.clear(); //limpa em RAM
- Set<String> vazio = new HashSet<>();
- ed.putStringSet(KEY_PWDS, vazio); //limpa em memória não-volátil
- ed.commit();
- mAd.notifyDataSetChanged();
- return iQuantasDestruidas;
- }
- return 0;
- }//limparTodasAsPasswordsEmSP
- int gravarTodasAsPasswordsEmSP(){
- SharedPreferences.Editor ed = mSpPwds.edit();
- if (ed!=null){
- Set<String> stringSetPwds =
- new HashSet<>();
- stringSetPwds.addAll(mPwds);
- ed.putStringSet(
- KEY_PWDS,
- stringSetPwds
- );
- ed.commit();
- return stringSetPwds.size(); //2022-11-23
- }//if ok SharedPreferences
- return 0;
- }//gravarTodasAsPasswordsEmSP
- int recuperarTodasAsPasswordsDeSP(){
- if(mSpPwds!=null){
- Set<String> stringSetPwds =
- mSpPwds.getStringSet(KEY_PWDS, null);
- mPwds.clear();
- mPwds.addAll(stringSetPwds);
- mAd.notifyDataSetChanged();
- return stringSetPwds.size();
- }
- return 0;
- }//recuperarTodasAsPasswordsDeSP
- /*
- automaticamente chamado para recuperar
- dados preservados pelo sistema nalguma Bundle
- */
- @Override
- protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
- if(savedInstanceState!=null){
- boolean bKeyPwdsExists =
- savedInstanceState.containsKey(KEY_PWDS);
- if(bKeyPwdsExists){
- ArrayList<String> al =
- savedInstanceState.getStringArrayList(
- KEY_PWDS
- );
- //mPwds = al;
- if(al!=null && al.size()>0){
- mPwds.clear();
- mPwds.addAll(al);
- /*
- for(String p : al){
- mPwds.add(p);
- }
- */
- }
- mAd.notifyDataSetChanged();
- }//if
- }
- super.onRestoreInstanceState(savedInstanceState);
- }
- void actionLoad(){
- int iQuantas = recuperarTodasAsPasswordsDeSP();
- String strMsg = String.format(
- "%d password(s) loaded",
- iQuantas
- );
- Toast t = Toast.makeText(
- this,
- strMsg,
- Toast.LENGTH_LONG
- );
- t.show();
- }//actionLoad
- void actionSave(){
- int iQuantas = gravarTodasAsPasswordsEmSP();
- String strMsg = String.format(
- "%d passwords saved",
- iQuantas
- );
- Toast t = Toast.makeText(
- this,
- strMsg,
- Toast.LENGTH_LONG
- );
- t.show();
- }//actionSave
- void actionClear(){
- int iQuantas = limparTodasAsPasswordsEmSP();
- String strMsg = String.format(
- "%d passwords cleared.",
- iQuantas
- );
- Toast t = Toast.makeText(
- this,
- strMsg,
- Toast.LENGTH_LONG
- );
- t.show();
- }//actionClear
- }//PassGen
Advertisement
Add Comment
Please, Sign In to add comment