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 0000000..a699afe Binary files /dev/null and b/Screenshots/Screenshot_2018-10-04-13-13-12.png differ 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..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 @@ -19,7 +19,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 +56,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 +112,21 @@ 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")){ + if (passwordDatabase.setFavorite(clickedAccount, "0") == 1) + accountsFiltered.get(position).setmFav("0"); + } + else{ + if (passwordDatabase.setFavorite(clickedAccount, "1") == 1) + accountsFiltered.get(position).setmFav("1"); + } + notifyDataSetChanged(); + } + }); } 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"/>