diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/.gitignore b/Android/Amit Shekhar/Advanced/NavNewsApp/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/.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/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/.gitignore b/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/compiler.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/compiler.xml
new file mode 100644
index 00000000..fb7f4a8a
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/gradle.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/gradle.xml
new file mode 100644
index 00000000..5cd135a0
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/gradle.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/jarRepositories.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/jarRepositories.xml
new file mode 100644
index 00000000..0380d8d3
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/misc.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/misc.xml
new file mode 100644
index 00000000..6199cc2a
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/runConfigurations.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/runConfigurations.xml
new file mode 100644
index 00000000..797acea5
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/.gitignore b/Android/Amit Shekhar/Advanced/NavNewsApp/app/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/build.gradle b/Android/Amit Shekhar/Advanced/NavNewsApp/app/build.gradle
new file mode 100644
index 00000000..28bfad8d
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/build.gradle
@@ -0,0 +1,57 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+
+ defaultConfig {
+ applicationId "com.example.navnewsapp"
+ minSdkVersion 21
+ targetSdkVersion 30
+ 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
+ }
+ buildFeatures {
+ viewBinding true
+ }
+}
+
+dependencies {
+
+ //Retrofit
+ implementation 'com.squareup.retrofit2:retrofit:2.4.0'
+ implementation 'com.squareup.retrofit2:converter-gson:2.2.0'
+
+ //Date/Time
+ implementation 'org.ocpsoft.prettytime:prettytime:4.0.1.Final'
+
+ //Picaso for image url
+ implementation 'com.squareup.picasso:picasso:2.5.0'
+
+ implementation 'androidx.appcompat:appcompat:1.2.0'
+ implementation 'com.google.android.material:material:1.3.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
+ implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.3.1'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1'
+ implementation 'androidx.navigation:navigation-fragment:2.3.0'
+ implementation 'androidx.navigation:navigation-ui:2.3.0'
+ implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
+ testImplementation 'junit:junit:4.+'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.2'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/proguard-rules.pro b/Android/Amit Shekhar/Advanced/NavNewsApp/app/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/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/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/androidTest/java/com/example/navnewsapp/ExampleInstrumentedTest.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/androidTest/java/com/example/navnewsapp/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..affca9d6
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/androidTest/java/com/example/navnewsapp/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.example.navnewsapp;
+
+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.navnewsapp", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/AndroidManifest.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..3242e3c5
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/AndroidManifest.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Adapter.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Adapter.java
new file mode 100644
index 00000000..9816a0f5
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Adapter.java
@@ -0,0 +1,119 @@
+package com.example.navnewsapp;
+
+import android.content.Context;
+import android.content.Intent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.cardview.widget.CardView;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.example.navnewsapp.Model.Articles;
+import com.example.navnewsapp.Model.Source;
+import com.squareup.picasso.Picasso;
+
+import org.ocpsoft.prettytime.PrettyTime;
+import org.ocpsoft.prettytime.format.SimpleTimeFormat;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+
+public class Adapter extends RecyclerView.Adapter {
+
+ Context context;
+ List articles;
+
+
+ public Adapter(Context context, List articles) {
+ this.context = context;
+ this.articles = articles;
+ }
+
+ @NonNull
+ @Override
+ public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.items,parent,false);
+ return new ViewHolder(view);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
+
+
+ final Articles a = articles.get(position);
+
+ String imageUrl = a.getUrlToImage();
+ String url = a.getUrl();
+
+ Picasso.with(context).load(imageUrl).into(holder.imageView);
+
+ holder.tvTitle.setText(a.getTitle());
+ holder.tvSource.setText(a.getSource().getName());
+ holder.tvDate.setText("\u2022"+dateTime(a.getPublishedAt()));
+
+ holder.cardView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intent = new Intent(context, com.example.navnewsapp.Detailed.class);
+ intent.putExtra("title",a.getTitle());
+ intent.putExtra("source",a.getSource().getName());
+ intent.putExtra("time",dateTime(a.getPublishedAt()));
+ intent.putExtra("desc",a.getDescription());
+ intent.putExtra("imageUrl",a.getUrlToImage());
+ intent.putExtra("url",a.getUrl());
+ context.startActivity(intent);
+ }
+ });
+
+ }
+
+ @Override
+ public int getItemCount() {
+ return articles.size();
+ }
+
+ public class ViewHolder extends RecyclerView.ViewHolder {
+ TextView tvTitle,tvSource,tvDate;
+ ImageView imageView;
+ CardView cardView;
+
+ public ViewHolder(@NonNull View itemView) {
+ super(itemView);
+
+ tvTitle = itemView.findViewById(R.id.tvTitle);
+ tvSource = itemView.findViewById(R.id.tvSource);
+ tvDate = itemView.findViewById(R.id.tvDate);
+ imageView = itemView.findViewById(R.id.image);
+ cardView = itemView.findViewById(R.id.cardView);
+
+ }
+ }
+
+
+ public String dateTime(String t){
+ PrettyTime prettyTime = new PrettyTime(new Locale(getCountry()));
+ String time = null;
+ try {
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:",Locale.ENGLISH);
+ Date date = simpleDateFormat.parse(t);
+ time = prettyTime.format(date);
+ }catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return time;
+
+ }
+
+ public String getCountry(){
+ Locale locale = Locale.getDefault();
+ String country = locale.getCountry();
+ return country.toLowerCase();
+ }
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ApiClient.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ApiClient.java
new file mode 100644
index 00000000..d03e43b6
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ApiClient.java
@@ -0,0 +1,26 @@
+package com.example.navnewsapp;
+
+import retrofit2.Retrofit;
+import retrofit2.converter.gson.GsonConverterFactory;
+
+public class ApiClient {
+ private static final String BASE_URL = "https://newsapi.org/v2/";
+ private static ApiClient apiClient;
+ private static Retrofit retrofit;
+
+ private ApiClient(){
+ retrofit = new Retrofit.Builder().baseUrl(BASE_URL).addConverterFactory(GsonConverterFactory.create()).build();
+ }
+
+ public static synchronized ApiClient getInstance(){
+ if (apiClient == null){
+ apiClient = new ApiClient();
+ }
+ return apiClient;
+ }
+
+
+ public ApiInterface getApi(){
+ return retrofit.create(ApiInterface.class);
+ }
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ApiInterface.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ApiInterface.java
new file mode 100644
index 00000000..236a01bb
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ApiInterface.java
@@ -0,0 +1,26 @@
+package com.example.navnewsapp;
+
+import com.example.navnewsapp.Model.Headlines;
+
+import retrofit2.Call;
+import retrofit2.http.GET;
+import retrofit2.http.Query;
+
+public interface ApiInterface {
+
+
+ @GET("top-headlines")
+ Call getHeadlines(
+ @Query("country") String country,
+ @Query("apiKey") String apiKey
+ );
+
+ @GET("everything")
+ Call getSpecificData(
+ @Query("q") String query,
+ @Query("apiKey") String apiKey
+ );
+
+
+
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Detailed.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Detailed.java
new file mode 100644
index 00000000..1efab5d5
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Detailed.java
@@ -0,0 +1,67 @@
+package com.example.navnewsapp;
+
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
+import android.widget.ImageView;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+
+import com.squareup.picasso.Picasso;
+
+public class Detailed extends AppCompatActivity {
+
+ TextView tvTitle,tvSource,tvTime,tvDesc;
+ ImageView imageView;
+ WebView webView;
+ ProgressBar loader;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_detailed);
+
+ tvTitle = findViewById(R.id.tvTitle);
+ tvSource = findViewById(R.id.tvSource);
+ tvTime = findViewById(R.id.tvDate);
+ tvDesc = findViewById(R.id.tvDesc);
+
+ imageView = findViewById(R.id.imageView);
+
+ webView = findViewById(R.id.webView);
+
+ loader = findViewById(R.id.webViewLoader);
+ loader.setVisibility(View.VISIBLE);
+
+ Intent intent = getIntent();
+ String title = intent.getStringExtra("title");
+ String source = intent.getStringExtra("source");
+ String time = intent.getStringExtra("time");
+ String desc = intent.getStringExtra("desc");
+ String imageUrl = intent.getStringExtra("imageUrl");
+ String url = intent.getStringExtra("url");
+
+
+ tvTitle.setText(title);
+ tvSource.setText(source);
+ tvTime.setText(time);
+ tvDesc.setText(desc);
+
+ Picasso.with(Detailed.this).load(imageUrl).into(imageView);
+
+ webView.getSettings().setDomStorageEnabled(true);
+ webView.getSettings().setJavaScriptEnabled(true);
+ webView.getSettings().setLoadsImagesAutomatically(true);
+ webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
+ webView.setWebViewClient(new WebViewClient());
+ webView.loadUrl(url);
+ if (webView.isShown()){
+ loader.setVisibility(View.INVISIBLE);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/HomeActivity.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/HomeActivity.java
new file mode 100644
index 00000000..455189ce
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/HomeActivity.java
@@ -0,0 +1,148 @@
+package com.example.navnewsapp;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
+
+import android.app.Dialog;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.Toast;
+
+import com.example.navnewsapp.Model.Articles;
+import com.example.navnewsapp.Model.Headlines;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+
+public class HomeActivity extends AppCompatActivity {
+
+ RecyclerView recyclerView;
+ SwipeRefreshLayout swipeRefreshLayout;
+ EditText etQuery;
+ Button btnSearch,btnAboutUs;
+ Dialog dialog;
+ final String API_KEY = "98a295c4c04749a1aa784bf6c4256ed4";
+ Adapter adapter;
+ List articles = new ArrayList<>();
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+ swipeRefreshLayout = findViewById(R.id.swipeRefresh);
+ recyclerView = findViewById(R.id.recyclerView);
+
+ etQuery = findViewById(R.id.etQuery);
+ btnSearch = findViewById(R.id.btnSearch);
+ btnAboutUs = findViewById(R.id.aboutUs);
+ dialog = new Dialog(HomeActivity.this);
+
+ recyclerView.setLayoutManager(new LinearLayoutManager(this));
+ final String country = getCountry();
+
+
+ swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+ @Override
+ public void onRefresh() {
+ retrieveJson("",country,API_KEY);
+ }
+ });
+ retrieveJson("",country,API_KEY);
+
+ btnSearch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (!etQuery.getText().toString().equals("")){
+ swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+ @Override
+ public void onRefresh() {
+ retrieveJson(etQuery.getText().toString(),country,API_KEY);
+ }
+ });
+ retrieveJson(etQuery.getText().toString(),country,API_KEY);
+ }else{
+ swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+ @Override
+ public void onRefresh() {
+ retrieveJson("",country,API_KEY);
+ }
+ });
+ retrieveJson("",country,API_KEY);
+ }
+ }
+ });
+
+ btnAboutUs.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ showDialog();
+ }
+ });
+
+
+
+
+
+
+ }
+
+ public void retrieveJson(String query ,String country, String apiKey){
+
+
+ swipeRefreshLayout.setRefreshing(true);
+ Call call;
+ if (!etQuery.getText().toString().equals("")){
+ call= ApiClient.getInstance().getApi().getSpecificData(query,apiKey);
+ }else{
+ call= ApiClient.getInstance().getApi().getHeadlines(country,apiKey);
+ }
+
+ call.enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ if (response.isSuccessful() && response.body().getArticles() != null){
+ swipeRefreshLayout.setRefreshing(false);
+ articles.clear();
+ articles = response.body().getArticles();
+ adapter = new Adapter(HomeActivity.this,articles);
+ recyclerView.setAdapter(adapter);
+ }
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ swipeRefreshLayout.setRefreshing(false);
+ Toast.makeText(HomeActivity.this, t.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
+ }
+ });
+ }
+
+ public String getCountry(){
+ Locale locale = Locale.getDefault();
+ String country = locale.getCountry();
+ return country.toLowerCase();
+ }
+
+ public void showDialog(){
+ Button btnClose;
+ dialog.setContentView(R.layout.about_us_pop_up);
+ dialog.show();
+ btnClose = dialog.findViewById(R.id.close);
+
+ btnClose.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ dialog.dismiss();
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/MainActivity.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/MainActivity.java
new file mode 100644
index 00000000..e642d2cc
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/MainActivity.java
@@ -0,0 +1,62 @@
+package com.example.navnewsapp;
+
+import android.os.Bundle;
+import android.view.View;
+import android.view.Menu;
+import com.google.android.material.snackbar.Snackbar;
+import com.google.android.material.navigation.NavigationView;
+import androidx.navigation.NavController;
+import androidx.navigation.Navigation;
+import androidx.navigation.ui.AppBarConfiguration;
+import androidx.navigation.ui.NavigationUI;
+import androidx.drawerlayout.widget.DrawerLayout;
+import androidx.appcompat.app.AppCompatActivity;
+import com.example.navnewsapp.databinding.ActivityMainBinding;
+
+public class MainActivity extends AppCompatActivity {
+
+ private AppBarConfiguration mAppBarConfiguration;
+private ActivityMainBinding binding;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ binding = ActivityMainBinding.inflate(getLayoutInflater());
+ setContentView(binding.getRoot());
+
+ setSupportActionBar(binding.appBarMain.toolbar);
+ binding.appBarMain.fab.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
+ .setAction("Action", null).show();
+ }
+ });
+ DrawerLayout drawer = binding.drawerLayout;
+ NavigationView navigationView = binding.navView;
+ // Passing each menu ID as a set of Ids because each
+ // menu should be considered as top level destinations.
+ mAppBarConfiguration = new AppBarConfiguration.Builder(
+ R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow)
+ .setDrawerLayout(drawer)
+ .build();
+ NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
+ NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
+ NavigationUI.setupWithNavController(navigationView, navController);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onSupportNavigateUp() {
+ NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
+ return NavigationUI.navigateUp(navController, mAppBarConfiguration)
+ || super.onSupportNavigateUp();
+ }
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Model/Articles.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Model/Articles.java
new file mode 100644
index 00000000..5b8c08be
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Model/Articles.java
@@ -0,0 +1,94 @@
+package com.example.navnewsapp.Model;
+
+import com.google.gson.annotations.Expose;
+import com.google.gson.annotations.SerializedName;
+
+public class Articles {
+
+
+ @SerializedName("source")
+ @Expose
+ private Source source;
+
+ @SerializedName("author")
+ @Expose
+ private String author;
+
+ @SerializedName("title")
+ @Expose
+ private String title;
+
+ @SerializedName("description")
+ @Expose
+ private String description;
+
+ @SerializedName("url")
+ @Expose
+ private String url;
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ @SerializedName("urlToImage")
+ @Expose
+ private String urlToImage;
+
+ @SerializedName("publishedAt")
+ @Expose
+ private String publishedAt;
+
+
+
+ public Source getSource() {
+ return source;
+ }
+
+ public void setSource(Source source) {
+ this.source = source;
+ }
+
+ public String getAuthor() {
+ return author;
+ }
+
+ public void setAuthor(String author) {
+ this.author = author;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getUrlToImage() {
+ return urlToImage;
+ }
+
+ public void setUrlToImage(String urlToImage) {
+ this.urlToImage = urlToImage;
+ }
+
+ public String getPublishedAt() {
+ return publishedAt;
+ }
+
+ public void setPublishedAt(String publishedAt) {
+ this.publishedAt = publishedAt;
+ }
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Model/Headlines.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Model/Headlines.java
new file mode 100644
index 00000000..5733923a
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Model/Headlines.java
@@ -0,0 +1,45 @@
+package com.example.navnewsapp.Model;
+
+import com.google.gson.annotations.Expose;
+import com.google.gson.annotations.SerializedName;
+
+import java.util.List;
+
+public class Headlines {
+
+ @SerializedName("status")
+ @Expose
+ private String status;
+
+ @SerializedName("totalResults")
+ @Expose
+ private String totalResults;
+
+ @SerializedName("articles")
+ @Expose
+ private List articles;
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getTotalResults() {
+ return totalResults;
+ }
+
+ public void setTotalResults(String totalResults) {
+ this.totalResults = totalResults;
+ }
+
+ public List getArticles() {
+ return articles;
+ }
+
+ public void setArticles(List articles) {
+ this.articles = articles;
+ }
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Model/Source.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Model/Source.java
new file mode 100644
index 00000000..05ed2b1d
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Model/Source.java
@@ -0,0 +1,31 @@
+package com.example.navnewsapp.Model;
+
+import com.google.gson.annotations.Expose;
+import com.google.gson.annotations.SerializedName;
+
+public class Source {
+
+ @SerializedName("id")
+ @Expose
+ private String id;
+
+ @SerializedName("name")
+ @Expose
+ private String name;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/gallery/GalleryFragment.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/gallery/GalleryFragment.java
new file mode 100644
index 00000000..be11859e
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/gallery/GalleryFragment.java
@@ -0,0 +1,181 @@
+package com.example.navnewsapp.ui.gallery;
+
+import android.app.Dialog;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProvider;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
+
+import com.example.navnewsapp.Adapter;
+import com.example.navnewsapp.ApiClient;
+import com.example.navnewsapp.HomeActivity;
+import com.example.navnewsapp.Model.Articles;
+import com.example.navnewsapp.Model.Headlines;
+import com.example.navnewsapp.R;
+import com.example.navnewsapp.databinding.FragmentHomeBinding;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+
+public class GalleryFragment extends Fragment {
+
+ RecyclerView recyclerView;
+ SwipeRefreshLayout swipeRefreshLayout;
+ EditText etQuery;
+ Button btnSearch,btnAboutUs;
+ Dialog dialog;
+ final String API_KEY = "98a295c4c04749a1aa784bf6c4256ed4";
+ Adapter adapter;
+ List articles = new ArrayList<>();
+ private GalleryViewModel homeViewModel;
+ private FragmentHomeBinding binding;
+
+ public View onCreateView(@NonNull LayoutInflater inflater,
+ ViewGroup container, Bundle savedInstanceState) {
+ homeViewModel =
+ new ViewModelProvider(this).get(GalleryViewModel.class);
+//
+// binding = FragmentHomeBinding.inflate(inflater, container, false);
+// View root = binding.getRoot();
+ View root = inflater.inflate(R.layout.fragment_home,container,false);
+
+
+ swipeRefreshLayout = root.findViewById(R.id.swipeRefresh);
+ recyclerView = root.findViewById(R.id.recyclerView);
+
+ etQuery = root.findViewById(R.id.etQuery);
+ btnSearch = root.findViewById(R.id.btnSearch);
+ btnAboutUs = root.findViewById(R.id.aboutUs);
+ dialog = new Dialog(getContext());
+
+ recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
+ final String country = getCountry();
+
+ swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+ @Override
+ public void onRefresh() {
+ retrieveJson("",country,API_KEY);
+ }
+ });
+ retrieveJson("",country,API_KEY);
+
+ btnSearch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (!etQuery.getText().toString().equals("")){
+ swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+ @Override
+ public void onRefresh() {
+ retrieveJson(etQuery.getText().toString(),country,API_KEY);
+ }
+ });
+ retrieveJson(etQuery.getText().toString(),country,API_KEY);
+ }else{
+ swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+ @Override
+ public void onRefresh() {
+ retrieveJson("",country,API_KEY);
+ }
+ });
+ retrieveJson("",country,API_KEY);
+ }
+ }
+ });
+
+ btnAboutUs.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ showDialog();
+ }
+ });
+
+//
+// final TextView textView = binding.textHome;
+// homeViewModel.getText().observe(getViewLifecycleOwner(), new Observer() {
+// @Override
+// public void onChanged(@Nullable String s) {
+// textView.setText(s);
+// }
+// });
+// Intent in = new Intent(getActivity(), HomeActivity.class);
+// startActivity(in);
+ return root;
+ }
+
+ @Override
+ public void onDestroyView() {
+ super.onDestroyView();
+ binding = null;
+ }
+
+ public void retrieveJson(String query ,String country, String apiKey){
+
+
+ swipeRefreshLayout.setRefreshing(true);
+ Call call;
+ if (!etQuery.getText().toString().equals("")){
+ call= ApiClient.getInstance().getApi().getSpecificData(query,apiKey);
+ }else{
+ call= ApiClient.getInstance().getApi().getSpecificData("business",apiKey);
+ }
+
+ call.enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ if (response.isSuccessful() && response.body().getArticles() != null){
+ swipeRefreshLayout.setRefreshing(false);
+ articles.clear();
+ articles = response.body().getArticles();
+ adapter = new Adapter(getContext(),articles);
+ recyclerView.setAdapter(adapter);
+ }
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ swipeRefreshLayout.setRefreshing(false);
+ Toast.makeText(getContext(), t.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
+ }
+ });
+ }
+
+ public String getCountry(){
+ Locale locale = Locale.getDefault();
+ String country = locale.getCountry();
+ return country.toLowerCase();
+ }
+
+ public void showDialog(){
+ Button btnClose;
+ dialog.setContentView(R.layout.about_us_pop_up);
+ dialog.show();
+ btnClose = dialog.findViewById(R.id.close);
+
+ btnClose.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ dialog.dismiss();
+ }
+ });
+ }
+
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/gallery/GalleryViewModel.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/gallery/GalleryViewModel.java
new file mode 100644
index 00000000..8aef264b
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/gallery/GalleryViewModel.java
@@ -0,0 +1,19 @@
+package com.example.navnewsapp.ui.gallery;
+
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.MutableLiveData;
+import androidx.lifecycle.ViewModel;
+
+public class GalleryViewModel extends ViewModel {
+
+ private MutableLiveData mText;
+
+ public GalleryViewModel() {
+ mText = new MutableLiveData<>();
+ mText.setValue("This is gallery fragment");
+ }
+
+ public LiveData getText() {
+ return mText;
+ }
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/home/HomeFragment.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/home/HomeFragment.java
new file mode 100644
index 00000000..49e99145
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/home/HomeFragment.java
@@ -0,0 +1,181 @@
+package com.example.navnewsapp.ui.home;
+
+import android.app.Dialog;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProvider;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
+
+import com.example.navnewsapp.Adapter;
+import com.example.navnewsapp.ApiClient;
+import com.example.navnewsapp.HomeActivity;
+import com.example.navnewsapp.Model.Articles;
+import com.example.navnewsapp.Model.Headlines;
+import com.example.navnewsapp.R;
+import com.example.navnewsapp.databinding.FragmentHomeBinding;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+
+public class HomeFragment extends Fragment {
+
+ RecyclerView recyclerView;
+ SwipeRefreshLayout swipeRefreshLayout;
+ EditText etQuery;
+ Button btnSearch,btnAboutUs;
+ Dialog dialog;
+ final String API_KEY = "98a295c4c04749a1aa784bf6c4256ed4";
+ Adapter adapter;
+ List articles = new ArrayList<>();
+ private HomeViewModel homeViewModel;
+ private FragmentHomeBinding binding;
+
+ public View onCreateView(@NonNull LayoutInflater inflater,
+ ViewGroup container, Bundle savedInstanceState) {
+ homeViewModel =
+ new ViewModelProvider(this).get(HomeViewModel.class);
+//
+// binding = FragmentHomeBinding.inflate(inflater, container, false);
+// View root = binding.getRoot();
+ View root = inflater.inflate(R.layout.fragment_home,container,false);
+
+
+ swipeRefreshLayout = root.findViewById(R.id.swipeRefresh);
+ recyclerView = root.findViewById(R.id.recyclerView);
+
+ etQuery = root.findViewById(R.id.etQuery);
+ btnSearch = root.findViewById(R.id.btnSearch);
+ btnAboutUs = root.findViewById(R.id.aboutUs);
+ dialog = new Dialog(getContext());
+
+ recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
+ final String country = getCountry();
+
+ swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+ @Override
+ public void onRefresh() {
+ retrieveJson("",country,API_KEY);
+ }
+ });
+ retrieveJson("",country,API_KEY);
+
+ btnSearch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (!etQuery.getText().toString().equals("")){
+ swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+ @Override
+ public void onRefresh() {
+ retrieveJson(etQuery.getText().toString(),country,API_KEY);
+ }
+ });
+ retrieveJson(etQuery.getText().toString(),country,API_KEY);
+ }else{
+ swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+ @Override
+ public void onRefresh() {
+ retrieveJson("",country,API_KEY);
+ }
+ });
+ retrieveJson("",country,API_KEY);
+ }
+ }
+ });
+
+ btnAboutUs.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ showDialog();
+ }
+ });
+
+//
+// final TextView textView = binding.textHome;
+// homeViewModel.getText().observe(getViewLifecycleOwner(), new Observer() {
+// @Override
+// public void onChanged(@Nullable String s) {
+// textView.setText(s);
+// }
+// });
+// Intent in = new Intent(getActivity(), HomeActivity.class);
+// startActivity(in);
+ return root;
+ }
+
+ @Override
+ public void onDestroyView() {
+ super.onDestroyView();
+ binding = null;
+ }
+
+ public void retrieveJson(String query ,String country, String apiKey){
+
+
+ swipeRefreshLayout.setRefreshing(true);
+ Call call;
+ if (!etQuery.getText().toString().equals("")){
+ call= ApiClient.getInstance().getApi().getSpecificData(query,apiKey);
+ }else{
+ call= ApiClient.getInstance().getApi().getHeadlines(country,apiKey);
+ }
+
+ call.enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ if (response.isSuccessful() && response.body().getArticles() != null){
+ swipeRefreshLayout.setRefreshing(false);
+ articles.clear();
+ articles = response.body().getArticles();
+ adapter = new Adapter(getContext(),articles);
+ recyclerView.setAdapter(adapter);
+ }
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ swipeRefreshLayout.setRefreshing(false);
+ Toast.makeText(getContext(), t.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
+ }
+ });
+ }
+
+ public String getCountry(){
+ Locale locale = Locale.getDefault();
+ String country = locale.getCountry();
+ return country.toLowerCase();
+ }
+
+ public void showDialog(){
+ Button btnClose;
+ dialog.setContentView(R.layout.about_us_pop_up);
+ dialog.show();
+ btnClose = dialog.findViewById(R.id.close);
+
+ btnClose.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ dialog.dismiss();
+ }
+ });
+ }
+
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/home/HomeViewModel.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/home/HomeViewModel.java
new file mode 100644
index 00000000..f8176bda
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/home/HomeViewModel.java
@@ -0,0 +1,19 @@
+package com.example.navnewsapp.ui.home;
+
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.MutableLiveData;
+import androidx.lifecycle.ViewModel;
+
+public class HomeViewModel extends ViewModel {
+
+ private MutableLiveData mText;
+
+ public HomeViewModel() {
+ mText = new MutableLiveData<>();
+ mText.setValue("This is home fragment");
+ }
+
+ public LiveData getText() {
+ return mText;
+ }
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/slideshow/SlideshowFragment.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/slideshow/SlideshowFragment.java
new file mode 100644
index 00000000..76a47daa
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/slideshow/SlideshowFragment.java
@@ -0,0 +1,181 @@
+package com.example.navnewsapp.ui.slideshow;
+
+import android.app.Dialog;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProvider;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
+
+import com.example.navnewsapp.Adapter;
+import com.example.navnewsapp.ApiClient;
+import com.example.navnewsapp.HomeActivity;
+import com.example.navnewsapp.Model.Articles;
+import com.example.navnewsapp.Model.Headlines;
+import com.example.navnewsapp.R;
+import com.example.navnewsapp.databinding.FragmentHomeBinding;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+
+public class SlideshowFragment extends Fragment {
+
+ RecyclerView recyclerView;
+ SwipeRefreshLayout swipeRefreshLayout;
+ EditText etQuery;
+ Button btnSearch,btnAboutUs;
+ Dialog dialog;
+ final String API_KEY = "98a295c4c04749a1aa784bf6c4256ed4";
+ Adapter adapter;
+ List articles = new ArrayList<>();
+ private SlideshowViewModel homeViewModel;
+ private FragmentHomeBinding binding;
+
+ public View onCreateView(@NonNull LayoutInflater inflater,
+ ViewGroup container, Bundle savedInstanceState) {
+ homeViewModel =
+ new ViewModelProvider(this).get(SlideshowViewModel.class);
+//
+// binding = FragmentHomeBinding.inflate(inflater, container, false);
+// View root = binding.getRoot();
+ View root = inflater.inflate(R.layout.fragment_home,container,false);
+
+
+ swipeRefreshLayout = root.findViewById(R.id.swipeRefresh);
+ recyclerView = root.findViewById(R.id.recyclerView);
+
+ etQuery = root.findViewById(R.id.etQuery);
+ btnSearch = root.findViewById(R.id.btnSearch);
+ btnAboutUs = root.findViewById(R.id.aboutUs);
+ dialog = new Dialog(getContext());
+
+ recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
+ final String country = getCountry();
+
+ swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+ @Override
+ public void onRefresh() {
+ retrieveJson("",country,API_KEY);
+ }
+ });
+ retrieveJson("",country,API_KEY);
+
+ btnSearch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (!etQuery.getText().toString().equals("")){
+ swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+ @Override
+ public void onRefresh() {
+ retrieveJson(etQuery.getText().toString(),country,API_KEY);
+ }
+ });
+ retrieveJson(etQuery.getText().toString(),country,API_KEY);
+ }else{
+ swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+ @Override
+ public void onRefresh() {
+ retrieveJson("",country,API_KEY);
+ }
+ });
+ retrieveJson("",country,API_KEY);
+ }
+ }
+ });
+
+ btnAboutUs.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ showDialog();
+ }
+ });
+
+//
+// final TextView textView = binding.textHome;
+// homeViewModel.getText().observe(getViewLifecycleOwner(), new Observer() {
+// @Override
+// public void onChanged(@Nullable String s) {
+// textView.setText(s);
+// }
+// });
+// Intent in = new Intent(getActivity(), HomeActivity.class);
+// startActivity(in);
+ return root;
+ }
+
+ @Override
+ public void onDestroyView() {
+ super.onDestroyView();
+ binding = null;
+ }
+
+ public void retrieveJson(String query ,String country, String apiKey){
+
+
+ swipeRefreshLayout.setRefreshing(true);
+ Call call;
+ if (!etQuery.getText().toString().equals("")){
+ call= ApiClient.getInstance().getApi().getSpecificData(query,apiKey);
+ }else{
+ call= ApiClient.getInstance().getApi().getSpecificData("sports",apiKey);
+ }
+
+ call.enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ if (response.isSuccessful() && response.body().getArticles() != null){
+ swipeRefreshLayout.setRefreshing(false);
+ articles.clear();
+ articles = response.body().getArticles();
+ adapter = new Adapter(getContext(),articles);
+ recyclerView.setAdapter(adapter);
+ }
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ swipeRefreshLayout.setRefreshing(false);
+ Toast.makeText(getContext(), t.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
+ }
+ });
+ }
+
+ public String getCountry(){
+ Locale locale = Locale.getDefault();
+ String country = locale.getCountry();
+ return country.toLowerCase();
+ }
+
+ public void showDialog(){
+ Button btnClose;
+ dialog.setContentView(R.layout.about_us_pop_up);
+ dialog.show();
+ btnClose = dialog.findViewById(R.id.close);
+
+ btnClose.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ dialog.dismiss();
+ }
+ });
+ }
+
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/slideshow/SlideshowViewModel.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/slideshow/SlideshowViewModel.java
new file mode 100644
index 00000000..478f53af
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/slideshow/SlideshowViewModel.java
@@ -0,0 +1,19 @@
+package com.example.navnewsapp.ui.slideshow;
+
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.MutableLiveData;
+import androidx.lifecycle.ViewModel;
+
+public class SlideshowViewModel extends ViewModel {
+
+ private MutableLiveData mText;
+
+ public SlideshowViewModel() {
+ mText = new MutableLiveData<>();
+ mText.setValue("This is slideshow fragment");
+ }
+
+ public LiveData getText() {
+ return mText;
+ }
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/black_background.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/black_background.xml
new file mode 100644
index 00000000..fa1fffd7
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/black_background.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/gradient.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/gradient.xml
new file mode 100644
index 00000000..d0292748
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/gradient.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_close_black_24dp.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_close_black_24dp.xml
new file mode 100644
index 00000000..f1fe6ec2
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_close_black_24dp.xml
@@ -0,0 +1,5 @@
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_dot_24dp.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_dot_24dp.xml
new file mode 100644
index 00000000..78df78a4
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_dot_24dp.xml
@@ -0,0 +1,5 @@
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_launcher_background.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_menu_camera.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_menu_camera.xml
new file mode 100644
index 00000000..634fe922
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_menu_camera.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_menu_gallery.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_menu_gallery.xml
new file mode 100644
index 00000000..03c77099
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_menu_gallery.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_menu_slideshow.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_menu_slideshow.xml
new file mode 100644
index 00000000..5e9e163a
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_menu_slideshow.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_search_black_24dp.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_search_black_24dp.xml
new file mode 100644
index 00000000..f1fe6ec2
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_search_black_24dp.xml
@@ -0,0 +1,5 @@
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/side_nav_bar.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/side_nav_bar.xml
new file mode 100644
index 00000000..6d81870b
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/side_nav_bar.xml
@@ -0,0 +1,9 @@
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/font/g_bold.otf b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/font/g_bold.otf
new file mode 100644
index 00000000..7413e3d4
Binary files /dev/null and b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/font/g_bold.otf differ
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/font/g_light.otf b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/font/g_light.otf
new file mode 100644
index 00000000..dbc05129
Binary files /dev/null and b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/font/g_light.otf differ
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/about_us_pop_up.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/about_us_pop_up.xml
new file mode 100644
index 00000000..49cb50db
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/about_us_pop_up.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/activity_detailed.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/activity_detailed.xml
new file mode 100644
index 00000000..6495576a
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/activity_detailed.xml
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/activity_home.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/activity_home.xml
new file mode 100644
index 00000000..57f244bd
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/activity_home.xml
@@ -0,0 +1,105 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/activity_main.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..49a048a7
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/activity_splash_screen.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/activity_splash_screen.xml
new file mode 100644
index 00000000..fb302685
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/activity_splash_screen.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/app_bar_main.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/app_bar_main.xml
new file mode 100644
index 00000000..dbda96c1
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/app_bar_main.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/content_main.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/content_main.xml
new file mode 100644
index 00000000..6e0ea390
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/content_main.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/fragment_gallery.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/fragment_gallery.xml
new file mode 100644
index 00000000..090bdc42
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/fragment_gallery.xml
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/fragment_home.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/fragment_home.xml
new file mode 100644
index 00000000..090bdc42
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/fragment_home.xml
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/fragment_slideshow.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/fragment_slideshow.xml
new file mode 100644
index 00000000..090bdc42
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/fragment_slideshow.xml
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/items.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/items.xml
new file mode 100644
index 00000000..8bcc7f72
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/items.xml
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/nav_header_main.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/nav_header_main.xml
new file mode 100644
index 00000000..641e69cf
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/nav_header_main.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/menu/activity_main_drawer.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/menu/activity_main_drawer.xml
new file mode 100644
index 00000000..d7f2df26
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/menu/activity_main_drawer.xml
@@ -0,0 +1,20 @@
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/menu/main.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/menu/main.xml
new file mode 100644
index 00000000..412d5f84
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/menu/main.xml
@@ -0,0 +1,9 @@
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-hdpi/ic_launcher.png b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..a571e600
Binary files /dev/null and b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..61da551c
Binary files /dev/null and b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-mdpi/ic_launcher.png b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..c41dd285
Binary files /dev/null and b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..db5080a7
Binary files /dev/null and b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..6dba46da
Binary files /dev/null and b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..da31a871
Binary files /dev/null and b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..15ac6817
Binary files /dev/null and b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..b216f2d3
Binary files /dev/null and b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..f25a4197
Binary files /dev/null and b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..e96783cc
Binary files /dev/null and b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/navigation/mobile_navigation.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/navigation/mobile_navigation.xml
new file mode 100644
index 00000000..9d100ceb
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/navigation/mobile_navigation.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/values-night/themes.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..4ba0148b
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/values/colors.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/values/colors.xml
new file mode 100644
index 00000000..bd52b018
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/values/colors.xml
@@ -0,0 +1,13 @@
+
+
+ #FFBB86FC
+ #FF6200EE
+ #FF3700B3
+ #FF03DAC5
+ #FF018786
+
+
+ #eeefee
+ #191819
+ #f7f6f9
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/values/dimens.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/values/dimens.xml
new file mode 100644
index 00000000..4ab4520f
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/values/dimens.xml
@@ -0,0 +1,8 @@
+
+
+ 16dp
+ 16dp
+ 8dp
+ 176dp
+ 16dp
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/values/strings.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000..fc2b800a
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/values/strings.xml
@@ -0,0 +1,13 @@
+
+ News App
+ Open navigation drawer
+ Close navigation drawer
+ Android Studio
+ News at your fingertips
+ News App
+ Settings
+
+ Headlines
+ Business
+ Sports
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/values/themes.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..cabc5119
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/values/themes.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/test/java/com/example/navnewsapp/ExampleUnitTest.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/test/java/com/example/navnewsapp/ExampleUnitTest.java
new file mode 100644
index 00000000..34acbcb5
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/test/java/com/example/navnewsapp/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.example.navnewsapp;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/build.gradle b/Android/Amit Shekhar/Advanced/NavNewsApp/build.gradle
new file mode 100644
index 00000000..23136ba5
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/build.gradle
@@ -0,0 +1,25 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+buildscript {
+ repositories {
+ google()
+ mavenCentral()
+ }
+ dependencies {
+ classpath "com.android.tools.build:gradle:4.2.0"
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ jcenter() // Warning: this repository is going to shut down soon
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/gradle.properties b/Android/Amit Shekhar/Advanced/NavNewsApp/gradle.properties
new file mode 100644
index 00000000..6826e61b
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/gradle.properties
@@ -0,0 +1,17 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app"s APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/gradle/wrapper/gradle-wrapper.jar b/Android/Amit Shekhar/Advanced/NavNewsApp/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..f6b961fd
Binary files /dev/null and b/Android/Amit Shekhar/Advanced/NavNewsApp/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/gradle/wrapper/gradle-wrapper.properties b/Android/Amit Shekhar/Advanced/NavNewsApp/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..011ae1cf
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Mon May 24 14:03:47 IST 2021
+distributionBase=GRADLE_USER_HOME
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
+distributionPath=wrapper/dists
+zipStorePath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/gradlew b/Android/Amit Shekhar/Advanced/NavNewsApp/gradlew
new file mode 100644
index 00000000..cccdd3d5
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/gradlew.bat b/Android/Amit Shekhar/Advanced/NavNewsApp/gradlew.bat
new file mode 100644
index 00000000..f9553162
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/settings.gradle b/Android/Amit Shekhar/Advanced/NavNewsApp/settings.gradle
new file mode 100644
index 00000000..8f887f66
--- /dev/null
+++ b/Android/Amit Shekhar/Advanced/NavNewsApp/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "NavNewsApp"
+include ':app'
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/.gitignore b/Android/Amit Shekhar/Beginner/SplashScreen/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/.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/Android/Amit Shekhar/Beginner/SplashScreen/.idea/.gitignore b/Android/Amit Shekhar/Beginner/SplashScreen/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/.idea/compiler.xml b/Android/Amit Shekhar/Beginner/SplashScreen/.idea/compiler.xml
new file mode 100644
index 00000000..fb7f4a8a
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/.idea/gradle.xml b/Android/Amit Shekhar/Beginner/SplashScreen/.idea/gradle.xml
new file mode 100644
index 00000000..5cd135a0
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/.idea/gradle.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/.idea/jarRepositories.xml b/Android/Amit Shekhar/Beginner/SplashScreen/.idea/jarRepositories.xml
new file mode 100644
index 00000000..0380d8d3
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/.idea/misc.xml b/Android/Amit Shekhar/Beginner/SplashScreen/.idea/misc.xml
new file mode 100644
index 00000000..6199cc2a
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/.idea/runConfigurations.xml b/Android/Amit Shekhar/Beginner/SplashScreen/.idea/runConfigurations.xml
new file mode 100644
index 00000000..797acea5
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/.gitignore b/Android/Amit Shekhar/Beginner/SplashScreen/app/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/build.gradle b/Android/Amit Shekhar/Beginner/SplashScreen/app/build.gradle
new file mode 100644
index 00000000..9c6414aa
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/app/build.gradle
@@ -0,0 +1,39 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+
+ defaultConfig {
+ applicationId "com.example.splashscreen"
+ minSdkVersion 21
+ targetSdkVersion 30
+ 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.2.0'
+ implementation 'com.google.android.material:material:1.3.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
+ testImplementation 'junit:junit:4.+'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.2'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/proguard-rules.pro b/Android/Amit Shekhar/Beginner/SplashScreen/app/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/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/Android/Amit Shekhar/Beginner/SplashScreen/app/src/androidTest/java/com/example/splashscreen/ExampleInstrumentedTest.java b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/androidTest/java/com/example/splashscreen/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..cb44353e
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/androidTest/java/com/example/splashscreen/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.example.splashscreen;
+
+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.splashscreen", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/AndroidManifest.xml b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..5a49a5eb
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/AndroidManifest.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/java/com/example/splashscreen/MainActivity.java b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/java/com/example/splashscreen/MainActivity.java
new file mode 100644
index 00000000..a6142cca
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/java/com/example/splashscreen/MainActivity.java
@@ -0,0 +1,112 @@
+package com.example.splashscreen;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.viewpager.widget.ViewPager;
+
+import android.os.Bundle;
+import android.text.Html;
+import android.view.View;
+import android.widget.Button;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+public class MainActivity extends AppCompatActivity {
+
+ private ViewPager viewpager;
+ private LinearLayout dotslayout;
+ private SliderAdapter sliderAdapter;
+
+ private TextView[] dots;
+
+ private Button nextBtn;
+ private Button prevBtn;
+
+ private int current_page;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+ viewpager = (ViewPager)findViewById(R.id.viewPager);
+ dotslayout = (LinearLayout)findViewById(R.id.dotslayout);
+
+ nextBtn = (Button)findViewById(R.id.nextBtn);
+ prevBtn = (Button)findViewById(R.id.prevBtn);
+
+ sliderAdapter = new SliderAdapter(this);
+ viewpager.setAdapter(sliderAdapter);
+
+ addDotIndicator(0);
+
+ viewpager.addOnPageChangeListener(listener);
+
+ nextBtn.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ viewpager.setCurrentItem(current_page+1);
+ }
+ });
+
+ prevBtn.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ viewpager.setCurrentItem(current_page-1);
+ }
+ });
+ }
+
+ public void addDotIndicator(int position){
+ dots = new TextView[3];
+ dotslayout.removeAllViews();
+ for(int i=0; i<3; i++){
+ dots[i] = new TextView(this);
+ dots[i].setText(Html.fromHtml("•"));
+ dots[i].setTextSize(35);
+ dots[i].setTextColor(getResources().getColor(R.color.colorPrimary));
+ dotslayout.addView(dots[i]);
+ }
+ if(dots.length > 0){
+ dots[position].setTextColor(getResources().getColor(R.color.colorPrimaryDark));
+ }
+ }
+
+ ViewPager.OnPageChangeListener listener = new ViewPager.OnPageChangeListener() {
+ @Override
+ public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+
+ }
+
+ @Override
+ public void onPageSelected(int position) {
+ addDotIndicator(position);
+ current_page = position;
+ if(position==0){
+ nextBtn.setEnabled(true);
+ prevBtn.setEnabled(false);
+ prevBtn.setVisibility(View.INVISIBLE);
+ nextBtn.setText("Next");
+ prevBtn.setText("");
+ }
+ else if(position==dots.length - 1){
+ nextBtn.setEnabled(true);
+ prevBtn.setEnabled(true);
+ prevBtn.setVisibility(View.VISIBLE);
+ nextBtn.setText("Finish");
+ prevBtn.setText("Back");
+ }
+ else{
+ nextBtn.setEnabled(true);
+ prevBtn.setEnabled(true);
+ prevBtn.setVisibility(View.VISIBLE);
+ nextBtn.setText("Next");
+ prevBtn.setText("Back");
+ }
+ }
+
+ @Override
+ public void onPageScrollStateChanged(int state) {
+
+ }
+ };
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/java/com/example/splashscreen/SliderAdapter.java b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/java/com/example/splashscreen/SliderAdapter.java
new file mode 100644
index 00000000..593db7c5
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/java/com/example/splashscreen/SliderAdapter.java
@@ -0,0 +1,75 @@
+package com.example.splashscreen;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.viewpager.widget.PagerAdapter;
+import androidx.viewpager.widget.ViewPager;
+
+public class SliderAdapter extends PagerAdapter {
+
+ Context context;
+ LayoutInflater layoutInflater;
+
+ public SliderAdapter(Context context){
+ this.context = context;
+ }
+
+ public int[] slide_images = {
+ R.drawable.shovel,
+ R.drawable.water,
+ R.drawable.carrots
+ };
+
+ public String[] slide_description = {
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
+ };
+
+ public String[] slide_heading = {
+ "Plant Seeds", "Water with Love", "Reap your Results"
+ };
+
+ public String[] slide_name = {
+ "name1", "name2", "name3"
+ };
+
+ @Override
+ public int getCount() {
+ return slide_images.length;
+ }
+
+ @Override
+ public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
+ return view == (RelativeLayout)object;
+ }
+
+ @NonNull
+ @Override
+ public Object instantiateItem(@NonNull ViewGroup container, int position) {
+ layoutInflater = (LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
+ View view = layoutInflater.inflate(R.layout.slide_layout, container, false);
+
+ ImageView img = (ImageView)view.findViewById(R.id.slide_Image);
+ TextView heading = (TextView)view.findViewById(R.id.slide_Heading);
+ TextView description = (TextView)view.findViewById(R.id.slide_Description);
+
+ img.setImageResource(slide_images[position]);
+ heading.setText(slide_heading[position]);
+ description.setText(slide_description[position]);
+ container.addView(view);
+
+
+ return view;
+ }
+
+ @Override
+ public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
+ container.removeView((RelativeLayout)object);
+ }
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-hdpi/carrots.png b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-hdpi/carrots.png
new file mode 100644
index 00000000..ae80391b
Binary files /dev/null and b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-hdpi/carrots.png differ
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-hdpi/shovel.png b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-hdpi/shovel.png
new file mode 100644
index 00000000..b25ccf65
Binary files /dev/null and b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-hdpi/shovel.png differ
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-hdpi/water.png b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-hdpi/water.png
new file mode 100644
index 00000000..bcc1eff7
Binary files /dev/null and b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-hdpi/water.png differ
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-mdpi/carrots.png b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-mdpi/carrots.png
new file mode 100644
index 00000000..ae80391b
Binary files /dev/null and b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-mdpi/carrots.png differ
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-mdpi/shovel.png b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-mdpi/shovel.png
new file mode 100644
index 00000000..b25ccf65
Binary files /dev/null and b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-mdpi/shovel.png differ
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-mdpi/water.png b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-mdpi/water.png
new file mode 100644
index 00000000..bcc1eff7
Binary files /dev/null and b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-mdpi/water.png differ
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xhdpi/carrots.png b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xhdpi/carrots.png
new file mode 100644
index 00000000..ae80391b
Binary files /dev/null and b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xhdpi/carrots.png differ
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xhdpi/shovel.png b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xhdpi/shovel.png
new file mode 100644
index 00000000..b25ccf65
Binary files /dev/null and b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xhdpi/shovel.png differ
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xhdpi/water.png b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xhdpi/water.png
new file mode 100644
index 00000000..bcc1eff7
Binary files /dev/null and b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xhdpi/water.png differ
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xxhdpi/carrots.png b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xxhdpi/carrots.png
new file mode 100644
index 00000000..ae80391b
Binary files /dev/null and b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xxhdpi/carrots.png differ
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xxhdpi/shovel.png b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xxhdpi/shovel.png
new file mode 100644
index 00000000..b25ccf65
Binary files /dev/null and b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xxhdpi/shovel.png differ
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xxhdpi/water.png b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xxhdpi/water.png
new file mode 100644
index 00000000..bcc1eff7
Binary files /dev/null and b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xxhdpi/water.png differ
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xxxhdpi/carrots.png b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xxxhdpi/carrots.png
new file mode 100644
index 00000000..ae80391b
Binary files /dev/null and b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xxxhdpi/carrots.png differ
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xxxhdpi/shovel.png b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xxxhdpi/shovel.png
new file mode 100644
index 00000000..b25ccf65
Binary files /dev/null and b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xxxhdpi/shovel.png differ
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xxxhdpi/water.png b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xxxhdpi/water.png
new file mode 100644
index 00000000..bcc1eff7
Binary files /dev/null and b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xxxhdpi/water.png differ
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable/ic_launcher_background.xml b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/layout/activity_main.xml b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..aeb51733
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/layout/slide_layout.xml b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/layout/slide_layout.xml
new file mode 100644
index 00000000..5c84090c
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/layout/slide_layout.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-hdpi/ic_launcher.png b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..a571e600
Binary files /dev/null and b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..61da551c
Binary files /dev/null and b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-mdpi/ic_launcher.png b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..c41dd285
Binary files /dev/null and b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..db5080a7
Binary files /dev/null and b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..6dba46da
Binary files /dev/null and b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..da31a871
Binary files /dev/null and b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..15ac6817
Binary files /dev/null and b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..b216f2d3
Binary files /dev/null and b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..f25a4197
Binary files /dev/null and b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..e96783cc
Binary files /dev/null and b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/values-night/themes.xml b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..c7ea1ef4
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/values/colors.xml b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/values/colors.xml
new file mode 100644
index 00000000..e4fbe3aa
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/values/colors.xml
@@ -0,0 +1,15 @@
+
+
+ #FFBB86FC
+ #FF6200EE
+ #FF3700B3
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+ #6C6C6C
+ #181a24
+ #FF4081
+ #ffffff
+ #cccccc
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/values/strings.xml b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000..9cfd9734
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ SplashScreen
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/values/themes.xml b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..29fb6e01
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/values/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/app/src/test/java/com/example/splashscreen/ExampleUnitTest.java b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/test/java/com/example/splashscreen/ExampleUnitTest.java
new file mode 100644
index 00000000..9c679f71
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/app/src/test/java/com/example/splashscreen/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.example.splashscreen;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/build.gradle b/Android/Amit Shekhar/Beginner/SplashScreen/build.gradle
new file mode 100644
index 00000000..23136ba5
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/build.gradle
@@ -0,0 +1,25 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+buildscript {
+ repositories {
+ google()
+ mavenCentral()
+ }
+ dependencies {
+ classpath "com.android.tools.build:gradle:4.2.0"
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ jcenter() // Warning: this repository is going to shut down soon
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/gradle.properties b/Android/Amit Shekhar/Beginner/SplashScreen/gradle.properties
new file mode 100644
index 00000000..6826e61b
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/gradle.properties
@@ -0,0 +1,17 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app"s APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/gradle/wrapper/gradle-wrapper.jar b/Android/Amit Shekhar/Beginner/SplashScreen/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..f6b961fd
Binary files /dev/null and b/Android/Amit Shekhar/Beginner/SplashScreen/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/gradle/wrapper/gradle-wrapper.properties b/Android/Amit Shekhar/Beginner/SplashScreen/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..bb6f4f66
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Tue May 18 12:17:39 IST 2021
+distributionBase=GRADLE_USER_HOME
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
+distributionPath=wrapper/dists
+zipStorePath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/gradlew b/Android/Amit Shekhar/Beginner/SplashScreen/gradlew
new file mode 100644
index 00000000..cccdd3d5
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/gradlew.bat b/Android/Amit Shekhar/Beginner/SplashScreen/gradlew.bat
new file mode 100644
index 00000000..f9553162
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/Android/Amit Shekhar/Beginner/SplashScreen/settings.gradle b/Android/Amit Shekhar/Beginner/SplashScreen/settings.gradle
new file mode 100644
index 00000000..08ac2bcf
--- /dev/null
+++ b/Android/Amit Shekhar/Beginner/SplashScreen/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "SplashScreen"
+include ':app'
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/.gitignore b/Android/Amit Shekhar/Intermediate/TestLogin/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/.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/Android/Amit Shekhar/Intermediate/TestLogin/.idea/.gitignore b/Android/Amit Shekhar/Intermediate/TestLogin/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/.idea/compiler.xml b/Android/Amit Shekhar/Intermediate/TestLogin/.idea/compiler.xml
new file mode 100644
index 00000000..fb7f4a8a
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/.idea/gradle.xml b/Android/Amit Shekhar/Intermediate/TestLogin/.idea/gradle.xml
new file mode 100644
index 00000000..440480e5
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/.idea/gradle.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/.idea/jarRepositories.xml b/Android/Amit Shekhar/Intermediate/TestLogin/.idea/jarRepositories.xml
new file mode 100644
index 00000000..0380d8d3
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/.idea/misc.xml b/Android/Amit Shekhar/Intermediate/TestLogin/.idea/misc.xml
new file mode 100644
index 00000000..6199cc2a
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/.idea/runConfigurations.xml b/Android/Amit Shekhar/Intermediate/TestLogin/.idea/runConfigurations.xml
new file mode 100644
index 00000000..797acea5
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/app/.gitignore b/Android/Amit Shekhar/Intermediate/TestLogin/app/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/app/build.gradle b/Android/Amit Shekhar/Intermediate/TestLogin/app/build.gradle
new file mode 100644
index 00000000..00259d1e
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/app/build.gradle
@@ -0,0 +1,55 @@
+plugins {
+ id 'com.android.application'
+}
+apply plugin: 'com.android.application'
+apply plugin: 'com.google.gms.google-services'
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+
+ defaultConfig {
+ applicationId "com.example.testlogin"
+ minSdkVersion 21
+ targetSdkVersion 30
+ 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 platform('com.google.firebase:firebase-bom:28.0.1')
+ implementation 'com.firebaseui:firebase-ui-auth:6.4.0'
+
+ // Required only if Facebook login support is required
+ // Find the latest Facebook SDK releases here: https://goo.gl/Ce5L94
+// implementation 'com.facebook.android:facebook-android-sdk:4.1'
+
+ // Required only if Twitter login support is required
+ // Find the latest Twitter SDK releases here: https://goo.gl/E5wZvQ
+// implementation 'com.twitter.sdk.android:twitter-core:3.1'
+ implementation 'com.google.android.gms:play-services-auth:19.0.0'
+ implementation 'com.google.firebase:firebase-auth'
+ implementation 'com.facebook.android:facebook-login:8.1.0'
+
+ implementation 'androidx.appcompat:appcompat:1.2.0'
+ implementation 'com.google.android.material:material:1.3.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
+ testImplementation 'junit:junit:4.+'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.2'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
+ implementation 'com.github.bumptech.glide:glide:4.12.0'
+ annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/app/google-services.json b/Android/Amit Shekhar/Intermediate/TestLogin/app/google-services.json
new file mode 100644
index 00000000..4f0ebfd2
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/app/google-services.json
@@ -0,0 +1,84 @@
+{
+ "project_info": {
+ "project_number": "674421252181",
+ "project_id": "onestoplogin-3f0da",
+ "storage_bucket": "onestoplogin-3f0da.appspot.com"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:674421252181:android:05f8121b2ad3a27d88b4dc",
+ "android_client_info": {
+ "package_name": "com.example.onestoplogin"
+ }
+ },
+ "oauth_client": [
+ {
+ "client_id": "674421252181-6h3255vic0tvdnhupainonkqj13m6stb.apps.googleusercontent.com",
+ "client_type": 1,
+ "android_info": {
+ "package_name": "com.example.onestoplogin",
+ "certificate_hash": "65fd85a14fac921b1924615273b14556ecfc4d2a"
+ }
+ },
+ {
+ "client_id": "674421252181-aipgjfjl5lg60tlbaaas3rr4jmln9nd7.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ],
+ "api_key": [
+ {
+ "current_key": "AIzaSyCEnC8bbXLedvj9JJC7Y9goyk2otD44LmY"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": [
+ {
+ "client_id": "674421252181-aipgjfjl5lg60tlbaaas3rr4jmln9nd7.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ]
+ }
+ }
+ },
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:674421252181:android:5bafcd8f4d3530bb88b4dc",
+ "android_client_info": {
+ "package_name": "com.example.testlogin"
+ }
+ },
+ "oauth_client": [
+ {
+ "client_id": "674421252181-uk5240soekkv9pj2bgdoinhv415354bs.apps.googleusercontent.com",
+ "client_type": 1,
+ "android_info": {
+ "package_name": "com.example.testlogin",
+ "certificate_hash": "65fd85a14fac921b1924615273b14556ecfc4d2a"
+ }
+ },
+ {
+ "client_id": "674421252181-aipgjfjl5lg60tlbaaas3rr4jmln9nd7.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ],
+ "api_key": [
+ {
+ "current_key": "AIzaSyCEnC8bbXLedvj9JJC7Y9goyk2otD44LmY"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": [
+ {
+ "client_id": "674421252181-aipgjfjl5lg60tlbaaas3rr4jmln9nd7.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/app/proguard-rules.pro b/Android/Amit Shekhar/Intermediate/TestLogin/app/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/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/Android/Amit Shekhar/Intermediate/TestLogin/app/src/androidTest/java/com/example/testlogin/ExampleInstrumentedTest.java b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/androidTest/java/com/example/testlogin/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..d9343755
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/androidTest/java/com/example/testlogin/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.example.testlogin;
+
+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.testlogin", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/AndroidManifest.xml b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..f1e84c69
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/AndroidManifest.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/java/com/example/testlogin/MainActivity.java b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/java/com/example/testlogin/MainActivity.java
new file mode 100644
index 00000000..69ae29a1
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/java/com/example/testlogin/MainActivity.java
@@ -0,0 +1,96 @@
+package com.example.testlogin;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.widget.Toast;
+
+import com.firebase.ui.auth.AuthUI;
+import com.firebase.ui.auth.IdpResponse;
+import com.google.firebase.auth.FirebaseAuth;
+import com.google.firebase.auth.FirebaseUser;
+
+import java.util.Arrays;
+import java.util.List;
+
+public class MainActivity extends AppCompatActivity {
+ private static int AUTH_REQUEST_CODE = 7143;
+ private FirebaseAuth firebaseAuth;
+ private FirebaseAuth.AuthStateListener listener;
+ private List providers;
+
+ int RC_SIGN_IN = 1;
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ firebaseAuth.addAuthStateListener(listener);
+ }
+
+ @Override
+ protected void onStop() {
+ if (listener != null) {
+ firebaseAuth.removeAuthStateListener(listener);
+ }
+ super.onStop();
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ init();
+ }
+
+ private void init() {
+ providers = Arrays.asList(
+ new AuthUI.IdpConfig.EmailBuilder().build(),
+ new AuthUI.IdpConfig.PhoneBuilder().build(),
+ new AuthUI.IdpConfig.GoogleBuilder().build(),
+ new AuthUI.IdpConfig.FacebookBuilder().build(),
+ new AuthUI.IdpConfig.TwitterBuilder().build()
+ );
+ firebaseAuth = FirebaseAuth.getInstance();
+ listener = new FirebaseAuth.AuthStateListener() {
+ @Override
+ public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
+ FirebaseUser user = firebaseAuth.getCurrentUser();
+ if (user != null) {
+ Toast.makeText(MainActivity.this, "Successfully logged in with UID " + user.getUid(), Toast.LENGTH_SHORT).show();
+ Intent intent = new Intent(MainActivity.this, SecondActivity.class);
+ startActivity(intent);
+ } else {
+ startActivityForResult(AuthUI.getInstance()
+ .createSignInIntentBuilder()
+ .setAvailableProviders(providers)
+ .build()
+ , AUTH_REQUEST_CODE);
+ }
+ }
+ };
+ }
+}
+//
+// @Override
+// protected void onActivityResult(int requestCode, int resultCode, @Nullable @org.jetbrains.annotations.Nullable Intent data) {
+// super.onActivityResult(requestCode, resultCode, data);
+//
+// if (requestCode == RC_SIGN_IN) {
+// IdpResponse response = IdpResponse.fromResultIntent(data);
+//
+// if (resultCode == RESULT_OK) {
+// // Successfully signed in
+// FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
+// // ...
+// } else {
+// // Sign in failed. If response is null the user canceled the
+// // sign-in flow using the back button. Otherwise check
+// // response.getError().getErrorCode() and handle the error.
+// // ...
+// }
+// }
+// }
+//}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/java/com/example/testlogin/SecondActivity.java b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/java/com/example/testlogin/SecondActivity.java
new file mode 100644
index 00000000..403322b5
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/java/com/example/testlogin/SecondActivity.java
@@ -0,0 +1,70 @@
+package com.example.testlogin;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.bumptech.glide.Glide;
+import com.firebase.ui.auth.AuthUI;
+import com.google.android.gms.tasks.OnCompleteListener;
+import com.google.android.gms.tasks.Task;
+import com.google.firebase.auth.FirebaseAuth;
+import com.google.firebase.auth.FirebaseUser;
+
+public class SecondActivity extends AppCompatActivity {
+ ImageView imageView;
+ TextView name, email;
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_second);
+
+ imageView = findViewById(R.id.imageView);
+ name = findViewById(R.id.textName);
+ email = findViewById(R.id.textEmail);
+ Button signOut = findViewById(R.id.sign_out_button);
+ signOut.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (v.getId() == R.id.sign_out_button) {
+ AuthUI.getInstance()
+ .signOut(SecondActivity.this)
+ .addOnCompleteListener(new OnCompleteListener() {
+ public void onComplete(@NonNull Task task) {
+ // user is now signed out
+ startActivity(new Intent(SecondActivity.this, MainActivity.class));
+ finish();
+ }
+ });
+ }
+ }
+ });
+ FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
+ FirebaseUser acct = firebaseAuth.getCurrentUser();
+ if (acct != null) {
+ String personName = acct.getDisplayName();
+ String personEmail = acct.getEmail();
+ Uri personPhoto = acct.getPhotoUrl();
+
+ name.setText(personName);
+ email.setText(personEmail);
+ Glide.with(this).load(String.valueOf(personPhoto)).into(imageView);
+ }
+
+// AuthUI.getInstance()
+// .signOut(this)
+// .addOnCompleteListener(new OnCompleteListener() {
+// public void onComplete(@NonNull Task task) {
+// // ...
+// }
+// });
+
+ }
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/drawable/ic_launcher_background.xml b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/layout/activity_main.xml b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..34078b96
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/layout/activity_second.xml b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/layout/activity_second.xml
new file mode 100644
index 00000000..53ef6cd6
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/layout/activity_second.xml
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-hdpi/ic_launcher.png b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..a571e600
Binary files /dev/null and b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..61da551c
Binary files /dev/null and b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-mdpi/ic_launcher.png b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..c41dd285
Binary files /dev/null and b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..db5080a7
Binary files /dev/null and b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..6dba46da
Binary files /dev/null and b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..da31a871
Binary files /dev/null and b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..15ac6817
Binary files /dev/null and b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..b216f2d3
Binary files /dev/null and b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..f25a4197
Binary files /dev/null and b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..e96783cc
Binary files /dev/null and b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/values-night/themes.xml b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..9cbb9b13
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/values/colors.xml b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/values/colors.xml
new file mode 100644
index 00000000..f8c6127d
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/values/colors.xml
@@ -0,0 +1,10 @@
+
+
+ #FFBB86FC
+ #FF6200EE
+ #FF3700B3
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/values/strings.xml b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000..5cc60103
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/values/strings.xml
@@ -0,0 +1,9 @@
+
+ TestLogin
+
+ 167598595319037
+ fb167598595319037
+
+ Z83VnZaMmjkskIBzeamxBG0ey
+ 1VFwi91hSRohA23NFPW9hYqGUsvndwF0HoXy5Z7unGSHAPJlq6
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/values/themes.xml b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..89518bad
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/main/res/values/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/app/src/test/java/com/example/testlogin/ExampleUnitTest.java b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/test/java/com/example/testlogin/ExampleUnitTest.java
new file mode 100644
index 00000000..c944a0f7
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/app/src/test/java/com/example/testlogin/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.example.testlogin;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/build.gradle b/Android/Amit Shekhar/Intermediate/TestLogin/build.gradle
new file mode 100644
index 00000000..bca37fc7
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/build.gradle
@@ -0,0 +1,25 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+buildscript {
+ repositories {
+ google()
+ mavenCentral()
+ }
+ dependencies {
+ classpath "com.android.tools.build:gradle:4.2.0"
+ classpath 'com.google.gms:google-services:4.3.8'
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ jcenter() // Warning: this repository is going to shut down soon
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/gradle.properties b/Android/Amit Shekhar/Intermediate/TestLogin/gradle.properties
new file mode 100644
index 00000000..6826e61b
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/gradle.properties
@@ -0,0 +1,17 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app"s APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
\ No newline at end of file
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/gradle/wrapper/gradle-wrapper.jar b/Android/Amit Shekhar/Intermediate/TestLogin/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..f6b961fd
Binary files /dev/null and b/Android/Amit Shekhar/Intermediate/TestLogin/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/gradle/wrapper/gradle-wrapper.properties b/Android/Amit Shekhar/Intermediate/TestLogin/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..75076f35
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Sun May 23 21:50:12 IST 2021
+distributionBase=GRADLE_USER_HOME
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
+distributionPath=wrapper/dists
+zipStorePath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/gradlew b/Android/Amit Shekhar/Intermediate/TestLogin/gradlew
new file mode 100644
index 00000000..cccdd3d5
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/gradlew.bat b/Android/Amit Shekhar/Intermediate/TestLogin/gradlew.bat
new file mode 100644
index 00000000..f9553162
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/Android/Amit Shekhar/Intermediate/TestLogin/settings.gradle b/Android/Amit Shekhar/Intermediate/TestLogin/settings.gradle
new file mode 100644
index 00000000..290c8305
--- /dev/null
+++ b/Android/Amit Shekhar/Intermediate/TestLogin/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "TestLogin"
+include ':app'
diff --git a/Android/Test/Advanced/test b/Android/Test/Advanced/test
deleted file mode 100644
index 8b137891..00000000
--- a/Android/Test/Advanced/test
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/Android/Test/Beginner/test b/Android/Test/Beginner/test
deleted file mode 100644
index 8b137891..00000000
--- a/Android/Test/Beginner/test
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/Android/Test/Intermediate/test b/Android/Test/Intermediate/test
deleted file mode 100644
index 8b137891..00000000
--- a/Android/Test/Intermediate/test
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/.gitignore b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/.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/AndroidLibrary/Amit_Shekhar/QRCodeScanner/.idea/.gitignore b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/.idea/compiler.xml b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/.idea/compiler.xml
new file mode 100644
index 00000000..fb7f4a8a
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/.idea/gradle.xml b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/.idea/gradle.xml
new file mode 100644
index 00000000..5cd135a0
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/.idea/gradle.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/.idea/jarRepositories.xml b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/.idea/jarRepositories.xml
new file mode 100644
index 00000000..0380d8d3
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/.idea/misc.xml b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/.idea/misc.xml
new file mode 100644
index 00000000..6199cc2a
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/.idea/runConfigurations.xml b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/.idea/runConfigurations.xml
new file mode 100644
index 00000000..797acea5
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/.gitignore b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/build.gradle b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/build.gradle
new file mode 100644
index 00000000..27d9004b
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/build.gradle
@@ -0,0 +1,42 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+
+ defaultConfig {
+ applicationId "com.example.qrcodescanner"
+ minSdkVersion 24
+ targetSdkVersion 30
+ 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.0'
+ implementation 'com.google.android.material:material:1.3.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
+ testImplementation 'junit:junit:4.+'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.2'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
+ implementation 'com.journeyapps:zxing-android-embedded:4.1.0'
+ implementation "com.airbnb.android:lottie:3.7.0"
+
+}
\ No newline at end of file
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/proguard-rules.pro b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/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/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/androidTest/java/com/example/qrcodescanner/ExampleInstrumentedTest.java b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/androidTest/java/com/example/qrcodescanner/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..49a57710
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/androidTest/java/com/example/qrcodescanner/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.example.qrcodescanner;
+
+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.qrcodescanner", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/AndroidManifest.xml b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..1845de2c
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/AndroidManifest.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/assets/splash.json b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/assets/splash.json
new file mode 100644
index 00000000..46cc6df8
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/assets/splash.json
@@ -0,0 +1 @@
+{"v":"5.5.7","meta":{"g":"LottieFiles AE 0.1.20","a":"Anil Shebe","k":"Barcode scanner","d":"Barcode scanner : This file made by anil shebe","tc":"none"},"fr":30,"ip":0,"op":480,"w":800,"h":800,"nm":"Barcode scanner","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Line Outlines","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.692],"y":[1]},"o":{"x":[1],"y":[-0.221]},"t":15,"s":[0]},{"t":26,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":23,"s":[398.5,230.5,0],"to":[0,56.167,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":84,"s":[398.5,567.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":144,"s":[398.5,230.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":205,"s":[398.5,567.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":264,"s":[398.5,230.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":325,"s":[398.5,567.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":384,"s":[398.5,230.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":445,"s":[398.5,567.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":503,"s":[398.5,230.5,0],"to":[0,0,0],"ti":[0,-56.167,0]},{"t":564,"s":[398.5,567.5,0]}],"ix":2},"a":{"a":0,"k":[247.5,7.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-78.472,0],[-78.669,-0.024],[-0.077,-7.013],[4.603,0],[157.142,0.007],[0.689,6.888],[-7.733,0]],"o":[[78.669,0],[4.617,0.002],[0.078,7.118],[-157.142,0.022],[-4.669,-0.001],[-0.432,-4.309],[78.472,-0.002]],"v":[[-0.091,-6.025],[235.916,-6.008],[246.519,-0.053],[236.046,5.958],[-235.379,5.971],[-246.165,0.051],[-235.508,-6.023]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[247.213,7.422],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":22,"op":511,"st":24,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Barcode Line Outlines","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[1],"y":[0]},"t":11,"s":[0]},{"t":24,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[402,400.5,0],"ix":2},"a":{"a":0,"k":[223,147.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.02,144.974],[-15.02,144.974],[-15.02,-144.974],[15.02,-144.974]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[401.186,146.469],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.418,1.624],[0,0],[0,0],[-0.008,8.813],[-0.055,93.866]],"o":[[0,0],[0,0],[-3.02,1.611],[0.08,-93.864],[0.001,-0.314]],"v":[[-2.055,-146.33],[2.8,-146.33],[2.8,143.398],[-2.792,137.517],[-2.625,-144.078]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[3.731,147.415],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.788,145.006],[-5.788,145.006],[-5.788,-145.006],[5.788,-145.006]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[439.117,146.296],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.788,145.006],[-5.788,145.006],[-5.788,-145.006],[5.788,-145.006]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[109.9,146.296],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-5.617,-145.055],[5.617,-145.055],[5.617,145.055],[-5.617,145.055]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[301.68,146.11],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.605,145.02],[-5.605,145.02],[-5.605,-145.02],[5.605,-145.02]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[277.852,146.476],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.605,145.02],[-5.605,145.02],[-5.605,-145.02],[5.605,-145.02]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[137.434,146.476],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.903,3.541],[0,0],[-2.098,0.385],[-0.001,-3.098],[-0.04,-90.321]],"o":[[0,0],[1.659,-0.303],[0.132,3.885],[0.017,90.322],[0.003,6.61]],"v":[[-2.951,143.394],[-2.951,-145.95],[2.425,-146.935],[2.752,-136.853],[2.792,134.112]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[423.919,147.451],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.902,3.541],[0,0],[-2.099,0.385],[-0.001,-3.098],[-0.04,-90.321]],"o":[[0,0],[1.658,-0.303],[0.131,3.885],[0.016,90.322],[0.002,6.61]],"v":[[-2.951,143.394],[-2.951,-145.95],[2.425,-146.935],[2.753,-136.853],[2.793,134.112]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[161.962,147.451],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.612,144.988],[-5.612,144.988],[-5.612,-144.988],[5.612,-144.988]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[219.43,146.469],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-5.619,-145.044],[5.619,-145.044],[5.619,145.044],[-5.619,145.044]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[328.997,146.116],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[4.836,145.006],[-4.836,145.006],[-4.836,-145.006],[4.836,-145.006]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[172.294,146.469],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[9.645,145.057],[-9.645,145.057],[-9.645,-145.057],[9.645,-145.057]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[360.335,146.319],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-9.6,-145.188],[9.6,-145.188],[9.6,145.188],[-9.6,145.188]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[195.189,146.169],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-9.6,-145.188],[9.6,-145.188],[9.6,145.188],[-9.6,145.188]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[78.371,146.169],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-9.648,-144.919],[9.648,-144.919],[9.648,144.919],[-9.648,144.919]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[249.007,146.067],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":2,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.011,144.975],[-15.011,144.975],[-15.011,-144.975],[15.011,-144.975]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[37.65,146.471],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":496,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"corner Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[400.5,399,0],"ix":2},"a":{"a":0,"k":[277.5,192,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0,0,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":23,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-30.345,30.239],[44.885,30.239],[44.885,44.691],[-44.885,44.691],[-44.885,-44.691],[-30.345,-44.691]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[45.769,338.335],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-30.345,30.239],[-30.345,-44.691],[-44.885,-44.691],[-44.885,44.691],[44.885,44.691],[44.885,30.239]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[45.769,338.335],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[44.834,44.716],[30.27,44.716],[30.27,-30.214],[-44.834,-30.214],[-44.834,-44.716],[44.834,-44.716]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[509.2,45.595],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[44.834,44.716],[44.834,-44.716],[-44.834,-44.716],[-44.834,-30.214],[30.27,-30.214],[30.27,44.716]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[509.2,45.595],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-44.884,44.703],[-44.884,30.267],[30.132,30.267],[30.132,-44.703],[44.884,-44.703],[44.884,44.703]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[509.079,338.48],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-44.884,44.703],[44.884,44.703],[44.884,-44.703],[30.132,-44.703],[30.132,30.267],[-44.884,30.267]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[509.079,338.48],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-29.944,44.75],[-44.869,44.75],[-44.869,-44.75],[44.869,-44.75],[44.869,-30.502],[-29.944,-30.502]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[45.785,45.568],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-29.944,44.75],[-29.944,-30.502],[44.869,-30.502],[44.869,-44.75],[-44.869,-44.75],[-44.869,44.75]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[45.785,45.568],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":497,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/java/com/example/qrcodescanner/MainActivity.java b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/java/com/example/qrcodescanner/MainActivity.java
new file mode 100644
index 00000000..d496a11e
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/java/com/example/qrcodescanner/MainActivity.java
@@ -0,0 +1,54 @@
+package com.example.qrcodescanner;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.google.zxing.integration.android.IntentIntegrator;
+import com.google.zxing.integration.android.IntentResult;
+
+public class MainActivity extends AppCompatActivity implements View.OnClickListener {
+ Button scanBtn;
+ TextView messageText, messageFormat;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ scanBtn = findViewById(R.id.scanBtn);
+ messageText = findViewById(R.id.textContent);
+ scanBtn.setOnClickListener(this);
+ messageText.setVisibility(View.INVISIBLE);
+ }
+
+ @Override
+ public void onClick(View v) {
+ IntentIntegrator intentIntegrator = new IntentIntegrator(this);
+ intentIntegrator.setPrompt("Scan a barcode or QR Code");
+ intentIntegrator.setOrientationLocked(true);
+ intentIntegrator.initiateScan();
+ }
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ IntentResult intentResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
+ if (intentResult != null) {
+ if (intentResult.getContents() == null) {
+ Toast.makeText(getBaseContext(), "Cancelled", Toast.LENGTH_SHORT).show();
+ messageText.setVisibility(View.INVISIBLE);
+ } else {
+ messageText.setText(intentResult.getContents());
+ messageText.setVisibility(View.VISIBLE);
+ }
+ } else {
+ super.onActivityResult(requestCode, resultCode, data);
+ }
+ }
+}
\ No newline at end of file
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/java/com/example/qrcodescanner/SplashActivity.java b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/java/com/example/qrcodescanner/SplashActivity.java
new file mode 100644
index 00000000..bb922f30
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/java/com/example/qrcodescanner/SplashActivity.java
@@ -0,0 +1,29 @@
+package com.example.qrcodescanner;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+
+public class SplashActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_splash);
+ Thread background = new Thread(){
+ public void run(){
+ try{
+ sleep(3*1000);
+ startActivity(new Intent(SplashActivity.this,MainActivity.class));
+ finish();
+ }
+ catch (Exception e){
+ Log.d("DEBUG",e.getMessage());
+ }
+ }
+ };
+ background.start();
+ }
+}
\ No newline at end of file
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/drawable/ic_launcher_background.xml b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/layout/activity_main.xml b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..3e0091c5
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/layout/activity_splash.xml b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/layout/activity_splash.xml
new file mode 100644
index 00000000..287e058c
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/layout/activity_splash.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-hdpi/ic_launcher.png b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..a571e600
Binary files /dev/null and b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..61da551c
Binary files /dev/null and b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-mdpi/ic_launcher.png b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..c41dd285
Binary files /dev/null and b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..db5080a7
Binary files /dev/null and b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..6dba46da
Binary files /dev/null and b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..da31a871
Binary files /dev/null and b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..15ac6817
Binary files /dev/null and b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..b216f2d3
Binary files /dev/null and b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..f25a4197
Binary files /dev/null and b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..e96783cc
Binary files /dev/null and b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/values-night/themes.xml b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..159bf8a1
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/values/colors.xml b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/values/colors.xml
new file mode 100644
index 00000000..01d5f122
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/values/colors.xml
@@ -0,0 +1,13 @@
+
+
+ #FFBB86FC
+ #FF6200EE
+ #FF3700B3
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+ #0F9D58
+ #16E37F
+ #03DAC5
+
\ No newline at end of file
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/values/strings.xml b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000..59d0791e
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ QRCodeScanner
+
\ No newline at end of file
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/values/themes.xml b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..7a9539c0
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/main/res/values/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/test/java/com/example/qrcodescanner/ExampleUnitTest.java b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/test/java/com/example/qrcodescanner/ExampleUnitTest.java
new file mode 100644
index 00000000..7addac4b
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/app/src/test/java/com/example/qrcodescanner/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.example.qrcodescanner;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/build.gradle b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/build.gradle
new file mode 100644
index 00000000..23136ba5
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/build.gradle
@@ -0,0 +1,25 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+buildscript {
+ repositories {
+ google()
+ mavenCentral()
+ }
+ dependencies {
+ classpath "com.android.tools.build:gradle:4.2.0"
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ jcenter() // Warning: this repository is going to shut down soon
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
\ No newline at end of file
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/gradle.properties b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/gradle.properties
new file mode 100644
index 00000000..6826e61b
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/gradle.properties
@@ -0,0 +1,17 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app"s APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
\ No newline at end of file
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/gradle/wrapper/gradle-wrapper.jar b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..f6b961fd
Binary files /dev/null and b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/gradle/wrapper/gradle-wrapper.properties b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..b2b74bcd
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Mon May 31 02:43:30 IST 2021
+distributionBase=GRADLE_USER_HOME
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
+distributionPath=wrapper/dists
+zipStorePath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/gradlew b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/gradlew
new file mode 100644
index 00000000..cccdd3d5
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/gradlew.bat b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/gradlew.bat
new file mode 100644
index 00000000..f9553162
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/AndroidLibrary/Amit_Shekhar/QRCodeScanner/settings.gradle b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/settings.gradle
new file mode 100644
index 00000000..3aebdc28
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/QRCodeScanner/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "QRCodeScanner"
+include ':app'
diff --git a/AndroidLibrary/Amit_Shekhar/README.md b/AndroidLibrary/Amit_Shekhar/README.md
new file mode 100644
index 00000000..82e979c3
--- /dev/null
+++ b/AndroidLibrary/Amit_Shekhar/README.md
@@ -0,0 +1,15 @@
+# QR Code Scanner
+
+This is an assignment submission on top android library usage.
+
+## Demonstration
+
+
+
+## Libraries
+
+1. **Zxing** (retrofit - 2.4.0) & (converter-gson - 2.2.0)
+- Used to scan the QR/Bar code and fetch the result.
+
+2. **Lottie** - 3.7.0
+- Used to insert animation on the app splash screen.
diff --git a/AndroidLibrary/Amit_Shekhar/readme_assets/1.gif b/AndroidLibrary/Amit_Shekhar/readme_assets/1.gif
new file mode 100644
index 00000000..fee37eb8
Binary files /dev/null and b/AndroidLibrary/Amit_Shekhar/readme_assets/1.gif differ
diff --git a/AndroidLibrary/Amit_Shekhar/readme_assets/2.gif b/AndroidLibrary/Amit_Shekhar/readme_assets/2.gif
new file mode 100644
index 00000000..d798f8e3
Binary files /dev/null and b/AndroidLibrary/Amit_Shekhar/readme_assets/2.gif differ
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/.gitignore b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/.gitignore
new file mode 100644
index 00000000..37a4eb8b
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/.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/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/.idea/.gitignore b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/.idea/compiler.xml b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/.idea/compiler.xml
new file mode 100644
index 00000000..61a9130c
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/.idea/gradle.xml b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/.idea/gradle.xml
new file mode 100644
index 00000000..b9090f42
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/.idea/gradle.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/.idea/jarRepositories.xml b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/.idea/jarRepositories.xml
new file mode 100644
index 00000000..1dfcd020
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/.idea/misc.xml b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/.idea/misc.xml
new file mode 100644
index 00000000..58918f50
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/.idea/previewer/phone/phoneSettingConfig_-331846843.json b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/.idea/previewer/phone/phoneSettingConfig_-331846843.json
new file mode 100644
index 00000000..f505e6b9
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/.idea/previewer/phone/phoneSettingConfig_-331846843.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/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/.idea/previewer/previewConfig.json b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/.idea/previewer/previewConfig.json
new file mode 100644
index 00000000..d593b2aa
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/.idea/previewer/previewConfig.json
@@ -0,0 +1,9 @@
+{
+ "1.0.0": {
+ "LastPreviewDevice": {
+ "C:\\Users\\amits\\DevEcoStudioProjects\\LoginApp\\entry": [
+ "phone"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/build.gradle b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/build.gradle
new file mode 100644
index 00000000..9ec29b00
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/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/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/.gitignore b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/.gitignore
new file mode 100644
index 00000000..796b96d1
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/build.gradle b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/build.gradle
new file mode 100644
index 00000000..30c5f30b
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/build.gradle
@@ -0,0 +1,26 @@
+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'
+ }
+ }
+ }
+
+}
+
+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/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/proguard-rules.pro b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/proguard-rules.pro
new file mode 100644
index 00000000..f7666e47
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/proguard-rules.pro
@@ -0,0 +1 @@
+# config module specific ProGuard rules here.
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/config.json b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/config.json
new file mode 100644
index 00000000..ad35ea07
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/config.json
@@ -0,0 +1,67 @@
+{
+ "app": {
+ "bundleName": "com.example.loginapp",
+ "vendor": "example",
+ "version": {
+ "code": 1000000,
+ "name": "1.0.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Release"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.example.loginapp",
+ "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.loginapp.MainAbility",
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ },
+ {
+ "orientation": "unspecified",
+ "name": "com.example.loginapp.LoginAbility",
+ "icon": "$media:icon",
+ "description": "$string:loginability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ },
+ {
+ "orientation": "unspecified",
+ "name": "com.example.loginapp.SignupAbility",
+ "icon": "$media:icon",
+ "description": "$string:signupability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/LoginAbility.java b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/LoginAbility.java
new file mode 100644
index 00000000..54046e18
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/LoginAbility.java
@@ -0,0 +1,13 @@
+package com.example.loginapp;
+
+import com.example.loginapp.slice.LoginAbilitySlice;
+import ohos.aafwk.ability.Ability;
+import ohos.aafwk.content.Intent;
+
+public class LoginAbility extends Ability {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setMainRoute(LoginAbilitySlice.class.getName());
+ }
+}
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MainAbility.java b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MainAbility.java
new file mode 100644
index 00000000..74c3b52e
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MainAbility.java
@@ -0,0 +1,31 @@
+package com.example.loginapp;
+
+import com.example.loginapp.slice.LoginAbilitySlice;
+import com.example.loginapp.slice.MainAbilitySlice;
+import ohos.aafwk.ability.Ability;
+import ohos.aafwk.ability.DeviceConfigInfo;
+import ohos.aafwk.content.Intent;
+import ohos.aafwk.content.Operation;
+import ohos.agp.components.Button;
+import ohos.agp.components.Component;
+import ohos.system.DeviceInfo;
+
+public class MainAbility extends Ability {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setMainRoute(MainAbilitySlice.class.getName());
+
+// bt.setClickedListener(listener -> {
+// Operation operation = new Intent.OperationBuilder()
+// .withDeviceId("")
+// .withBundleName("com.example.loginapp")
+// .withAbilityName("com.example.loginapp.LoginAbility")
+// .build();
+//
+// Intent intent2 = new Intent();
+// intent2.setOperation(operation);
+// startAbility(intent2);
+// });
+ }
+}
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MyApplication.java b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MyApplication.java
new file mode 100644
index 00000000..4ba87073
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MyApplication.java
@@ -0,0 +1,10 @@
+package com.example.loginapp;
+
+import ohos.aafwk.ability.AbilityPackage;
+
+public class MyApplication extends AbilityPackage {
+ @Override
+ public void onInitialize() {
+ super.onInitialize();
+ }
+}
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/SignupAbility.java b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/SignupAbility.java
new file mode 100644
index 00000000..547794e6
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/SignupAbility.java
@@ -0,0 +1,13 @@
+package com.example.loginapp;
+
+import com.example.loginapp.slice.SignupAbilitySlice;
+import ohos.aafwk.ability.Ability;
+import ohos.aafwk.content.Intent;
+
+public class SignupAbility extends Ability {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setMainRoute(SignupAbilitySlice.class.getName());
+ }
+}
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/LoginAbilitySlice.java b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/LoginAbilitySlice.java
new file mode 100644
index 00000000..6271d7d1
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/LoginAbilitySlice.java
@@ -0,0 +1,23 @@
+package com.example.loginapp.slice;
+
+import com.example.loginapp.ResourceTable;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+
+public class LoginAbilitySlice extends AbilitySlice {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_login);
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/MainAbilitySlice.java b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/MainAbilitySlice.java
new file mode 100644
index 00000000..885b8e49
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/MainAbilitySlice.java
@@ -0,0 +1,28 @@
+package com.example.loginapp.slice;
+
+import com.example.loginapp.ResourceTable;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.agp.components.Button;
+
+public class MainAbilitySlice extends AbilitySlice {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_main);
+ Button login_bt = (Button)findComponentById(ResourceTable.Id_login_btn);
+ Button signup_bt = (Button)findComponentById(ResourceTable.Id_signup_btn);
+ login_bt.setClickedListener(listener -> present(new LoginAbilitySlice(), new Intent()));
+ signup_bt.setClickedListener(listener -> present(new SignupAbilitySlice(), new Intent()));
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/SignupAbilitySlice.java b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/SignupAbilitySlice.java
new file mode 100644
index 00000000..8ea892da
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/SignupAbilitySlice.java
@@ -0,0 +1,108 @@
+package com.example.loginapp.slice;
+
+import com.example.loginapp.ResourceTable;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.agp.components.Component;
+import ohos.agp.components.Text;
+import ohos.agp.components.TextField;
+import ohos.multimodalinput.event.KeyEvent;
+
+public class SignupAbilitySlice extends AbilitySlice {
+ TextField fn;
+ Text fn_err;
+ private interface Lambda{
+ boolean checkTextField(String s);
+ }
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_signup);
+ setObserver(ResourceTable.Id_first_name, ResourceTable.Id_first_name_error, this::correctName);
+ setObserver(ResourceTable.Id_last_name, ResourceTable.Id_last_name_error, this::correctName);
+ setObserver(ResourceTable.Id_email, ResourceTable.Id_email_error, this::correctEmail);
+ setObserver(ResourceTable.Id_password, ResourceTable.Id_password_error, this::correctPassword);
+ setObserver(ResourceTable.Id_phone, ResourceTable.Id_phone_error, this::correctPhone);
+ }
+
+ private boolean correctName(String str){
+ for(int i=0;i='A' && curr<='Z')&&!(curr>='a' && curr<='z')&&(curr!=' ')&&(curr!='.')){
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private boolean correctEmail(String str){
+ int dotafterat = 0;
+ int at = 0;
+ for(int i=0;i0) dotafterat += 1;
+ }
+ }
+ if(!(at==1 && dotafterat==1))
+ return false;
+ return true;
+ }
+
+ private boolean correctPassword(String str){
+ if(str.length()>=6)
+ return true;
+ return false;
+ }
+
+ private boolean correctPhone(String str){
+ if(str.length()!=10)
+ return false;
+ for(int i=0;i='0'))
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+
+ public void setObserver(int textFieldID, int errTextID, Lambda l)
+ {
+ TextField textField = (TextField) findComponentById(textFieldID);
+ Text text = (Text) findComponentById(errTextID);
+ Text.TextObserver observer = new Text.TextObserver()
+ {
+ @Override
+ public void onTextUpdated(String s, int i, int i1, int i2)
+ {
+ if (!l.checkTextField(textField.getText()))
+ {
+ text.setVisibility(Component.VISIBLE);
+ return;
+ }
+ else {
+ text.setVisibility(Component.HIDE);
+ }
+
+ }
+ };
+ textField.addTextObserver(observer);
+ }
+}
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/element/string.json b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/element/string.json
new file mode 100644
index 00000000..f9d63e51
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/element/string.json
@@ -0,0 +1,32 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "LoginApp"
+ },
+ {
+ "name": "mainability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "mainability_HelloWorld",
+ "value": "Hello World"
+ },
+ {
+ "name": "loginability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "loginability_HelloWorld",
+ "value": "Hello World"
+ },
+ {
+ "name": "signupability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "signupability_HelloWorld",
+ "value": "Hello World"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_login.xml b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_login.xml
new file mode 100644
index 00000000..a002c235
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_login.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_main.xml b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_main.xml
new file mode 100644
index 00000000..c0c0a3df
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_main.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_signup.xml b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_signup.xml
new file mode 100644
index 00000000..a002c235
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_signup.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/bg_text_view.xml b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/bg_text_view.xml
new file mode 100644
index 00000000..a3a60134
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/bg_text_view.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_login.xml b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_login.xml
new file mode 100644
index 00000000..44b95db2
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_login.xml
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_main.xml b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_main.xml
new file mode 100644
index 00000000..d5d99a5e
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_main.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_signup.xml b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_signup.xml
new file mode 100644
index 00000000..00594d8a
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_signup.xml
@@ -0,0 +1,198 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/icon.png b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/icon.png
new file mode 100644
index 00000000..ce307a88
Binary files /dev/null and b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/icon.png differ
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/lightning.png b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/lightning.png
new file mode 100644
index 00000000..9f218c3e
Binary files /dev/null and b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/lightning.png differ
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/config.json b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/config.json
new file mode 100644
index 00000000..33be968e
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/config.json
@@ -0,0 +1,41 @@
+{
+ "app": {
+ "bundleName": "com.example.loginapp",
+ "vendor": "example",
+ "version": {
+ "code": 1000000,
+ "name": "1.0.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Release"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.example.loginapp",
+ "name": "testModule",
+ "deviceType": [
+ "phone"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "entry_test",
+ "moduleType": "feature",
+ "installationFree": true
+ },
+ "abilities": [
+ {
+ "name": "decc.testkit.runner.EntryAbility",
+ "description": "Test Entry Ability",
+ "icon": "$media:icon",
+ "label": "$string:app_name",
+ "launchType": "standard",
+ "orientation": "landscape",
+ "visible": true,
+ "type": "page"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/java/com/example/loginapp/ExampleOhosTest.java b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/java/com/example/loginapp/ExampleOhosTest.java
new file mode 100644
index 00000000..6e904bc8
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/java/com/example/loginapp/ExampleOhosTest.java
@@ -0,0 +1,14 @@
+package com.example.loginapp;
+
+import ohos.aafwk.ability.delegation.AbilityDelegatorRegistry;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class ExampleOhosTest {
+ @Test
+ public void testBundleName() {
+ final String actualBundleName = AbilityDelegatorRegistry.getArguments().getTestBundleName();
+ assertEquals("com.example.loginapp", actualBundleName);
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/test/java/com/example/loginapp/ExampleTest.java b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/test/java/com/example/loginapp/ExampleTest.java
new file mode 100644
index 00000000..bfc643ac
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/entry/src/test/java/com/example/loginapp/ExampleTest.java
@@ -0,0 +1,9 @@
+package com.example.loginapp;
+
+import org.junit.Test;
+
+public class ExampleTest {
+ @Test
+ public void onStart() {
+ }
+}
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/gradle.properties b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/gradle.properties
new file mode 100644
index 00000000..0daf1830
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/gradle.properties
@@ -0,0 +1,10 @@
+# Project-wide Gradle settings.
+# IDE (e.g. DevEco Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# If the Chinese output is garbled, please configure the following parameter.
+# org.gradle.jvmargs=-Dfile.encoding=GBK
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.jar b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..490fda85
Binary files /dev/null and b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.properties b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..f59159e8
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://repo.huaweicloud.com/gradle/gradle-6.3-bin.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/gradlew b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/gradlew
new file mode 100644
index 00000000..2fe81a7d
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/gradlew
@@ -0,0 +1,183 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=`expr $i + 1`
+ done
+ case $i in
+ 0) set -- ;;
+ 1) set -- "$args0" ;;
+ 2) set -- "$args0" "$args1" ;;
+ 3) set -- "$args0" "$args1" "$args2" ;;
+ 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=`save "$@"`
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+exec "$JAVACMD" "$@"
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/gradlew.bat b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/gradlew.bat
new file mode 100644
index 00000000..62bd9b9c
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/gradlew.bat
@@ -0,0 +1,103 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/settings.gradle b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/settings.gradle
new file mode 100644
index 00000000..4773db73
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/AmitShekhar/LoginApp/settings.gradle
@@ -0,0 +1 @@
+include ':entry'
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/.gitignore b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/.gitignore
new file mode 100644
index 00000000..37a4eb8b
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/.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/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/.idea/.gitignore b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/.idea/compiler.xml b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/.idea/compiler.xml
new file mode 100644
index 00000000..61a9130c
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/.idea/gradle.xml b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/.idea/gradle.xml
new file mode 100644
index 00000000..b9090f42
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/.idea/gradle.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/.idea/jarRepositories.xml b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/.idea/jarRepositories.xml
new file mode 100644
index 00000000..1dfcd020
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/.idea/misc.xml b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/.idea/misc.xml
new file mode 100644
index 00000000..58918f50
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/.idea/previewer/phone/phoneSettingConfig_-331846843.json b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/.idea/previewer/phone/phoneSettingConfig_-331846843.json
new file mode 100644
index 00000000..f505e6b9
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/.idea/previewer/phone/phoneSettingConfig_-331846843.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/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/.idea/previewer/previewConfig.json b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/.idea/previewer/previewConfig.json
new file mode 100644
index 00000000..d593b2aa
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/.idea/previewer/previewConfig.json
@@ -0,0 +1,9 @@
+{
+ "1.0.0": {
+ "LastPreviewDevice": {
+ "C:\\Users\\amits\\DevEcoStudioProjects\\LoginApp\\entry": [
+ "phone"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/build.gradle b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/build.gradle
new file mode 100644
index 00000000..9ec29b00
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/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/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/.gitignore b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/.gitignore
new file mode 100644
index 00000000..796b96d1
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/build.gradle b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/build.gradle
new file mode 100644
index 00000000..30c5f30b
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/build.gradle
@@ -0,0 +1,26 @@
+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'
+ }
+ }
+ }
+
+}
+
+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/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/proguard-rules.pro b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/proguard-rules.pro
new file mode 100644
index 00000000..f7666e47
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/proguard-rules.pro
@@ -0,0 +1 @@
+# config module specific ProGuard rules here.
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/config.json b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/config.json
new file mode 100644
index 00000000..ad35ea07
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/config.json
@@ -0,0 +1,67 @@
+{
+ "app": {
+ "bundleName": "com.example.loginapp",
+ "vendor": "example",
+ "version": {
+ "code": 1000000,
+ "name": "1.0.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Release"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.example.loginapp",
+ "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.loginapp.MainAbility",
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ },
+ {
+ "orientation": "unspecified",
+ "name": "com.example.loginapp.LoginAbility",
+ "icon": "$media:icon",
+ "description": "$string:loginability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ },
+ {
+ "orientation": "unspecified",
+ "name": "com.example.loginapp.SignupAbility",
+ "icon": "$media:icon",
+ "description": "$string:signupability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/LoginAbility.java b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/LoginAbility.java
new file mode 100644
index 00000000..54046e18
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/LoginAbility.java
@@ -0,0 +1,13 @@
+package com.example.loginapp;
+
+import com.example.loginapp.slice.LoginAbilitySlice;
+import ohos.aafwk.ability.Ability;
+import ohos.aafwk.content.Intent;
+
+public class LoginAbility extends Ability {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setMainRoute(LoginAbilitySlice.class.getName());
+ }
+}
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MainAbility.java b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MainAbility.java
new file mode 100644
index 00000000..74c3b52e
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MainAbility.java
@@ -0,0 +1,31 @@
+package com.example.loginapp;
+
+import com.example.loginapp.slice.LoginAbilitySlice;
+import com.example.loginapp.slice.MainAbilitySlice;
+import ohos.aafwk.ability.Ability;
+import ohos.aafwk.ability.DeviceConfigInfo;
+import ohos.aafwk.content.Intent;
+import ohos.aafwk.content.Operation;
+import ohos.agp.components.Button;
+import ohos.agp.components.Component;
+import ohos.system.DeviceInfo;
+
+public class MainAbility extends Ability {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setMainRoute(MainAbilitySlice.class.getName());
+
+// bt.setClickedListener(listener -> {
+// Operation operation = new Intent.OperationBuilder()
+// .withDeviceId("")
+// .withBundleName("com.example.loginapp")
+// .withAbilityName("com.example.loginapp.LoginAbility")
+// .build();
+//
+// Intent intent2 = new Intent();
+// intent2.setOperation(operation);
+// startAbility(intent2);
+// });
+ }
+}
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MyApplication.java b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MyApplication.java
new file mode 100644
index 00000000..4ba87073
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MyApplication.java
@@ -0,0 +1,10 @@
+package com.example.loginapp;
+
+import ohos.aafwk.ability.AbilityPackage;
+
+public class MyApplication extends AbilityPackage {
+ @Override
+ public void onInitialize() {
+ super.onInitialize();
+ }
+}
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/SignupAbility.java b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/SignupAbility.java
new file mode 100644
index 00000000..547794e6
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/SignupAbility.java
@@ -0,0 +1,13 @@
+package com.example.loginapp;
+
+import com.example.loginapp.slice.SignupAbilitySlice;
+import ohos.aafwk.ability.Ability;
+import ohos.aafwk.content.Intent;
+
+public class SignupAbility extends Ability {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setMainRoute(SignupAbilitySlice.class.getName());
+ }
+}
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/LoginAbilitySlice.java b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/LoginAbilitySlice.java
new file mode 100644
index 00000000..6271d7d1
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/LoginAbilitySlice.java
@@ -0,0 +1,23 @@
+package com.example.loginapp.slice;
+
+import com.example.loginapp.ResourceTable;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+
+public class LoginAbilitySlice extends AbilitySlice {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_login);
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/MainAbilitySlice.java b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/MainAbilitySlice.java
new file mode 100644
index 00000000..885b8e49
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/MainAbilitySlice.java
@@ -0,0 +1,28 @@
+package com.example.loginapp.slice;
+
+import com.example.loginapp.ResourceTable;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.agp.components.Button;
+
+public class MainAbilitySlice extends AbilitySlice {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_main);
+ Button login_bt = (Button)findComponentById(ResourceTable.Id_login_btn);
+ Button signup_bt = (Button)findComponentById(ResourceTable.Id_signup_btn);
+ login_bt.setClickedListener(listener -> present(new LoginAbilitySlice(), new Intent()));
+ signup_bt.setClickedListener(listener -> present(new SignupAbilitySlice(), new Intent()));
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/SignupAbilitySlice.java b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/SignupAbilitySlice.java
new file mode 100644
index 00000000..8ea892da
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/SignupAbilitySlice.java
@@ -0,0 +1,108 @@
+package com.example.loginapp.slice;
+
+import com.example.loginapp.ResourceTable;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.agp.components.Component;
+import ohos.agp.components.Text;
+import ohos.agp.components.TextField;
+import ohos.multimodalinput.event.KeyEvent;
+
+public class SignupAbilitySlice extends AbilitySlice {
+ TextField fn;
+ Text fn_err;
+ private interface Lambda{
+ boolean checkTextField(String s);
+ }
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_signup);
+ setObserver(ResourceTable.Id_first_name, ResourceTable.Id_first_name_error, this::correctName);
+ setObserver(ResourceTable.Id_last_name, ResourceTable.Id_last_name_error, this::correctName);
+ setObserver(ResourceTable.Id_email, ResourceTable.Id_email_error, this::correctEmail);
+ setObserver(ResourceTable.Id_password, ResourceTable.Id_password_error, this::correctPassword);
+ setObserver(ResourceTable.Id_phone, ResourceTable.Id_phone_error, this::correctPhone);
+ }
+
+ private boolean correctName(String str){
+ for(int i=0;i='A' && curr<='Z')&&!(curr>='a' && curr<='z')&&(curr!=' ')&&(curr!='.')){
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private boolean correctEmail(String str){
+ int dotafterat = 0;
+ int at = 0;
+ for(int i=0;i0) dotafterat += 1;
+ }
+ }
+ if(!(at==1 && dotafterat==1))
+ return false;
+ return true;
+ }
+
+ private boolean correctPassword(String str){
+ if(str.length()>=6)
+ return true;
+ return false;
+ }
+
+ private boolean correctPhone(String str){
+ if(str.length()!=10)
+ return false;
+ for(int i=0;i='0'))
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+
+ public void setObserver(int textFieldID, int errTextID, Lambda l)
+ {
+ TextField textField = (TextField) findComponentById(textFieldID);
+ Text text = (Text) findComponentById(errTextID);
+ Text.TextObserver observer = new Text.TextObserver()
+ {
+ @Override
+ public void onTextUpdated(String s, int i, int i1, int i2)
+ {
+ if (!l.checkTextField(textField.getText()))
+ {
+ text.setVisibility(Component.VISIBLE);
+ return;
+ }
+ else {
+ text.setVisibility(Component.HIDE);
+ }
+
+ }
+ };
+ textField.addTextObserver(observer);
+ }
+}
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/element/string.json b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/element/string.json
new file mode 100644
index 00000000..f9d63e51
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/element/string.json
@@ -0,0 +1,32 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "LoginApp"
+ },
+ {
+ "name": "mainability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "mainability_HelloWorld",
+ "value": "Hello World"
+ },
+ {
+ "name": "loginability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "loginability_HelloWorld",
+ "value": "Hello World"
+ },
+ {
+ "name": "signupability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "signupability_HelloWorld",
+ "value": "Hello World"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_login.xml b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_login.xml
new file mode 100644
index 00000000..a002c235
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_login.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_main.xml b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_main.xml
new file mode 100644
index 00000000..c0c0a3df
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_main.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_signup.xml b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_signup.xml
new file mode 100644
index 00000000..a002c235
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_signup.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/bg_text_view.xml b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/bg_text_view.xml
new file mode 100644
index 00000000..a3a60134
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/bg_text_view.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_login.xml b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_login.xml
new file mode 100644
index 00000000..44b95db2
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_login.xml
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_main.xml b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_main.xml
new file mode 100644
index 00000000..d5d99a5e
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_main.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_signup.xml b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_signup.xml
new file mode 100644
index 00000000..00594d8a
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_signup.xml
@@ -0,0 +1,198 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/icon.png b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/icon.png
new file mode 100644
index 00000000..ce307a88
Binary files /dev/null and b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/icon.png differ
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/lightning.png b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/lightning.png
new file mode 100644
index 00000000..9f218c3e
Binary files /dev/null and b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/lightning.png differ
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/config.json b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/config.json
new file mode 100644
index 00000000..33be968e
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/config.json
@@ -0,0 +1,41 @@
+{
+ "app": {
+ "bundleName": "com.example.loginapp",
+ "vendor": "example",
+ "version": {
+ "code": 1000000,
+ "name": "1.0.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Release"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.example.loginapp",
+ "name": "testModule",
+ "deviceType": [
+ "phone"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "entry_test",
+ "moduleType": "feature",
+ "installationFree": true
+ },
+ "abilities": [
+ {
+ "name": "decc.testkit.runner.EntryAbility",
+ "description": "Test Entry Ability",
+ "icon": "$media:icon",
+ "label": "$string:app_name",
+ "launchType": "standard",
+ "orientation": "landscape",
+ "visible": true,
+ "type": "page"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/java/com/example/loginapp/ExampleOhosTest.java b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/java/com/example/loginapp/ExampleOhosTest.java
new file mode 100644
index 00000000..6e904bc8
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/java/com/example/loginapp/ExampleOhosTest.java
@@ -0,0 +1,14 @@
+package com.example.loginapp;
+
+import ohos.aafwk.ability.delegation.AbilityDelegatorRegistry;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class ExampleOhosTest {
+ @Test
+ public void testBundleName() {
+ final String actualBundleName = AbilityDelegatorRegistry.getArguments().getTestBundleName();
+ assertEquals("com.example.loginapp", actualBundleName);
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/test/java/com/example/loginapp/ExampleTest.java b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/test/java/com/example/loginapp/ExampleTest.java
new file mode 100644
index 00000000..bfc643ac
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/entry/src/test/java/com/example/loginapp/ExampleTest.java
@@ -0,0 +1,9 @@
+package com.example.loginapp;
+
+import org.junit.Test;
+
+public class ExampleTest {
+ @Test
+ public void onStart() {
+ }
+}
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/gradle.properties b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/gradle.properties
new file mode 100644
index 00000000..0daf1830
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/gradle.properties
@@ -0,0 +1,10 @@
+# Project-wide Gradle settings.
+# IDE (e.g. DevEco Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# If the Chinese output is garbled, please configure the following parameter.
+# org.gradle.jvmargs=-Dfile.encoding=GBK
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.jar b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..490fda85
Binary files /dev/null and b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.properties b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..f59159e8
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://repo.huaweicloud.com/gradle/gradle-6.3-bin.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/gradlew b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/gradlew
new file mode 100644
index 00000000..2fe81a7d
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/gradlew
@@ -0,0 +1,183 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=`expr $i + 1`
+ done
+ case $i in
+ 0) set -- ;;
+ 1) set -- "$args0" ;;
+ 2) set -- "$args0" "$args1" ;;
+ 3) set -- "$args0" "$args1" "$args2" ;;
+ 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=`save "$@"`
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+exec "$JAVACMD" "$@"
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/gradlew.bat b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/gradlew.bat
new file mode 100644
index 00000000..62bd9b9c
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/gradlew.bat
@@ -0,0 +1,103 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/settings.gradle b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/settings.gradle
new file mode 100644
index 00000000..4773db73
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/AmitShekhar/LoginApp/settings.gradle
@@ -0,0 +1 @@
+include ':entry'
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/.gitignore b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/.gitignore
new file mode 100644
index 00000000..37a4eb8b
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/.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/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/.idea/.gitignore b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/.idea/compiler.xml b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/.idea/compiler.xml
new file mode 100644
index 00000000..61a9130c
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/.idea/gradle.xml b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/.idea/gradle.xml
new file mode 100644
index 00000000..b9090f42
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/.idea/gradle.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/.idea/jarRepositories.xml b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/.idea/jarRepositories.xml
new file mode 100644
index 00000000..1dfcd020
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/.idea/misc.xml b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/.idea/misc.xml
new file mode 100644
index 00000000..58918f50
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/.idea/previewer/phone/phoneSettingConfig_-331846843.json b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/.idea/previewer/phone/phoneSettingConfig_-331846843.json
new file mode 100644
index 00000000..f505e6b9
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/.idea/previewer/phone/phoneSettingConfig_-331846843.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/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/.idea/previewer/previewConfig.json b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/.idea/previewer/previewConfig.json
new file mode 100644
index 00000000..d593b2aa
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/.idea/previewer/previewConfig.json
@@ -0,0 +1,9 @@
+{
+ "1.0.0": {
+ "LastPreviewDevice": {
+ "C:\\Users\\amits\\DevEcoStudioProjects\\LoginApp\\entry": [
+ "phone"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/build.gradle b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/build.gradle
new file mode 100644
index 00000000..4d43341b
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/build.gradle
@@ -0,0 +1,40 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+apply plugin: 'com.huawei.ohos.app'
+
+ohos {
+ compileOptions{
+ annotationEnabled true
+ }
+ 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/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/.gitignore b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/.gitignore
new file mode 100644
index 00000000..796b96d1
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/build.gradle b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/build.gradle
new file mode 100644
index 00000000..fab05f64
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/build.gradle
@@ -0,0 +1,29 @@
+apply plugin: 'com.huawei.ohos.hap'
+apply plugin: 'com.huawei.ohos.decctest'
+ohos {
+ compileOptions{
+ annotationEnabled true
+ }
+ compileSdkVersion 5
+ defaultConfig {
+ compatibleSdkVersion 4
+ }
+ buildTypes {
+ release {
+ proguardOpt {
+ proguardEnabled false
+ rulesFiles 'proguard-rules.pro'
+ }
+ }
+ }
+
+}
+
+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/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/proguard-rules.pro b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/proguard-rules.pro
new file mode 100644
index 00000000..f7666e47
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/proguard-rules.pro
@@ -0,0 +1 @@
+# config module specific ProGuard rules here.
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/config.json b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/config.json
new file mode 100644
index 00000000..ad35ea07
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/config.json
@@ -0,0 +1,67 @@
+{
+ "app": {
+ "bundleName": "com.example.loginapp",
+ "vendor": "example",
+ "version": {
+ "code": 1000000,
+ "name": "1.0.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Release"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.example.loginapp",
+ "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.loginapp.MainAbility",
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ },
+ {
+ "orientation": "unspecified",
+ "name": "com.example.loginapp.LoginAbility",
+ "icon": "$media:icon",
+ "description": "$string:loginability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ },
+ {
+ "orientation": "unspecified",
+ "name": "com.example.loginapp.SignupAbility",
+ "icon": "$media:icon",
+ "description": "$string:signupability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/LoginAbility.java b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/LoginAbility.java
new file mode 100644
index 00000000..54046e18
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/LoginAbility.java
@@ -0,0 +1,13 @@
+package com.example.loginapp;
+
+import com.example.loginapp.slice.LoginAbilitySlice;
+import ohos.aafwk.ability.Ability;
+import ohos.aafwk.content.Intent;
+
+public class LoginAbility extends Ability {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setMainRoute(LoginAbilitySlice.class.getName());
+ }
+}
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MainAbility.java b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MainAbility.java
new file mode 100644
index 00000000..74c3b52e
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MainAbility.java
@@ -0,0 +1,31 @@
+package com.example.loginapp;
+
+import com.example.loginapp.slice.LoginAbilitySlice;
+import com.example.loginapp.slice.MainAbilitySlice;
+import ohos.aafwk.ability.Ability;
+import ohos.aafwk.ability.DeviceConfigInfo;
+import ohos.aafwk.content.Intent;
+import ohos.aafwk.content.Operation;
+import ohos.agp.components.Button;
+import ohos.agp.components.Component;
+import ohos.system.DeviceInfo;
+
+public class MainAbility extends Ability {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setMainRoute(MainAbilitySlice.class.getName());
+
+// bt.setClickedListener(listener -> {
+// Operation operation = new Intent.OperationBuilder()
+// .withDeviceId("")
+// .withBundleName("com.example.loginapp")
+// .withAbilityName("com.example.loginapp.LoginAbility")
+// .build();
+//
+// Intent intent2 = new Intent();
+// intent2.setOperation(operation);
+// startAbility(intent2);
+// });
+ }
+}
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MyApplication.java b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MyApplication.java
new file mode 100644
index 00000000..4ba87073
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MyApplication.java
@@ -0,0 +1,10 @@
+package com.example.loginapp;
+
+import ohos.aafwk.ability.AbilityPackage;
+
+public class MyApplication extends AbilityPackage {
+ @Override
+ public void onInitialize() {
+ super.onInitialize();
+ }
+}
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/SignupAbility.java b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/SignupAbility.java
new file mode 100644
index 00000000..547794e6
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/SignupAbility.java
@@ -0,0 +1,13 @@
+package com.example.loginapp;
+
+import com.example.loginapp.slice.SignupAbilitySlice;
+import ohos.aafwk.ability.Ability;
+import ohos.aafwk.content.Intent;
+
+public class SignupAbility extends Ability {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setMainRoute(SignupAbilitySlice.class.getName());
+ }
+}
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/StoreDb.java b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/StoreDb.java
new file mode 100644
index 00000000..1e9cbc16
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/StoreDb.java
@@ -0,0 +1,8 @@
+package com.example.loginapp;
+
+import ohos.data.orm.OrmDatabase;
+import ohos.data.orm.annotation.Database;
+
+@Database(entities = {User.class}, version = 1)
+public abstract class StoreDb extends OrmDatabase{
+}
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/User.java b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/User.java
new file mode 100644
index 00000000..7910b3c9
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/User.java
@@ -0,0 +1,69 @@
+package com.example.loginapp;
+
+import ohos.data.orm.OrmObject;
+import ohos.data.orm.annotation.Entity;
+import ohos.data.orm.annotation.PrimaryKey;
+
+@Entity(tableName = "user")
+public class User extends OrmObject {
+ @PrimaryKey(autoGenerate = true)
+ private Integer userId;
+ private String first_name, last_name, email, password, phone;
+ private char gender;
+
+ public String getFirst_name() {
+ return first_name;
+ }
+
+ public void setFirst_name(String first_name) {
+ this.first_name = first_name;
+ }
+
+ public String getLast_name() {
+ return last_name;
+ }
+
+ public void setLast_name(String last_name) {
+ this.last_name = last_name;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getPhone() {
+ return phone;
+ }
+
+ public void setPhone(String phone) {
+ this.phone = phone;
+ }
+
+ public char getGender() {
+ return gender;
+ }
+
+ public void setGender(char gender) {
+ this.gender = gender;
+ }
+
+ public Integer getUserId() {
+ return userId;
+ }
+
+ public void setUserId(Integer userId) {
+ this.userId = userId;
+ }
+}
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/LoginAbilitySlice.java b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/LoginAbilitySlice.java
new file mode 100644
index 00000000..cc0de3ad
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/LoginAbilitySlice.java
@@ -0,0 +1,63 @@
+package com.example.loginapp.slice;
+
+import com.example.loginapp.ResourceTable;
+import com.example.loginapp.StoreDb;
+import com.example.loginapp.User;
+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.data.DatabaseHelper;
+import ohos.data.orm.OrmContext;
+import ohos.data.orm.OrmPredicates;
+import ohos.hiviewdfx.HiLog;
+import ohos.hiviewdfx.HiLogLabel;
+
+import java.util.List;
+
+public class LoginAbilitySlice extends AbilitySlice {
+ private OrmContext ormContext;
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_login);
+ TextField email = (TextField) findComponentById(ResourceTable.Id_email_login);
+ TextField password = (TextField) findComponentById(ResourceTable.Id_password_login);
+ Button login_btn = (Button) findComponentById(ResourceTable.Id_login_btn);
+ DatabaseHelper dbHelper = new DatabaseHelper(this);
+ ormContext = dbHelper.getOrmContext("StoreDb","storeDb.db", StoreDb.class);
+ login_btn.setClickedListener(new Component.ClickedListener() {
+ @Override
+ public void onClick(Component component) {
+ String email_str = email.getText();
+ String password_str = password.getText();
+ OrmPredicates predicates = new OrmPredicates(User.class);
+ predicates.equalTo("email", email_str);
+ List users = ormContext.query(predicates);
+ Text signin_complete = (Text) findComponentById(ResourceTable.Id_signin_complete);
+ for(int i=0;i present(new LoginAbilitySlice(), new Intent()));
+ signup_bt.setClickedListener(listener -> present(new SignupAbilitySlice(), new Intent()));
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/SignupAbilitySlice.java b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/SignupAbilitySlice.java
new file mode 100644
index 00000000..736d6663
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/SignupAbilitySlice.java
@@ -0,0 +1,153 @@
+package com.example.loginapp.slice;
+
+import com.example.loginapp.ResourceTable;
+import com.example.loginapp.StoreDb;
+import com.example.loginapp.User;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.agp.components.*;
+import ohos.data.DatabaseHelper;
+import ohos.data.orm.OrmContext;
+import ohos.data.orm.annotation.Database;
+import ohos.hiviewdfx.HiLog;
+import ohos.hiviewdfx.HiLogLabel;
+import ohos.multimodalinput.event.KeyEvent;
+
+public class SignupAbilitySlice extends AbilitySlice {
+ private TextField fn;
+ private Text fn_err;
+ private Button signup_btn;
+ OrmContext ormContext;
+
+ private interface Lambda{
+ boolean checkTextField(String s);
+ }
+
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_signup);
+
+ setObserver(ResourceTable.Id_first_name, ResourceTable.Id_first_name_error, this::correctName);
+ setObserver(ResourceTable.Id_last_name, ResourceTable.Id_last_name_error, this::correctName);
+ setObserver(ResourceTable.Id_email, ResourceTable.Id_email_error, this::correctEmail);
+ setObserver(ResourceTable.Id_password, ResourceTable.Id_password_error, this::correctPassword);
+ setObserver(ResourceTable.Id_phone, ResourceTable.Id_phone_error, this::correctPhone);
+ DatabaseHelper dbHelper = new DatabaseHelper(this);
+
+ ormContext = dbHelper.getOrmContext("StoreDb","storeDb.db", StoreDb.class);
+ signup_btn = (Button) findComponentById(ResourceTable.Id_sign_up_btn);
+
+ TextField first_name = (TextField) findComponentById(ResourceTable.Id_first_name);
+ TextField last_name = (TextField) findComponentById(ResourceTable.Id_last_name);
+ TextField email = (TextField) findComponentById(ResourceTable.Id_email);
+ TextField password = (TextField) findComponentById(ResourceTable.Id_password);
+ TextField phone = (TextField) findComponentById(ResourceTable.Id_phone);
+ RadioButton rb_male = (RadioButton) findComponentById(ResourceTable.Id_rb_male);
+ RadioButton rb_female = (RadioButton) findComponentById(ResourceTable.Id_rb_female);
+
+ signup_btn.setClickedListener((component-> {
+ User user = new User();
+ user.setFirst_name(first_name.getText());
+ user.setLast_name(last_name.getText());
+ user.setEmail(email.getText());
+ user.setPassword(password.getText());
+ user.setPhone(phone.getText());
+ if(rb_male.isSelected())
+ user.setGender('M');
+ else
+ user.setGender('F');
+ insert(user);
+ Text signup_complete = (Text) findComponentById(ResourceTable.Id_signup_complete);
+ signup_complete.setVisibility(Component.VISIBLE);
+ }));
+
+ }
+
+ public boolean insert(User user){
+ boolean isSuccess1 = ormContext.insert(user);
+ boolean isSuccess2 = ormContext.flush();
+ return isSuccess1 && isSuccess2;
+ }
+
+ private boolean correctName(String str){
+ for(int i=0;i='A' && curr<='Z')&&!(curr>='a' && curr<='z')&&(curr!=' ')&&(curr!='.')){
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private boolean correctEmail(String str){
+ int dotafterat = 0;
+ int at = 0;
+ for(int i=0;i0) dotafterat += 1;
+ }
+ }
+ if(!(at==1 && dotafterat==1))
+ return false;
+ return true;
+ }
+
+ private boolean correctPassword(String str){
+ if(str.length()>=6)
+ return true;
+ return false;
+ }
+
+ private boolean correctPhone(String str){
+ if(str.length()!=10)
+ return false;
+ for(int i=0;i='0'))
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+
+ public void setObserver(int textFieldID, int errTextID, Lambda l)
+ {
+ TextField textField = (TextField) findComponentById(textFieldID);
+ Text text = (Text) findComponentById(errTextID);
+ Text.TextObserver observer = new Text.TextObserver()
+ {
+ @Override
+ public void onTextUpdated(String s, int i, int i1, int i2)
+ {
+ if (!l.checkTextField(textField.getText()))
+ {
+ text.setVisibility(Component.VISIBLE);
+ return;
+ }
+ else {
+ text.setVisibility(Component.HIDE);
+ }
+
+ }
+ };
+ textField.addTextObserver(observer);
+ }
+}
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/element/string.json b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/element/string.json
new file mode 100644
index 00000000..f9d63e51
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/element/string.json
@@ -0,0 +1,32 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "LoginApp"
+ },
+ {
+ "name": "mainability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "mainability_HelloWorld",
+ "value": "Hello World"
+ },
+ {
+ "name": "loginability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "loginability_HelloWorld",
+ "value": "Hello World"
+ },
+ {
+ "name": "signupability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "signupability_HelloWorld",
+ "value": "Hello World"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_login.xml b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_login.xml
new file mode 100644
index 00000000..a002c235
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_login.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_main.xml b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_main.xml
new file mode 100644
index 00000000..c0c0a3df
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_main.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_signup.xml b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_signup.xml
new file mode 100644
index 00000000..a002c235
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_signup.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/bg_text_view.xml b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/bg_text_view.xml
new file mode 100644
index 00000000..a3a60134
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/bg_text_view.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_login.xml b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_login.xml
new file mode 100644
index 00000000..47bb7f7a
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_login.xml
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_main.xml b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_main.xml
new file mode 100644
index 00000000..d5d99a5e
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_main.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_signup.xml b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_signup.xml
new file mode 100644
index 00000000..cb192af8
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_signup.xml
@@ -0,0 +1,215 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/icon.png b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/icon.png
new file mode 100644
index 00000000..ce307a88
Binary files /dev/null and b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/icon.png differ
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/lightning.png b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/lightning.png
new file mode 100644
index 00000000..9f218c3e
Binary files /dev/null and b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/lightning.png differ
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/config.json b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/config.json
new file mode 100644
index 00000000..33be968e
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/config.json
@@ -0,0 +1,41 @@
+{
+ "app": {
+ "bundleName": "com.example.loginapp",
+ "vendor": "example",
+ "version": {
+ "code": 1000000,
+ "name": "1.0.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Release"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.example.loginapp",
+ "name": "testModule",
+ "deviceType": [
+ "phone"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "entry_test",
+ "moduleType": "feature",
+ "installationFree": true
+ },
+ "abilities": [
+ {
+ "name": "decc.testkit.runner.EntryAbility",
+ "description": "Test Entry Ability",
+ "icon": "$media:icon",
+ "label": "$string:app_name",
+ "launchType": "standard",
+ "orientation": "landscape",
+ "visible": true,
+ "type": "page"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/java/com/example/loginapp/ExampleOhosTest.java b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/java/com/example/loginapp/ExampleOhosTest.java
new file mode 100644
index 00000000..6e904bc8
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/java/com/example/loginapp/ExampleOhosTest.java
@@ -0,0 +1,14 @@
+package com.example.loginapp;
+
+import ohos.aafwk.ability.delegation.AbilityDelegatorRegistry;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class ExampleOhosTest {
+ @Test
+ public void testBundleName() {
+ final String actualBundleName = AbilityDelegatorRegistry.getArguments().getTestBundleName();
+ assertEquals("com.example.loginapp", actualBundleName);
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/test/java/com/example/loginapp/ExampleTest.java b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/test/java/com/example/loginapp/ExampleTest.java
new file mode 100644
index 00000000..bfc643ac
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/entry/src/test/java/com/example/loginapp/ExampleTest.java
@@ -0,0 +1,9 @@
+package com.example.loginapp;
+
+import org.junit.Test;
+
+public class ExampleTest {
+ @Test
+ public void onStart() {
+ }
+}
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/gradle.properties b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/gradle.properties
new file mode 100644
index 00000000..0daf1830
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/gradle.properties
@@ -0,0 +1,10 @@
+# Project-wide Gradle settings.
+# IDE (e.g. DevEco Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# If the Chinese output is garbled, please configure the following parameter.
+# org.gradle.jvmargs=-Dfile.encoding=GBK
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.jar b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..490fda85
Binary files /dev/null and b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.properties b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..f59159e8
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://repo.huaweicloud.com/gradle/gradle-6.3-bin.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/gradlew b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/gradlew
new file mode 100644
index 00000000..2fe81a7d
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/gradlew
@@ -0,0 +1,183 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=`expr $i + 1`
+ done
+ case $i in
+ 0) set -- ;;
+ 1) set -- "$args0" ;;
+ 2) set -- "$args0" "$args1" ;;
+ 3) set -- "$args0" "$args1" "$args2" ;;
+ 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=`save "$@"`
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+exec "$JAVACMD" "$@"
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/gradlew.bat b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/gradlew.bat
new file mode 100644
index 00000000..62bd9b9c
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/gradlew.bat
@@ -0,0 +1,103 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/settings.gradle b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/settings.gradle
new file mode 100644
index 00000000..4773db73
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/AmitShekhar/LoginApp/settings.gradle
@@ -0,0 +1 @@
+include ':entry'
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/.gitignore b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/.gitignore
new file mode 100644
index 00000000..37a4eb8b
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/.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/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/.idea/.gitignore b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/.idea/compiler.xml b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/.idea/compiler.xml
new file mode 100644
index 00000000..61a9130c
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/.idea/gradle.xml b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/.idea/gradle.xml
new file mode 100644
index 00000000..b9090f42
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/.idea/gradle.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/.idea/jarRepositories.xml b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/.idea/jarRepositories.xml
new file mode 100644
index 00000000..1dfcd020
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/.idea/misc.xml b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/.idea/misc.xml
new file mode 100644
index 00000000..58918f50
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/.idea/previewer/phone/phoneSettingConfig_-331846843.json b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/.idea/previewer/phone/phoneSettingConfig_-331846843.json
new file mode 100644
index 00000000..f505e6b9
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/.idea/previewer/phone/phoneSettingConfig_-331846843.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/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/.idea/previewer/previewConfig.json b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/.idea/previewer/previewConfig.json
new file mode 100644
index 00000000..d593b2aa
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/.idea/previewer/previewConfig.json
@@ -0,0 +1,9 @@
+{
+ "1.0.0": {
+ "LastPreviewDevice": {
+ "C:\\Users\\amits\\DevEcoStudioProjects\\LoginApp\\entry": [
+ "phone"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/build.gradle b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/build.gradle
new file mode 100644
index 00000000..4d43341b
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/build.gradle
@@ -0,0 +1,40 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+apply plugin: 'com.huawei.ohos.app'
+
+ohos {
+ compileOptions{
+ annotationEnabled true
+ }
+ 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/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/.gitignore b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/.gitignore
new file mode 100644
index 00000000..796b96d1
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/build.gradle b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/build.gradle
new file mode 100644
index 00000000..fab05f64
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/build.gradle
@@ -0,0 +1,29 @@
+apply plugin: 'com.huawei.ohos.hap'
+apply plugin: 'com.huawei.ohos.decctest'
+ohos {
+ compileOptions{
+ annotationEnabled true
+ }
+ compileSdkVersion 5
+ defaultConfig {
+ compatibleSdkVersion 4
+ }
+ buildTypes {
+ release {
+ proguardOpt {
+ proguardEnabled false
+ rulesFiles 'proguard-rules.pro'
+ }
+ }
+ }
+
+}
+
+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/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/proguard-rules.pro b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/proguard-rules.pro
new file mode 100644
index 00000000..f7666e47
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/proguard-rules.pro
@@ -0,0 +1 @@
+# config module specific ProGuard rules here.
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/config.json b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/config.json
new file mode 100644
index 00000000..d27c8c98
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/config.json
@@ -0,0 +1,76 @@
+{
+ "app": {
+ "bundleName": "com.example.loginapp",
+ "vendor": "example",
+ "version": {
+ "code": 1000000,
+ "name": "1.0.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Release"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.example.loginapp",
+ "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.loginapp.MainAbility",
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ },
+ {
+ "orientation": "unspecified",
+ "name": "com.example.loginapp.LoginAbility",
+ "icon": "$media:icon",
+ "description": "$string:loginability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ },
+ {
+ "orientation": "unspecified",
+ "name": "com.example.loginapp.SignupAbility",
+ "icon": "$media:icon",
+ "description": "$string:signupability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ },
+ {
+ "orientation": "unspecified",
+ "name": "com.example.loginapp.DummyAbility",
+ "icon": "$media:icon",
+ "description": "$string:dummyability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/DummyAbility.java b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/DummyAbility.java
new file mode 100644
index 00000000..5d88d7ed
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/DummyAbility.java
@@ -0,0 +1,13 @@
+package com.example.loginapp;
+
+import com.example.loginapp.slice.DummyAbilitySlice;
+import ohos.aafwk.ability.Ability;
+import ohos.aafwk.content.Intent;
+
+public class DummyAbility extends Ability {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setMainRoute(DummyAbilitySlice.class.getName());
+ }
+}
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/LoginAbility.java b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/LoginAbility.java
new file mode 100644
index 00000000..54046e18
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/LoginAbility.java
@@ -0,0 +1,13 @@
+package com.example.loginapp;
+
+import com.example.loginapp.slice.LoginAbilitySlice;
+import ohos.aafwk.ability.Ability;
+import ohos.aafwk.content.Intent;
+
+public class LoginAbility extends Ability {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setMainRoute(LoginAbilitySlice.class.getName());
+ }
+}
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MainAbility.java b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MainAbility.java
new file mode 100644
index 00000000..74c3b52e
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MainAbility.java
@@ -0,0 +1,31 @@
+package com.example.loginapp;
+
+import com.example.loginapp.slice.LoginAbilitySlice;
+import com.example.loginapp.slice.MainAbilitySlice;
+import ohos.aafwk.ability.Ability;
+import ohos.aafwk.ability.DeviceConfigInfo;
+import ohos.aafwk.content.Intent;
+import ohos.aafwk.content.Operation;
+import ohos.agp.components.Button;
+import ohos.agp.components.Component;
+import ohos.system.DeviceInfo;
+
+public class MainAbility extends Ability {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setMainRoute(MainAbilitySlice.class.getName());
+
+// bt.setClickedListener(listener -> {
+// Operation operation = new Intent.OperationBuilder()
+// .withDeviceId("")
+// .withBundleName("com.example.loginapp")
+// .withAbilityName("com.example.loginapp.LoginAbility")
+// .build();
+//
+// Intent intent2 = new Intent();
+// intent2.setOperation(operation);
+// startAbility(intent2);
+// });
+ }
+}
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MyApplication.java b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MyApplication.java
new file mode 100644
index 00000000..4ba87073
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MyApplication.java
@@ -0,0 +1,10 @@
+package com.example.loginapp;
+
+import ohos.aafwk.ability.AbilityPackage;
+
+public class MyApplication extends AbilityPackage {
+ @Override
+ public void onInitialize() {
+ super.onInitialize();
+ }
+}
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/SignupAbility.java b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/SignupAbility.java
new file mode 100644
index 00000000..547794e6
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/SignupAbility.java
@@ -0,0 +1,13 @@
+package com.example.loginapp;
+
+import com.example.loginapp.slice.SignupAbilitySlice;
+import ohos.aafwk.ability.Ability;
+import ohos.aafwk.content.Intent;
+
+public class SignupAbility extends Ability {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setMainRoute(SignupAbilitySlice.class.getName());
+ }
+}
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/StoreDb.java b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/StoreDb.java
new file mode 100644
index 00000000..1e9cbc16
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/StoreDb.java
@@ -0,0 +1,8 @@
+package com.example.loginapp;
+
+import ohos.data.orm.OrmDatabase;
+import ohos.data.orm.annotation.Database;
+
+@Database(entities = {User.class}, version = 1)
+public abstract class StoreDb extends OrmDatabase{
+}
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/User.java b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/User.java
new file mode 100644
index 00000000..7910b3c9
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/User.java
@@ -0,0 +1,69 @@
+package com.example.loginapp;
+
+import ohos.data.orm.OrmObject;
+import ohos.data.orm.annotation.Entity;
+import ohos.data.orm.annotation.PrimaryKey;
+
+@Entity(tableName = "user")
+public class User extends OrmObject {
+ @PrimaryKey(autoGenerate = true)
+ private Integer userId;
+ private String first_name, last_name, email, password, phone;
+ private char gender;
+
+ public String getFirst_name() {
+ return first_name;
+ }
+
+ public void setFirst_name(String first_name) {
+ this.first_name = first_name;
+ }
+
+ public String getLast_name() {
+ return last_name;
+ }
+
+ public void setLast_name(String last_name) {
+ this.last_name = last_name;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getPhone() {
+ return phone;
+ }
+
+ public void setPhone(String phone) {
+ this.phone = phone;
+ }
+
+ public char getGender() {
+ return gender;
+ }
+
+ public void setGender(char gender) {
+ this.gender = gender;
+ }
+
+ public Integer getUserId() {
+ return userId;
+ }
+
+ public void setUserId(Integer userId) {
+ this.userId = userId;
+ }
+}
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/DummyAbilitySlice.java b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/DummyAbilitySlice.java
new file mode 100644
index 00000000..b17bc92a
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/DummyAbilitySlice.java
@@ -0,0 +1,23 @@
+package com.example.loginapp.slice;
+
+import com.example.loginapp.ResourceTable;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+
+public class DummyAbilitySlice extends AbilitySlice {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_dummy);
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/LoginAbilitySlice.java b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/LoginAbilitySlice.java
new file mode 100644
index 00000000..d84c578d
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/LoginAbilitySlice.java
@@ -0,0 +1,61 @@
+package com.example.loginapp.slice;
+
+import com.example.loginapp.ResourceTable;
+import com.example.loginapp.StoreDb;
+import com.example.loginapp.User;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.agp.components.Button;
+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 LoginAbilitySlice extends AbilitySlice {
+ private OrmContext ormContext;
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_login);
+ TextField email = (TextField) findComponentById(ResourceTable.Id_email_login);
+ TextField password = (TextField) findComponentById(ResourceTable.Id_password_login);
+ Button login_btn = (Button) findComponentById(ResourceTable.Id_login_btn);
+ email.setText(SignupAbilitySlice.getEmail_val());
+ password.setText(SignupAbilitySlice.getPassword_val());
+ DatabaseHelper dbHelper = new DatabaseHelper(this);
+ ormContext = dbHelper.getOrmContext("StoreDb","storeDb.db", StoreDb.class);
+ login_btn.setClickedListener(component -> {
+ String email_str = email.getText();
+ String password_str = password.getText();
+ OrmPredicates predicates = new OrmPredicates(User.class);
+ predicates.equalTo("email", email_str);
+ List users = ormContext.query(predicates);
+ for (User curr : users) {
+ if (password_str.equals(curr.getPassword())) {
+ showToast("Log in successful!");
+ present(new DummyAbilitySlice(), new Intent());
+ return;
+ }
+ }
+ showToast("Log in failed");
+ });
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+
+ private void showToast(String msg) {
+ new ToastDialog(this).setText(msg).setDuration(1000).show();
+ }
+
+}
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/MainAbilitySlice.java b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/MainAbilitySlice.java
new file mode 100644
index 00000000..6a5c5ca4
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/MainAbilitySlice.java
@@ -0,0 +1,35 @@
+package com.example.loginapp.slice;
+
+import com.example.loginapp.ResourceTable;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.agp.animation.AnimatorProperty;
+import ohos.agp.components.Button;
+import ohos.agp.components.Image;
+
+public class MainAbilitySlice extends AbilitySlice {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_main);
+ Button login_bt = (Button)findComponentById(ResourceTable.Id_login_btn);
+ Button signup_bt = (Button)findComponentById(ResourceTable.Id_signup_btn);
+ login_bt.setClickedListener(listener -> present(new LoginAbilitySlice(), new Intent()));
+ signup_bt.setClickedListener(listener -> present(new SignupAbilitySlice(), new Intent()));
+
+ Image image = (Image)findComponentById(ResourceTable.Id_logo);
+ AnimatorProperty imageAnimation = image.createAnimatorProperty();
+ imageAnimation.setDuration(2000).rotate(360).setLoopedCount(1);
+ image.setClickedListener(component -> imageAnimation.start());
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/SignupAbilitySlice.java b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/SignupAbilitySlice.java
new file mode 100644
index 00000000..b618a4ad
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/SignupAbilitySlice.java
@@ -0,0 +1,197 @@
+package com.example.loginapp.slice;
+
+import com.example.loginapp.ResourceTable;
+import com.example.loginapp.StoreDb;
+import com.example.loginapp.User;
+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 static ohos.agp.components.ComponentContainer.LayoutConfig.MATCH_CONTENT;
+
+public class SignupAbilitySlice extends AbilitySlice {
+ OrmContext ormContext;
+ private static String email_val;
+ private static String password_val;
+ TextField first_name;
+ TextField last_name;
+ TextField email;
+ TextField password;
+ TextField phone;
+ RadioButton rb_male;
+ RadioButton rb_female;
+ RadioContainer rb_container;
+
+ public static String getEmail_val() {
+ return email_val;
+ }
+
+ public static String getPassword_val(){
+ return password_val;
+ }
+
+ private interface Lambda{
+ boolean checkTextField(String s);
+ }
+
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_signup);
+
+ setObserver(ResourceTable.Id_first_name, ResourceTable.Id_first_name_error, this::correctName);
+ setObserver(ResourceTable.Id_last_name, ResourceTable.Id_last_name_error, this::correctName);
+ setObserver(ResourceTable.Id_email, ResourceTable.Id_email_error, this::correctEmail);
+ setObserver(ResourceTable.Id_password, ResourceTable.Id_password_error, this::correctPassword);
+ setObserver(ResourceTable.Id_phone, ResourceTable.Id_phone_error, this::correctPhone);
+ DatabaseHelper dbHelper = new DatabaseHelper(this);
+
+ ormContext = dbHelper.getOrmContext("StoreDb","storeDb.db", StoreDb.class);
+ Button signup_btn = (Button) findComponentById(ResourceTable.Id_sign_up_btn);
+
+ first_name = (TextField) findComponentById(ResourceTable.Id_first_name);
+ last_name = (TextField) findComponentById(ResourceTable.Id_last_name);
+ email = (TextField) findComponentById(ResourceTable.Id_email);
+ password = (TextField) findComponentById(ResourceTable.Id_password);
+ phone = (TextField) findComponentById(ResourceTable.Id_phone);
+ rb_male = (RadioButton) findComponentById(ResourceTable.Id_rb_male);
+ rb_female = (RadioButton) findComponentById(ResourceTable.Id_rb_female);
+ rb_container = (RadioContainer) findComponentById(ResourceTable.Id_rb_container);
+
+ signup_btn.setClickedListener((component-> {
+
+ if(validateAll()) {
+ User user = new User();
+ user.setFirst_name(first_name.getText());
+ user.setLast_name(last_name.getText());
+ user.setEmail(email.getText());
+ user.setPassword(password.getText());
+ user.setPhone(phone.getText());
+ if (rb_male.isSelected())
+ user.setGender('M');
+ else
+ user.setGender('F');
+ insert(user);
+ showCommonDialog();
+ }
+ else{
+ showToast("Invalid or empty input");
+ }
+ }));
+
+ }
+
+ public boolean insert(User user){
+ boolean isSuccess1 = ormContext.insert(user);
+ boolean isSuccess2 = ormContext.flush();
+ return isSuccess1 && isSuccess2;
+ }
+
+ private boolean correctName(String str){
+ for(int i=0;i='A' && curr<='Z')&&!(curr>='a' && curr<='z')&&(curr!=' ')&&(curr!='.')){
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private boolean correctEmail(String str){
+ int dotafterat = 0;
+ int at = 0;
+ for(int i=0;i0) dotafterat += 1;
+ }
+ }
+ return at == 1 && dotafterat == 1;
+ }
+
+ private boolean correctPassword(String str){
+ return str.length() >= 6;
+ }
+
+ private boolean correctPhone(String str){
+ if(str.length()!=10)
+ return false;
+ for(int i=0;i='0'))
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+
+ public void setObserver(int textFieldID, int errTextID, Lambda l)
+ {
+ TextField textField = (TextField) findComponentById(textFieldID);
+ Text text = (Text) findComponentById(errTextID);
+ Text.TextObserver observer = (s, i, i1, i2) -> {
+ if (!l.checkTextField(textField.getText()))
+ {
+ text.setVisibility(Component.VISIBLE);
+ }
+ else {
+ text.setVisibility(Component.HIDE);
+ }
+
+ };
+ textField.addTextObserver(observer);
+ }
+
+ private void showCommonDialog() {
+ CommonDialog commonDialog = new CommonDialog(this);
+ commonDialog.setTitleText("Sign Up Successful!");
+ commonDialog.setContentText("Go to Login Page to enter the app. Please confirm");
+ commonDialog.setAutoClosable(true);
+ commonDialog.setSize(MATCH_CONTENT,MATCH_CONTENT);
+ commonDialog.setButton(IDialog.BUTTON1, "Yes", ((iDialog, i) -> {
+ TextField email = (TextField) findComponentById(ResourceTable.Id_email);
+ TextField password = (TextField) findComponentById(ResourceTable.Id_password);
+ email_val = email.getText();
+ password_val = password.getText();
+ present(new LoginAbilitySlice(), new Intent());
+ iDialog.destroy();
+ }));
+ commonDialog.setButton(IDialog.BUTTON2, "No", ((iDialog, i) -> iDialog.destroy()));
+ commonDialog.show();
+ }
+
+ private void showToast(String msg) {
+ new ToastDialog(this).setText(msg).setDuration(1000).show();
+ }
+
+ private boolean validateAll() {
+ boolean cond1 = correctName(first_name.getText()) && (first_name.getText().length()>0);
+ boolean cond2 = correctName(last_name.getText()) && (last_name.getText().length()>0);
+ boolean cond3 = correctEmail(email.getText()) && (email.getText().length()>0);
+ boolean cond4 = correctPassword(password.getText()) && (password.getText().length()>0);
+ boolean cond5 = correctPhone(phone.getText()) && (phone.getText().length()>0);
+ boolean cond6 = (rb_container.getMarkedButtonId()!=RadioContainer.INVALID_ID);
+ return cond1 && cond2 && cond3 && cond4 && cond5 && cond6;
+ }
+}
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/element/string.json b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/element/string.json
new file mode 100644
index 00000000..61d78f6e
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/element/string.json
@@ -0,0 +1,40 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "LoginApp"
+ },
+ {
+ "name": "mainability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "mainability_HelloWorld",
+ "value": "Hello World"
+ },
+ {
+ "name": "loginability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "loginability_HelloWorld",
+ "value": "Hello World"
+ },
+ {
+ "name": "signupability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "signupability_HelloWorld",
+ "value": "Hello World"
+ },
+ {
+ "name": "dummyability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "dummyability_HelloWorld",
+ "value": "Hello World"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/animation_element.xml b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/animation_element.xml
new file mode 100644
index 00000000..5d80abec
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/animation_element.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_dummy.xml b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_dummy.xml
new file mode 100644
index 00000000..a002c235
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_dummy.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_login.xml b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_login.xml
new file mode 100644
index 00000000..a002c235
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_login.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_main.xml b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_main.xml
new file mode 100644
index 00000000..c0c0a3df
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_main.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_signup.xml b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_signup.xml
new file mode 100644
index 00000000..a002c235
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_signup.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/bg_text_view.xml b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/bg_text_view.xml
new file mode 100644
index 00000000..a3a60134
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/bg_text_view.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_dummy.xml b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_dummy.xml
new file mode 100644
index 00000000..b59030a0
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_dummy.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_login.xml b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_login.xml
new file mode 100644
index 00000000..4f434d4a
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_login.xml
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_main.xml b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_main.xml
new file mode 100644
index 00000000..d5d99a5e
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_main.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_signup.xml b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_signup.xml
new file mode 100644
index 00000000..79ee5cc8
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_signup.xml
@@ -0,0 +1,203 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/icon.png b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/icon.png
new file mode 100644
index 00000000..ce307a88
Binary files /dev/null and b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/icon.png differ
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/lightning.png b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/lightning.png
new file mode 100644
index 00000000..9f218c3e
Binary files /dev/null and b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/lightning.png differ
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/config.json b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/config.json
new file mode 100644
index 00000000..33be968e
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/config.json
@@ -0,0 +1,41 @@
+{
+ "app": {
+ "bundleName": "com.example.loginapp",
+ "vendor": "example",
+ "version": {
+ "code": 1000000,
+ "name": "1.0.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Release"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.example.loginapp",
+ "name": "testModule",
+ "deviceType": [
+ "phone"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "entry_test",
+ "moduleType": "feature",
+ "installationFree": true
+ },
+ "abilities": [
+ {
+ "name": "decc.testkit.runner.EntryAbility",
+ "description": "Test Entry Ability",
+ "icon": "$media:icon",
+ "label": "$string:app_name",
+ "launchType": "standard",
+ "orientation": "landscape",
+ "visible": true,
+ "type": "page"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/java/com/example/loginapp/ExampleOhosTest.java b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/java/com/example/loginapp/ExampleOhosTest.java
new file mode 100644
index 00000000..6e904bc8
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/java/com/example/loginapp/ExampleOhosTest.java
@@ -0,0 +1,14 @@
+package com.example.loginapp;
+
+import ohos.aafwk.ability.delegation.AbilityDelegatorRegistry;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class ExampleOhosTest {
+ @Test
+ public void testBundleName() {
+ final String actualBundleName = AbilityDelegatorRegistry.getArguments().getTestBundleName();
+ assertEquals("com.example.loginapp", actualBundleName);
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/test/java/com/example/loginapp/ExampleTest.java b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/test/java/com/example/loginapp/ExampleTest.java
new file mode 100644
index 00000000..bfc643ac
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/entry/src/test/java/com/example/loginapp/ExampleTest.java
@@ -0,0 +1,9 @@
+package com.example.loginapp;
+
+import org.junit.Test;
+
+public class ExampleTest {
+ @Test
+ public void onStart() {
+ }
+}
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/gradle.properties b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/gradle.properties
new file mode 100644
index 00000000..0daf1830
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/gradle.properties
@@ -0,0 +1,10 @@
+# Project-wide Gradle settings.
+# IDE (e.g. DevEco Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# If the Chinese output is garbled, please configure the following parameter.
+# org.gradle.jvmargs=-Dfile.encoding=GBK
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.jar b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..490fda85
Binary files /dev/null and b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.properties b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..f59159e8
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://repo.huaweicloud.com/gradle/gradle-6.3-bin.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/gradlew b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/gradlew
new file mode 100644
index 00000000..2fe81a7d
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/gradlew
@@ -0,0 +1,183 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=`expr $i + 1`
+ done
+ case $i in
+ 0) set -- ;;
+ 1) set -- "$args0" ;;
+ 2) set -- "$args0" "$args1" ;;
+ 3) set -- "$args0" "$args1" "$args2" ;;
+ 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=`save "$@"`
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+exec "$JAVACMD" "$@"
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/gradlew.bat b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/gradlew.bat
new file mode 100644
index 00000000..62bd9b9c
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/gradlew.bat
@@ -0,0 +1,103 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/settings.gradle b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/settings.gradle
new file mode 100644
index 00000000..4773db73
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/AmitShekhar/LoginApp/settings.gradle
@@ -0,0 +1 @@
+include ':entry'
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/.gitignore b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/.gitignore
new file mode 100644
index 00000000..37a4eb8b
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/.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/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/.idea/.gitignore b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/.idea/compiler.xml b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/.idea/compiler.xml
new file mode 100644
index 00000000..61a9130c
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/.idea/gradle.xml b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/.idea/gradle.xml
new file mode 100644
index 00000000..b9090f42
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/.idea/gradle.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/.idea/jarRepositories.xml b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/.idea/jarRepositories.xml
new file mode 100644
index 00000000..1dfcd020
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/.idea/misc.xml b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/.idea/misc.xml
new file mode 100644
index 00000000..58918f50
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/.idea/previewer/phone/phoneSettingConfig_-331846843.json b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/.idea/previewer/phone/phoneSettingConfig_-331846843.json
new file mode 100644
index 00000000..f505e6b9
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/.idea/previewer/phone/phoneSettingConfig_-331846843.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/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/.idea/previewer/previewConfig.json b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/.idea/previewer/previewConfig.json
new file mode 100644
index 00000000..d593b2aa
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/.idea/previewer/previewConfig.json
@@ -0,0 +1,9 @@
+{
+ "1.0.0": {
+ "LastPreviewDevice": {
+ "C:\\Users\\amits\\DevEcoStudioProjects\\LoginApp\\entry": [
+ "phone"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/build.gradle b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/build.gradle
new file mode 100644
index 00000000..4d43341b
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/build.gradle
@@ -0,0 +1,40 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+apply plugin: 'com.huawei.ohos.app'
+
+ohos {
+ compileOptions{
+ annotationEnabled true
+ }
+ 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/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/.gitignore b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/.gitignore
new file mode 100644
index 00000000..796b96d1
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/build.gradle b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/build.gradle
new file mode 100644
index 00000000..fab05f64
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/build.gradle
@@ -0,0 +1,29 @@
+apply plugin: 'com.huawei.ohos.hap'
+apply plugin: 'com.huawei.ohos.decctest'
+ohos {
+ compileOptions{
+ annotationEnabled true
+ }
+ compileSdkVersion 5
+ defaultConfig {
+ compatibleSdkVersion 4
+ }
+ buildTypes {
+ release {
+ proguardOpt {
+ proguardEnabled false
+ rulesFiles 'proguard-rules.pro'
+ }
+ }
+ }
+
+}
+
+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/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/proguard-rules.pro b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/proguard-rules.pro
new file mode 100644
index 00000000..f7666e47
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/proguard-rules.pro
@@ -0,0 +1 @@
+# config module specific ProGuard rules here.
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/config.json b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/config.json
new file mode 100644
index 00000000..d27c8c98
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/config.json
@@ -0,0 +1,76 @@
+{
+ "app": {
+ "bundleName": "com.example.loginapp",
+ "vendor": "example",
+ "version": {
+ "code": 1000000,
+ "name": "1.0.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Release"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.example.loginapp",
+ "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.loginapp.MainAbility",
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ },
+ {
+ "orientation": "unspecified",
+ "name": "com.example.loginapp.LoginAbility",
+ "icon": "$media:icon",
+ "description": "$string:loginability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ },
+ {
+ "orientation": "unspecified",
+ "name": "com.example.loginapp.SignupAbility",
+ "icon": "$media:icon",
+ "description": "$string:signupability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ },
+ {
+ "orientation": "unspecified",
+ "name": "com.example.loginapp.DummyAbility",
+ "icon": "$media:icon",
+ "description": "$string:dummyability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/DummyAbility.java b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/DummyAbility.java
new file mode 100644
index 00000000..5d88d7ed
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/DummyAbility.java
@@ -0,0 +1,13 @@
+package com.example.loginapp;
+
+import com.example.loginapp.slice.DummyAbilitySlice;
+import ohos.aafwk.ability.Ability;
+import ohos.aafwk.content.Intent;
+
+public class DummyAbility extends Ability {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setMainRoute(DummyAbilitySlice.class.getName());
+ }
+}
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/LoginAbility.java b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/LoginAbility.java
new file mode 100644
index 00000000..54046e18
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/LoginAbility.java
@@ -0,0 +1,13 @@
+package com.example.loginapp;
+
+import com.example.loginapp.slice.LoginAbilitySlice;
+import ohos.aafwk.ability.Ability;
+import ohos.aafwk.content.Intent;
+
+public class LoginAbility extends Ability {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setMainRoute(LoginAbilitySlice.class.getName());
+ }
+}
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MainAbility.java b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MainAbility.java
new file mode 100644
index 00000000..74c3b52e
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MainAbility.java
@@ -0,0 +1,31 @@
+package com.example.loginapp;
+
+import com.example.loginapp.slice.LoginAbilitySlice;
+import com.example.loginapp.slice.MainAbilitySlice;
+import ohos.aafwk.ability.Ability;
+import ohos.aafwk.ability.DeviceConfigInfo;
+import ohos.aafwk.content.Intent;
+import ohos.aafwk.content.Operation;
+import ohos.agp.components.Button;
+import ohos.agp.components.Component;
+import ohos.system.DeviceInfo;
+
+public class MainAbility extends Ability {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setMainRoute(MainAbilitySlice.class.getName());
+
+// bt.setClickedListener(listener -> {
+// Operation operation = new Intent.OperationBuilder()
+// .withDeviceId("")
+// .withBundleName("com.example.loginapp")
+// .withAbilityName("com.example.loginapp.LoginAbility")
+// .build();
+//
+// Intent intent2 = new Intent();
+// intent2.setOperation(operation);
+// startAbility(intent2);
+// });
+ }
+}
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MyApplication.java b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MyApplication.java
new file mode 100644
index 00000000..4ba87073
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/MyApplication.java
@@ -0,0 +1,10 @@
+package com.example.loginapp;
+
+import ohos.aafwk.ability.AbilityPackage;
+
+public class MyApplication extends AbilityPackage {
+ @Override
+ public void onInitialize() {
+ super.onInitialize();
+ }
+}
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/SignupAbility.java b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/SignupAbility.java
new file mode 100644
index 00000000..547794e6
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/SignupAbility.java
@@ -0,0 +1,13 @@
+package com.example.loginapp;
+
+import com.example.loginapp.slice.SignupAbilitySlice;
+import ohos.aafwk.ability.Ability;
+import ohos.aafwk.content.Intent;
+
+public class SignupAbility extends Ability {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setMainRoute(SignupAbilitySlice.class.getName());
+ }
+}
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/StoreDb.java b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/StoreDb.java
new file mode 100644
index 00000000..1e9cbc16
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/StoreDb.java
@@ -0,0 +1,8 @@
+package com.example.loginapp;
+
+import ohos.data.orm.OrmDatabase;
+import ohos.data.orm.annotation.Database;
+
+@Database(entities = {User.class}, version = 1)
+public abstract class StoreDb extends OrmDatabase{
+}
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/User.java b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/User.java
new file mode 100644
index 00000000..7910b3c9
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/User.java
@@ -0,0 +1,69 @@
+package com.example.loginapp;
+
+import ohos.data.orm.OrmObject;
+import ohos.data.orm.annotation.Entity;
+import ohos.data.orm.annotation.PrimaryKey;
+
+@Entity(tableName = "user")
+public class User extends OrmObject {
+ @PrimaryKey(autoGenerate = true)
+ private Integer userId;
+ private String first_name, last_name, email, password, phone;
+ private char gender;
+
+ public String getFirst_name() {
+ return first_name;
+ }
+
+ public void setFirst_name(String first_name) {
+ this.first_name = first_name;
+ }
+
+ public String getLast_name() {
+ return last_name;
+ }
+
+ public void setLast_name(String last_name) {
+ this.last_name = last_name;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getPhone() {
+ return phone;
+ }
+
+ public void setPhone(String phone) {
+ this.phone = phone;
+ }
+
+ public char getGender() {
+ return gender;
+ }
+
+ public void setGender(char gender) {
+ this.gender = gender;
+ }
+
+ public Integer getUserId() {
+ return userId;
+ }
+
+ public void setUserId(Integer userId) {
+ this.userId = userId;
+ }
+}
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/DummyAbilitySlice.java b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/DummyAbilitySlice.java
new file mode 100644
index 00000000..b17bc92a
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/DummyAbilitySlice.java
@@ -0,0 +1,23 @@
+package com.example.loginapp.slice;
+
+import com.example.loginapp.ResourceTable;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+
+public class DummyAbilitySlice extends AbilitySlice {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_dummy);
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/LoginAbilitySlice.java b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/LoginAbilitySlice.java
new file mode 100644
index 00000000..d84c578d
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/LoginAbilitySlice.java
@@ -0,0 +1,61 @@
+package com.example.loginapp.slice;
+
+import com.example.loginapp.ResourceTable;
+import com.example.loginapp.StoreDb;
+import com.example.loginapp.User;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.agp.components.Button;
+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 LoginAbilitySlice extends AbilitySlice {
+ private OrmContext ormContext;
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_login);
+ TextField email = (TextField) findComponentById(ResourceTable.Id_email_login);
+ TextField password = (TextField) findComponentById(ResourceTable.Id_password_login);
+ Button login_btn = (Button) findComponentById(ResourceTable.Id_login_btn);
+ email.setText(SignupAbilitySlice.getEmail_val());
+ password.setText(SignupAbilitySlice.getPassword_val());
+ DatabaseHelper dbHelper = new DatabaseHelper(this);
+ ormContext = dbHelper.getOrmContext("StoreDb","storeDb.db", StoreDb.class);
+ login_btn.setClickedListener(component -> {
+ String email_str = email.getText();
+ String password_str = password.getText();
+ OrmPredicates predicates = new OrmPredicates(User.class);
+ predicates.equalTo("email", email_str);
+ List users = ormContext.query(predicates);
+ for (User curr : users) {
+ if (password_str.equals(curr.getPassword())) {
+ showToast("Log in successful!");
+ present(new DummyAbilitySlice(), new Intent());
+ return;
+ }
+ }
+ showToast("Log in failed");
+ });
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+
+ private void showToast(String msg) {
+ new ToastDialog(this).setText(msg).setDuration(1000).show();
+ }
+
+}
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/MainAbilitySlice.java b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/MainAbilitySlice.java
new file mode 100644
index 00000000..6a5c5ca4
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/MainAbilitySlice.java
@@ -0,0 +1,35 @@
+package com.example.loginapp.slice;
+
+import com.example.loginapp.ResourceTable;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.agp.animation.AnimatorProperty;
+import ohos.agp.components.Button;
+import ohos.agp.components.Image;
+
+public class MainAbilitySlice extends AbilitySlice {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_main);
+ Button login_bt = (Button)findComponentById(ResourceTable.Id_login_btn);
+ Button signup_bt = (Button)findComponentById(ResourceTable.Id_signup_btn);
+ login_bt.setClickedListener(listener -> present(new LoginAbilitySlice(), new Intent()));
+ signup_bt.setClickedListener(listener -> present(new SignupAbilitySlice(), new Intent()));
+
+ Image image = (Image)findComponentById(ResourceTable.Id_logo);
+ AnimatorProperty imageAnimation = image.createAnimatorProperty();
+ imageAnimation.setDuration(2000).rotate(360).setLoopedCount(1);
+ image.setClickedListener(component -> imageAnimation.start());
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/SignupAbilitySlice.java b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/SignupAbilitySlice.java
new file mode 100644
index 00000000..b618a4ad
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/java/com/example/loginapp/slice/SignupAbilitySlice.java
@@ -0,0 +1,197 @@
+package com.example.loginapp.slice;
+
+import com.example.loginapp.ResourceTable;
+import com.example.loginapp.StoreDb;
+import com.example.loginapp.User;
+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 static ohos.agp.components.ComponentContainer.LayoutConfig.MATCH_CONTENT;
+
+public class SignupAbilitySlice extends AbilitySlice {
+ OrmContext ormContext;
+ private static String email_val;
+ private static String password_val;
+ TextField first_name;
+ TextField last_name;
+ TextField email;
+ TextField password;
+ TextField phone;
+ RadioButton rb_male;
+ RadioButton rb_female;
+ RadioContainer rb_container;
+
+ public static String getEmail_val() {
+ return email_val;
+ }
+
+ public static String getPassword_val(){
+ return password_val;
+ }
+
+ private interface Lambda{
+ boolean checkTextField(String s);
+ }
+
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_signup);
+
+ setObserver(ResourceTable.Id_first_name, ResourceTable.Id_first_name_error, this::correctName);
+ setObserver(ResourceTable.Id_last_name, ResourceTable.Id_last_name_error, this::correctName);
+ setObserver(ResourceTable.Id_email, ResourceTable.Id_email_error, this::correctEmail);
+ setObserver(ResourceTable.Id_password, ResourceTable.Id_password_error, this::correctPassword);
+ setObserver(ResourceTable.Id_phone, ResourceTable.Id_phone_error, this::correctPhone);
+ DatabaseHelper dbHelper = new DatabaseHelper(this);
+
+ ormContext = dbHelper.getOrmContext("StoreDb","storeDb.db", StoreDb.class);
+ Button signup_btn = (Button) findComponentById(ResourceTable.Id_sign_up_btn);
+
+ first_name = (TextField) findComponentById(ResourceTable.Id_first_name);
+ last_name = (TextField) findComponentById(ResourceTable.Id_last_name);
+ email = (TextField) findComponentById(ResourceTable.Id_email);
+ password = (TextField) findComponentById(ResourceTable.Id_password);
+ phone = (TextField) findComponentById(ResourceTable.Id_phone);
+ rb_male = (RadioButton) findComponentById(ResourceTable.Id_rb_male);
+ rb_female = (RadioButton) findComponentById(ResourceTable.Id_rb_female);
+ rb_container = (RadioContainer) findComponentById(ResourceTable.Id_rb_container);
+
+ signup_btn.setClickedListener((component-> {
+
+ if(validateAll()) {
+ User user = new User();
+ user.setFirst_name(first_name.getText());
+ user.setLast_name(last_name.getText());
+ user.setEmail(email.getText());
+ user.setPassword(password.getText());
+ user.setPhone(phone.getText());
+ if (rb_male.isSelected())
+ user.setGender('M');
+ else
+ user.setGender('F');
+ insert(user);
+ showCommonDialog();
+ }
+ else{
+ showToast("Invalid or empty input");
+ }
+ }));
+
+ }
+
+ public boolean insert(User user){
+ boolean isSuccess1 = ormContext.insert(user);
+ boolean isSuccess2 = ormContext.flush();
+ return isSuccess1 && isSuccess2;
+ }
+
+ private boolean correctName(String str){
+ for(int i=0;i='A' && curr<='Z')&&!(curr>='a' && curr<='z')&&(curr!=' ')&&(curr!='.')){
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private boolean correctEmail(String str){
+ int dotafterat = 0;
+ int at = 0;
+ for(int i=0;i0) dotafterat += 1;
+ }
+ }
+ return at == 1 && dotafterat == 1;
+ }
+
+ private boolean correctPassword(String str){
+ return str.length() >= 6;
+ }
+
+ private boolean correctPhone(String str){
+ if(str.length()!=10)
+ return false;
+ for(int i=0;i='0'))
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+
+ public void setObserver(int textFieldID, int errTextID, Lambda l)
+ {
+ TextField textField = (TextField) findComponentById(textFieldID);
+ Text text = (Text) findComponentById(errTextID);
+ Text.TextObserver observer = (s, i, i1, i2) -> {
+ if (!l.checkTextField(textField.getText()))
+ {
+ text.setVisibility(Component.VISIBLE);
+ }
+ else {
+ text.setVisibility(Component.HIDE);
+ }
+
+ };
+ textField.addTextObserver(observer);
+ }
+
+ private void showCommonDialog() {
+ CommonDialog commonDialog = new CommonDialog(this);
+ commonDialog.setTitleText("Sign Up Successful!");
+ commonDialog.setContentText("Go to Login Page to enter the app. Please confirm");
+ commonDialog.setAutoClosable(true);
+ commonDialog.setSize(MATCH_CONTENT,MATCH_CONTENT);
+ commonDialog.setButton(IDialog.BUTTON1, "Yes", ((iDialog, i) -> {
+ TextField email = (TextField) findComponentById(ResourceTable.Id_email);
+ TextField password = (TextField) findComponentById(ResourceTable.Id_password);
+ email_val = email.getText();
+ password_val = password.getText();
+ present(new LoginAbilitySlice(), new Intent());
+ iDialog.destroy();
+ }));
+ commonDialog.setButton(IDialog.BUTTON2, "No", ((iDialog, i) -> iDialog.destroy()));
+ commonDialog.show();
+ }
+
+ private void showToast(String msg) {
+ new ToastDialog(this).setText(msg).setDuration(1000).show();
+ }
+
+ private boolean validateAll() {
+ boolean cond1 = correctName(first_name.getText()) && (first_name.getText().length()>0);
+ boolean cond2 = correctName(last_name.getText()) && (last_name.getText().length()>0);
+ boolean cond3 = correctEmail(email.getText()) && (email.getText().length()>0);
+ boolean cond4 = correctPassword(password.getText()) && (password.getText().length()>0);
+ boolean cond5 = correctPhone(phone.getText()) && (phone.getText().length()>0);
+ boolean cond6 = (rb_container.getMarkedButtonId()!=RadioContainer.INVALID_ID);
+ return cond1 && cond2 && cond3 && cond4 && cond5 && cond6;
+ }
+}
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/element/string.json b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/element/string.json
new file mode 100644
index 00000000..61d78f6e
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/element/string.json
@@ -0,0 +1,40 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "LoginApp"
+ },
+ {
+ "name": "mainability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "mainability_HelloWorld",
+ "value": "Hello World"
+ },
+ {
+ "name": "loginability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "loginability_HelloWorld",
+ "value": "Hello World"
+ },
+ {
+ "name": "signupability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "signupability_HelloWorld",
+ "value": "Hello World"
+ },
+ {
+ "name": "dummyability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "dummyability_HelloWorld",
+ "value": "Hello World"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/animation_element.xml b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/animation_element.xml
new file mode 100644
index 00000000..5d80abec
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/animation_element.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_dummy.xml b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_dummy.xml
new file mode 100644
index 00000000..a002c235
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_dummy.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_login.xml b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_login.xml
new file mode 100644
index 00000000..a002c235
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_login.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_main.xml b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_main.xml
new file mode 100644
index 00000000..c0c0a3df
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_main.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_signup.xml b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_signup.xml
new file mode 100644
index 00000000..a002c235
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/background_ability_signup.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/bg_text_view.xml b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/bg_text_view.xml
new file mode 100644
index 00000000..a3a60134
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/graphic/bg_text_view.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_dummy.xml b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_dummy.xml
new file mode 100644
index 00000000..b59030a0
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_dummy.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_login.xml b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_login.xml
new file mode 100644
index 00000000..4f434d4a
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_login.xml
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_main.xml b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_main.xml
new file mode 100644
index 00000000..d5d99a5e
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_main.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_signup.xml b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_signup.xml
new file mode 100644
index 00000000..79ee5cc8
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/layout/ability_signup.xml
@@ -0,0 +1,203 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/icon.png b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/icon.png
new file mode 100644
index 00000000..ce307a88
Binary files /dev/null and b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/icon.png differ
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/lightning.png b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/lightning.png
new file mode 100644
index 00000000..9f218c3e
Binary files /dev/null and b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/main/resources/base/media/lightning.png differ
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/config.json b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/config.json
new file mode 100644
index 00000000..33be968e
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/config.json
@@ -0,0 +1,41 @@
+{
+ "app": {
+ "bundleName": "com.example.loginapp",
+ "vendor": "example",
+ "version": {
+ "code": 1000000,
+ "name": "1.0.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Release"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.example.loginapp",
+ "name": "testModule",
+ "deviceType": [
+ "phone"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "entry_test",
+ "moduleType": "feature",
+ "installationFree": true
+ },
+ "abilities": [
+ {
+ "name": "decc.testkit.runner.EntryAbility",
+ "description": "Test Entry Ability",
+ "icon": "$media:icon",
+ "label": "$string:app_name",
+ "launchType": "standard",
+ "orientation": "landscape",
+ "visible": true,
+ "type": "page"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/java/com/example/loginapp/ExampleOhosTest.java b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/java/com/example/loginapp/ExampleOhosTest.java
new file mode 100644
index 00000000..6e904bc8
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/ohosTest/java/com/example/loginapp/ExampleOhosTest.java
@@ -0,0 +1,14 @@
+package com.example.loginapp;
+
+import ohos.aafwk.ability.delegation.AbilityDelegatorRegistry;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class ExampleOhosTest {
+ @Test
+ public void testBundleName() {
+ final String actualBundleName = AbilityDelegatorRegistry.getArguments().getTestBundleName();
+ assertEquals("com.example.loginapp", actualBundleName);
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/test/java/com/example/loginapp/ExampleTest.java b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/test/java/com/example/loginapp/ExampleTest.java
new file mode 100644
index 00000000..bfc643ac
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/entry/src/test/java/com/example/loginapp/ExampleTest.java
@@ -0,0 +1,9 @@
+package com.example.loginapp;
+
+import org.junit.Test;
+
+public class ExampleTest {
+ @Test
+ public void onStart() {
+ }
+}
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/gradle.properties b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/gradle.properties
new file mode 100644
index 00000000..0daf1830
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/gradle.properties
@@ -0,0 +1,10 @@
+# Project-wide Gradle settings.
+# IDE (e.g. DevEco Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# If the Chinese output is garbled, please configure the following parameter.
+# org.gradle.jvmargs=-Dfile.encoding=GBK
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.jar b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..490fda85
Binary files /dev/null and b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.properties b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..f59159e8
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://repo.huaweicloud.com/gradle/gradle-6.3-bin.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/gradlew b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/gradlew
new file mode 100644
index 00000000..2fe81a7d
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/gradlew
@@ -0,0 +1,183 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=`expr $i + 1`
+ done
+ case $i in
+ 0) set -- ;;
+ 1) set -- "$args0" ;;
+ 2) set -- "$args0" "$args1" ;;
+ 3) set -- "$args0" "$args1" "$args2" ;;
+ 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=`save "$@"`
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+exec "$JAVACMD" "$@"
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/gradlew.bat b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/gradlew.bat
new file mode 100644
index 00000000..62bd9b9c
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/gradlew.bat
@@ -0,0 +1,103 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/settings.gradle b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/settings.gradle
new file mode 100644
index 00000000..4773db73
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/AmitShekhar/LoginApp/settings.gradle
@@ -0,0 +1 @@
+include ':entry'