diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aa724b7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..fb7f4a8 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..526b4c2 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..c66392c --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..7171816 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,38 @@ +plugins { + id 'com.android.application' +} + +android { + compileSdk 31 + + defaultConfig { + applicationId "com.example.workflow" + minSdk 16 + targetSdk 31 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } +} + +dependencies { + + implementation 'androidx.appcompat:appcompat:1.3.1' + implementation 'com.google.android.material:material:1.4.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.1' + testImplementation 'junit:junit:4.+' + androidTestImplementation 'androidx.test.ext:junit:1.1.3' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' +} \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/app/src/androidTest/java/com/example/workflow/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/example/workflow/ExampleInstrumentedTest.java new file mode 100644 index 0000000..1d3f63a --- /dev/null +++ b/app/src/androidTest/java/com/example/workflow/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.example.workflow; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + assertEquals("com.example.workflow", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..2a652db --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/example/workflow/DbHandler.java b/app/src/main/java/com/example/workflow/DbHandler.java new file mode 100644 index 0000000..ba50f7a --- /dev/null +++ b/app/src/main/java/com/example/workflow/DbHandler.java @@ -0,0 +1,68 @@ +package com.example.workflow; + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; + +import androidx.annotation.Nullable; + +public class DbHandler extends SQLiteOpenHelper { + public static final String DBNAME = "Login.db"; + + public DbHandler(Context context) { + super(context, "Login.db", null, 1); + } + + + @Override + public void onCreate(SQLiteDatabase MyDB) { + MyDB.execSQL("CREATE TABLE employee (emp_id Integer Primary Key Autoincrement, first_name Text, Surname Text, Username Text, Password Text)"); + } + + @Override + public void onUpgrade(SQLiteDatabase MyDB, int oldVersion, int newVersion) { + MyDB.execSQL("Drop Table if exists employee"); + } + + public Boolean addEmployee(String Fname, String Sname, String Uname, String Pword){ + SQLiteDatabase MyDB = this.getWritableDatabase(); + ContentValues values = new ContentValues(); + values.put("first_name", Fname); + values.put("Surname", Sname); + values.put("Username", Uname); + values.put("Password", Pword); + long result = MyDB.insert("employee", null, values); + if(result==-1) return false; + else return true; + } + public Boolean checkusername(String username){ + SQLiteDatabase MyDB = this.getReadableDatabase(); + Cursor cursor = MyDB.rawQuery("Select * from employee where username = ?", new String[]{username}); + if(cursor.getCount()>0) + return false; + else + return true; + } + public Boolean checkuserpass(String username,String Pass){ + SQLiteDatabase MyDB = this.getReadableDatabase(); + Cursor cursor = MyDB.rawQuery("Select * from employee where Username = ? and Password =?", new String[]{username,Pass}); + if(cursor.getCount()>0) + return true; + else + return false; + + } +// public String getName(String username){ +// SQLiteDatabase MyDB = this.getReadableDatabase(); +// Cursor cursor = MyDB.rawQuery("Select first_name from employee where Username = ?" , new String[]{username}); +// final int nameIndex = cursor.getColumnIndex("first_name"); +// String name; +// do { +// name = cursor.getString(nameIndex); +// }while(cursor.moveToNext()); +// return name; +// } + +} diff --git a/app/src/main/java/com/example/workflow/HomeActivity.java b/app/src/main/java/com/example/workflow/HomeActivity.java new file mode 100644 index 0000000..6aeca35 --- /dev/null +++ b/app/src/main/java/com/example/workflow/HomeActivity.java @@ -0,0 +1,29 @@ +package com.example.workflow; + +import androidx.appcompat.app.AppCompatActivity; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.TextView; + +public class HomeActivity extends AppCompatActivity { + TextView textView,profile; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_home); + textView = findViewById(R.id.textView3); + profile = findViewById(R.id.profile); + Intent intent=getIntent(); + String s=intent.getStringExtra(MainActivity.Extra_NAME); + textView.setText("Welcome "+s); + profile.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(HomeActivity.this,Profile.class); + startActivity(intent); + } + }); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/workflow/MainActivity.java b/app/src/main/java/com/example/workflow/MainActivity.java new file mode 100644 index 0000000..2f4fb72 --- /dev/null +++ b/app/src/main/java/com/example/workflow/MainActivity.java @@ -0,0 +1,56 @@ +package com.example.workflow; + +import androidx.appcompat.app.AppCompatActivity; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.AutoCompleteTextView; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +public class MainActivity extends AppCompatActivity { + public static final String Extra_NAME="com.example.workflow.extra.NAME"; + Button login,register; + EditText pass ; + AutoCompleteTextView user; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + login = findViewById(R.id.login); + user = findViewById(R.id.Username); + pass = findViewById(R.id.editTextPass); + register = findViewById(R.id.register); + DbHandler db=new DbHandler(this); + register.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent= new Intent(getApplicationContext(),Register.class); + startActivity(intent); + } + }); + login.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + String username= user.getText().toString(); + String password= pass.getText().toString(); + if(username.equals("")||password.equals("")) + Toast.makeText(MainActivity.this, "* All fields are mandatory", Toast.LENGTH_SHORT).show(); + else{ + if(db.checkusername(username)) + Toast.makeText(MainActivity.this, "User doesn't exist! Please register", Toast.LENGTH_SHORT).show(); + else if(db.checkuserpass(username,password)){ + Toast.makeText(MainActivity.this, "Logged in successfully", Toast.LENGTH_SHORT).show(); + Intent intent=new Intent(getApplicationContext(),HomeActivity.class); + intent.putExtra(Extra_NAME,username); + startActivity(intent); + } + else + Toast.makeText(MainActivity.this, "Invalid Credentials", Toast.LENGTH_SHORT).show(); + } + } + }); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/workflow/Profile.java b/app/src/main/java/com/example/workflow/Profile.java new file mode 100644 index 0000000..e60433b --- /dev/null +++ b/app/src/main/java/com/example/workflow/Profile.java @@ -0,0 +1,14 @@ +package com.example.workflow; + +import androidx.appcompat.app.AppCompatActivity; + +import android.os.Bundle; + +public class Profile extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_profile); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/workflow/Register.java b/app/src/main/java/com/example/workflow/Register.java new file mode 100644 index 0000000..6b73ae4 --- /dev/null +++ b/app/src/main/java/com/example/workflow/Register.java @@ -0,0 +1,64 @@ +package com.example.workflow; + +import androidx.appcompat.app.AppCompatActivity; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.AutoCompleteTextView; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +public class Register extends AppCompatActivity { + EditText Pass,Rpass; + AutoCompleteTextView Name, Sname, User; + Button register,login; + DbHandler db; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_register2); + Pass = findViewById(R.id.Password); + Rpass = findViewById(R.id.RPassword); + Name = findViewById(R.id.FirstName); + Sname = findViewById(R.id.Surname); + User = findViewById(R.id.Username); + register = findViewById(R.id.register); + login = findViewById(R.id.login); + db=new DbHandler(this); + register.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + String username=User.getText().toString(); + String password=Pass.getText().toString(); + String rpassword=Rpass.getText().toString(); + String fname=Name.getText().toString(); + String sname=Sname.getText().toString(); + if(username.equals("")||password.equals("")||rpassword.equals("")||fname.equals("")||sname.equals("")) + Toast.makeText(Register.this, "* All fields are mandatory", Toast.LENGTH_SHORT).show(); + else if(password.equals(rpassword)){ + if(db.checkusername(username)){ + db.addEmployee(fname,sname,username,password); + Toast.makeText(Register.this, "Registration Successful", Toast.LENGTH_SHORT).show(); + Intent intent=new Intent(getApplicationContext(),MainActivity.class); + startActivity(intent); + } + else + Toast.makeText(Register.this, "Username already exists! Please Login", Toast.LENGTH_SHORT).show(); + } + else{ + Toast.makeText(Register.this, "Passwords don't match!", Toast.LENGTH_SHORT).show(); + } + } + }); + login.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent=new Intent(getApplicationContext(),MainActivity.class); + startActivity(intent); + } + }); + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable-mdpi/imagesremovebgpreview2.png b/app/src/main/res/drawable-mdpi/imagesremovebgpreview2.png new file mode 100644 index 0000000..b0ccc79 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/imagesremovebgpreview2.png differ diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..5144b90 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/imageedit_11_6589463763.png b/app/src/main/res/drawable/imageedit_11_6589463763.png new file mode 100644 index 0000000..22f6c4c Binary files /dev/null and b/app/src/main/res/drawable/imageedit_11_6589463763.png differ diff --git a/app/src/main/res/drawable/imageedit_14_5874659451.png b/app/src/main/res/drawable/imageedit_14_5874659451.png new file mode 100644 index 0000000..4a8d19e Binary files /dev/null and b/app/src/main/res/drawable/imageedit_14_5874659451.png differ diff --git a/app/src/main/res/drawable/imageedit_4_8851038796.jpg b/app/src/main/res/drawable/imageedit_4_8851038796.jpg new file mode 100644 index 0000000..d86751c Binary files /dev/null and b/app/src/main/res/drawable/imageedit_4_8851038796.jpg differ diff --git a/app/src/main/res/drawable/pngtree_outline_user_icon_png_image_1727916_removebg_preview.png b/app/src/main/res/drawable/pngtree_outline_user_icon_png_image_1727916_removebg_preview.png new file mode 100644 index 0000000..95b9bad Binary files /dev/null and b/app/src/main/res/drawable/pngtree_outline_user_icon_png_image_1727916_removebg_preview.png differ diff --git a/app/src/main/res/drawable/vector_notice_board_outline_icon_260nw_1950592777.jpg b/app/src/main/res/drawable/vector_notice_board_outline_icon_260nw_1950592777.jpg new file mode 100644 index 0000000..f9febb5 Binary files /dev/null and b/app/src/main/res/drawable/vector_notice_board_outline_icon_260nw_1950592777.jpg differ diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml new file mode 100644 index 0000000..1ab118e --- /dev/null +++ b/app/src/main/res/layout/activity_home.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..e0acff1 --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,86 @@ + + + +