From 40700c0bfa0c7db96aca43c6b9f14a83d5dd9fec Mon Sep 17 00:00:00 2001 From: Yash Krishan Verma Date: Tue, 2 Oct 2018 19:59:11 +0530 Subject: [PATCH 1/6] Add Set Favorite account functionality --- .../activity/MainActivity.java | 4 +- .../adapter/PasswordRecyclerViewAdapter.java | 27 +++++++++-- .../database/PasswordDatabase.java | 28 ++++++++--- .../hp/passwordStorage/model/Accounts.java | 12 ++++- .../main/res/drawable/ic_star_black_24dp.xml | 9 ++++ .../drawable/ic_star_border_black_24dp.xml | 9 ++++ .../layout-v21/linear_layout_simple_text.xml | 48 ++++++++++++------- .../res/layout/linear_layout_simple_text.xml | 48 ++++++++++++------- 8 files changed, 139 insertions(+), 46 deletions(-) create mode 100644 app/src/main/res/drawable/ic_star_black_24dp.xml create mode 100644 app/src/main/res/drawable/ic_star_border_black_24dp.xml diff --git a/app/src/main/java/com/nitsilchar/hp/passwordStorage/activity/MainActivity.java b/app/src/main/java/com/nitsilchar/hp/passwordStorage/activity/MainActivity.java index 28a5de7..34faa0c 100644 --- a/app/src/main/java/com/nitsilchar/hp/passwordStorage/activity/MainActivity.java +++ b/app/src/main/java/com/nitsilchar/hp/passwordStorage/activity/MainActivity.java @@ -145,8 +145,8 @@ public void onClick(DialogInterface dialog, int which) { if(!isDuplicate(collection,acnt.getText().toString())){ if(!TextUtils.isEmpty(acnt.getText().toString())){ passwordDatabase.addCredentials(getApplicationContext(),acnt.getText().toString(), - pass.getText().toString(), description.getText().toString(), link.getText().toString()); - Accounts account = new Accounts(acnt.getText().toString(), pass.getText().toString(), description.getText().toString(), link.getText().toString()); + pass.getText().toString(), description.getText().toString(), link.getText().toString(), "0"); + Accounts account = new Accounts(acnt.getText().toString(), pass.getText().toString(), description.getText().toString(), link.getText().toString(), "0"); accountsList.add(account); adapter.notifyDataSetChanged(); Toast.makeText(getApplicationContext(), diff --git a/app/src/main/java/com/nitsilchar/hp/passwordStorage/adapter/PasswordRecyclerViewAdapter.java b/app/src/main/java/com/nitsilchar/hp/passwordStorage/adapter/PasswordRecyclerViewAdapter.java index ee258ac..e432f69 100644 --- a/app/src/main/java/com/nitsilchar/hp/passwordStorage/adapter/PasswordRecyclerViewAdapter.java +++ b/app/src/main/java/com/nitsilchar/hp/passwordStorage/adapter/PasswordRecyclerViewAdapter.java @@ -7,6 +7,7 @@ import android.content.res.TypedArray; import android.graphics.Color; import android.support.v7.widget.RecyclerView; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -19,7 +20,6 @@ import android.widget.Filterable; import com.nitsilchar.hp.passwordStorage.R; import com.nitsilchar.hp.passwordStorage.activity.DetailsActivity; -import com.nitsilchar.hp.passwordStorage.activity.MainActivity; import com.nitsilchar.hp.passwordStorage.activity.SplashActivity; import com.nitsilchar.hp.passwordStorage.database.PasswordDatabase; import com.nitsilchar.hp.passwordStorage.model.Accounts; @@ -57,12 +57,16 @@ public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { } @Override - public void onBindViewHolder(ViewHolder holder, final int position) { + public void onBindViewHolder(final ViewHolder holder, final int position) { holder.accountName.setText(accountsFiltered.get(position).getmAccountName()); holder.description.setText(accountsFiltered.get(position).getmDescription()); holder.iconText.setText(accountsFiltered.get(position).getmAccountName().substring(0,1).toUpperCase()); holder.iconBg.setImageResource(R.drawable.bg_circle); holder.iconBg.setColorFilter(getRandomMaterialColor()); + if (!accountsFiltered.get(position).getmFav().equals("0")) + holder.iconFav.setImageResource(R.drawable.ic_star_black_24dp); + else + holder.iconFav.setImageResource(R.drawable.ic_star_border_black_24dp); holder.accountContainer.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -109,6 +113,20 @@ public void onClick(DialogInterface dialog, int which) { return false; } }); + holder.iconFav.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + String clickedAccount = accountsFiltered.get(position).getmAccountName(); + if (!accountsFiltered.get(position).getmFav().equals("0")){ + passwordDatabase.setFavorite(clickedAccount, "0"); + holder.iconFav.setImageResource(R.drawable.ic_star_border_black_24dp); + } + else{ + passwordDatabase.setFavorite(clickedAccount, "1"); + holder.iconFav.setImageResource(R.drawable.ic_star_black_24dp); + } + } + }); } private int getRandomMaterialColor() { @@ -180,12 +198,15 @@ class ViewHolder extends RecyclerView.ViewHolder { TextView iconText; @BindView(R.id.icon_bg) ImageView iconBg; + @BindView(R.id.icon_fav) + ImageView iconFav; public ViewHolder(View itemView) { super(itemView); + ButterKnife.bind(this,itemView); - itemView.setOnClickListener(new View.OnClickListener() { + itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // send selected contact in callback diff --git a/app/src/main/java/com/nitsilchar/hp/passwordStorage/database/PasswordDatabase.java b/app/src/main/java/com/nitsilchar/hp/passwordStorage/database/PasswordDatabase.java index a19c047..1d67599 100644 --- a/app/src/main/java/com/nitsilchar/hp/passwordStorage/database/PasswordDatabase.java +++ b/app/src/main/java/com/nitsilchar/hp/passwordStorage/database/PasswordDatabase.java @@ -6,8 +6,6 @@ import android.database.sqlite.SQLiteOpenHelper; import android.graphics.Bitmap; import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.Drawable; import android.util.Log; import com.nitsilchar.hp.passwordStorage.model.Accounts; @@ -33,6 +31,7 @@ public final class PasswordDatabase extends SQLiteOpenHelper { public static final String COLUMN_DESCRIPTION = "Description"; public static final String COLUMN_LINK = "Link"; public static final String COLUMN_PHOTO = "Photo"; + public static final String COLUMN_FAV = "Favorite"; public static final String ID = "id"; public static final String PHOTO_TABLE = "Profile"; @@ -44,7 +43,7 @@ public final class PasswordDatabase extends SQLiteOpenHelper { private static final String TABLE_CREATE = "CREATE TABLE " + TABLE_NAME + " (" + COLUMN_ACCOUNT + " TEXT, " + COLUMN_PASSWORD - + " TEXT, " + COLUMN_LINK + " TEXT, " + COLUMN_DESCRIPTION + " TEXT,UNIQUE("+ COLUMN_ACCOUNT + "));"; + + " TEXT, " + COLUMN_LINK + " TEXT, " + COLUMN_FAV + " TEXT, " + COLUMN_DESCRIPTION + " TEXT,UNIQUE("+ COLUMN_ACCOUNT + "));"; private static final String DATABASE_ALTER_CREDENTIALS_DESCR = "ALTER TABLE " + TABLE_NAME + " ADD COLUMN " + COLUMN_DESCRIPTION + " TEXT;"; @@ -66,6 +65,9 @@ public PasswordDatabase(Context context) { public void onCreate(SQLiteDatabase db) { db.execSQL(TABLE_CREATE); db.execSQL(CREATE_PHOTO_TABLE); + Cursor cursor = db.query(TABLE_NAME, null, null, null, null, null + , null); + String[] names = cursor.getColumnNames(); } @Override @@ -88,7 +90,7 @@ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion){ onUpgrade(db, oldVersion, newVersion); } - public void addCredentials(Context context,String account, String password, String description, String link){ + public void addCredentials(Context context,String account, String password, String description, String link, String fav){ SQLiteDatabase db = this.getWritableDatabase(); long newRowId=0; Boolean flag=false; @@ -96,8 +98,9 @@ public void addCredentials(Context context,String account, String password, Stri values.put(COLUMN_ACCOUNT, account); values.put(COLUMN_PASSWORD, password); values.put(COLUMN_DESCRIPTION, description); + values.put(COLUMN_FAV, fav); values.put(COLUMN_LINK, link); - newRowId = db.insert(TABLE_NAME, null, values); + newRowId = db.insert(TABLE_NAME, null, values); } public void deleteRow(String account){ @@ -124,6 +127,18 @@ public int modifyCredentials(String account,String newPass){ return update; } + public int setFavorite(String account, String val){ + + SQLiteDatabase db = this.getWritableDatabase(); + ContentValues contentValues = new ContentValues(); + contentValues.put(COLUMN_FAV, val); + String whereClause = COLUMN_ACCOUNT + " =?"; + String[] whereArgs = new String[]{account}; + int update = db.update(TABLE_NAME, contentValues, whereClause, whereArgs); + return update; + + } + public void deleteAllCredentials(){ SQLiteDatabase db = this.getWritableDatabase(); db.delete(TABLE_NAME, null, null); @@ -213,7 +228,8 @@ public List getAccData(){ String pass = c.getString(c.getColumnIndex(COLUMN_PASSWORD)); String description = c.getString(c.getColumnIndex(COLUMN_DESCRIPTION)); String link = c.getString(c.getColumnIndex(COLUMN_LINK)); - accountData.add(new Accounts(account, pass, description, link)); + String fav = c.getString(c.getColumnIndex(COLUMN_FAV)); + accountData.add(new Accounts(account, pass, description, link, fav)); } while (c.moveToNext()); } diff --git a/app/src/main/java/com/nitsilchar/hp/passwordStorage/model/Accounts.java b/app/src/main/java/com/nitsilchar/hp/passwordStorage/model/Accounts.java index 73e4c26..1ffe907 100644 --- a/app/src/main/java/com/nitsilchar/hp/passwordStorage/model/Accounts.java +++ b/app/src/main/java/com/nitsilchar/hp/passwordStorage/model/Accounts.java @@ -5,12 +5,14 @@ public class Accounts { private String mPass; private String mDescription; private String mLink; + private String mFav; - public Accounts(String accountName, String pass, String description, String link) { + public Accounts(String accountName, String pass, String description, String link, String fav) { mAccountName = accountName; mPass = pass; mDescription = description; mLink = link; + mFav = fav; } public Accounts(){ @@ -49,4 +51,12 @@ public String getmLink() { public void setmLink(String mLink) { this.mLink = mLink; } + + public String getmFav() { + return mFav; + } + + public void setmFav(String mFav) { + this.mFav = mFav; + } } diff --git a/app/src/main/res/drawable/ic_star_black_24dp.xml b/app/src/main/res/drawable/ic_star_black_24dp.xml new file mode 100644 index 0000000..a87ca09 --- /dev/null +++ b/app/src/main/res/drawable/ic_star_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_star_border_black_24dp.xml b/app/src/main/res/drawable/ic_star_border_black_24dp.xml new file mode 100644 index 0000000..b36536b --- /dev/null +++ b/app/src/main/res/drawable/ic_star_border_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout-v21/linear_layout_simple_text.xml b/app/src/main/res/layout-v21/linear_layout_simple_text.xml index ff4ccb0..de6a95c 100644 --- a/app/src/main/res/layout-v21/linear_layout_simple_text.xml +++ b/app/src/main/res/layout-v21/linear_layout_simple_text.xml @@ -12,30 +12,44 @@ android:id="@+id/account_container" android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="vertical" + android:orientation="horizontal" android:paddingLeft="@dimen/activity_horizontal_margin" android:layout_toRightOf="@+id/icon_container"> - + android:layout_weight="1" + android:orientation="vertical"> - + + + + + + + android:layout_gravity="center"/> diff --git a/app/src/main/res/layout/linear_layout_simple_text.xml b/app/src/main/res/layout/linear_layout_simple_text.xml index 639c711..f33e2c2 100644 --- a/app/src/main/res/layout/linear_layout_simple_text.xml +++ b/app/src/main/res/layout/linear_layout_simple_text.xml @@ -12,30 +12,44 @@ android:id="@+id/account_container" android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="vertical" + android:orientation="horizontal" android:paddingLeft="@dimen/activity_horizontal_margin" android:layout_toRightOf="@+id/icon_container"> - + android:layout_weight="1" + android:orientation="vertical"> - + + + + + + + android:layout_gravity="center"/> From f99262bf5c3c633ed5e07a237c13cabcf428b1d6 Mon Sep 17 00:00:00 2001 From: Yash Krishan Verma Date: Tue, 2 Oct 2018 20:24:49 +0530 Subject: [PATCH 2/6] Resolve PMD issues --- .../passwordStorage/adapter/PasswordRecyclerViewAdapter.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/src/main/java/com/nitsilchar/hp/passwordStorage/adapter/PasswordRecyclerViewAdapter.java b/app/src/main/java/com/nitsilchar/hp/passwordStorage/adapter/PasswordRecyclerViewAdapter.java index e432f69..01f6604 100644 --- a/app/src/main/java/com/nitsilchar/hp/passwordStorage/adapter/PasswordRecyclerViewAdapter.java +++ b/app/src/main/java/com/nitsilchar/hp/passwordStorage/adapter/PasswordRecyclerViewAdapter.java @@ -7,7 +7,6 @@ import android.content.res.TypedArray; import android.graphics.Color; import android.support.v7.widget.RecyclerView; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -199,7 +198,7 @@ class ViewHolder extends RecyclerView.ViewHolder { @BindView(R.id.icon_bg) ImageView iconBg; @BindView(R.id.icon_fav) - ImageView iconFav; + private ImageView iconFav; public ViewHolder(View itemView) { super(itemView); From 56af8f4b99f5430439a1168f500580c7e7a1d603 Mon Sep 17 00:00:00 2001 From: Yash Krishan Verma Date: Thu, 4 Oct 2018 14:04:51 +0530 Subject: [PATCH 3/6] Screenshot added For Added Favorite account functionality --- Screenshots/Screenshot_2018-10-04-13-13-12.png | Bin 0 -> 47496 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Screenshots/Screenshot_2018-10-04-13-13-12.png diff --git a/Screenshots/Screenshot_2018-10-04-13-13-12.png b/Screenshots/Screenshot_2018-10-04-13-13-12.png new file mode 100644 index 0000000000000000000000000000000000000000..a699afe1cb592521e97db726c59a71e5e0606164 GIT binary patch literal 47496 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 z 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 Date: Fri, 5 Oct 2018 19:36:52 +0530 Subject: [PATCH 4/6] Fix adapter update issue --- .../adapter/PasswordRecyclerViewAdapter.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/nitsilchar/hp/passwordStorage/adapter/PasswordRecyclerViewAdapter.java b/app/src/main/java/com/nitsilchar/hp/passwordStorage/adapter/PasswordRecyclerViewAdapter.java index 01f6604..77bc894 100644 --- a/app/src/main/java/com/nitsilchar/hp/passwordStorage/adapter/PasswordRecyclerViewAdapter.java +++ b/app/src/main/java/com/nitsilchar/hp/passwordStorage/adapter/PasswordRecyclerViewAdapter.java @@ -117,13 +117,14 @@ public void onClick(DialogInterface dialog, int which) { public void onClick(View view) { String clickedAccount = accountsFiltered.get(position).getmAccountName(); if (!accountsFiltered.get(position).getmFav().equals("0")){ - passwordDatabase.setFavorite(clickedAccount, "0"); - holder.iconFav.setImageResource(R.drawable.ic_star_border_black_24dp); + if (passwordDatabase.setFavorite(clickedAccount, "0") == 1) + accountsFiltered.get(position).setmFav("0"); } else{ - passwordDatabase.setFavorite(clickedAccount, "1"); - holder.iconFav.setImageResource(R.drawable.ic_star_black_24dp); + if (passwordDatabase.setFavorite(clickedAccount, "1") == 1) + accountsFiltered.get(position).setmFav("1"); } + notifyDataSetChanged(); } }); } @@ -198,7 +199,7 @@ class ViewHolder extends RecyclerView.ViewHolder { @BindView(R.id.icon_bg) ImageView iconBg; @BindView(R.id.icon_fav) - private ImageView iconFav; + ImageView iconFav; public ViewHolder(View itemView) { super(itemView); From 24beeaea4de356c09aebaeeca6adde790c34ed45 Mon Sep 17 00:00:00 2001 From: Yash Krishan Verma Date: Fri, 5 Oct 2018 19:53:45 +0530 Subject: [PATCH 5/6] Fix PMD issue --- .../hp/passwordStorage/adapter/PasswordRecyclerViewAdapter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/nitsilchar/hp/passwordStorage/adapter/PasswordRecyclerViewAdapter.java b/app/src/main/java/com/nitsilchar/hp/passwordStorage/adapter/PasswordRecyclerViewAdapter.java index 77bc894..35b99cb 100644 --- a/app/src/main/java/com/nitsilchar/hp/passwordStorage/adapter/PasswordRecyclerViewAdapter.java +++ b/app/src/main/java/com/nitsilchar/hp/passwordStorage/adapter/PasswordRecyclerViewAdapter.java @@ -199,7 +199,7 @@ class ViewHolder extends RecyclerView.ViewHolder { @BindView(R.id.icon_bg) ImageView iconBg; @BindView(R.id.icon_fav) - ImageView iconFav; + private ImageView iconFav; public ViewHolder(View itemView) { super(itemView); From d74c7e7039d07b5f75d1ef4a550164be68205a5b Mon Sep 17 00:00:00 2001 From: Yash Krishan Verma Date: Thu, 11 Oct 2018 14:14:13 +0530 Subject: [PATCH 6/6] Remove private keyword --- .../hp/passwordStorage/adapter/PasswordRecyclerViewAdapter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/nitsilchar/hp/passwordStorage/adapter/PasswordRecyclerViewAdapter.java b/app/src/main/java/com/nitsilchar/hp/passwordStorage/adapter/PasswordRecyclerViewAdapter.java index 35b99cb..77bc894 100644 --- a/app/src/main/java/com/nitsilchar/hp/passwordStorage/adapter/PasswordRecyclerViewAdapter.java +++ b/app/src/main/java/com/nitsilchar/hp/passwordStorage/adapter/PasswordRecyclerViewAdapter.java @@ -199,7 +199,7 @@ class ViewHolder extends RecyclerView.ViewHolder { @BindView(R.id.icon_bg) ImageView iconBg; @BindView(R.id.icon_fav) - private ImageView iconFav; + ImageView iconFav; public ViewHolder(View itemView) { super(itemView);