From dbc812e5aaa4ca9ef8adc0d249bd398c0878b0e8 Mon Sep 17 00:00:00 2001 From: fazil-ozil <60657039+fazil-ozil@users.noreply.github.com> Date: Fri, 25 Jun 2021 18:27:13 +0530 Subject: [PATCH] FirstCommit --- Hmos/Muhammed Fazil K/Userlogin/.gitignore | 15 ++ .../Userlogin/.idea/.gitignore | 3 + .../Userlogin/.idea/compiler.xml | 6 + .../Userlogin/.idea/gradle.xml | 22 ++ .../Userlogin/.idea/jarRepositories.xml | 30 +++ .../Muhammed Fazil K/Userlogin/.idea/misc.xml | 4 + .../phone/phoneSettingConfig_1809599381.json | 25 +++ .../.idea/previewer/previewConfig.json | 9 + Hmos/Muhammed Fazil K/Userlogin/build.gradle | 37 ++++ .../Userlogin/entry/.gitignore | 1 + .../Userlogin/entry/build.gradle | 29 +++ .../Userlogin/entry/proguard-rules.pro | 1 + .../Userlogin/entry/src/main/config.json | 49 +++++ .../com/example/userlogin/MainAbility.java | 13 ++ .../com/example/userlogin/MyApplication.java | 10 + .../example/userlogin/Utils/Constants.java | 20 ++ .../java/com/example/userlogin/data/User.java | 70 +++++++ .../example/userlogin/data/UserDatabase.java | 8 + .../example/userlogin/slice/LoginSlice.java | 114 ++++++++++ .../userlogin/slice/MainAbilitySlice.java | 40 ++++ .../example/userlogin/slice/SignupSlice.java | 193 +++++++++++++++++ .../example/userlogin/slice/WelcomeSlice.java | 19 ++ .../main/resources/base/element/color.json | 16 ++ .../main/resources/base/element/float.json | 44 ++++ .../main/resources/base/element/string.json | 76 +++++++ .../base/graphic/background_ability_main.xml | 6 + .../main/resources/base/graphic/button_bg.xml | 7 + .../resources/base/layout/ability_main.xml | 53 +++++ .../main/resources/base/layout/login_page.xml | 73 +++++++ .../resources/base/layout/signup_page.xml | 194 ++++++++++++++++++ .../resources/base/layout/welcome_page.xml | 21 ++ .../src/main/resources/base/media/icon.png | Bin 0 -> 6790 bytes .../Userlogin/entry/src/ohosTest/config.json | 41 ++++ .../example/userlogin/ExampleOhosTest.java | 14 ++ .../com/example/userlogin/ExampleTest.java | 9 + .../Userlogin/gradle.properties | 10 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 58694 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + Hmos/Muhammed Fazil K/Userlogin/gradlew | 183 +++++++++++++++++ Hmos/Muhammed Fazil K/Userlogin/gradlew.bat | 103 ++++++++++ .../Userlogin/settings.gradle | 1 + 41 files changed, 1574 insertions(+) create mode 100644 Hmos/Muhammed Fazil K/Userlogin/.gitignore create mode 100644 Hmos/Muhammed Fazil K/Userlogin/.idea/.gitignore create mode 100644 Hmos/Muhammed Fazil K/Userlogin/.idea/compiler.xml create mode 100644 Hmos/Muhammed Fazil K/Userlogin/.idea/gradle.xml create mode 100644 Hmos/Muhammed Fazil K/Userlogin/.idea/jarRepositories.xml create mode 100644 Hmos/Muhammed Fazil K/Userlogin/.idea/misc.xml create mode 100644 Hmos/Muhammed Fazil K/Userlogin/.idea/previewer/phone/phoneSettingConfig_1809599381.json create mode 100644 Hmos/Muhammed Fazil K/Userlogin/.idea/previewer/previewConfig.json create mode 100644 Hmos/Muhammed Fazil K/Userlogin/build.gradle create mode 100644 Hmos/Muhammed Fazil K/Userlogin/entry/.gitignore create mode 100644 Hmos/Muhammed Fazil K/Userlogin/entry/build.gradle create mode 100644 Hmos/Muhammed Fazil K/Userlogin/entry/proguard-rules.pro create mode 100644 Hmos/Muhammed Fazil K/Userlogin/entry/src/main/config.json create mode 100644 Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/MainAbility.java create mode 100644 Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/MyApplication.java create mode 100644 Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/Utils/Constants.java create mode 100644 Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/data/User.java create mode 100644 Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/data/UserDatabase.java create mode 100644 Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/slice/LoginSlice.java create mode 100644 Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/slice/MainAbilitySlice.java create mode 100644 Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/slice/SignupSlice.java create mode 100644 Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/slice/WelcomeSlice.java create mode 100644 Hmos/Muhammed Fazil K/Userlogin/entry/src/main/resources/base/element/color.json create mode 100644 Hmos/Muhammed Fazil K/Userlogin/entry/src/main/resources/base/element/float.json create mode 100644 Hmos/Muhammed Fazil K/Userlogin/entry/src/main/resources/base/element/string.json create mode 100644 Hmos/Muhammed Fazil K/Userlogin/entry/src/main/resources/base/graphic/background_ability_main.xml create mode 100644 Hmos/Muhammed Fazil K/Userlogin/entry/src/main/resources/base/graphic/button_bg.xml create mode 100644 Hmos/Muhammed Fazil K/Userlogin/entry/src/main/resources/base/layout/ability_main.xml create mode 100644 Hmos/Muhammed Fazil K/Userlogin/entry/src/main/resources/base/layout/login_page.xml create mode 100644 Hmos/Muhammed Fazil K/Userlogin/entry/src/main/resources/base/layout/signup_page.xml create mode 100644 Hmos/Muhammed Fazil K/Userlogin/entry/src/main/resources/base/layout/welcome_page.xml create mode 100644 Hmos/Muhammed Fazil K/Userlogin/entry/src/main/resources/base/media/icon.png create mode 100644 Hmos/Muhammed Fazil K/Userlogin/entry/src/ohosTest/config.json create mode 100644 Hmos/Muhammed Fazil K/Userlogin/entry/src/ohosTest/java/com/example/userlogin/ExampleOhosTest.java create mode 100644 Hmos/Muhammed Fazil K/Userlogin/entry/src/test/java/com/example/userlogin/ExampleTest.java create mode 100644 Hmos/Muhammed Fazil K/Userlogin/gradle.properties create mode 100644 Hmos/Muhammed Fazil K/Userlogin/gradle/wrapper/gradle-wrapper.jar create mode 100644 Hmos/Muhammed Fazil K/Userlogin/gradle/wrapper/gradle-wrapper.properties create mode 100644 Hmos/Muhammed Fazil K/Userlogin/gradlew create mode 100644 Hmos/Muhammed Fazil K/Userlogin/gradlew.bat create mode 100644 Hmos/Muhammed Fazil K/Userlogin/settings.gradle diff --git a/Hmos/Muhammed Fazil K/Userlogin/.gitignore b/Hmos/Muhammed Fazil K/Userlogin/.gitignore new file mode 100644 index 00000000..37a4eb8b --- /dev/null +++ b/Hmos/Muhammed Fazil K/Userlogin/.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 +/entry/.preview +.cxx diff --git a/Hmos/Muhammed Fazil K/Userlogin/.idea/.gitignore b/Hmos/Muhammed Fazil K/Userlogin/.idea/.gitignore new file mode 100644 index 00000000..26d33521 --- /dev/null +++ b/Hmos/Muhammed Fazil K/Userlogin/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/Hmos/Muhammed Fazil K/Userlogin/.idea/compiler.xml b/Hmos/Muhammed Fazil K/Userlogin/.idea/compiler.xml new file mode 100644 index 00000000..61a9130c --- /dev/null +++ b/Hmos/Muhammed Fazil K/Userlogin/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Hmos/Muhammed Fazil K/Userlogin/.idea/gradle.xml b/Hmos/Muhammed Fazil K/Userlogin/.idea/gradle.xml new file mode 100644 index 00000000..0efd9bc1 --- /dev/null +++ b/Hmos/Muhammed Fazil K/Userlogin/.idea/gradle.xml @@ -0,0 +1,22 @@ + + + + + + + \ No newline at end of file diff --git a/Hmos/Muhammed Fazil K/Userlogin/.idea/jarRepositories.xml b/Hmos/Muhammed Fazil K/Userlogin/.idea/jarRepositories.xml new file mode 100644 index 00000000..1dfcd020 --- /dev/null +++ b/Hmos/Muhammed Fazil K/Userlogin/.idea/jarRepositories.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Hmos/Muhammed Fazil K/Userlogin/.idea/misc.xml b/Hmos/Muhammed Fazil K/Userlogin/.idea/misc.xml new file mode 100644 index 00000000..58918f50 --- /dev/null +++ b/Hmos/Muhammed Fazil K/Userlogin/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Hmos/Muhammed Fazil K/Userlogin/.idea/previewer/phone/phoneSettingConfig_1809599381.json b/Hmos/Muhammed Fazil K/Userlogin/.idea/previewer/phone/phoneSettingConfig_1809599381.json new file mode 100644 index 00000000..69beee7f --- /dev/null +++ b/Hmos/Muhammed Fazil K/Userlogin/.idea/previewer/phone/phoneSettingConfig_1809599381.json @@ -0,0 +1,25 @@ +{ + "setting": { + "1.0.1": { + "Language": { + "args": { + "Language": "zh_CN" + } + } + } + }, + "frontend": { + "1.0.0": { + "Resolution": { + "args": { + "Resolution": "360*780" + } + }, + "DeviceType": { + "args": { + "DeviceType": "phone" + } + } + } + } +} \ No newline at end of file diff --git a/Hmos/Muhammed Fazil K/Userlogin/.idea/previewer/previewConfig.json b/Hmos/Muhammed Fazil K/Userlogin/.idea/previewer/previewConfig.json new file mode 100644 index 00000000..fabab7ee --- /dev/null +++ b/Hmos/Muhammed Fazil K/Userlogin/.idea/previewer/previewConfig.json @@ -0,0 +1,9 @@ +{ + "1.0.0": { + "LastPreviewDevice": { + "X:\\hmosProjects\\Userlogin\\entry": [ + "phone" + ] + } + } +} \ No newline at end of file diff --git a/Hmos/Muhammed Fazil K/Userlogin/build.gradle b/Hmos/Muhammed Fazil K/Userlogin/build.gradle new file mode 100644 index 00000000..9ec29b00 --- /dev/null +++ b/Hmos/Muhammed Fazil K/Userlogin/build.gradle @@ -0,0 +1,37 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +apply plugin: 'com.huawei.ohos.app' + +ohos { + compileSdkVersion 5 + defaultConfig { + compatibleSdkVersion 4 + } +} + +buildscript { + repositories { + maven { + url 'https://repo.huaweicloud.com/repository/maven/' + } + maven { + url 'https://developer.huawei.com/repo/' + } + jcenter() + } + dependencies { + classpath 'com.huawei.ohos:hap:2.4.2.7' + classpath 'com.huawei.ohos:decctest:1.0.0.7' + } +} + +allprojects { + repositories { + maven { + url 'https://repo.huaweicloud.com/repository/maven/' + } + maven { + url 'https://developer.huawei.com/repo/' + } + jcenter() + } +} diff --git a/Hmos/Muhammed Fazil K/Userlogin/entry/.gitignore b/Hmos/Muhammed Fazil K/Userlogin/entry/.gitignore new file mode 100644 index 00000000..796b96d1 --- /dev/null +++ b/Hmos/Muhammed Fazil K/Userlogin/entry/.gitignore @@ -0,0 +1 @@ +/build diff --git a/Hmos/Muhammed Fazil K/Userlogin/entry/build.gradle b/Hmos/Muhammed Fazil K/Userlogin/entry/build.gradle new file mode 100644 index 00000000..cce82705 --- /dev/null +++ b/Hmos/Muhammed Fazil K/Userlogin/entry/build.gradle @@ -0,0 +1,29 @@ +apply plugin: 'com.huawei.ohos.hap' +apply plugin: 'com.huawei.ohos.decctest' +ohos { + compileSdkVersion 5 + defaultConfig { + compatibleSdkVersion 4 + } + buildTypes { + release { + proguardOpt { + proguardEnabled false + rulesFiles 'proguard-rules.pro' + } + } + } + compileOptions{ + annotationEnabled true + } + +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar', '*.har']) + testImplementation 'junit:junit:4.13' + ohosTestImplementation 'com.huawei.ohos.testkit:runner:1.0.0.100' +} +decc { + supportType = ['html','xml'] +} diff --git a/Hmos/Muhammed Fazil K/Userlogin/entry/proguard-rules.pro b/Hmos/Muhammed Fazil K/Userlogin/entry/proguard-rules.pro new file mode 100644 index 00000000..f7666e47 --- /dev/null +++ b/Hmos/Muhammed Fazil K/Userlogin/entry/proguard-rules.pro @@ -0,0 +1 @@ +# config module specific ProGuard rules here. \ No newline at end of file diff --git a/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/config.json b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/config.json new file mode 100644 index 00000000..86493781 --- /dev/null +++ b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/config.json @@ -0,0 +1,49 @@ +{ + "app": { + "bundleName": "com.example.userlogin", + "vendor": "example", + "version": { + "code": 1000000, + "name": "1.0.0" + }, + "apiVersion": { + "compatible": 4, + "target": 5, + "releaseType": "Release" + } + }, + "deviceConfig": {}, + "module": { + "package": "com.example.userlogin", + "name": ".MyApplication", + "deviceType": [ + "phone" + ], + "distro": { + "deliveryWithInstall": true, + "moduleName": "entry", + "moduleType": "entry" + }, + "abilities": [ + { + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ], + "orientation": "unspecified", + "name": "com.example.userlogin.MainAbility", + "icon": "$media:icon", + "description": "$string:mainability_description", + "label": "$string:app_name", + "type": "page", + "launchType": "standard" + } + ] + } +} \ No newline at end of file diff --git a/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/MainAbility.java b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/MainAbility.java new file mode 100644 index 00000000..298902d2 --- /dev/null +++ b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/MainAbility.java @@ -0,0 +1,13 @@ +package com.example.userlogin; + +import com.example.userlogin.slice.MainAbilitySlice; +import ohos.aafwk.ability.Ability; +import ohos.aafwk.content.Intent; + +public class MainAbility extends Ability { + @Override + public void onStart(Intent intent) { + super.onStart(intent); + super.setMainRoute(MainAbilitySlice.class.getName()); + } +} diff --git a/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/MyApplication.java b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/MyApplication.java new file mode 100644 index 00000000..0c95d6a2 --- /dev/null +++ b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/MyApplication.java @@ -0,0 +1,10 @@ +package com.example.userlogin; + +import ohos.aafwk.ability.AbilityPackage; + +public class MyApplication extends AbilityPackage { + @Override + public void onInitialize() { + super.onInitialize(); + } +} diff --git a/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/Utils/Constants.java b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/Utils/Constants.java new file mode 100644 index 00000000..7f607db2 --- /dev/null +++ b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/Utils/Constants.java @@ -0,0 +1,20 @@ +package com.example.userlogin.Utils; + +public class Constants { + public static final String FIRSTNAMEPATTERN = "[A-Z][a-z]*"; + public static final String LASTNAMEPATTERN = "[A-Z][a-z]*"; + public static final String EMAILPATTERN = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$"; + public static final String MOBILEPATTERN = "^\\d{10}$"; + + public static final String DB_NAME="UserDetailsDB.db"; + public static String DB_ALIAS="UserdetailsDB.db"; + public static final String FIRSTNAME_COLUMN="firstName"; + public static final String LASTNAME_COLUMN="lastname"; + public static final String EMAIL_COLUMN="email"; + public static final String PASSWORD_COLUMN="password"; + public static final String MOBILE_COLUMN="mobile"; + public static final String GENDER_COLUMN="gender"; + + + +} diff --git a/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/data/User.java b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/data/User.java new file mode 100644 index 00000000..3c43e6da --- /dev/null +++ b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/data/User.java @@ -0,0 +1,70 @@ +package com.example.userlogin.data; + +import ohos.data.orm.OrmObject; +import ohos.data.orm.annotation.Column; +import ohos.data.orm.annotation.Entity; +import ohos.data.orm.annotation.PrimaryKey; + +@Entity(tableName = "User") +public class User extends OrmObject { + @PrimaryKey + private String email; + @Column + private String firstName; + @Column + private String lastName; + @Column + private String password; + @Column + private String mobile; + @Column + private String gender; + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getMobile() { + return mobile; + } + + public void setMobile(String mobile) { + this.mobile = mobile; + } + + public String getGender() { + return gender; + } + + public void setGender(String gender) { + this.gender = gender; + } +} diff --git a/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/data/UserDatabase.java b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/data/UserDatabase.java new file mode 100644 index 00000000..e2a8142f --- /dev/null +++ b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/data/UserDatabase.java @@ -0,0 +1,8 @@ +package com.example.userlogin.data; + +import ohos.data.orm.OrmDatabase; +import ohos.data.orm.annotation.Database; + +@Database(entities = {User.class},version = 1) +public abstract class UserDatabase extends OrmDatabase { +} diff --git a/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/slice/LoginSlice.java b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/slice/LoginSlice.java new file mode 100644 index 00000000..2bcd76ce --- /dev/null +++ b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/slice/LoginSlice.java @@ -0,0 +1,114 @@ +package com.example.userlogin.slice; + +import com.example.userlogin.ResourceTable; +import com.example.userlogin.Utils.Constants; +import com.example.userlogin.data.User; +import com.example.userlogin.data.UserDatabase; +import ohos.aafwk.ability.AbilitySlice; +import ohos.aafwk.content.Intent; +import ohos.agp.components.Button; +import ohos.agp.components.Component; +import ohos.agp.components.Text; +import ohos.agp.components.TextField; +import ohos.agp.window.dialog.ToastDialog; +import ohos.data.DatabaseHelper; +import ohos.data.orm.OrmContext; +import ohos.data.orm.OrmPredicates; + +import java.util.List; + +public class LoginSlice extends AbilitySlice { + + OrmContext ormContext; + + TextField loginEmail,loginPassword; + Text loginEmailError,loginPasswordError; + Button loginBtn; + + Boolean loginError=true; + + + @Override + protected void onStart(Intent intent) { + super.onStart(intent); + super.setUIContent(ResourceTable.Layout_login_page); + initViews(intent); + setListeners(); + DatabaseHelper databaseHelper=new DatabaseHelper(this); + ormContext=databaseHelper.getOrmContext(Constants.DB_ALIAS,Constants.DB_NAME, UserDatabase.class); + + + + } + + private void initViews(Intent intent) { + loginEmail=(TextField)findComponentById(ResourceTable.Id_login_email); + loginPassword=(TextField)findComponentById(ResourceTable.Id_login_password); + + if(intent!=null){ + loginEmail.setText(intent.getStringParam(Constants.EMAIL_COLUMN)); + loginPassword.setText(intent.getStringParam(Constants.PASSWORD_COLUMN)); + } + + loginEmailError=(Text) findComponentById(ResourceTable.Id_loginerror_email); + loginEmailError.setVisibility(Component.INVISIBLE); + loginPasswordError=(Text) findComponentById(ResourceTable.Id_loginerror_password); + loginPasswordError.setVisibility(Component.INVISIBLE); + + loginBtn=(Button)findComponentById(ResourceTable.Id_final_loginbtn); + } + + private void setListeners() { + + loginEmail.addTextObserver((s, i, i1, i2) -> checkError(s,loginEmailError)); + + loginPassword.addTextObserver((s, i, i1, i2) -> { + if(s.length()<5){ + loginError=true; + loginPasswordError.setText("Enter a strong password"); + loginPasswordError.setVisibility(Component.VISIBLE); + } + else{ + loginError=false; + loginPasswordError.setVisibility(Component.INVISIBLE); + } + }); + + loginBtn.setClickedListener(component -> loginUser()); + } + + private void loginUser() { + if(!loginError){ + OrmPredicates ormPredicates=ormContext.where(User.class); + ormPredicates.equalTo(Constants.EMAIL_COLUMN,loginEmail.getText()); + ormPredicates.and(); + ormPredicates.equalTo(Constants.PASSWORD_COLUMN,loginPassword.getText()); + + List users=ormContext.query(ormPredicates); + if (users == null || users.isEmpty()) { + new ToastDialog(this).setText("User no account").setDuration(2000).show(); + } else { + new ToastDialog(this).setText("User Loggedt").setDuration(2000).show(); + Intent intent=new Intent(); + intent.setParam(Constants.FIRSTNAME_COLUMN,users.get(0).getFirstName()); + present(new WelcomeSlice(), intent); + } + } + } + + private void checkError(String s, Text errEmail) { + boolean matched = s.matches(Constants.EMAILPATTERN); + if (s.isEmpty()) { + errEmail.setText("It is Empty"); + errEmail.setVisibility(Component.VISIBLE); + loginError = true; + } else if (matched) { + errEmail.setVisibility(Component.INVISIBLE); + loginError = false; + } else { + errEmail.setText("Enter Valid data"); + errEmail.setVisibility(Component.VISIBLE); + loginError = true; + } + } +} diff --git a/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/slice/MainAbilitySlice.java b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/slice/MainAbilitySlice.java new file mode 100644 index 00000000..d1cc933b --- /dev/null +++ b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/slice/MainAbilitySlice.java @@ -0,0 +1,40 @@ +package com.example.userlogin.slice; + +import com.example.userlogin.ResourceTable; +import ohos.aafwk.ability.AbilitySlice; +import ohos.aafwk.content.Intent; +import ohos.agp.components.Button; +import ohos.agp.components.Component; + +public class MainAbilitySlice extends AbilitySlice { + Button login,signup; + @Override + public void onStart(Intent intent) { + super.onStart(intent); + super.setUIContent(ResourceTable.Layout_ability_main); + login=(Button)findComponentById(ResourceTable.Id_main_login_button); + signup=(Button)findComponentById(ResourceTable.Id_main_signup_button); + login.setClickedListener(new Component.ClickedListener() { + @Override + public void onClick(Component component) { + present(new LoginSlice(),new Intent()); + } + }); + signup.setClickedListener(new Component.ClickedListener() { + @Override + public void onClick(Component component) { + present(new SignupSlice(),new Intent()); + } + }); + } + + @Override + public void onActive() { + super.onActive(); + } + + @Override + public void onForeground(Intent intent) { + super.onForeground(intent); + } +} diff --git a/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/slice/SignupSlice.java b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/slice/SignupSlice.java new file mode 100644 index 00000000..7ef633d6 --- /dev/null +++ b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/slice/SignupSlice.java @@ -0,0 +1,193 @@ +package com.example.userlogin.slice; + +import com.example.userlogin.data.User; +import com.example.userlogin.data.UserDatabase; +import com.example.userlogin.ResourceTable; +import com.example.userlogin.Utils.Constants; +import ohos.aafwk.ability.AbilitySlice; +import ohos.aafwk.content.Intent; +import ohos.agp.components.*; +import ohos.agp.window.dialog.CommonDialog; +import ohos.agp.window.dialog.IDialog; +import ohos.agp.window.dialog.ToastDialog; +import ohos.data.DatabaseHelper; +import ohos.data.orm.OrmContext; +import ohos.data.orm.OrmPredicates; + +import java.util.List; + +import static ohos.agp.components.ComponentContainer.LayoutConfig.MATCH_CONTENT; + +public class SignupSlice extends AbilitySlice { + + public static final int DIALOG_BOX_WIDTH = 984; + + OrmContext ormContext; + + TextField firstNameField,lastNameField,emailField,passwordField,mobileField; + Text firstNameError,lastNameError,emailError,passwordError,mobileError,genderError; + RadioButton maleBtn,femaleBtn; + Button signupBtn; + + Boolean error=true; + + @Override + protected void onStart(Intent intent) { + super.onStart(intent); + super.setUIContent(ResourceTable.Layout_signup_page); + intiViews(); + setListeners(); + DatabaseHelper databaseHelper=new DatabaseHelper(this); + ormContext=databaseHelper.getOrmContext(Constants.DB_ALIAS,Constants.DB_NAME, UserDatabase.class); + + } + + + + private void intiViews() { + + firstNameField=(TextField)findComponentById(ResourceTable.Id_signup_firstname); + lastNameField=(TextField)findComponentById(ResourceTable.Id_signup_lastname); + emailField=(TextField)findComponentById(ResourceTable.Id_signup_email); + passwordField=(TextField)findComponentById(ResourceTable.Id_signup_password); + mobileField=(TextField)findComponentById(ResourceTable.Id_signup_mobile); + + firstNameError=(Text) findComponentById(ResourceTable.Id_signuperror_firstname); + firstNameError.setVisibility(Component.INVISIBLE); + lastNameError=(Text) findComponentById(ResourceTable.Id_signuperror_lastname); + lastNameError.setVisibility(Component.INVISIBLE); + emailError=(Text) findComponentById(ResourceTable.Id_signuperror_email); + emailError.setVisibility(Component.INVISIBLE); + passwordError=(Text) findComponentById(ResourceTable.Id_signuperror_password); + passwordError.setVisibility(Component.INVISIBLE); + mobileError=(Text) findComponentById(ResourceTable.Id_signuperror_mobile); + mobileError.setVisibility(Component.INVISIBLE); + genderError=(Text) findComponentById(ResourceTable.Id_signuperror_gender); + genderError.setVisibility(Component.INVISIBLE); + + maleBtn=(RadioButton)findComponentById(ResourceTable.Id_male_btn) ; + femaleBtn=(RadioButton)findComponentById(ResourceTable.Id_female_btn) ; + + signupBtn=(Button)findComponentById(ResourceTable.Id_final_signupbtn); + + } + private void setListeners() { + + firstNameField.addTextObserver((s, i, i1, i2) -> checkError(s,firstNameError, Constants.FIRSTNAMEPATTERN)); + + lastNameField.addTextObserver((s, i, i1, i2) -> checkError(s,lastNameError,Constants.LASTNAMEPATTERN)); + + emailField.addTextObserver((s, i, i1, i2) -> checkError(s,emailError,Constants.EMAILPATTERN)); + + passwordField.addTextObserver((s, i, i1, i2) -> { + if(s.length()<5){ + error=true; + passwordError.setText("Enter a strong password"); + passwordError.setVisibility(Component.VISIBLE); + }else{ + error=false; + passwordError.setVisibility(Component.INVISIBLE); + } + }); + + mobileField.addTextObserver((s, i, i1, i2) -> checkError(s,mobileError,Constants.MOBILEPATTERN)); + + if(maleBtn.isChecked()||femaleBtn.isChecked()){ + error=false; + genderError.setVisibility(Component.INVISIBLE); + + } + else { + error=true; + genderError.setText("Please choose a gender"); + genderError.setVisibility(Component.VISIBLE); + + } + + signupBtn.setClickedListener(component -> registerUser()); + + } + + private void registerUser() { + if(!error){ + String gender; + if(maleBtn.isChecked()) + gender="male"; + else + gender="female"; + + User user=new User(); + user.setFirstName(firstNameField.getText()); + user.setLastName(lastNameField.getText()); + user.setEmail(emailField.getText()); + user.setPassword(passwordField.getText()); + user.setMobile(mobileField.getText()); + user.setGender(gender); + if(!userExist(user)){ + ormContext.insert(user); + ormContext.flush(); + new ToastDialog(this).setText("User Inserted Successfully"); + gotoLogin(); + + } + + + + } + + } + + private void gotoLogin() { + CommonDialog commonDialog = new CommonDialog(this); + commonDialog.setTitleText("Sign in Successfull"); + commonDialog.setContentText("Go to login Page"); + commonDialog.setAutoClosable(false); + commonDialog.setSize(DIALOG_BOX_WIDTH, MATCH_CONTENT); + commonDialog.setButton(IDialog.BUTTON1, "Yes", (iDialog, i) -> { + Intent intent = new Intent(); + intent.setParam(Constants.EMAIL_COLUMN, emailField.getText()); + intent.setParam(Constants.PASSWORD_COLUMN, passwordField.getText()); + present(new LoginSlice(), intent); + iDialog.destroy(); + }); + commonDialog.setButton(IDialog.BUTTON2, "No", (iDialog, i) -> { + iDialog.destroy(); + }); + commonDialog.show(); + } + + + private boolean userExist(User user) { + OrmPredicates ormPredicates=ormContext.where(User.class); + ormPredicates.equalTo(Constants.EMAIL_COLUMN,user.getEmail()); + List users= ormContext.query(ormPredicates); + if(users.size()==0 || users==null){ + new ToastDialog(this).setText("User Not Exist").setDuration(1000).show(); + return false; + } + + else + { + new ToastDialog(this).setText("User Already Exist").setDuration(1000).show(); + return true; + } + + } + + + private void checkError(String s, Text errEmail, String pattern) { + boolean matched = s.matches(pattern); + if (s.isEmpty()) { + errEmail.setText("It is Empty"); + errEmail.setVisibility(Component.VISIBLE); + error = true; + } else if (matched) { + errEmail.setVisibility(Component.INVISIBLE); + error = false; + } else { + errEmail.setText("Enter Valid data"); + errEmail.setVisibility(Component.VISIBLE); + error = true; + } + } +} diff --git a/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/slice/WelcomeSlice.java b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/slice/WelcomeSlice.java new file mode 100644 index 00000000..f52e926b --- /dev/null +++ b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/java/com/example/userlogin/slice/WelcomeSlice.java @@ -0,0 +1,19 @@ +package com.example.userlogin.slice; + +import com.example.userlogin.ResourceTable; +import com.example.userlogin.Utils.Constants; +import ohos.aafwk.ability.AbilitySlice; +import ohos.aafwk.content.Intent; +import ohos.agp.components.Text; + +public class WelcomeSlice extends AbilitySlice { + Text welcome; + @Override + protected void onStart(Intent intent) { + super.onStart(intent); + super.setUIContent(ResourceTable.Layout_welcome_page); + welcome=(Text)findComponentById(ResourceTable.Id_welcome_text); + welcome.setText("Welcome "+intent.getStringParam(Constants.FIRSTNAME_COLUMN)); + + } +} diff --git a/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/resources/base/element/color.json b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/resources/base/element/color.json new file mode 100644 index 00000000..79bce704 --- /dev/null +++ b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/resources/base/element/color.json @@ -0,0 +1,16 @@ +{ + "color": [ + { + "name": "red", + "value": "#ff0000" + }, + { + "name": "brown", + "value": "#edddb2" + }, + { + "name": "blue", + "value": "#8d96eb" + } + ] +} \ No newline at end of file diff --git a/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/resources/base/element/float.json b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/resources/base/element/float.json new file mode 100644 index 00000000..2d4596f7 --- /dev/null +++ b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/resources/base/element/float.json @@ -0,0 +1,44 @@ +{ + "float": [ + { + "name": "float_1", + "value": "30.6" + }, + { + "name": "main_image_size", + "value": "200vp" + }, + { + "name": "button_width", + "value": "100vp" + }, + { + "name": "padding", + "value": "10vp" + }, + { + "name": "text_size", + "value": "20vp" + }, + { + "name": "error_text_size", + "value": "15vp" + }, + { + "name": "margin_top", + "value": "10vp" + }, + { + "name": "margin_bottom", + "value": "10vp" + }, + { + "name": "field_size", + "value": "250vp" + }, + { + "name": "big_margin", + "value": "100vp" + } + ] +} \ No newline at end of file diff --git a/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/resources/base/element/string.json b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/resources/base/element/string.json new file mode 100644 index 00000000..1a2c3798 --- /dev/null +++ b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/resources/base/element/string.json @@ -0,0 +1,76 @@ +{ + "string": [ + { + "name": "app_name", + "value": "Userlogin" + }, + { + "name": "mainability_description", + "value": "Java_Phone_Empty Feature Ability" + }, + { + "name": "mainability_HelloWorld", + "value": "Hello World" + }, + { + "name": "mainpage_loginbutton", + "value": "Login" + }, + { + "name": "mainpage_signupbutton", + "value": "SignUp" + }, + { + "name": "firstname", + "value": "Firstname" + }, + { + "name": "firstname_error", + "value": "Enter a valid Firstname" + }, + { + "name": "lastname", + "value": "Lastname" + }, + { + "name": "lastname_error", + "value": "Enter a valid Lastname" + }, + { + "name": "email", + "value": "Email" + }, + { + "name": "email_error", + "value": "Enter a valid Email" + }, + { + "name": "password", + "value": "Password" + }, + { + "name": "password_error", + "value": "Enter a valid Password" + }, + { + "name": "mobile", + "value": "Mobile" + }, + { + "name": "mobile_error", + "value": "Enter a valid Mobile Number" + }, + { + "name": "gender", + "value": "Gender" + }, + { + "name": "male", + "value": "Male" + }, + { + "name": "female", + "value": "Female" + } + ] +} \ No newline at end of file diff --git a/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/resources/base/graphic/background_ability_main.xml b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/resources/base/graphic/background_ability_main.xml new file mode 100644 index 00000000..e3a09a43 --- /dev/null +++ b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/resources/base/graphic/background_ability_main.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/resources/base/graphic/button_bg.xml b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/resources/base/graphic/button_bg.xml new file mode 100644 index 00000000..ef71513b --- /dev/null +++ b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/resources/base/graphic/button_bg.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/resources/base/layout/ability_main.xml b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/resources/base/layout/ability_main.xml new file mode 100644 index 00000000..0e0d0214 --- /dev/null +++ b/Hmos/Muhammed Fazil K/Userlogin/entry/src/main/resources/base/layout/ability_main.xml @@ -0,0 +1,53 @@ + + + + + +