diff --git a/Android/shreyshrivastava/Advanced/News/.gitignore b/Android/shreyshrivastava/Advanced/News/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/.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/shreyshrivastava/Advanced/News/.idea/.gitignore b/Android/shreyshrivastava/Advanced/News/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/Android/shreyshrivastava/Advanced/News/.idea/compiler.xml b/Android/shreyshrivastava/Advanced/News/.idea/compiler.xml
new file mode 100644
index 00000000..fb7f4a8a
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Advanced/News/.idea/gradle.xml b/Android/shreyshrivastava/Advanced/News/.idea/gradle.xml
new file mode 100644
index 00000000..5cd135a0
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/.idea/gradle.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Advanced/News/.idea/inspectionProfiles/Project_Default.xml b/Android/shreyshrivastava/Advanced/News/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 00000000..022ab299
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Advanced/News/.idea/jarRepositories.xml b/Android/shreyshrivastava/Advanced/News/.idea/jarRepositories.xml
new file mode 100644
index 00000000..958a5bea
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/.idea/jarRepositories.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Advanced/News/.idea/misc.xml b/Android/shreyshrivastava/Advanced/News/.idea/misc.xml
new file mode 100644
index 00000000..47002838
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Advanced/News/.idea/runConfigurations.xml b/Android/shreyshrivastava/Advanced/News/.idea/runConfigurations.xml
new file mode 100644
index 00000000..797acea5
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Advanced/News/.idea/vcs.xml b/Android/shreyshrivastava/Advanced/News/.idea/vcs.xml
new file mode 100644
index 00000000..4fce1d86
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Advanced/News/app/.gitignore b/Android/shreyshrivastava/Advanced/News/app/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Advanced/News/app/build.gradle b/Android/shreyshrivastava/Advanced/News/app/build.gradle
new file mode 100644
index 00000000..6c36cefa
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/app/build.gradle
@@ -0,0 +1,43 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+
+ defaultConfig {
+ applicationId "com.example.news"
+ 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.3.0'
+ implementation 'com.android.volley:volley:1.2.0'
+ implementation 'com.github.KwabenBerko:News-API-Java:1.0.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.squareup.picasso:picasso:2.71828'
+}
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Advanced/News/app/proguard-rules.pro b/Android/shreyshrivastava/Advanced/News/app/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/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/shreyshrivastava/Advanced/News/app/src/androidTest/java/com/example/news/ExampleInstrumentedTest.java b/Android/shreyshrivastava/Advanced/News/app/src/androidTest/java/com/example/news/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..c65bd709
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/app/src/androidTest/java/com/example/news/ExampleInstrumentedTest.java
@@ -0,0 +1,28 @@
+package com.example.news;
+
+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.news", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/AndroidManifest.xml b/Android/shreyshrivastava/Advanced/News/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..e1e92407
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/app/src/main/AndroidManifest.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/java/com/example/news/MainActivity.java b/Android/shreyshrivastava/Advanced/News/app/src/main/java/com/example/news/MainActivity.java
new file mode 100644
index 00000000..70f9bedb
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/app/src/main/java/com/example/news/MainActivity.java
@@ -0,0 +1,122 @@
+package com.example.news;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.android.volley.Request;
+import com.android.volley.RequestQueue;
+import com.android.volley.Response;
+import com.android.volley.VolleyError;
+import com.android.volley.toolbox.JsonArrayRequest;
+import com.android.volley.toolbox.JsonObjectRequest;
+import com.android.volley.toolbox.StringRequest;
+import com.android.volley.toolbox.Volley;
+import com.example.news.adapter.RecyclerViewAdapter;
+import com.example.news.model.Post;
+import com.kwabenaberko.newsapilib.NewsApiClient;
+import com.kwabenaberko.newsapilib.models.request.EverythingRequest;
+import com.kwabenaberko.newsapilib.models.response.ArticleResponse;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.ArrayList;
+
+public class MainActivity extends AppCompatActivity implements RecyclerViewAdapter.OnNewsPostClickListener
+{
+ private RecyclerView recyclerView;
+ private RecyclerViewAdapter recyclerViewAdapter;
+ private ArrayList postList = new ArrayList<>();
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+ recyclerView = findViewById(R.id.recycler_view);
+ recyclerView.setHasFixedSize(true);
+ recyclerView.setLayoutManager(new LinearLayoutManager(this));
+ recyclerViewAdapter = new RecyclerViewAdapter(postList, MainActivity.this, this);
+
+ Toast.makeText(MainActivity.this,"Fetching...", Toast.LENGTH_SHORT).show();
+
+ NewsApiClient newsApiClient = new NewsApiClient("e7c6212f21244702ac03aa3b05b6df02 ");
+ newsApiClient.getEverything(
+ new EverythingRequest.Builder()
+ .q("india")
+ .build(),
+ new NewsApiClient.ArticlesResponseCallback() {
+ @Override
+ public void onSuccess(ArticleResponse response) {
+
+ for (int i = 0; i
+{
+ private OnNewsPostClickListener newsPostClickListener;
+ private ArrayList postList;
+ private Context context;
+
+ // constructor of the class
+ public RecyclerViewAdapter(ArrayList postList, Context context, OnNewsPostClickListener onNewsPostClickListener)
+ {
+ this.postList = postList;
+ this.context = context;
+ this.newsPostClickListener = onNewsPostClickListener;
+ }
+
+ @NonNull
+ @Override
+ public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
+ {
+ View view = LayoutInflater.from(parent.getContext())
+ .inflate(R.layout.news_card,parent,false);
+ return new ViewHolder(view, newsPostClickListener);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull RecyclerViewAdapter.ViewHolder holder, int position)
+ {
+ Post post = postList.get(position);
+
+ holder.title.setText(post.getTitle());
+ Picasso.get().load(post.getUrlToImage()).into(holder.image);
+ }
+
+ @Override
+ public int getItemCount()
+ {
+ return postList.size();
+ }
+
+ public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener
+ {
+ OnNewsPostClickListener onNewsPostClickListener;
+
+ public TextView title;
+ public ImageView image;
+
+ public ViewHolder(@NonNull View itemView, OnNewsPostClickListener onNewsPostClickListener)
+ {
+ super(itemView);
+
+ title = itemView.findViewById(R.id.post_title);
+ image = itemView.findViewById(R.id.post_image);
+ this.onNewsPostClickListener = onNewsPostClickListener;
+ itemView.setOnClickListener(this);
+ }
+
+ @Override
+ public void onClick(View v)
+ {
+ onNewsPostClickListener.onPostClick(getAdapterPosition());
+ }
+ }
+
+ public interface OnNewsPostClickListener
+ {
+ void onPostClick(int position);
+ }
+}
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/java/com/example/news/model/Post.java b/Android/shreyshrivastava/Advanced/News/app/src/main/java/com/example/news/model/Post.java
new file mode 100644
index 00000000..083a1ff1
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/app/src/main/java/com/example/news/model/Post.java
@@ -0,0 +1,91 @@
+package com.example.news.model;
+
+public class Post
+{
+ private String author;
+ private String description;
+ private String publishedAt;
+ private String title;
+ private String url;
+ private String urlToImage;
+ private String content;
+
+
+ public Post()
+ {
+ }
+
+ public Post(String author, String description, String publishedAt, String title, String url, String urlToImage)
+ {
+ this.author = author;
+ this.description = description;
+ this.publishedAt = publishedAt;
+ this.title = title;
+ this.url = url;
+ this.urlToImage = urlToImage;
+ }
+
+ public String getContent() {return content; }
+
+ public void setContent(String content) { this.content = content; }
+
+ public String getAuthor()
+ {
+ return author;
+ }
+
+ public void setAuthor(String author)
+ {
+ this.author = author;
+ }
+
+ public String getDescription()
+ {
+ return description;
+ }
+
+ public void setDescription(String description)
+ {
+ this.description = description;
+ }
+
+ public String getPublishedAt()
+ {
+ return publishedAt;
+ }
+
+ public void setPublishedAt(String publishedAt)
+ {
+ this.publishedAt = publishedAt;
+ }
+
+ public String getTitle()
+ {
+ return title;
+ }
+
+ public void setTitle(String title)
+ {
+ this.title = title;
+ }
+
+ public String getUrl()
+ {
+ return url;
+ }
+
+ public void setUrl(String url)
+ {
+ this.url = url;
+ }
+
+ public String getUrlToImage()
+ {
+ return urlToImage;
+ }
+
+ public void setUrlToImage(String urlToImage)
+ {
+ this.urlToImage = urlToImage;
+ }
+}
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-hdpi/icon_news.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-hdpi/icon_news.png
new file mode 100644
index 00000000..39f178db
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-hdpi/icon_news.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-hdpi/no_result.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-hdpi/no_result.png
new file mode 100644
index 00000000..8de5e726
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-hdpi/no_result.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-hdpi/oops.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-hdpi/oops.png
new file mode 100644
index 00000000..8e0cacdb
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-hdpi/oops.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-hdpi/splash_icon.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-hdpi/splash_icon.png
new file mode 100644
index 00000000..fa402f80
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-hdpi/splash_icon.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-mdpi/icon_news.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-mdpi/icon_news.png
new file mode 100644
index 00000000..3ecfd54c
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-mdpi/icon_news.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-mdpi/no_result.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-mdpi/no_result.png
new file mode 100644
index 00000000..649fc85a
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-mdpi/no_result.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-mdpi/oops.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-mdpi/oops.png
new file mode 100644
index 00000000..bd7739c7
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-mdpi/oops.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-mdpi/splash_icon.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-mdpi/splash_icon.png
new file mode 100644
index 00000000..bf272e5c
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-mdpi/splash_icon.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xhdpi/icon_news.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xhdpi/icon_news.png
new file mode 100644
index 00000000..ffdac74a
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xhdpi/icon_news.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xhdpi/no_result.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xhdpi/no_result.png
new file mode 100644
index 00000000..bb52f23f
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xhdpi/no_result.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xhdpi/oops.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xhdpi/oops.png
new file mode 100644
index 00000000..7c094433
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xhdpi/oops.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xhdpi/splash_icon.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xhdpi/splash_icon.png
new file mode 100644
index 00000000..7058d334
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xhdpi/splash_icon.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xxhdpi/icon_news.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xxhdpi/icon_news.png
new file mode 100644
index 00000000..a73b2442
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xxhdpi/icon_news.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xxhdpi/no_result.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xxhdpi/no_result.png
new file mode 100644
index 00000000..50ba264d
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xxhdpi/no_result.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xxhdpi/oops.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xxhdpi/oops.png
new file mode 100644
index 00000000..2018ed31
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xxhdpi/oops.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xxhdpi/splash_icon.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xxhdpi/splash_icon.png
new file mode 100644
index 00000000..14dee1ca
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xxhdpi/splash_icon.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xxxhdpi/icon_news.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xxxhdpi/icon_news.png
new file mode 100644
index 00000000..39c92911
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xxxhdpi/icon_news.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xxxhdpi/no_result.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xxxhdpi/no_result.png
new file mode 100644
index 00000000..2e6e19ea
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xxxhdpi/no_result.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xxxhdpi/oops.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xxxhdpi/oops.png
new file mode 100644
index 00000000..c82c9347
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xxxhdpi/oops.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xxxhdpi/splash_icon.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xxxhdpi/splash_icon.png
new file mode 100644
index 00000000..878ab2ee
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable-xxxhdpi/splash_icon.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable/bottom_shadow.xml b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable/bottom_shadow.xml
new file mode 100644
index 00000000..afe39788
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable/bottom_shadow.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable/ic_date.xml b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable/ic_date.xml
new file mode 100644
index 00000000..923a9891
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable/ic_date.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable/ic_launcher_background.xml b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable/ic_search.xml b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable/ic_search.xml
new file mode 100644
index 00000000..d7dbf852
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable/ic_search.xml
@@ -0,0 +1,11 @@
+
+
+
+
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable/ic_share.xml b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable/ic_share.xml
new file mode 100644
index 00000000..47c3189d
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable/ic_share.xml
@@ -0,0 +1,7 @@
+
+
+
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable/round_white.xml b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable/round_white.xml
new file mode 100644
index 00000000..4c70d188
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable/round_white.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable/top_shadow.xml b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable/top_shadow.xml
new file mode 100644
index 00000000..3315ee26
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/app/src/main/res/drawable/top_shadow.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/font/alfa_slab_one.xml b/Android/shreyshrivastava/Advanced/News/app/src/main/res/font/alfa_slab_one.xml
new file mode 100644
index 00000000..52b82081
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/app/src/main/res/font/alfa_slab_one.xml
@@ -0,0 +1,7 @@
+
+
+
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/font/balthazar.xml b/Android/shreyshrivastava/Advanced/News/app/src/main/res/font/balthazar.xml
new file mode 100644
index 00000000..75f7b6f1
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/app/src/main/res/font/balthazar.xml
@@ -0,0 +1,7 @@
+
+
+
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/layout/activity_main.xml b/Android/shreyshrivastava/Advanced/News/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..cc9bc3fd
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/layout/activity_show_news.xml b/Android/shreyshrivastava/Advanced/News/app/src/main/res/layout/activity_show_news.xml
new file mode 100644
index 00000000..ba5da751
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/app/src/main/res/layout/activity_show_news.xml
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/layout/news_card.xml b/Android/shreyshrivastava/Advanced/News/app/src/main/res/layout/news_card.xml
new file mode 100644
index 00000000..2dd548da
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/app/src/main/res/layout/news_card.xml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/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/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-hdpi/ic_launcher.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..a571e600
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..61da551c
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-mdpi/ic_launcher.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..c41dd285
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..db5080a7
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..6dba46da
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..da31a871
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..15ac6817
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..b216f2d3
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..f25a4197
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..e96783cc
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/values-night/themes.xml b/Android/shreyshrivastava/Advanced/News/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..5764cc5c
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/values/colors.xml b/Android/shreyshrivastava/Advanced/News/app/src/main/res/values/colors.xml
new file mode 100644
index 00000000..a3420112
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/app/src/main/res/values/colors.xml
@@ -0,0 +1,17 @@
+
+
+ #FFBB86FC
+ #FFFF00
+ #FFFF00
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+ #ea474a
+ #cf2a2d
+ #1e344b
+
+ #f9f9fa
+ #4e4e4e
+ #262626
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/values/font_certs.xml b/Android/shreyshrivastava/Advanced/News/app/src/main/res/values/font_certs.xml
new file mode 100644
index 00000000..d2226ac0
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/app/src/main/res/values/font_certs.xml
@@ -0,0 +1,17 @@
+
+
+
+ @array/com_google_android_gms_fonts_certs_dev
+ @array/com_google_android_gms_fonts_certs_prod
+
+
+
+ MIIEqDCCA5CgAwIBAgIJANWFuGx90071MA0GCSqGSIb3DQEBBAUAMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTAeFw0wODA0MTUyMzM2NTZaFw0zNTA5MDEyMzM2NTZaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBANbOLggKv+IxTdGNs8/TGFy0PTP6DHThvbbR24kT9ixcOd9W+EaBPWW+wPPKQmsHxajtWjmQwWfna8mZuSeJS48LIgAZlKkpFeVyxW0qMBujb8X8ETrWy550NaFtI6t9+u7hZeTfHwqNvacKhp1RbE6dBRGWynwMVX8XW8N1+UjFaq6GCJukT4qmpN2afb8sCjUigq0GuMwYXrFVee74bQgLHWGJwPmvmLHC69EH6kWr22ijx4OKXlSIx2xT1AsSHee70w5iDBiK4aph27yH3TxkXy9V89TDdexAcKk/cVHYNnDBapcavl7y0RiQ4biu8ymM8Ga/nmzhRKya6G0cGw8CAQOjgfwwgfkwHQYDVR0OBBYEFI0cxb6VTEM8YYY6FbBMvAPyT+CyMIHJBgNVHSMEgcEwgb6AFI0cxb6VTEM8YYY6FbBMvAPyT+CyoYGapIGXMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbYIJANWFuGx90071MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADggEBABnTDPEF+3iSP0wNfdIjIz1AlnrPzgAIHVvXxunW7SBrDhEglQZBbKJEk5kT0mtKoOD1JMrSu1xuTKEBahWRbqHsXclaXjoBADb0kkjVEJu/Lh5hgYZnOjvlba8Ld7HCKePCVePoTJBdI4fvugnL8TsgK05aIskyY0hKI9L8KfqfGTl1lzOv2KoWD0KWwtAWPoGChZxmQ+nBli+gwYMzM1vAkP+aayLe0a1EQimlOalO762r0GXO0ks+UeXde2Z4e+8S/pf7pITEI/tP+MxJTALw9QUWEv9lKTk+jkbqxbsh8nfBUapfKqYn0eidpwq2AzVp3juYl7//fKnaPhJD9gs=
+
+
+
+
+ MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDAeFw0wODA4MjEyMzEzMzRaFw0zNjAxMDcyMzEzMzRaMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBAKtWLgDYO6IIrgqWbxJOKdoR8qtW0I9Y4sypEwPpt1TTcvZApxsdyxMJZ2JORland2qSGT2y5b+3JKkedxiLDmpHpDsz2WCbdxgxRczfey5YZnTJ4VZbH0xqWVW/8lGmPav5xVwnIiJS6HXk+BVKZF+JcWjAsb/GEuq/eFdpuzSqeYTcfi6idkyugwfYwXFU1+5fZKUaRKYCwkkFQVfcAs1fXA5V+++FGfvjJ/CxURaSxaBvGdGDhfXE28LWuT9ozCl5xw4Yq5OGazvV24mZVSoOO0yZ31j7kYvtwYK6NeADwbSxDdJEqO4k//0zOHKrUiGYXtqw/A0LFFtqoZKFjnkCAQOjgdkwgdYwHQYDVR0OBBYEFMd9jMIhF1Ylmn/Tgt9r45jk14alMIGmBgNVHSMEgZ4wgZuAFMd9jMIhF1Ylmn/Tgt9r45jk14aloXikdjB0MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLR29vZ2xlIEluYy4xEDAOBgNVBAsTB0FuZHJvaWQxEDAOBgNVBAMTB0FuZHJvaWSCCQDC4IdGZEowjTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA4IBAQBt0lLO74UwLDYKqs6Tm8/yzKkEu116FmH4rkaymUIE0P9KaMftGlMexFlaYjzmB2OxZyl6euNXEsQH8gjwyxCUKRJNexBiGcCEyj6z+a1fuHHvkiaai+KL8W1EyNmgjmyy8AW7P+LLlkR+ho5zEHatRbM/YAnqGcFh5iZBqpknHf1SKMXFh4dd239FJ1jWYfbMDMy3NS5CTMQ2XFI1MvcyUTdZPErjQfTbQe3aDQsQcafEQPD+nqActifKZ0Np0IS9L9kR/wbNvyz6ENwPiTrjV2KRkEjH78ZMcUQXg0L3BYHJ3lc69Vs5Ddf9uUGGMYldX3WfMBEmh/9iFBDAaTCK
+
+
+
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/values/preloaded_fonts.xml b/Android/shreyshrivastava/Advanced/News/app/src/main/res/values/preloaded_fonts.xml
new file mode 100644
index 00000000..efbd5dcb
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/app/src/main/res/values/preloaded_fonts.xml
@@ -0,0 +1,7 @@
+
+
+
+ @font/alfa_slab_one
+ @font/balthazar
+
+
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/values/strings.xml b/Android/shreyshrivastava/Advanced/News/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000..3888c5a4
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ NewsFeed
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/main/res/values/themes.xml b/Android/shreyshrivastava/Advanced/News/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..7eeaea83
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/app/src/main/res/values/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Advanced/News/app/src/test/java/com/example/news/ExampleUnitTest.java b/Android/shreyshrivastava/Advanced/News/app/src/test/java/com/example/news/ExampleUnitTest.java
new file mode 100644
index 00000000..13e8e629
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/app/src/test/java/com/example/news/ExampleUnitTest.java
@@ -0,0 +1,19 @@
+package com.example.news;
+
+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/shreyshrivastava/Advanced/News/build.gradle b/Android/shreyshrivastava/Advanced/News/build.gradle
new file mode 100644
index 00000000..245257f4
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/build.gradle
@@ -0,0 +1,26 @@
+// 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.1"
+
+ // 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
+ maven { url 'https://jitpack.io' }
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Advanced/News/gradle.properties b/Android/shreyshrivastava/Advanced/News/gradle.properties
new file mode 100644
index 00000000..6826e61b
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/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/shreyshrivastava/Advanced/News/gradle/wrapper/gradle-wrapper.jar b/Android/shreyshrivastava/Advanced/News/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..f6b961fd
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/News/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/Android/shreyshrivastava/Advanced/News/gradle/wrapper/gradle-wrapper.properties b/Android/shreyshrivastava/Advanced/News/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..fde0d0cd
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Sat May 22 00:06:22 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/shreyshrivastava/Advanced/News/gradlew b/Android/shreyshrivastava/Advanced/News/gradlew
new file mode 100644
index 00000000..cccdd3d5
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/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/shreyshrivastava/Advanced/News/gradlew.bat b/Android/shreyshrivastava/Advanced/News/gradlew.bat
new file mode 100644
index 00000000..f9553162
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/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/shreyshrivastava/Advanced/News/settings.gradle b/Android/shreyshrivastava/Advanced/News/settings.gradle
new file mode 100644
index 00000000..07362e21
--- /dev/null
+++ b/Android/shreyshrivastava/Advanced/News/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "News"
+include ':app'
diff --git a/Android/shreyshrivastava/Advanced/assets/ezgif.com-gif-maker.gif b/Android/shreyshrivastava/Advanced/assets/ezgif.com-gif-maker.gif
new file mode 100644
index 00000000..e5f1d453
Binary files /dev/null and b/Android/shreyshrivastava/Advanced/assets/ezgif.com-gif-maker.gif differ
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/.gitignore b/Android/shreyshrivastava/Beginner/SplashScreen/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/Android/shreyshrivastava/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/shreyshrivastava/Beginner/SplashScreen/.idea/.gitignore b/Android/shreyshrivastava/Beginner/SplashScreen/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/Android/shreyshrivastava/Beginner/SplashScreen/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/.idea/.name b/Android/shreyshrivastava/Beginner/SplashScreen/.idea/.name
new file mode 100644
index 00000000..030196fb
--- /dev/null
+++ b/Android/shreyshrivastava/Beginner/SplashScreen/.idea/.name
@@ -0,0 +1 @@
+Splash Screen
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/.idea/compiler.xml b/Android/shreyshrivastava/Beginner/SplashScreen/.idea/compiler.xml
new file mode 100644
index 00000000..fb7f4a8a
--- /dev/null
+++ b/Android/shreyshrivastava/Beginner/SplashScreen/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/.idea/gradle.xml b/Android/shreyshrivastava/Beginner/SplashScreen/.idea/gradle.xml
new file mode 100644
index 00000000..5cd135a0
--- /dev/null
+++ b/Android/shreyshrivastava/Beginner/SplashScreen/.idea/gradle.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/.idea/jarRepositories.xml b/Android/shreyshrivastava/Beginner/SplashScreen/.idea/jarRepositories.xml
new file mode 100644
index 00000000..0380d8d3
--- /dev/null
+++ b/Android/shreyshrivastava/Beginner/SplashScreen/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/.idea/misc.xml b/Android/shreyshrivastava/Beginner/SplashScreen/.idea/misc.xml
new file mode 100644
index 00000000..6199cc2a
--- /dev/null
+++ b/Android/shreyshrivastava/Beginner/SplashScreen/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/.idea/runConfigurations.xml b/Android/shreyshrivastava/Beginner/SplashScreen/.idea/runConfigurations.xml
new file mode 100644
index 00000000..797acea5
--- /dev/null
+++ b/Android/shreyshrivastava/Beginner/SplashScreen/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/app/.gitignore b/Android/shreyshrivastava/Beginner/SplashScreen/app/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/Android/shreyshrivastava/Beginner/SplashScreen/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/app/build.gradle b/Android/shreyshrivastava/Beginner/SplashScreen/app/build.gradle
new file mode 100644
index 00000000..cd4024cd
--- /dev/null
+++ b/Android/shreyshrivastava/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 16
+ 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/shreyshrivastava/Beginner/SplashScreen/app/proguard-rules.pro b/Android/shreyshrivastava/Beginner/SplashScreen/app/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/Android/shreyshrivastava/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/shreyshrivastava/Beginner/SplashScreen/app/src/androidTest/java/com/example/splashscreen/ExampleInstrumentedTest.java b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/androidTest/java/com/example/splashscreen/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..cb44353e
--- /dev/null
+++ b/Android/shreyshrivastava/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/shreyshrivastava/Beginner/SplashScreen/app/src/main/AndroidManifest.xml b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..965a0f62
--- /dev/null
+++ b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/AndroidManifest.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/java/com/example/splashscreen/MainActivity.java b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/java/com/example/splashscreen/MainActivity.java
new file mode 100644
index 00000000..51dd60bd
--- /dev/null
+++ b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/java/com/example/splashscreen/MainActivity.java
@@ -0,0 +1,72 @@
+package com.example.splashscreen;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+public class MainActivity extends AppCompatActivity {
+ int flag = 1;
+ static int SPLASH_SCREEN_TIME_OUT=5000;
+
+ ImageView image;
+ TextView heading, subtitle;
+ Button skipButton, nextButton;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
+ WindowManager.LayoutParams.FLAG_FULLSCREEN);
+
+ setContentView(R.layout.activity_main);
+
+ image = findViewById(R.id.imageView);
+
+ heading = findViewById(R.id.textView2);
+ subtitle = findViewById(R.id.textView3);
+
+ skipButton = findViewById(R.id.button);
+ nextButton = findViewById(R.id.button2);
+
+ nextButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (flag == 1) {
+ image.setImageResource(R.drawable.pizza);
+ heading.setText("Pizza");
+ subtitle.setText("Is not healthy and delicious");
+ flag = 2;
+ } else if (flag == 2) {
+ image.setImageResource(R.drawable.icecream);
+ heading.setText("Ice cream");
+ subtitle.setText("Is not healthy and delicious");
+ flag = 3;
+ } else if (flag == 3) {
+ openNewActivity();
+ }
+
+ }
+ });
+
+ skipButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ openNewActivity();
+ }
+ });
+
+ }
+
+ public void openNewActivity(){
+ Intent intent = new Intent(this, MainActivity2.class);
+ startActivity(intent);
+ }
+}
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/java/com/example/splashscreen/MainActivity2.java b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/java/com/example/splashscreen/MainActivity2.java
new file mode 100644
index 00000000..d01f04d5
--- /dev/null
+++ b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/java/com/example/splashscreen/MainActivity2.java
@@ -0,0 +1,14 @@
+package com.example.splashscreen;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.os.Bundle;
+
+public class MainActivity2 extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main3);
+ }
+}
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/Android/shreyshrivastava/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/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/drawable/burger.jpg b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/drawable/burger.jpg
new file mode 100644
index 00000000..32f97fe4
Binary files /dev/null and b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/drawable/burger.jpg differ
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/drawable/ic_launcher_background.xml b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/drawable/icecream.jpg b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/drawable/icecream.jpg
new file mode 100644
index 00000000..4496c2ec
Binary files /dev/null and b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/drawable/icecream.jpg differ
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/drawable/pizza.jpg b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/drawable/pizza.jpg
new file mode 100644
index 00000000..52c614c3
Binary files /dev/null and b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/drawable/pizza.jpg differ
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/layout/activity_main.xml b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..9a8fbb03
--- /dev/null
+++ b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/layout/activity_main3.xml b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/layout/activity_main3.xml
new file mode 100644
index 00000000..ca277867
--- /dev/null
+++ b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/layout/activity_main3.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/Android/shreyshrivastava/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/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/Android/shreyshrivastava/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/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/mipmap-hdpi/ic_launcher.png b/Android/shreyshrivastava/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/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/Android/shreyshrivastava/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/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/mipmap-mdpi/ic_launcher.png b/Android/shreyshrivastava/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/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/Android/shreyshrivastava/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/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/Android/shreyshrivastava/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/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/Android/shreyshrivastava/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/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/Android/shreyshrivastava/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/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/Android/shreyshrivastava/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/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/Android/shreyshrivastava/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/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/Android/shreyshrivastava/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/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/values-night/themes.xml b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..3ba9b5c9
--- /dev/null
+++ b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/values/colors.xml b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/values/colors.xml
new file mode 100644
index 00000000..f8c6127d
--- /dev/null
+++ b/Android/shreyshrivastava/Beginner/SplashScreen/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/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/values/strings.xml b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000..7475b68a
--- /dev/null
+++ b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ Splash Screen
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/values/themes.xml b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..29fb6e01
--- /dev/null
+++ b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/main/res/values/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/app/src/test/java/com/example/splashscreen/ExampleUnitTest.java b/Android/shreyshrivastava/Beginner/SplashScreen/app/src/test/java/com/example/splashscreen/ExampleUnitTest.java
new file mode 100644
index 00000000..9c679f71
--- /dev/null
+++ b/Android/shreyshrivastava/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/shreyshrivastava/Beginner/SplashScreen/build.gradle b/Android/shreyshrivastava/Beginner/SplashScreen/build.gradle
new file mode 100644
index 00000000..9ade2a75
--- /dev/null
+++ b/Android/shreyshrivastava/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.1"
+
+ // 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/shreyshrivastava/Beginner/SplashScreen/gradle.properties b/Android/shreyshrivastava/Beginner/SplashScreen/gradle.properties
new file mode 100644
index 00000000..6826e61b
--- /dev/null
+++ b/Android/shreyshrivastava/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/shreyshrivastava/Beginner/SplashScreen/gradle/wrapper/gradle-wrapper.jar b/Android/shreyshrivastava/Beginner/SplashScreen/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..f6b961fd
Binary files /dev/null and b/Android/shreyshrivastava/Beginner/SplashScreen/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/Android/shreyshrivastava/Beginner/SplashScreen/gradle/wrapper/gradle-wrapper.properties b/Android/shreyshrivastava/Beginner/SplashScreen/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..da0d164b
--- /dev/null
+++ b/Android/shreyshrivastava/Beginner/SplashScreen/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Tue May 18 21:53:02 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/shreyshrivastava/Beginner/SplashScreen/gradlew b/Android/shreyshrivastava/Beginner/SplashScreen/gradlew
new file mode 100644
index 00000000..cccdd3d5
--- /dev/null
+++ b/Android/shreyshrivastava/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/shreyshrivastava/Beginner/SplashScreen/gradlew.bat b/Android/shreyshrivastava/Beginner/SplashScreen/gradlew.bat
new file mode 100644
index 00000000..f9553162
--- /dev/null
+++ b/Android/shreyshrivastava/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/shreyshrivastava/Beginner/SplashScreen/settings.gradle b/Android/shreyshrivastava/Beginner/SplashScreen/settings.gradle
new file mode 100644
index 00000000..d2915768
--- /dev/null
+++ b/Android/shreyshrivastava/Beginner/SplashScreen/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "Splash Screen"
+include ':app'
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/.gitignore b/Android/shreyshrivastava/Intermediate/ToDo/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/.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/shreyshrivastava/Intermediate/ToDo/.idea/.gitignore b/Android/shreyshrivastava/Intermediate/ToDo/.idea/.gitignore
new file mode 100644
index 00000000..e69de29b
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/.idea/.name b/Android/shreyshrivastava/Intermediate/ToDo/.idea/.name
new file mode 100644
index 00000000..9ce0aadf
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/.idea/.name
@@ -0,0 +1 @@
+To Do
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/.idea/compiler.xml b/Android/shreyshrivastava/Intermediate/ToDo/.idea/compiler.xml
new file mode 100644
index 00000000..fb7f4a8a
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/.idea/gradle.xml b/Android/shreyshrivastava/Intermediate/ToDo/.idea/gradle.xml
new file mode 100644
index 00000000..5cd135a0
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/.idea/gradle.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/.idea/jarRepositories.xml b/Android/shreyshrivastava/Intermediate/ToDo/.idea/jarRepositories.xml
new file mode 100644
index 00000000..0380d8d3
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/.idea/misc.xml b/Android/shreyshrivastava/Intermediate/ToDo/.idea/misc.xml
new file mode 100644
index 00000000..6199cc2a
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/.idea/runConfigurations.xml b/Android/shreyshrivastava/Intermediate/ToDo/.idea/runConfigurations.xml
new file mode 100644
index 00000000..797acea5
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/app/.gitignore b/Android/shreyshrivastava/Intermediate/ToDo/app/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/app/build.gradle b/Android/shreyshrivastava/Intermediate/ToDo/app/build.gradle
new file mode 100644
index 00000000..4048d1bc
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/app/build.gradle
@@ -0,0 +1,47 @@
+plugins {
+ id 'com.android.application'
+}
+apply plugin: 'com.google.gms.google-services'
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+
+ defaultConfig {
+ applicationId "com.example.todo"
+ minSdkVersion 16
+ targetSdkVersion 30
+ versionCode 1
+ versionName "1.0"
+ multiDexEnabled true
+
+ 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'
+ implementation 'com.google.firebase:firebase-firestore:21.6.0'
+ testImplementation 'junit:junit:4.+'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.2'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
+
+ implementation platform('com.google.firebase:firebase-bom:28.0.1')
+ implementation 'com.google.firebase:firebase-analytics'
+ implementation 'androidx.recyclerview:recyclerview:1.1.0'
+ implementation 'androidx.multidex:multidex:2.0.1'
+}
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/app/google-services.json b/Android/shreyshrivastava/Intermediate/ToDo/app/google-services.json
new file mode 100644
index 00000000..0aba845a
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/app/google-services.json
@@ -0,0 +1,39 @@
+{
+ "project_info": {
+ "project_number": "845244183072",
+ "project_id": "to-do-d6be4",
+ "storage_bucket": "to-do-d6be4.appspot.com"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:845244183072:android:a90933c01b6b2ce7470245",
+ "android_client_info": {
+ "package_name": "com.example.todo"
+ }
+ },
+ "oauth_client": [
+ {
+ "client_id": "845244183072-426t8hb3f1lc4ca5u93p0jrm1dijqm85.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ],
+ "api_key": [
+ {
+ "current_key": "AIzaSyC7rVB6ZyWR59KilR4UOAQ87Y6dNYUPDwo"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": [
+ {
+ "client_id": "845244183072-426t8hb3f1lc4ca5u93p0jrm1dijqm85.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/app/proguard-rules.pro b/Android/shreyshrivastava/Intermediate/ToDo/app/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/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/shreyshrivastava/Intermediate/ToDo/app/src/androidTest/java/com/example/todo/ExampleInstrumentedTest.java b/Android/shreyshrivastava/Intermediate/ToDo/app/src/androidTest/java/com/example/todo/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..51235b9c
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/app/src/androidTest/java/com/example/todo/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.example.todo;
+
+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.todo", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/AndroidManifest.xml b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..cbdbe3c5
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/AndroidManifest.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/java/com/example/todo/MainActivity.java b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/java/com/example/todo/MainActivity.java
new file mode 100644
index 00000000..64a19c70
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/java/com/example/todo/MainActivity.java
@@ -0,0 +1,101 @@
+package com.example.todo;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import android.os.Bundle;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.Toast;
+
+import com.google.android.gms.tasks.OnCompleteListener;
+import com.google.android.gms.tasks.OnSuccessListener;
+import com.google.android.gms.tasks.Task;
+import com.google.firebase.firestore.DocumentReference;
+import com.google.firebase.firestore.FirebaseFirestore;
+import com.google.firebase.firestore.QueryDocumentSnapshot;
+import com.google.firebase.firestore.QuerySnapshot;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class MainActivity extends AppCompatActivity {
+
+ FirebaseFirestore db = FirebaseFirestore.getInstance();
+ List taskModelList;
+ TaskAdapter adapter;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ setContentView(R.layout.activity_main);
+
+ EditText editTextTask = findViewById(R.id.editText);
+ Button addTaskBtn = findViewById(R.id.button);
+
+ taskModelList = new ArrayList<>();
+
+ addTaskBtn.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+
+ String newTask = editTextTask.getText().toString();
+
+ if(newTask.isEmpty()){
+ Toast.makeText(MainActivity.this, "Please add task first.", Toast.LENGTH_SHORT).show();
+ return;
+ }
+
+ final TaskModel taskModel = new TaskModel();
+
+ taskModel.setTaskDone(false);
+ taskModel.setTask(newTask);
+
+ db.collection("todoCollection")
+ .add(taskModel)
+ .addOnSuccessListener(new OnSuccessListener() {
+ @Override
+ public void onSuccess(DocumentReference documentReference) {
+ String taskId = documentReference.getId();
+ taskModel.setTaskId(taskId);
+ taskModelList.add(taskModel);
+ adapter.notifyDataSetChanged();
+ editTextTask.setText(null);
+ }
+ });
+ }
+ });
+
+ RecyclerView taskRecyclerView = findViewById(R.id.recycle);
+ taskRecyclerView.setLayoutManager(new LinearLayoutManager(this));
+ adapter = new TaskAdapter(this, taskModelList, db, editTextTask);
+ taskRecyclerView.setAdapter(adapter);
+
+ db.collection("todoCollection")
+ .get()
+ .addOnCompleteListener(new OnCompleteListener() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+
+ if(task.isSuccessful()){
+
+ for (QueryDocumentSnapshot document : task.getResult()) {
+ TaskModel taskModel = document.toObject(TaskModel.class);
+ taskModelList.add(taskModel);
+ }
+ adapter.notifyDataSetChanged();
+
+ }else{
+ Toast.makeText(MainActivity.this, "Error Getting task list.", Toast.LENGTH_SHORT).show();
+
+ }
+ }
+ });
+
+ }
+}
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/java/com/example/todo/TaskAdapter.java b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/java/com/example/todo/TaskAdapter.java
new file mode 100644
index 00000000..ec40c308
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/java/com/example/todo/TaskAdapter.java
@@ -0,0 +1,165 @@
+package com.example.todo;
+
+import android.content.Context;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.google.android.gms.tasks.OnFailureListener;
+import com.google.android.gms.tasks.OnSuccessListener;
+import com.google.firebase.firestore.DocumentReference;
+import com.google.firebase.firestore.FirebaseFirestore;
+
+import java.util.List;
+import java.util.logging.Logger;
+
+public class TaskAdapter extends RecyclerView.Adapter {
+
+ Context context;
+ List taskModelList;
+ FirebaseFirestore db;
+ EditText editTextTask;
+
+ public TaskAdapter(Context context, List taskModelList, FirebaseFirestore db, EditText editTextTask) {
+ this.context = context;
+ this.taskModelList = taskModelList;
+ this.db = db;
+ this.editTextTask = editTextTask;
+ }
+
+ @NonNull
+ @Override
+ public TaskViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+
+ View view = LayoutInflater.from(context).inflate(R.layout.recycler, parent, false);
+ return new TaskViewHolder(view, editTextTask);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull TaskViewHolder holder, int position) {
+
+ CheckBox task = holder.task;
+
+ TaskModel taskModel = taskModelList.get(position);
+ String taskFromDB = taskModel.getTask();
+ boolean isTaskDone = taskModel.isTaskDone();
+
+ task.setText(taskFromDB);
+ task.setChecked(isTaskDone);
+
+ }
+
+ @Override
+ public int getItemCount() {
+ return taskModelList.size();
+ }
+
+ class TaskViewHolder extends RecyclerView.ViewHolder{
+
+ CheckBox task;
+ ImageView deleteBtn;
+ ImageView updateBtn;
+ EditText editTextTask;
+
+ private static final String TAG = "MyActivity";
+
+
+ public TaskViewHolder(@NonNull View itemView, EditText editTextTask) {
+
+ super(itemView);
+
+ this.editTextTask = editTextTask;
+ task = itemView.findViewById(R.id.checkBoxTask);
+ deleteBtn = itemView.findViewById(R.id.deleteTaskBtn);
+ updateBtn = itemView.findViewById(R.id.updateTaskBtn);
+
+ task.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+ final int currentPosition = getAdapterPosition();
+ TaskModel taskModel = taskModelList.get(currentPosition);
+
+ String taskId = taskModel.getTaskId();
+
+ db.collection("todoCollection")
+ .document(taskId)
+ .update("taskDone",isChecked);
+ }
+ });
+
+ updateBtn.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+
+ final int currentPosition = getAdapterPosition();
+ TaskModel taskModel = taskModelList.get(currentPosition);
+
+ String taskId = taskModel.getTaskId();
+ String task = taskModel.getTask();
+
+ editTextTask.setText(task);
+ editTextTask.setSelection(editTextTask.getText().length());
+
+ db.collection("todoCollection")
+ .document(taskId).delete()
+ .addOnSuccessListener(new OnSuccessListener() {
+ @Override
+ public void onSuccess(Void aVoid) {
+ taskModelList.remove(currentPosition);
+ notifyDataSetChanged();
+ }
+ })
+ .addOnFailureListener(new OnFailureListener() {
+ @Override
+ public void onFailure(@NonNull Exception e) {
+ Toast.makeText(context, "Failed to delete the task.", Toast.LENGTH_SHORT).show();
+ }
+ })
+ ;
+
+
+ }
+ });
+
+ deleteBtn.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ final int currentPosition = getAdapterPosition();
+ TaskModel taskModel = taskModelList.get(currentPosition);
+
+ String taskId = taskModel.getTaskId();
+
+ db.collection("todoCollection")
+ .document(taskId).delete()
+ .addOnSuccessListener(new OnSuccessListener() {
+ @Override
+ public void onSuccess(Void aVoid) {
+ taskModelList.remove(currentPosition);
+ notifyDataSetChanged();
+ }
+ })
+ .addOnFailureListener(new OnFailureListener() {
+ @Override
+ public void onFailure(@NonNull Exception e) {
+ Toast.makeText(context, "Failed to delete the task.", Toast.LENGTH_SHORT).show();
+ }
+ })
+ ;
+
+
+
+
+ }
+ });
+ }
+ }
+}
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/java/com/example/todo/TaskModel.java b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/java/com/example/todo/TaskModel.java
new file mode 100644
index 00000000..d7eefa02
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/java/com/example/todo/TaskModel.java
@@ -0,0 +1,36 @@
+package com.example.todo;
+
+import com.google.firebase.firestore.DocumentId;
+
+public class TaskModel {
+
+ @DocumentId
+ private String taskId;
+
+ private String task;
+ private boolean isTaskDone;
+
+ public String getTaskId() {
+ return taskId;
+ }
+
+ public void setTaskId(String taskId) {
+ this.taskId = taskId;
+ }
+
+ public String getTask() {
+ return task;
+ }
+
+ public void setTask(String task) {
+ this.task = task;
+ }
+
+ public boolean isTaskDone() {
+ return isTaskDone;
+ }
+
+ public void setTaskDone(boolean taskDone) {
+ isTaskDone = taskDone;
+ }
+}
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/drawable/ic_baseline_delete_24.xml b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/drawable/ic_baseline_delete_24.xml
new file mode 100644
index 00000000..3c4030b0
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/drawable/ic_baseline_delete_24.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/drawable/ic_launcher_background.xml b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/layout/activity_main.xml b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..b71224d3
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/layout/recycler.xml b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/layout/recycler.xml
new file mode 100644
index 00000000..867b425b
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/layout/recycler.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/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/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-hdpi/ic_launcher.png b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..a571e600
Binary files /dev/null and b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..61da551c
Binary files /dev/null and b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-mdpi/ic_launcher.png b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..c41dd285
Binary files /dev/null and b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..db5080a7
Binary files /dev/null and b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..6dba46da
Binary files /dev/null and b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..da31a871
Binary files /dev/null and b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..15ac6817
Binary files /dev/null and b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..b216f2d3
Binary files /dev/null and b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..f25a4197
Binary files /dev/null and b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..e96783cc
Binary files /dev/null and b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/values-night/themes.xml b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..9e307e4f
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/values/colors.xml b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/values/colors.xml
new file mode 100644
index 00000000..f8c6127d
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/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/shreyshrivastava/Intermediate/ToDo/app/src/main/res/values/strings.xml b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000..0c655a6e
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ To Do
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/values/themes.xml b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..0ab23a3f
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/app/src/main/res/values/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/app/src/test/java/com/example/todo/ExampleUnitTest.java b/Android/shreyshrivastava/Intermediate/ToDo/app/src/test/java/com/example/todo/ExampleUnitTest.java
new file mode 100644
index 00000000..c1bcaaf3
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/app/src/test/java/com/example/todo/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.example.todo;
+
+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/shreyshrivastava/Intermediate/ToDo/build.gradle b/Android/shreyshrivastava/Intermediate/ToDo/build.gradle
new file mode 100644
index 00000000..2c1fccce
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/build.gradle
@@ -0,0 +1,26 @@
+// 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.1"
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ classpath "com.google.gms:google-services:4.3.8"
+ }
+}
+
+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/shreyshrivastava/Intermediate/ToDo/gradle.properties b/Android/shreyshrivastava/Intermediate/ToDo/gradle.properties
new file mode 100644
index 00000000..6826e61b
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/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/shreyshrivastava/Intermediate/ToDo/gradle/wrapper/gradle-wrapper.jar b/Android/shreyshrivastava/Intermediate/ToDo/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..f6b961fd
Binary files /dev/null and b/Android/shreyshrivastava/Intermediate/ToDo/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/Android/shreyshrivastava/Intermediate/ToDo/gradle/wrapper/gradle-wrapper.properties b/Android/shreyshrivastava/Intermediate/ToDo/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..1abd9856
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Wed May 19 12:45:51 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/shreyshrivastava/Intermediate/ToDo/gradlew b/Android/shreyshrivastava/Intermediate/ToDo/gradlew
new file mode 100644
index 00000000..cccdd3d5
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/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/shreyshrivastava/Intermediate/ToDo/gradlew.bat b/Android/shreyshrivastava/Intermediate/ToDo/gradlew.bat
new file mode 100644
index 00000000..f9553162
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/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/shreyshrivastava/Intermediate/ToDo/settings.gradle b/Android/shreyshrivastava/Intermediate/ToDo/settings.gradle
new file mode 100644
index 00000000..2c72ae3e
--- /dev/null
+++ b/Android/shreyshrivastava/Intermediate/ToDo/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "To Do"
+include ':app'
diff --git a/AndroidLibrary/shreyshrivastava/News/.gitignore b/AndroidLibrary/shreyshrivastava/News/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/.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/shreyshrivastava/News/.idea/.gitignore b/AndroidLibrary/shreyshrivastava/News/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/AndroidLibrary/shreyshrivastava/News/.idea/compiler.xml b/AndroidLibrary/shreyshrivastava/News/.idea/compiler.xml
new file mode 100644
index 00000000..fb7f4a8a
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/shreyshrivastava/News/.idea/gradle.xml b/AndroidLibrary/shreyshrivastava/News/.idea/gradle.xml
new file mode 100644
index 00000000..5cd135a0
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/.idea/gradle.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/shreyshrivastava/News/.idea/inspectionProfiles/Project_Default.xml b/AndroidLibrary/shreyshrivastava/News/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 00000000..022ab299
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/shreyshrivastava/News/.idea/jarRepositories.xml b/AndroidLibrary/shreyshrivastava/News/.idea/jarRepositories.xml
new file mode 100644
index 00000000..958a5bea
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/.idea/jarRepositories.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/shreyshrivastava/News/.idea/misc.xml b/AndroidLibrary/shreyshrivastava/News/.idea/misc.xml
new file mode 100644
index 00000000..47002838
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/shreyshrivastava/News/.idea/runConfigurations.xml b/AndroidLibrary/shreyshrivastava/News/.idea/runConfigurations.xml
new file mode 100644
index 00000000..797acea5
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/shreyshrivastava/News/.idea/vcs.xml b/AndroidLibrary/shreyshrivastava/News/.idea/vcs.xml
new file mode 100644
index 00000000..4fce1d86
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/shreyshrivastava/News/app/.gitignore b/AndroidLibrary/shreyshrivastava/News/app/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/AndroidLibrary/shreyshrivastava/News/app/build.gradle b/AndroidLibrary/shreyshrivastava/News/app/build.gradle
new file mode 100644
index 00000000..6c36cefa
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/app/build.gradle
@@ -0,0 +1,43 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+
+ defaultConfig {
+ applicationId "com.example.news"
+ 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.3.0'
+ implementation 'com.android.volley:volley:1.2.0'
+ implementation 'com.github.KwabenBerko:News-API-Java:1.0.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.squareup.picasso:picasso:2.71828'
+}
\ No newline at end of file
diff --git a/AndroidLibrary/shreyshrivastava/News/app/proguard-rules.pro b/AndroidLibrary/shreyshrivastava/News/app/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/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/shreyshrivastava/News/app/src/androidTest/java/com/example/news/ExampleInstrumentedTest.java b/AndroidLibrary/shreyshrivastava/News/app/src/androidTest/java/com/example/news/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..c65bd709
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/app/src/androidTest/java/com/example/news/ExampleInstrumentedTest.java
@@ -0,0 +1,28 @@
+package com.example.news;
+
+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.news", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/AndroidManifest.xml b/AndroidLibrary/shreyshrivastava/News/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..e1e92407
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/app/src/main/AndroidManifest.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/java/com/example/news/MainActivity.java b/AndroidLibrary/shreyshrivastava/News/app/src/main/java/com/example/news/MainActivity.java
new file mode 100644
index 00000000..70f9bedb
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/app/src/main/java/com/example/news/MainActivity.java
@@ -0,0 +1,122 @@
+package com.example.news;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.android.volley.Request;
+import com.android.volley.RequestQueue;
+import com.android.volley.Response;
+import com.android.volley.VolleyError;
+import com.android.volley.toolbox.JsonArrayRequest;
+import com.android.volley.toolbox.JsonObjectRequest;
+import com.android.volley.toolbox.StringRequest;
+import com.android.volley.toolbox.Volley;
+import com.example.news.adapter.RecyclerViewAdapter;
+import com.example.news.model.Post;
+import com.kwabenaberko.newsapilib.NewsApiClient;
+import com.kwabenaberko.newsapilib.models.request.EverythingRequest;
+import com.kwabenaberko.newsapilib.models.response.ArticleResponse;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.ArrayList;
+
+public class MainActivity extends AppCompatActivity implements RecyclerViewAdapter.OnNewsPostClickListener
+{
+ private RecyclerView recyclerView;
+ private RecyclerViewAdapter recyclerViewAdapter;
+ private ArrayList postList = new ArrayList<>();
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+ recyclerView = findViewById(R.id.recycler_view);
+ recyclerView.setHasFixedSize(true);
+ recyclerView.setLayoutManager(new LinearLayoutManager(this));
+ recyclerViewAdapter = new RecyclerViewAdapter(postList, MainActivity.this, this);
+
+ Toast.makeText(MainActivity.this,"Fetching...", Toast.LENGTH_SHORT).show();
+
+ NewsApiClient newsApiClient = new NewsApiClient("e7c6212f21244702ac03aa3b05b6df02 ");
+ newsApiClient.getEverything(
+ new EverythingRequest.Builder()
+ .q("india")
+ .build(),
+ new NewsApiClient.ArticlesResponseCallback() {
+ @Override
+ public void onSuccess(ArticleResponse response) {
+
+ for (int i = 0; i
+{
+ private OnNewsPostClickListener newsPostClickListener;
+ private ArrayList postList;
+ private Context context;
+
+ // constructor of the class
+ public RecyclerViewAdapter(ArrayList postList, Context context, OnNewsPostClickListener onNewsPostClickListener)
+ {
+ this.postList = postList;
+ this.context = context;
+ this.newsPostClickListener = onNewsPostClickListener;
+ }
+
+ @NonNull
+ @Override
+ public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
+ {
+ View view = LayoutInflater.from(parent.getContext())
+ .inflate(R.layout.news_card,parent,false);
+ return new ViewHolder(view, newsPostClickListener);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull RecyclerViewAdapter.ViewHolder holder, int position)
+ {
+ Post post = postList.get(position);
+
+ holder.title.setText(post.getTitle());
+ Picasso.get().load(post.getUrlToImage()).into(holder.image);
+ }
+
+ @Override
+ public int getItemCount()
+ {
+ return postList.size();
+ }
+
+ public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener
+ {
+ OnNewsPostClickListener onNewsPostClickListener;
+
+ public TextView title;
+ public ImageView image;
+
+ public ViewHolder(@NonNull View itemView, OnNewsPostClickListener onNewsPostClickListener)
+ {
+ super(itemView);
+
+ title = itemView.findViewById(R.id.post_title);
+ image = itemView.findViewById(R.id.post_image);
+ this.onNewsPostClickListener = onNewsPostClickListener;
+ itemView.setOnClickListener(this);
+ }
+
+ @Override
+ public void onClick(View v)
+ {
+ onNewsPostClickListener.onPostClick(getAdapterPosition());
+ }
+ }
+
+ public interface OnNewsPostClickListener
+ {
+ void onPostClick(int position);
+ }
+}
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/java/com/example/news/model/Post.java b/AndroidLibrary/shreyshrivastava/News/app/src/main/java/com/example/news/model/Post.java
new file mode 100644
index 00000000..083a1ff1
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/app/src/main/java/com/example/news/model/Post.java
@@ -0,0 +1,91 @@
+package com.example.news.model;
+
+public class Post
+{
+ private String author;
+ private String description;
+ private String publishedAt;
+ private String title;
+ private String url;
+ private String urlToImage;
+ private String content;
+
+
+ public Post()
+ {
+ }
+
+ public Post(String author, String description, String publishedAt, String title, String url, String urlToImage)
+ {
+ this.author = author;
+ this.description = description;
+ this.publishedAt = publishedAt;
+ this.title = title;
+ this.url = url;
+ this.urlToImage = urlToImage;
+ }
+
+ public String getContent() {return content; }
+
+ public void setContent(String content) { this.content = content; }
+
+ public String getAuthor()
+ {
+ return author;
+ }
+
+ public void setAuthor(String author)
+ {
+ this.author = author;
+ }
+
+ public String getDescription()
+ {
+ return description;
+ }
+
+ public void setDescription(String description)
+ {
+ this.description = description;
+ }
+
+ public String getPublishedAt()
+ {
+ return publishedAt;
+ }
+
+ public void setPublishedAt(String publishedAt)
+ {
+ this.publishedAt = publishedAt;
+ }
+
+ public String getTitle()
+ {
+ return title;
+ }
+
+ public void setTitle(String title)
+ {
+ this.title = title;
+ }
+
+ public String getUrl()
+ {
+ return url;
+ }
+
+ public void setUrl(String url)
+ {
+ this.url = url;
+ }
+
+ public String getUrlToImage()
+ {
+ return urlToImage;
+ }
+
+ public void setUrlToImage(String urlToImage)
+ {
+ this.urlToImage = urlToImage;
+ }
+}
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-hdpi/icon_news.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-hdpi/icon_news.png
new file mode 100644
index 00000000..39f178db
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-hdpi/icon_news.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-hdpi/no_result.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-hdpi/no_result.png
new file mode 100644
index 00000000..8de5e726
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-hdpi/no_result.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-hdpi/oops.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-hdpi/oops.png
new file mode 100644
index 00000000..8e0cacdb
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-hdpi/oops.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-hdpi/splash_icon.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-hdpi/splash_icon.png
new file mode 100644
index 00000000..fa402f80
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-hdpi/splash_icon.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-mdpi/icon_news.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-mdpi/icon_news.png
new file mode 100644
index 00000000..3ecfd54c
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-mdpi/icon_news.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-mdpi/no_result.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-mdpi/no_result.png
new file mode 100644
index 00000000..649fc85a
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-mdpi/no_result.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-mdpi/oops.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-mdpi/oops.png
new file mode 100644
index 00000000..bd7739c7
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-mdpi/oops.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-mdpi/splash_icon.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-mdpi/splash_icon.png
new file mode 100644
index 00000000..bf272e5c
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-mdpi/splash_icon.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xhdpi/icon_news.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xhdpi/icon_news.png
new file mode 100644
index 00000000..ffdac74a
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xhdpi/icon_news.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xhdpi/no_result.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xhdpi/no_result.png
new file mode 100644
index 00000000..bb52f23f
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xhdpi/no_result.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xhdpi/oops.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xhdpi/oops.png
new file mode 100644
index 00000000..7c094433
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xhdpi/oops.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xhdpi/splash_icon.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xhdpi/splash_icon.png
new file mode 100644
index 00000000..7058d334
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xhdpi/splash_icon.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xxhdpi/icon_news.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xxhdpi/icon_news.png
new file mode 100644
index 00000000..a73b2442
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xxhdpi/icon_news.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xxhdpi/no_result.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xxhdpi/no_result.png
new file mode 100644
index 00000000..50ba264d
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xxhdpi/no_result.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xxhdpi/oops.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xxhdpi/oops.png
new file mode 100644
index 00000000..2018ed31
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xxhdpi/oops.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xxhdpi/splash_icon.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xxhdpi/splash_icon.png
new file mode 100644
index 00000000..14dee1ca
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xxhdpi/splash_icon.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xxxhdpi/icon_news.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xxxhdpi/icon_news.png
new file mode 100644
index 00000000..39c92911
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xxxhdpi/icon_news.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xxxhdpi/no_result.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xxxhdpi/no_result.png
new file mode 100644
index 00000000..2e6e19ea
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xxxhdpi/no_result.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xxxhdpi/oops.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xxxhdpi/oops.png
new file mode 100644
index 00000000..c82c9347
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xxxhdpi/oops.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xxxhdpi/splash_icon.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xxxhdpi/splash_icon.png
new file mode 100644
index 00000000..878ab2ee
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable-xxxhdpi/splash_icon.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable/bottom_shadow.xml b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable/bottom_shadow.xml
new file mode 100644
index 00000000..afe39788
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable/bottom_shadow.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable/ic_date.xml b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable/ic_date.xml
new file mode 100644
index 00000000..923a9891
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable/ic_date.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable/ic_launcher_background.xml b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable/ic_search.xml b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable/ic_search.xml
new file mode 100644
index 00000000..d7dbf852
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable/ic_search.xml
@@ -0,0 +1,11 @@
+
+
+
+
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable/ic_share.xml b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable/ic_share.xml
new file mode 100644
index 00000000..47c3189d
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable/ic_share.xml
@@ -0,0 +1,7 @@
+
+
+
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable/round_white.xml b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable/round_white.xml
new file mode 100644
index 00000000..4c70d188
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable/round_white.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable/top_shadow.xml b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable/top_shadow.xml
new file mode 100644
index 00000000..3315ee26
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/drawable/top_shadow.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/font/alfa_slab_one.xml b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/font/alfa_slab_one.xml
new file mode 100644
index 00000000..52b82081
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/font/alfa_slab_one.xml
@@ -0,0 +1,7 @@
+
+
+
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/font/balthazar.xml b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/font/balthazar.xml
new file mode 100644
index 00000000..75f7b6f1
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/font/balthazar.xml
@@ -0,0 +1,7 @@
+
+
+
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/layout/activity_main.xml b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..cc9bc3fd
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/layout/activity_show_news.xml b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/layout/activity_show_news.xml
new file mode 100644
index 00000000..ba5da751
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/layout/activity_show_news.xml
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/layout/news_card.xml b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/layout/news_card.xml
new file mode 100644
index 00000000..2dd548da
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/layout/news_card.xml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/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/shreyshrivastava/News/app/src/main/res/mipmap-hdpi/ic_launcher.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..a571e600
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..61da551c
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-mdpi/ic_launcher.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..c41dd285
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..db5080a7
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..6dba46da
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..da31a871
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..15ac6817
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..b216f2d3
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..f25a4197
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..e96783cc
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/values-night/themes.xml b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..5764cc5c
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/values/colors.xml b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/values/colors.xml
new file mode 100644
index 00000000..a3420112
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/values/colors.xml
@@ -0,0 +1,17 @@
+
+
+ #FFBB86FC
+ #FFFF00
+ #FFFF00
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+ #ea474a
+ #cf2a2d
+ #1e344b
+
+ #f9f9fa
+ #4e4e4e
+ #262626
+
\ No newline at end of file
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/values/font_certs.xml b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/values/font_certs.xml
new file mode 100644
index 00000000..d2226ac0
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/values/font_certs.xml
@@ -0,0 +1,17 @@
+
+
+
+ @array/com_google_android_gms_fonts_certs_dev
+ @array/com_google_android_gms_fonts_certs_prod
+
+
+
+ MIIEqDCCA5CgAwIBAgIJANWFuGx90071MA0GCSqGSIb3DQEBBAUAMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTAeFw0wODA0MTUyMzM2NTZaFw0zNTA5MDEyMzM2NTZaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBANbOLggKv+IxTdGNs8/TGFy0PTP6DHThvbbR24kT9ixcOd9W+EaBPWW+wPPKQmsHxajtWjmQwWfna8mZuSeJS48LIgAZlKkpFeVyxW0qMBujb8X8ETrWy550NaFtI6t9+u7hZeTfHwqNvacKhp1RbE6dBRGWynwMVX8XW8N1+UjFaq6GCJukT4qmpN2afb8sCjUigq0GuMwYXrFVee74bQgLHWGJwPmvmLHC69EH6kWr22ijx4OKXlSIx2xT1AsSHee70w5iDBiK4aph27yH3TxkXy9V89TDdexAcKk/cVHYNnDBapcavl7y0RiQ4biu8ymM8Ga/nmzhRKya6G0cGw8CAQOjgfwwgfkwHQYDVR0OBBYEFI0cxb6VTEM8YYY6FbBMvAPyT+CyMIHJBgNVHSMEgcEwgb6AFI0cxb6VTEM8YYY6FbBMvAPyT+CyoYGapIGXMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbYIJANWFuGx90071MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADggEBABnTDPEF+3iSP0wNfdIjIz1AlnrPzgAIHVvXxunW7SBrDhEglQZBbKJEk5kT0mtKoOD1JMrSu1xuTKEBahWRbqHsXclaXjoBADb0kkjVEJu/Lh5hgYZnOjvlba8Ld7HCKePCVePoTJBdI4fvugnL8TsgK05aIskyY0hKI9L8KfqfGTl1lzOv2KoWD0KWwtAWPoGChZxmQ+nBli+gwYMzM1vAkP+aayLe0a1EQimlOalO762r0GXO0ks+UeXde2Z4e+8S/pf7pITEI/tP+MxJTALw9QUWEv9lKTk+jkbqxbsh8nfBUapfKqYn0eidpwq2AzVp3juYl7//fKnaPhJD9gs=
+
+
+
+
+ MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDAeFw0wODA4MjEyMzEzMzRaFw0zNjAxMDcyMzEzMzRaMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBAKtWLgDYO6IIrgqWbxJOKdoR8qtW0I9Y4sypEwPpt1TTcvZApxsdyxMJZ2JORland2qSGT2y5b+3JKkedxiLDmpHpDsz2WCbdxgxRczfey5YZnTJ4VZbH0xqWVW/8lGmPav5xVwnIiJS6HXk+BVKZF+JcWjAsb/GEuq/eFdpuzSqeYTcfi6idkyugwfYwXFU1+5fZKUaRKYCwkkFQVfcAs1fXA5V+++FGfvjJ/CxURaSxaBvGdGDhfXE28LWuT9ozCl5xw4Yq5OGazvV24mZVSoOO0yZ31j7kYvtwYK6NeADwbSxDdJEqO4k//0zOHKrUiGYXtqw/A0LFFtqoZKFjnkCAQOjgdkwgdYwHQYDVR0OBBYEFMd9jMIhF1Ylmn/Tgt9r45jk14alMIGmBgNVHSMEgZ4wgZuAFMd9jMIhF1Ylmn/Tgt9r45jk14aloXikdjB0MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLR29vZ2xlIEluYy4xEDAOBgNVBAsTB0FuZHJvaWQxEDAOBgNVBAMTB0FuZHJvaWSCCQDC4IdGZEowjTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA4IBAQBt0lLO74UwLDYKqs6Tm8/yzKkEu116FmH4rkaymUIE0P9KaMftGlMexFlaYjzmB2OxZyl6euNXEsQH8gjwyxCUKRJNexBiGcCEyj6z+a1fuHHvkiaai+KL8W1EyNmgjmyy8AW7P+LLlkR+ho5zEHatRbM/YAnqGcFh5iZBqpknHf1SKMXFh4dd239FJ1jWYfbMDMy3NS5CTMQ2XFI1MvcyUTdZPErjQfTbQe3aDQsQcafEQPD+nqActifKZ0Np0IS9L9kR/wbNvyz6ENwPiTrjV2KRkEjH78ZMcUQXg0L3BYHJ3lc69Vs5Ddf9uUGGMYldX3WfMBEmh/9iFBDAaTCK
+
+
+
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/values/preloaded_fonts.xml b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/values/preloaded_fonts.xml
new file mode 100644
index 00000000..efbd5dcb
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/values/preloaded_fonts.xml
@@ -0,0 +1,7 @@
+
+
+
+ @font/alfa_slab_one
+ @font/balthazar
+
+
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/values/strings.xml b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000..3888c5a4
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ NewsFeed
+
\ No newline at end of file
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/main/res/values/themes.xml b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..7eeaea83
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/app/src/main/res/values/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/AndroidLibrary/shreyshrivastava/News/app/src/test/java/com/example/news/ExampleUnitTest.java b/AndroidLibrary/shreyshrivastava/News/app/src/test/java/com/example/news/ExampleUnitTest.java
new file mode 100644
index 00000000..13e8e629
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/app/src/test/java/com/example/news/ExampleUnitTest.java
@@ -0,0 +1,19 @@
+package com.example.news;
+
+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/shreyshrivastava/News/build.gradle b/AndroidLibrary/shreyshrivastava/News/build.gradle
new file mode 100644
index 00000000..245257f4
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/build.gradle
@@ -0,0 +1,26 @@
+// 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.1"
+
+ // 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
+ maven { url 'https://jitpack.io' }
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
\ No newline at end of file
diff --git a/AndroidLibrary/shreyshrivastava/News/gradle.properties b/AndroidLibrary/shreyshrivastava/News/gradle.properties
new file mode 100644
index 00000000..6826e61b
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/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/shreyshrivastava/News/gradle/wrapper/gradle-wrapper.jar b/AndroidLibrary/shreyshrivastava/News/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..f6b961fd
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/News/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/AndroidLibrary/shreyshrivastava/News/gradle/wrapper/gradle-wrapper.properties b/AndroidLibrary/shreyshrivastava/News/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..fde0d0cd
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Sat May 22 00:06:22 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/shreyshrivastava/News/gradlew b/AndroidLibrary/shreyshrivastava/News/gradlew
new file mode 100644
index 00000000..cccdd3d5
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/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/shreyshrivastava/News/gradlew.bat b/AndroidLibrary/shreyshrivastava/News/gradlew.bat
new file mode 100644
index 00000000..f9553162
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/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/shreyshrivastava/News/settings.gradle b/AndroidLibrary/shreyshrivastava/News/settings.gradle
new file mode 100644
index 00000000..07362e21
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/News/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "News"
+include ':app'
diff --git a/AndroidLibrary/shreyshrivastava/README.md b/AndroidLibrary/shreyshrivastava/README.md
new file mode 100644
index 00000000..9a57d5cb
--- /dev/null
+++ b/AndroidLibrary/shreyshrivastava/README.md
@@ -0,0 +1,5 @@
+## News App with Picasso for Image Loading
+
+### Demo Video
+
+
diff --git a/AndroidLibrary/shreyshrivastava/assets/ezgif.com-gif-maker.gif b/AndroidLibrary/shreyshrivastava/assets/ezgif.com-gif-maker.gif
new file mode 100644
index 00000000..e5f1d453
Binary files /dev/null and b/AndroidLibrary/shreyshrivastava/assets/ezgif.com-gif-maker.gif differ
diff --git a/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/.gitignore b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/.gitignore
new file mode 100644
index 00000000..37a4eb8b
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/.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/shreyshrivastava/FirstApplication/.idea/.gitignore b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/.idea/compiler.xml b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/.idea/compiler.xml
new file mode 100644
index 00000000..61a9130c
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/.idea/gradle.xml b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/.idea/gradle.xml
new file mode 100644
index 00000000..8e0f0cba
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/.idea/gradle.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/.idea/jarRepositories.xml b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/.idea/jarRepositories.xml
new file mode 100644
index 00000000..1dfcd020
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/.idea/misc.xml b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/.idea/misc.xml
new file mode 100644
index 00000000..58918f50
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/.idea/previewer/phone/phoneSettingConfig_-1918644437.json b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/.idea/previewer/phone/phoneSettingConfig_-1918644437.json
new file mode 100644
index 00000000..f505e6b9
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/.idea/previewer/phone/phoneSettingConfig_-1918644437.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/shreyshrivastava/FirstApplication/.idea/previewer/previewConfig.json b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/.idea/previewer/previewConfig.json
new file mode 100644
index 00000000..5f87258c
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/.idea/previewer/previewConfig.json
@@ -0,0 +1,9 @@
+{
+ "1.0.0": {
+ "LastPreviewDevice": {
+ "C:\\Users\\HP\\DevEcoStudioProjects\\FirstApplication\\entry": [
+ "phone"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/build.gradle b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/build.gradle
new file mode 100644
index 00000000..9ec29b00
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/entry/.gitignore b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/.gitignore
new file mode 100644
index 00000000..796b96d1
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/build.gradle b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/build.gradle
new file mode 100644
index 00000000..30c5f30b
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/entry/proguard-rules.pro b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/proguard-rules.pro
new file mode 100644
index 00000000..f7666e47
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/entry/src/main/config.json b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/config.json
new file mode 100644
index 00000000..7cad8eb7
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/config.json
@@ -0,0 +1,69 @@
+{
+ "app": {
+ "bundleName": "com.example.firstapplication",
+ "vendor": "example",
+ "version": {
+ "code": 1000000,
+ "name": "1.0.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Release"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.example.firstapplication",
+ "name": ".MyApplication",
+ "deviceType": [
+ "phone"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "entry",
+ "moduleType": "entry"
+ },
+ "abilities": [
+ {
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home",
+ "signup.pay",
+ "login.pay"
+ ]
+ }
+ ],
+ "orientation": "unspecified",
+ "name": "com.example.firstapplication.MainAbility",
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ },
+ {
+ "orientation": "unspecified",
+ "name": "com.example.firstapplication.LoginAbility",
+ "icon": "$media:icon",
+ "description": "$string:loginability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ },
+ {
+ "orientation": "unspecified",
+ "name": "com.example.firstapplication.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/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MainAbility.java b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MainAbility.java
new file mode 100644
index 00000000..fb43c3d9
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MainAbility.java
@@ -0,0 +1,22 @@
+package com.example.firstapplication;
+
+import com.example.firstapplication.slice.MainAbilitySlice;
+
+import ohos.aafwk.ability.Ability;
+import ohos.aafwk.content.Intent;
+import ohos.aafwk.content.Operation;
+import ohos.agp.components.Button;
+import ohos.hiviewdfx.HiLog;
+import ohos.hiviewdfx.HiLogLabel;
+
+
+public class MainAbility extends Ability {
+
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setMainRoute(MainAbilitySlice.class.getName());
+ }
+}
+
+
diff --git a/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MyApplication.java b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MyApplication.java
new file mode 100644
index 00000000..d8378471
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MyApplication.java
@@ -0,0 +1,10 @@
+package com.example.firstapplication;
+
+import ohos.aafwk.ability.AbilityPackage;
+
+public class MyApplication extends AbilityPackage {
+ @Override
+ public void onInitialize() {
+ super.onInitialize();
+ }
+}
diff --git a/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/LoginAbilitySlice.java b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/LoginAbilitySlice.java
new file mode 100644
index 00000000..3664888e
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/LoginAbilitySlice.java
@@ -0,0 +1,23 @@
+package com.example.firstapplication.slice;
+
+import com.example.firstapplication.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/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/MainAbilitySlice.java b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/MainAbilitySlice.java
new file mode 100644
index 00000000..101b65de
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/MainAbilitySlice.java
@@ -0,0 +1,36 @@
+package com.example.firstapplication.slice;
+
+
+import com.example.firstapplication.ResourceTable;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.aafwk.content.Operation;
+import ohos.agp.components.Button;
+import ohos.agp.window.dialog.ToastDialog;
+
+public class MainAbilitySlice extends AbilitySlice {
+ Button button_signup;
+ Button button_login;
+
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_main);
+
+ button_signup = (Button)findComponentById(ResourceTable.Id_button_main_signup);
+ button_signup.setClickedListener(component -> present(new SignupAbilitySlice(), new Intent()));
+
+ button_login = (Button)findComponentById(ResourceTable.Id_button_main_login);
+ button_login.setClickedListener(component -> present(new LoginAbilitySlice(), new Intent()));
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/SignupAbilitySlice.java b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/SignupAbilitySlice.java
new file mode 100644
index 00000000..9df758cd
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/SignupAbilitySlice.java
@@ -0,0 +1,23 @@
+package com.example.firstapplication.slice;
+
+import com.example.firstapplication.ResourceTable;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+
+public class SignupAbilitySlice extends AbilitySlice {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_signup);
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/element/string.json b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/element/string.json
new file mode 100644
index 00000000..b7ff1d58
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/element/string.json
@@ -0,0 +1,32 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "FirstApplication"
+ },
+ {
+ "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/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_login.xml b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_login.xml
new file mode 100644
index 00000000..a9771000
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_main.xml b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_main.xml
new file mode 100644
index 00000000..c0c0a3df
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_signup.xml b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_signup.xml
new file mode 100644
index 00000000..a9771000
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_login.xml b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_login.xml
new file mode 100644
index 00000000..9d9a63ba
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_login.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_main.xml b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_main.xml
new file mode 100644
index 00000000..ce676b31
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_main.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_signup.xml b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_signup.xml
new file mode 100644
index 00000000..832d5b81
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_signup.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/cat.jpg b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/cat.jpg
new file mode 100644
index 00000000..8d0cd03e
Binary files /dev/null and b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/cat.jpg differ
diff --git a/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/icon.png b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/icon.png
new file mode 100644
index 00000000..ce307a88
Binary files /dev/null and b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/icon.png differ
diff --git a/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/ohosTest/config.json b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/ohosTest/config.json
new file mode 100644
index 00000000..42787e4d
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/ohosTest/config.json
@@ -0,0 +1,41 @@
+{
+ "app": {
+ "bundleName": "com.example.firstapplication",
+ "vendor": "example",
+ "version": {
+ "code": 1000000,
+ "name": "1.0.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Release"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.example.firstapplication",
+ "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/shreyshrivastava/FirstApplication/entry/src/ohosTest/java/com/example/firstapplication/ExampleOhosTest.java b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/ohosTest/java/com/example/firstapplication/ExampleOhosTest.java
new file mode 100644
index 00000000..aec63c56
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/ohosTest/java/com/example/firstapplication/ExampleOhosTest.java
@@ -0,0 +1,14 @@
+package com.example.firstapplication;
+
+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.firstapplication", actualBundleName);
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/test/java/com/example/firstapplication/ExampleTest.java b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/test/java/com/example/firstapplication/ExampleTest.java
new file mode 100644
index 00000000..52e4058f
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/entry/src/test/java/com/example/firstapplication/ExampleTest.java
@@ -0,0 +1,9 @@
+package com.example.firstapplication;
+
+import org.junit.Test;
+
+public class ExampleTest {
+ @Test
+ public void onStart() {
+ }
+}
diff --git a/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/gradle.properties b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/gradle.properties
new file mode 100644
index 00000000..0daf1830
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/gradle/wrapper/gradle-wrapper.jar b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..490fda85
Binary files /dev/null and b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/gradle/wrapper/gradle-wrapper.properties b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..f59159e8
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/gradlew b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/gradlew
new file mode 100644
index 00000000..2fe81a7d
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/gradlew.bat b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/gradlew.bat
new file mode 100644
index 00000000..62bd9b9c
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/settings.gradle b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/settings.gradle
new file mode 100644
index 00000000..4773db73
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/shreyshrivastava/FirstApplication/settings.gradle
@@ -0,0 +1 @@
+include ':entry'
diff --git a/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/.gitignore b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/.gitignore
new file mode 100644
index 00000000..37a4eb8b
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/.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/shreyshrivastava/FirstApplication/.idea/.gitignore b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/.idea/compiler.xml b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/.idea/compiler.xml
new file mode 100644
index 00000000..61a9130c
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/.idea/gradle.xml b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/.idea/gradle.xml
new file mode 100644
index 00000000..8e0f0cba
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/.idea/gradle.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/.idea/jarRepositories.xml b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/.idea/jarRepositories.xml
new file mode 100644
index 00000000..1dfcd020
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/.idea/misc.xml b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/.idea/misc.xml
new file mode 100644
index 00000000..58918f50
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/.idea/previewer/phone/phoneSettingConfig_-1918644437.json b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/.idea/previewer/phone/phoneSettingConfig_-1918644437.json
new file mode 100644
index 00000000..f505e6b9
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/.idea/previewer/phone/phoneSettingConfig_-1918644437.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/shreyshrivastava/FirstApplication/.idea/previewer/previewConfig.json b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/.idea/previewer/previewConfig.json
new file mode 100644
index 00000000..5f87258c
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/.idea/previewer/previewConfig.json
@@ -0,0 +1,9 @@
+{
+ "1.0.0": {
+ "LastPreviewDevice": {
+ "C:\\Users\\HP\\DevEcoStudioProjects\\FirstApplication\\entry": [
+ "phone"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/.idea/vcs.xml b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/.idea/vcs.xml
new file mode 100644
index 00000000..4fce1d86
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/build.gradle b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/build.gradle
new file mode 100644
index 00000000..9ec29b00
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/entry/.gitignore b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/.gitignore
new file mode 100644
index 00000000..796b96d1
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/build.gradle b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/build.gradle
new file mode 100644
index 00000000..30c5f30b
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/entry/proguard-rules.pro b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/proguard-rules.pro
new file mode 100644
index 00000000..f7666e47
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/entry/src/main/config.json b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/config.json
new file mode 100644
index 00000000..7cad8eb7
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/config.json
@@ -0,0 +1,69 @@
+{
+ "app": {
+ "bundleName": "com.example.firstapplication",
+ "vendor": "example",
+ "version": {
+ "code": 1000000,
+ "name": "1.0.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Release"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.example.firstapplication",
+ "name": ".MyApplication",
+ "deviceType": [
+ "phone"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "entry",
+ "moduleType": "entry"
+ },
+ "abilities": [
+ {
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home",
+ "signup.pay",
+ "login.pay"
+ ]
+ }
+ ],
+ "orientation": "unspecified",
+ "name": "com.example.firstapplication.MainAbility",
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ },
+ {
+ "orientation": "unspecified",
+ "name": "com.example.firstapplication.LoginAbility",
+ "icon": "$media:icon",
+ "description": "$string:loginability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ },
+ {
+ "orientation": "unspecified",
+ "name": "com.example.firstapplication.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/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MainAbility.java b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MainAbility.java
new file mode 100644
index 00000000..fb43c3d9
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MainAbility.java
@@ -0,0 +1,22 @@
+package com.example.firstapplication;
+
+import com.example.firstapplication.slice.MainAbilitySlice;
+
+import ohos.aafwk.ability.Ability;
+import ohos.aafwk.content.Intent;
+import ohos.aafwk.content.Operation;
+import ohos.agp.components.Button;
+import ohos.hiviewdfx.HiLog;
+import ohos.hiviewdfx.HiLogLabel;
+
+
+public class MainAbility extends Ability {
+
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setMainRoute(MainAbilitySlice.class.getName());
+ }
+}
+
+
diff --git a/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MyApplication.java b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MyApplication.java
new file mode 100644
index 00000000..d8378471
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MyApplication.java
@@ -0,0 +1,10 @@
+package com.example.firstapplication;
+
+import ohos.aafwk.ability.AbilityPackage;
+
+public class MyApplication extends AbilityPackage {
+ @Override
+ public void onInitialize() {
+ super.onInitialize();
+ }
+}
diff --git a/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/LoginAbilitySlice.java b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/LoginAbilitySlice.java
new file mode 100644
index 00000000..3664888e
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/LoginAbilitySlice.java
@@ -0,0 +1,23 @@
+package com.example.firstapplication.slice;
+
+import com.example.firstapplication.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/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/MainAbilitySlice.java b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/MainAbilitySlice.java
new file mode 100644
index 00000000..afc4a03d
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/MainAbilitySlice.java
@@ -0,0 +1,35 @@
+package com.example.firstapplication.slice;
+
+
+import com.example.firstapplication.ResourceTable;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.aafwk.content.Operation;
+import ohos.agp.components.Button;
+
+public class MainAbilitySlice extends AbilitySlice {
+ Button button_signup;
+ Button button_login;
+
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_main);
+
+ button_signup = (Button)findComponentById(ResourceTable.Id_button_main_signup);
+ button_signup.setClickedListener(component -> present(new SignupAbilitySlice(), new Intent()));
+
+ button_login = (Button)findComponentById(ResourceTable.Id_button_main_login);
+ button_login.setClickedListener(component -> present(new LoginAbilitySlice(), new Intent()));
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/SignupAbilitySlice.java b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/SignupAbilitySlice.java
new file mode 100644
index 00000000..a283c7f2
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/SignupAbilitySlice.java
@@ -0,0 +1,128 @@
+package com.example.firstapplication.slice;
+
+import com.example.firstapplication.ResourceTable;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.agp.components.*;
+import ohos.agp.window.dialog.ToastDialog;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class SignupAbilitySlice extends AbilitySlice {
+ TextField firstName;
+
+ TextField lastName;
+ Text errorLastName;
+
+ TextField email;
+ Text errorEmail;
+
+ TextField password;
+ Text errorPassword;
+
+ TextField mobile;
+ Text errorMobile;
+
+ RadioButton radioButtonMale;
+ RadioButton radioButtonFemale;
+ Text errorGender;
+
+ Button buttonSignUp;
+
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_signup);
+
+ firstName = (TextField)findComponentById(ResourceTable.Id_text_first_name);
+
+ lastName = (TextField)findComponentById(ResourceTable.Id_text_last_name);
+ errorLastName = (Text)findComponentById(ResourceTable.Id_text_error_last_name);
+
+ email = (TextField)findComponentById(ResourceTable.Id_text_email);
+ errorEmail = (Text)findComponentById(ResourceTable.Id_text_error_email);
+
+ password = (TextField)findComponentById(ResourceTable.Id_text_password);
+ errorPassword = (Text)findComponentById(ResourceTable.Id_text_error_password);
+
+ mobile = (TextField)findComponentById(ResourceTable.Id_text_mobile);
+ errorMobile = (Text)findComponentById(ResourceTable.Id_text_error_mobile);
+
+ radioButtonMale = (RadioButton)findComponentById(ResourceTable.Id_radio_button_male);
+ radioButtonFemale = (RadioButton)findComponentById(ResourceTable.Id_radio_button_female);
+ errorGender = (Text)findComponentById(ResourceTable.Id_text_error_gender);
+
+ buttonSignUp = (Button)findComponentById(ResourceTable.Id_button_signup);
+
+ buttonSignUp.setClickedListener(new Component.ClickedListener() {
+ @Override
+ public void onClick(Component component) {
+ String fName = firstName.getText().toString();
+
+ String lName = lastName.getText().toString();
+ Boolean validLastName = lName.chars().allMatch(Character::isLetter);
+ if (!validLastName) {
+ errorLastName.setVisibility(0);
+ } else {
+ errorLastName.setVisibility(1);
+ }
+
+ String eMail = email.getText().toString();
+ Pattern pattern = Pattern.compile("^.+@.+\\..+$");
+ Matcher matcher = pattern.matcher(eMail);
+ Boolean validEmail = matcher.matches();
+ if (!validEmail) {
+ errorEmail.setVisibility(0);
+ } else {
+ errorEmail.setVisibility(1);
+ }
+
+ String passWord = password.getText().toString();
+ Boolean validPassword = (Boolean) (passWord.length() >= 5);
+ if (!validPassword) {
+ errorPassword.setVisibility(0);
+ } else {
+ errorPassword.setVisibility(1);
+ }
+
+ String mobileNumber = mobile.getText().toString();
+ Boolean validMobile = mobileNumber.chars().allMatch(Character::isDigit);
+ if (!validMobile) {
+ errorMobile.setVisibility(0);
+ } else {
+ errorMobile.setVisibility(1);
+ }
+
+ Boolean validGender = radioButtonMale.isChecked() ^ radioButtonFemale.isChecked();
+ if (!validGender) {
+ errorGender.setVisibility(0);
+ } else {
+ errorGender.setVisibility(1);
+ }
+
+ ToastDialog toastDialog = new ToastDialog(getContext());
+ if (validLastName && validEmail && validPassword && validMobile && validGender) {
+ toastDialog.setText("Thank you, sign up completed.");
+ } else {
+ toastDialog.setText("Please enter valid information.");
+ }
+ toastDialog.setAlignment(0);
+ toastDialog.setOffset(0, 0);
+ toastDialog.setDuration(10000);
+ toastDialog.show();
+ }
+ });
+
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/element/string.json b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/element/string.json
new file mode 100644
index 00000000..b7ff1d58
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/element/string.json
@@ -0,0 +1,32 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "FirstApplication"
+ },
+ {
+ "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/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_login.xml b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_login.xml
new file mode 100644
index 00000000..a9771000
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_main.xml b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_main.xml
new file mode 100644
index 00000000..c0c0a3df
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_signup.xml b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_signup.xml
new file mode 100644
index 00000000..a9771000
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_login.xml b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_login.xml
new file mode 100644
index 00000000..9d9a63ba
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_login.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_main.xml b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_main.xml
new file mode 100644
index 00000000..ce676b31
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_main.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_signup.xml b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_signup.xml
new file mode 100644
index 00000000..a6447cf8
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_signup.xml
@@ -0,0 +1,196 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/cat.jpg b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/cat.jpg
new file mode 100644
index 00000000..8d0cd03e
Binary files /dev/null and b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/cat.jpg differ
diff --git a/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/icon.png b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/icon.png
new file mode 100644
index 00000000..ce307a88
Binary files /dev/null and b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/icon.png differ
diff --git a/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/ohosTest/config.json b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/ohosTest/config.json
new file mode 100644
index 00000000..42787e4d
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/ohosTest/config.json
@@ -0,0 +1,41 @@
+{
+ "app": {
+ "bundleName": "com.example.firstapplication",
+ "vendor": "example",
+ "version": {
+ "code": 1000000,
+ "name": "1.0.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Release"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.example.firstapplication",
+ "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/shreyshrivastava/FirstApplication/entry/src/ohosTest/java/com/example/firstapplication/ExampleOhosTest.java b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/ohosTest/java/com/example/firstapplication/ExampleOhosTest.java
new file mode 100644
index 00000000..aec63c56
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/ohosTest/java/com/example/firstapplication/ExampleOhosTest.java
@@ -0,0 +1,14 @@
+package com.example.firstapplication;
+
+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.firstapplication", actualBundleName);
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/test/java/com/example/firstapplication/ExampleTest.java b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/test/java/com/example/firstapplication/ExampleTest.java
new file mode 100644
index 00000000..52e4058f
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/entry/src/test/java/com/example/firstapplication/ExampleTest.java
@@ -0,0 +1,9 @@
+package com.example.firstapplication;
+
+import org.junit.Test;
+
+public class ExampleTest {
+ @Test
+ public void onStart() {
+ }
+}
diff --git a/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/gradle.properties b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/gradle.properties
new file mode 100644
index 00000000..0daf1830
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/gradle/wrapper/gradle-wrapper.jar b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..490fda85
Binary files /dev/null and b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/gradle/wrapper/gradle-wrapper.properties b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..f59159e8
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/gradlew b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/gradlew
new file mode 100644
index 00000000..2fe81a7d
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/gradlew.bat b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/gradlew.bat
new file mode 100644
index 00000000..62bd9b9c
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/settings.gradle b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/settings.gradle
new file mode 100644
index 00000000..4773db73
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/shreyshrivastava/FirstApplication/settings.gradle
@@ -0,0 +1 @@
+include ':entry'
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/.gitignore b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/.gitignore
new file mode 100644
index 00000000..37a4eb8b
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/.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/shreyshrivastava/FirstApplication/.idea/.gitignore b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/.idea/compiler.xml b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/.idea/compiler.xml
new file mode 100644
index 00000000..61a9130c
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/.idea/gradle.xml b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/.idea/gradle.xml
new file mode 100644
index 00000000..8e0f0cba
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/.idea/gradle.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/.idea/jarRepositories.xml b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/.idea/jarRepositories.xml
new file mode 100644
index 00000000..1dfcd020
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/.idea/misc.xml b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/.idea/misc.xml
new file mode 100644
index 00000000..58918f50
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/.idea/previewer/phone/phoneSettingConfig_-1918644437.json b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/.idea/previewer/phone/phoneSettingConfig_-1918644437.json
new file mode 100644
index 00000000..f505e6b9
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/.idea/previewer/phone/phoneSettingConfig_-1918644437.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/shreyshrivastava/FirstApplication/.idea/previewer/previewConfig.json b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/.idea/previewer/previewConfig.json
new file mode 100644
index 00000000..5f87258c
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/.idea/previewer/previewConfig.json
@@ -0,0 +1,9 @@
+{
+ "1.0.0": {
+ "LastPreviewDevice": {
+ "C:\\Users\\HP\\DevEcoStudioProjects\\FirstApplication\\entry": [
+ "phone"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/build.gradle b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/build.gradle
new file mode 100644
index 00000000..9ec29b00
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/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/Day3 Assingment/shreyshrivastava/FirstApplication/entry/.gitignore b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/.gitignore
new file mode 100644
index 00000000..796b96d1
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/build.gradle b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/build.gradle
new file mode 100644
index 00000000..3dcd9158
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/build.gradle
@@ -0,0 +1,30 @@
+apply plugin: 'com.huawei.ohos.hap'
+apply plugin: 'com.huawei.ohos.decctest'
+ohos {
+ compileSdkVersion 5
+ defaultConfig {
+ compatibleSdkVersion 4
+ }
+ buildTypes {
+ release {
+ proguardOpt {
+ proguardEnabled false
+ rulesFiles 'proguard-rules.pro'
+ }
+ }
+ }
+ compileOptions{
+ annotationEnabled true
+ }
+
+}
+
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
+ testImplementation 'junit:junit:4.13'
+ ohosTestImplementation 'com.huawei.ohos.testkit:runner:1.0.0.100'
+}
+decc {
+ supportType = ['html','xml']
+}
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/proguard-rules.pro b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/proguard-rules.pro
new file mode 100644
index 00000000..f7666e47
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/entry/src/main/config.json b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/config.json
new file mode 100644
index 00000000..c21afa19
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/config.json
@@ -0,0 +1,51 @@
+{
+ "app": {
+ "bundleName": "com.example.firstapplication",
+ "vendor": "example",
+ "version": {
+ "code": 1000000,
+ "name": "1.0.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Release"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.example.firstapplication",
+ "name": ".MyApplication",
+ "deviceType": [
+ "phone"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "entry",
+ "moduleType": "entry"
+ },
+ "abilities": [
+ {
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home",
+ "signup.pay",
+ "login.pay"
+ ]
+ }
+ ],
+ "orientation": "unspecified",
+ "name": "com.example.firstapplication.MainAbility",
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MainAbility.java b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MainAbility.java
new file mode 100644
index 00000000..8aa74702
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MainAbility.java
@@ -0,0 +1,19 @@
+package com.example.firstapplication;
+
+import com.example.firstapplication.slice.MainAbilitySlice;
+
+import ohos.aafwk.ability.Ability;
+import ohos.aafwk.content.Intent;
+
+
+
+public class MainAbility extends Ability {
+
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setMainRoute(MainAbilitySlice.class.getName());
+ }
+}
+
+
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MyApplication.java b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MyApplication.java
new file mode 100644
index 00000000..d8378471
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MyApplication.java
@@ -0,0 +1,10 @@
+package com.example.firstapplication;
+
+import ohos.aafwk.ability.AbilityPackage;
+
+public class MyApplication extends AbilityPackage {
+ @Override
+ public void onInitialize() {
+ super.onInitialize();
+ }
+}
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/SignUpInfo.java b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/SignUpInfo.java
new file mode 100644
index 00000000..fa87c68b
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/SignUpInfo.java
@@ -0,0 +1,9 @@
+package com.example.firstapplication;
+
+import com.example.firstapplication.User;
+import ohos.data.orm.OrmDatabase;
+import ohos.data.orm.annotation.Database;
+
+@Database(entities = {User.class}, version = 1)
+public abstract class SignUpInfo extends OrmDatabase {
+}
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/User.java b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/User.java
new file mode 100644
index 00000000..39483fdf
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/User.java
@@ -0,0 +1,79 @@
+package com.example.firstapplication;
+
+import ohos.data.orm.OrmObject;
+import ohos.data.orm.annotation.Entity;
+import ohos.data.orm.annotation.Index;
+import ohos.data.orm.annotation.PrimaryKey;
+
+@Entity(tableName = "user", indices = {@Index(value = {"email"}, name = "email_index", unique = true)})
+public class User extends OrmObject {
+
+ // Set the userId to the auto-generated primary key.
+ // Note that the auto-generated primary key takes effect only when the data type is a wrapper class.
+ @PrimaryKey(autoGenerate = true)
+ private Integer userId;
+ private String firstName;
+ private String lastName;
+ private String password;
+ private String email;
+ private String mobile;
+
+ // true - male, false - female
+ private Boolean gender;
+
+ // Add the getter and setter methods.
+ public Integer getUserId() {
+ return userId;
+ }
+
+ public void setUserId(Integer userId) {
+ this.userId = userId;
+ }
+
+ public String getFirstName() {
+ return firstName;
+ }
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getMobile() {
+ return mobile;
+ }
+
+ public void setMobile(String mobile) {
+ this.mobile = mobile;
+ }
+
+ public Boolean getGender() {
+ return gender;
+ }
+
+ public void setGender(Boolean gender) {
+ this.gender = gender;
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/LoginAbilitySlice.java b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/LoginAbilitySlice.java
new file mode 100644
index 00000000..b6871a0a
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/LoginAbilitySlice.java
@@ -0,0 +1,74 @@
+package com.example.firstapplication.slice;
+
+import com.example.firstapplication.ResourceTable;
+import com.example.firstapplication.SignUpInfo;
+import com.example.firstapplication.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.TextField;
+import ohos.agp.window.dialog.ToastDialog;
+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 {
+
+ TextField email;
+ TextField password;
+ Button buttonLogin;
+
+ OrmContext context;
+ DatabaseHelper helper;
+
+ static final HiLogLabel label = new HiLogLabel(HiLog.LOG_APP, 0x00201, "MY_TAG"); //MY_MODULE=
+
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_login);
+
+ helper = new DatabaseHelper(LoginAbilitySlice.this);
+ context = helper.getOrmContext("SignUpInfo", "SignUpInfo.db", SignUpInfo.class);
+
+ email = (TextField)findComponentById(ResourceTable.Id_text_login_email);
+ password = (TextField)findComponentById(ResourceTable.Id_text_login_password);
+
+ buttonLogin = (Button)findComponentById(ResourceTable.Id_button_login);
+ buttonLogin.setClickedListener(new Component.ClickedListener() {
+ @Override
+ public void onClick(Component component) {
+ OrmPredicates queryEmail = context.where(User.class).equalTo("email", email.getText().toString());
+ List usersEmail = context.query(queryEmail);
+ if (usersEmail.size() > 0) {
+ User user = usersEmail.get(0);
+ String userPassword = user.getPassword();
+ if (userPassword.compareTo(password.getText()) == 0) {
+ present(new LoginSuccessfulAbilitySlice(), new Intent());
+ }
+ } else {
+ ToastDialog toastDialog = new ToastDialog(getContext());
+ toastDialog.setText("Incorrect user information.");
+ toastDialog.setDuration(10000);
+ toastDialog.show();
+ }
+ }
+ });
+
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/LoginSuccessfulAbilitySlice.java b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/LoginSuccessfulAbilitySlice.java
new file mode 100644
index 00000000..dbbccdf1
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/LoginSuccessfulAbilitySlice.java
@@ -0,0 +1,23 @@
+package com.example.firstapplication.slice;
+
+import com.example.firstapplication.ResourceTable;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+
+public class LoginSuccessfulAbilitySlice extends AbilitySlice {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_login_successful);
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/MainAbilitySlice.java b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/MainAbilitySlice.java
new file mode 100644
index 00000000..d0fcbfd2
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/MainAbilitySlice.java
@@ -0,0 +1,61 @@
+package com.example.firstapplication.slice;
+
+
+import com.example.firstapplication.ResourceTable;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+
+import ohos.agp.animation.Animator;
+import ohos.agp.animation.AnimatorProperty;
+import ohos.agp.components.Button;
+import ohos.agp.components.Component;
+import ohos.agp.components.Image;
+import ohos.hiviewdfx.HiLog;
+import ohos.hiviewdfx.HiLogLabel;
+
+public class MainAbilitySlice extends AbilitySlice {
+ Image image;
+
+ Button button_signup;
+ Button button_login;
+
+ AnimatorProperty animatorProperty;
+
+ static final HiLogLabel label = new HiLogLabel(HiLog.LOG_APP, 0x00201, "MY_TAG");
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_main);
+
+ image = (Image) findComponentById(ResourceTable.Id_image_main);
+ animatorProperty = image.createAnimatorProperty();
+ animatorProperty.setDuration(5000).alpha(0).rotate(360).setLoopedCount(-1).setCurveType(Animator.CurveType.ACCELERATE);
+
+ image.setBindStateChangedListener(new Component.BindStateChangedListener() {
+ @Override
+ public void onComponentBoundToWindow(Component component) {
+ animatorProperty.start();
+ }
+
+ @Override
+ public void onComponentUnboundFromWindow(Component component) {
+ animatorProperty.stop();
+ }});
+
+ button_signup = (Button)findComponentById(ResourceTable.Id_button_main_signup);
+ button_signup.setClickedListener(component -> present(new SignupAbilitySlice(), new Intent()));
+
+ button_login = (Button)findComponentById(ResourceTable.Id_button_main_login);
+ button_login.setClickedListener(component -> present(new LoginAbilitySlice(), new Intent()));
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/SignupAbilitySlice.java b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/SignupAbilitySlice.java
new file mode 100644
index 00000000..0b43c22a
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/SignupAbilitySlice.java
@@ -0,0 +1,178 @@
+package com.example.firstapplication.slice;
+
+import com.example.firstapplication.ResourceTable;
+import com.example.firstapplication.SignUpInfo;
+import com.example.firstapplication.User;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.agp.components.*;
+import ohos.agp.window.dialog.ToastDialog;
+import ohos.data.DatabaseHelper;
+import ohos.data.orm.OrmContext;
+import ohos.data.orm.OrmPredicates;
+import ohos.hiviewdfx.HiLog;
+
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class SignupAbilitySlice extends AbilitySlice {
+ TextField firstName;
+
+ TextField lastName;
+ Text errorLastName;
+ Boolean validLastName;
+
+ TextField email;
+ Text errorEmail;
+ Boolean validEmail;
+
+ TextField password;
+ Text errorPassword;
+ Boolean validPassword;
+
+ TextField mobile;
+ Text errorMobile;
+ Boolean validMobile;
+
+ RadioButton radioButtonMale;
+ RadioButton radioButtonFemale;
+ Text errorGender;
+ Boolean validGender;
+
+ Button buttonSignUp;
+
+ OrmContext context;
+ DatabaseHelper helper;
+
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_signup);
+
+ helper = new DatabaseHelper(SignupAbilitySlice.this);
+ context = helper.getOrmContext("SignUpInfo", "SignUpInfo.db", SignUpInfo.class);
+
+ firstName = (TextField)findComponentById(ResourceTable.Id_text_first_name);
+
+ lastName = (TextField)findComponentById(ResourceTable.Id_text_last_name);
+ errorLastName = (Text)findComponentById(ResourceTable.Id_text_error_last_name);
+ lastName.addTextObserver(new Text.TextObserver() {
+ @Override
+ public void onTextUpdated(String s, int i, int i1, int i2) {
+ validLastName = s.chars().allMatch(Character::isLetter);
+ if (!validLastName) {
+ errorLastName.setVisibility(0);
+ } else {
+ errorLastName.setVisibility(1);
+ }
+ }
+ });
+
+ Pattern pattern = Pattern.compile("^.+@.+\\..+$");
+ email = (TextField)findComponentById(ResourceTable.Id_text_email);
+ errorEmail = (Text)findComponentById(ResourceTable.Id_text_error_email);
+ email.addTextObserver(new Text.TextObserver() {
+ @Override
+ public void onTextUpdated(String s, int i, int i1, int i2) {
+ OrmPredicates queryEmail = context.where(User.class).equalTo("email", s);
+ List usersEmail = context.query(queryEmail);
+
+ Matcher matcher = pattern.matcher(s);
+ validEmail = matcher.matches() && (usersEmail.size() == 0);
+ if (!validEmail) {
+ errorEmail.setVisibility(0);
+ } else {
+ errorEmail.setVisibility(1);
+ }
+ }
+ });
+
+ password = (TextField)findComponentById(ResourceTable.Id_text_password);
+ errorPassword = (Text)findComponentById(ResourceTable.Id_text_error_password);
+ password.addTextObserver(new Text.TextObserver() {
+ @Override
+ public void onTextUpdated(String s, int i, int i1, int i2) {
+ validPassword = (Boolean) (s.length() >= 5);
+ if (!validPassword) {
+ errorPassword.setVisibility(0);
+ } else {
+ errorPassword.setVisibility(1);
+ }
+ }
+ });
+
+ mobile = (TextField)findComponentById(ResourceTable.Id_text_mobile);
+ errorMobile = (Text)findComponentById(ResourceTable.Id_text_error_mobile);
+ mobile.addTextObserver(new Text.TextObserver() {
+ @Override
+ public void onTextUpdated(String s, int i, int i1, int i2) {
+ validMobile = s.chars().allMatch(Character::isDigit);
+ if (!validMobile) {
+ errorMobile.setVisibility(0);
+ } else {
+ errorMobile.setVisibility(1);
+ }
+ }
+ });
+
+ radioButtonMale = (RadioButton)findComponentById(ResourceTable.Id_radio_button_male);
+ radioButtonFemale = (RadioButton)findComponentById(ResourceTable.Id_radio_button_female);
+ errorGender = (Text)findComponentById(ResourceTable.Id_text_error_gender);
+
+ buttonSignUp = (Button)findComponentById(ResourceTable.Id_button_signup);
+ buttonSignUp.setClickedListener(new Component.ClickedListener() {
+ @Override
+ public void onClick(Component component) {
+ String fName = firstName.getText().toString();
+
+ validGender = radioButtonMale.isChecked() ^ radioButtonFemale.isChecked();
+ if (!validGender) {
+ errorGender.setVisibility(0);
+ } else {
+ errorGender.setVisibility(1);
+ }
+
+ ToastDialog toastDialog = new ToastDialog(getContext());
+
+ if (validLastName && validEmail && validPassword && validMobile && validGender) {
+ OrmPredicates predicates= context.where(User.class).equalTo("email", email.getText());
+ List users= context.query(predicates);
+ if(users.size()==0) {
+ User user = new User();
+ user.setFirstName(fName);
+ user.setLastName(lastName.getText().toString());
+ user.setEmail(email.getText().toString());
+ user.setMobile(mobile.getText().toString());
+ user.setGender(radioButtonMale.isChecked());
+ boolean isSuccessed = context.insert(user);
+ isSuccessed = context.flush();
+
+ if (isSuccessed) {
+ toastDialog.setText("Thank you, sign up completed.");
+ } else {
+ toastDialog.setText("Error occured.");
+ }
+ } else {
+ toastDialog.setText("Email Id already present.");
+ }
+ } else {
+ toastDialog.setText("Please enter valid information.");
+ }
+ toastDialog.setDuration(10000);
+ toastDialog.show();
+ }
+ });
+
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/element/string.json b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/element/string.json
new file mode 100644
index 00000000..0c6a1ac3
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/element/string.json
@@ -0,0 +1,44 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "FirstApplication"
+ },
+ {
+ "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": "dataability_description",
+ "value": "hap sample empty provider"
+ },
+ {
+ "name": "loginsuccessfulability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "loginsuccessfulability_HelloWorld",
+ "value": "Hello World"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_login.xml b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_login.xml
new file mode 100644
index 00000000..a9771000
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_login_successful.xml b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_login_successful.xml
new file mode 100644
index 00000000..a002c235
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_login_successful.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_main.xml b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_main.xml
new file mode 100644
index 00000000..c0c0a3df
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_signup.xml b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_signup.xml
new file mode 100644
index 00000000..a9771000
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_login.xml b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_login.xml
new file mode 100644
index 00000000..1357bc90
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_login.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_login_successful.xml b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_login_successful.xml
new file mode 100644
index 00000000..ee82f616
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_login_successful.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_main.xml b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_main.xml
new file mode 100644
index 00000000..cd931b2d
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_main.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_signup.xml b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_signup.xml
new file mode 100644
index 00000000..a6447cf8
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_signup.xml
@@ -0,0 +1,196 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/cat.jpg b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/cat.jpg
new file mode 100644
index 00000000..8d0cd03e
Binary files /dev/null and b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/cat.jpg differ
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/icon.png b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/icon.png
new file mode 100644
index 00000000..ce307a88
Binary files /dev/null and b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/icon.png differ
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/ohosTest/config.json b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/ohosTest/config.json
new file mode 100644
index 00000000..42787e4d
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/ohosTest/config.json
@@ -0,0 +1,41 @@
+{
+ "app": {
+ "bundleName": "com.example.firstapplication",
+ "vendor": "example",
+ "version": {
+ "code": 1000000,
+ "name": "1.0.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Release"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.example.firstapplication",
+ "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/shreyshrivastava/FirstApplication/entry/src/ohosTest/java/com/example/firstapplication/ExampleOhosTest.java b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/ohosTest/java/com/example/firstapplication/ExampleOhosTest.java
new file mode 100644
index 00000000..aec63c56
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/ohosTest/java/com/example/firstapplication/ExampleOhosTest.java
@@ -0,0 +1,14 @@
+package com.example.firstapplication;
+
+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.firstapplication", actualBundleName);
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/test/java/com/example/firstapplication/ExampleTest.java b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/test/java/com/example/firstapplication/ExampleTest.java
new file mode 100644
index 00000000..52e4058f
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/entry/src/test/java/com/example/firstapplication/ExampleTest.java
@@ -0,0 +1,9 @@
+package com.example.firstapplication;
+
+import org.junit.Test;
+
+public class ExampleTest {
+ @Test
+ public void onStart() {
+ }
+}
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/gradle.properties b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/gradle.properties
new file mode 100644
index 00000000..0daf1830
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/gradle/wrapper/gradle-wrapper.jar b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..490fda85
Binary files /dev/null and b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/gradle/wrapper/gradle-wrapper.properties b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..f59159e8
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/gradlew b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/gradlew
new file mode 100644
index 00000000..2fe81a7d
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/gradlew.bat b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/gradlew.bat
new file mode 100644
index 00000000..62bd9b9c
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/settings.gradle b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/settings.gradle
new file mode 100644
index 00000000..4773db73
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/shreyshrivastava/FirstApplication/settings.gradle
@@ -0,0 +1 @@
+include ':entry'
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/.gitignore b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/.gitignore
new file mode 100644
index 00000000..37a4eb8b
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/.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/shreyshrivastava/FirstApplication/.idea/.gitignore b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/.idea/compiler.xml b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/.idea/compiler.xml
new file mode 100644
index 00000000..61a9130c
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/.idea/gradle.xml b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/.idea/gradle.xml
new file mode 100644
index 00000000..8e0f0cba
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/.idea/gradle.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/.idea/jarRepositories.xml b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/.idea/jarRepositories.xml
new file mode 100644
index 00000000..1dfcd020
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/.idea/misc.xml b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/.idea/misc.xml
new file mode 100644
index 00000000..58918f50
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/.idea/previewer/phone/phoneSettingConfig_-1918644437.json b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/.idea/previewer/phone/phoneSettingConfig_-1918644437.json
new file mode 100644
index 00000000..f505e6b9
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/.idea/previewer/phone/phoneSettingConfig_-1918644437.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/shreyshrivastava/FirstApplication/.idea/previewer/previewConfig.json b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/.idea/previewer/previewConfig.json
new file mode 100644
index 00000000..5f87258c
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/.idea/previewer/previewConfig.json
@@ -0,0 +1,9 @@
+{
+ "1.0.0": {
+ "LastPreviewDevice": {
+ "C:\\Users\\HP\\DevEcoStudioProjects\\FirstApplication\\entry": [
+ "phone"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/build.gradle b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/build.gradle
new file mode 100644
index 00000000..9ec29b00
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/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/Day4 Assingment/shreyshrivastava/FirstApplication/entry/.gitignore b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/.gitignore
new file mode 100644
index 00000000..796b96d1
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/build.gradle b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/build.gradle
new file mode 100644
index 00000000..3dcd9158
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/build.gradle
@@ -0,0 +1,30 @@
+apply plugin: 'com.huawei.ohos.hap'
+apply plugin: 'com.huawei.ohos.decctest'
+ohos {
+ compileSdkVersion 5
+ defaultConfig {
+ compatibleSdkVersion 4
+ }
+ buildTypes {
+ release {
+ proguardOpt {
+ proguardEnabled false
+ rulesFiles 'proguard-rules.pro'
+ }
+ }
+ }
+ compileOptions{
+ annotationEnabled true
+ }
+
+}
+
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
+ testImplementation 'junit:junit:4.13'
+ ohosTestImplementation 'com.huawei.ohos.testkit:runner:1.0.0.100'
+}
+decc {
+ supportType = ['html','xml']
+}
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/proguard-rules.pro b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/proguard-rules.pro
new file mode 100644
index 00000000..f7666e47
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/entry/src/main/config.json b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/config.json
new file mode 100644
index 00000000..c21afa19
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/config.json
@@ -0,0 +1,51 @@
+{
+ "app": {
+ "bundleName": "com.example.firstapplication",
+ "vendor": "example",
+ "version": {
+ "code": 1000000,
+ "name": "1.0.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Release"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.example.firstapplication",
+ "name": ".MyApplication",
+ "deviceType": [
+ "phone"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "entry",
+ "moduleType": "entry"
+ },
+ "abilities": [
+ {
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home",
+ "signup.pay",
+ "login.pay"
+ ]
+ }
+ ],
+ "orientation": "unspecified",
+ "name": "com.example.firstapplication.MainAbility",
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MainAbility.java b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MainAbility.java
new file mode 100644
index 00000000..8aa74702
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MainAbility.java
@@ -0,0 +1,19 @@
+package com.example.firstapplication;
+
+import com.example.firstapplication.slice.MainAbilitySlice;
+
+import ohos.aafwk.ability.Ability;
+import ohos.aafwk.content.Intent;
+
+
+
+public class MainAbility extends Ability {
+
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setMainRoute(MainAbilitySlice.class.getName());
+ }
+}
+
+
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MyApplication.java b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MyApplication.java
new file mode 100644
index 00000000..d8378471
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MyApplication.java
@@ -0,0 +1,10 @@
+package com.example.firstapplication;
+
+import ohos.aafwk.ability.AbilityPackage;
+
+public class MyApplication extends AbilityPackage {
+ @Override
+ public void onInitialize() {
+ super.onInitialize();
+ }
+}
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/SignUpInfo.java b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/SignUpInfo.java
new file mode 100644
index 00000000..fa87c68b
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/SignUpInfo.java
@@ -0,0 +1,9 @@
+package com.example.firstapplication;
+
+import com.example.firstapplication.User;
+import ohos.data.orm.OrmDatabase;
+import ohos.data.orm.annotation.Database;
+
+@Database(entities = {User.class}, version = 1)
+public abstract class SignUpInfo extends OrmDatabase {
+}
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/User.java b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/User.java
new file mode 100644
index 00000000..39483fdf
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/User.java
@@ -0,0 +1,79 @@
+package com.example.firstapplication;
+
+import ohos.data.orm.OrmObject;
+import ohos.data.orm.annotation.Entity;
+import ohos.data.orm.annotation.Index;
+import ohos.data.orm.annotation.PrimaryKey;
+
+@Entity(tableName = "user", indices = {@Index(value = {"email"}, name = "email_index", unique = true)})
+public class User extends OrmObject {
+
+ // Set the userId to the auto-generated primary key.
+ // Note that the auto-generated primary key takes effect only when the data type is a wrapper class.
+ @PrimaryKey(autoGenerate = true)
+ private Integer userId;
+ private String firstName;
+ private String lastName;
+ private String password;
+ private String email;
+ private String mobile;
+
+ // true - male, false - female
+ private Boolean gender;
+
+ // Add the getter and setter methods.
+ public Integer getUserId() {
+ return userId;
+ }
+
+ public void setUserId(Integer userId) {
+ this.userId = userId;
+ }
+
+ public String getFirstName() {
+ return firstName;
+ }
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getMobile() {
+ return mobile;
+ }
+
+ public void setMobile(String mobile) {
+ this.mobile = mobile;
+ }
+
+ public Boolean getGender() {
+ return gender;
+ }
+
+ public void setGender(Boolean gender) {
+ this.gender = gender;
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/LoginAbilitySlice.java b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/LoginAbilitySlice.java
new file mode 100644
index 00000000..b6871a0a
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/LoginAbilitySlice.java
@@ -0,0 +1,74 @@
+package com.example.firstapplication.slice;
+
+import com.example.firstapplication.ResourceTable;
+import com.example.firstapplication.SignUpInfo;
+import com.example.firstapplication.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.TextField;
+import ohos.agp.window.dialog.ToastDialog;
+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 {
+
+ TextField email;
+ TextField password;
+ Button buttonLogin;
+
+ OrmContext context;
+ DatabaseHelper helper;
+
+ static final HiLogLabel label = new HiLogLabel(HiLog.LOG_APP, 0x00201, "MY_TAG"); //MY_MODULE=
+
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_login);
+
+ helper = new DatabaseHelper(LoginAbilitySlice.this);
+ context = helper.getOrmContext("SignUpInfo", "SignUpInfo.db", SignUpInfo.class);
+
+ email = (TextField)findComponentById(ResourceTable.Id_text_login_email);
+ password = (TextField)findComponentById(ResourceTable.Id_text_login_password);
+
+ buttonLogin = (Button)findComponentById(ResourceTable.Id_button_login);
+ buttonLogin.setClickedListener(new Component.ClickedListener() {
+ @Override
+ public void onClick(Component component) {
+ OrmPredicates queryEmail = context.where(User.class).equalTo("email", email.getText().toString());
+ List usersEmail = context.query(queryEmail);
+ if (usersEmail.size() > 0) {
+ User user = usersEmail.get(0);
+ String userPassword = user.getPassword();
+ if (userPassword.compareTo(password.getText()) == 0) {
+ present(new LoginSuccessfulAbilitySlice(), new Intent());
+ }
+ } else {
+ ToastDialog toastDialog = new ToastDialog(getContext());
+ toastDialog.setText("Incorrect user information.");
+ toastDialog.setDuration(10000);
+ toastDialog.show();
+ }
+ }
+ });
+
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/LoginSuccessfulAbilitySlice.java b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/LoginSuccessfulAbilitySlice.java
new file mode 100644
index 00000000..dbbccdf1
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/LoginSuccessfulAbilitySlice.java
@@ -0,0 +1,23 @@
+package com.example.firstapplication.slice;
+
+import com.example.firstapplication.ResourceTable;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+
+public class LoginSuccessfulAbilitySlice extends AbilitySlice {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_login_successful);
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/MainAbilitySlice.java b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/MainAbilitySlice.java
new file mode 100644
index 00000000..d0fcbfd2
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/MainAbilitySlice.java
@@ -0,0 +1,61 @@
+package com.example.firstapplication.slice;
+
+
+import com.example.firstapplication.ResourceTable;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+
+import ohos.agp.animation.Animator;
+import ohos.agp.animation.AnimatorProperty;
+import ohos.agp.components.Button;
+import ohos.agp.components.Component;
+import ohos.agp.components.Image;
+import ohos.hiviewdfx.HiLog;
+import ohos.hiviewdfx.HiLogLabel;
+
+public class MainAbilitySlice extends AbilitySlice {
+ Image image;
+
+ Button button_signup;
+ Button button_login;
+
+ AnimatorProperty animatorProperty;
+
+ static final HiLogLabel label = new HiLogLabel(HiLog.LOG_APP, 0x00201, "MY_TAG");
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_main);
+
+ image = (Image) findComponentById(ResourceTable.Id_image_main);
+ animatorProperty = image.createAnimatorProperty();
+ animatorProperty.setDuration(5000).alpha(0).rotate(360).setLoopedCount(-1).setCurveType(Animator.CurveType.ACCELERATE);
+
+ image.setBindStateChangedListener(new Component.BindStateChangedListener() {
+ @Override
+ public void onComponentBoundToWindow(Component component) {
+ animatorProperty.start();
+ }
+
+ @Override
+ public void onComponentUnboundFromWindow(Component component) {
+ animatorProperty.stop();
+ }});
+
+ button_signup = (Button)findComponentById(ResourceTable.Id_button_main_signup);
+ button_signup.setClickedListener(component -> present(new SignupAbilitySlice(), new Intent()));
+
+ button_login = (Button)findComponentById(ResourceTable.Id_button_main_login);
+ button_login.setClickedListener(component -> present(new LoginAbilitySlice(), new Intent()));
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/SignupAbilitySlice.java b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/SignupAbilitySlice.java
new file mode 100644
index 00000000..0b43c22a
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/SignupAbilitySlice.java
@@ -0,0 +1,178 @@
+package com.example.firstapplication.slice;
+
+import com.example.firstapplication.ResourceTable;
+import com.example.firstapplication.SignUpInfo;
+import com.example.firstapplication.User;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.agp.components.*;
+import ohos.agp.window.dialog.ToastDialog;
+import ohos.data.DatabaseHelper;
+import ohos.data.orm.OrmContext;
+import ohos.data.orm.OrmPredicates;
+import ohos.hiviewdfx.HiLog;
+
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class SignupAbilitySlice extends AbilitySlice {
+ TextField firstName;
+
+ TextField lastName;
+ Text errorLastName;
+ Boolean validLastName;
+
+ TextField email;
+ Text errorEmail;
+ Boolean validEmail;
+
+ TextField password;
+ Text errorPassword;
+ Boolean validPassword;
+
+ TextField mobile;
+ Text errorMobile;
+ Boolean validMobile;
+
+ RadioButton radioButtonMale;
+ RadioButton radioButtonFemale;
+ Text errorGender;
+ Boolean validGender;
+
+ Button buttonSignUp;
+
+ OrmContext context;
+ DatabaseHelper helper;
+
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_signup);
+
+ helper = new DatabaseHelper(SignupAbilitySlice.this);
+ context = helper.getOrmContext("SignUpInfo", "SignUpInfo.db", SignUpInfo.class);
+
+ firstName = (TextField)findComponentById(ResourceTable.Id_text_first_name);
+
+ lastName = (TextField)findComponentById(ResourceTable.Id_text_last_name);
+ errorLastName = (Text)findComponentById(ResourceTable.Id_text_error_last_name);
+ lastName.addTextObserver(new Text.TextObserver() {
+ @Override
+ public void onTextUpdated(String s, int i, int i1, int i2) {
+ validLastName = s.chars().allMatch(Character::isLetter);
+ if (!validLastName) {
+ errorLastName.setVisibility(0);
+ } else {
+ errorLastName.setVisibility(1);
+ }
+ }
+ });
+
+ Pattern pattern = Pattern.compile("^.+@.+\\..+$");
+ email = (TextField)findComponentById(ResourceTable.Id_text_email);
+ errorEmail = (Text)findComponentById(ResourceTable.Id_text_error_email);
+ email.addTextObserver(new Text.TextObserver() {
+ @Override
+ public void onTextUpdated(String s, int i, int i1, int i2) {
+ OrmPredicates queryEmail = context.where(User.class).equalTo("email", s);
+ List usersEmail = context.query(queryEmail);
+
+ Matcher matcher = pattern.matcher(s);
+ validEmail = matcher.matches() && (usersEmail.size() == 0);
+ if (!validEmail) {
+ errorEmail.setVisibility(0);
+ } else {
+ errorEmail.setVisibility(1);
+ }
+ }
+ });
+
+ password = (TextField)findComponentById(ResourceTable.Id_text_password);
+ errorPassword = (Text)findComponentById(ResourceTable.Id_text_error_password);
+ password.addTextObserver(new Text.TextObserver() {
+ @Override
+ public void onTextUpdated(String s, int i, int i1, int i2) {
+ validPassword = (Boolean) (s.length() >= 5);
+ if (!validPassword) {
+ errorPassword.setVisibility(0);
+ } else {
+ errorPassword.setVisibility(1);
+ }
+ }
+ });
+
+ mobile = (TextField)findComponentById(ResourceTable.Id_text_mobile);
+ errorMobile = (Text)findComponentById(ResourceTable.Id_text_error_mobile);
+ mobile.addTextObserver(new Text.TextObserver() {
+ @Override
+ public void onTextUpdated(String s, int i, int i1, int i2) {
+ validMobile = s.chars().allMatch(Character::isDigit);
+ if (!validMobile) {
+ errorMobile.setVisibility(0);
+ } else {
+ errorMobile.setVisibility(1);
+ }
+ }
+ });
+
+ radioButtonMale = (RadioButton)findComponentById(ResourceTable.Id_radio_button_male);
+ radioButtonFemale = (RadioButton)findComponentById(ResourceTable.Id_radio_button_female);
+ errorGender = (Text)findComponentById(ResourceTable.Id_text_error_gender);
+
+ buttonSignUp = (Button)findComponentById(ResourceTable.Id_button_signup);
+ buttonSignUp.setClickedListener(new Component.ClickedListener() {
+ @Override
+ public void onClick(Component component) {
+ String fName = firstName.getText().toString();
+
+ validGender = radioButtonMale.isChecked() ^ radioButtonFemale.isChecked();
+ if (!validGender) {
+ errorGender.setVisibility(0);
+ } else {
+ errorGender.setVisibility(1);
+ }
+
+ ToastDialog toastDialog = new ToastDialog(getContext());
+
+ if (validLastName && validEmail && validPassword && validMobile && validGender) {
+ OrmPredicates predicates= context.where(User.class).equalTo("email", email.getText());
+ List users= context.query(predicates);
+ if(users.size()==0) {
+ User user = new User();
+ user.setFirstName(fName);
+ user.setLastName(lastName.getText().toString());
+ user.setEmail(email.getText().toString());
+ user.setMobile(mobile.getText().toString());
+ user.setGender(radioButtonMale.isChecked());
+ boolean isSuccessed = context.insert(user);
+ isSuccessed = context.flush();
+
+ if (isSuccessed) {
+ toastDialog.setText("Thank you, sign up completed.");
+ } else {
+ toastDialog.setText("Error occured.");
+ }
+ } else {
+ toastDialog.setText("Email Id already present.");
+ }
+ } else {
+ toastDialog.setText("Please enter valid information.");
+ }
+ toastDialog.setDuration(10000);
+ toastDialog.show();
+ }
+ });
+
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/element/string.json b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/element/string.json
new file mode 100644
index 00000000..0c6a1ac3
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/element/string.json
@@ -0,0 +1,44 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "FirstApplication"
+ },
+ {
+ "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": "dataability_description",
+ "value": "hap sample empty provider"
+ },
+ {
+ "name": "loginsuccessfulability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "loginsuccessfulability_HelloWorld",
+ "value": "Hello World"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_login.xml b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_login.xml
new file mode 100644
index 00000000..a9771000
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_login_successful.xml b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_login_successful.xml
new file mode 100644
index 00000000..a002c235
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_login_successful.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_main.xml b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_main.xml
new file mode 100644
index 00000000..c0c0a3df
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_signup.xml b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_signup.xml
new file mode 100644
index 00000000..a9771000
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_login.xml b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_login.xml
new file mode 100644
index 00000000..1357bc90
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_login.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_login_successful.xml b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_login_successful.xml
new file mode 100644
index 00000000..ee82f616
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_login_successful.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_main.xml b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_main.xml
new file mode 100644
index 00000000..cd931b2d
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_main.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_signup.xml b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_signup.xml
new file mode 100644
index 00000000..a6447cf8
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_signup.xml
@@ -0,0 +1,196 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/cat.jpg b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/cat.jpg
new file mode 100644
index 00000000..8d0cd03e
Binary files /dev/null and b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/cat.jpg differ
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/icon.png b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/icon.png
new file mode 100644
index 00000000..ce307a88
Binary files /dev/null and b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/icon.png differ
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/ohosTest/config.json b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/ohosTest/config.json
new file mode 100644
index 00000000..42787e4d
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/ohosTest/config.json
@@ -0,0 +1,41 @@
+{
+ "app": {
+ "bundleName": "com.example.firstapplication",
+ "vendor": "example",
+ "version": {
+ "code": 1000000,
+ "name": "1.0.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Release"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.example.firstapplication",
+ "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/shreyshrivastava/FirstApplication/entry/src/ohosTest/java/com/example/firstapplication/ExampleOhosTest.java b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/ohosTest/java/com/example/firstapplication/ExampleOhosTest.java
new file mode 100644
index 00000000..aec63c56
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/ohosTest/java/com/example/firstapplication/ExampleOhosTest.java
@@ -0,0 +1,14 @@
+package com.example.firstapplication;
+
+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.firstapplication", actualBundleName);
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/test/java/com/example/firstapplication/ExampleTest.java b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/test/java/com/example/firstapplication/ExampleTest.java
new file mode 100644
index 00000000..52e4058f
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/entry/src/test/java/com/example/firstapplication/ExampleTest.java
@@ -0,0 +1,9 @@
+package com.example.firstapplication;
+
+import org.junit.Test;
+
+public class ExampleTest {
+ @Test
+ public void onStart() {
+ }
+}
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/gradle.properties b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/gradle.properties
new file mode 100644
index 00000000..0daf1830
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/gradle/wrapper/gradle-wrapper.jar b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..490fda85
Binary files /dev/null and b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/gradle/wrapper/gradle-wrapper.properties b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..f59159e8
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/gradlew b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/gradlew
new file mode 100644
index 00000000..2fe81a7d
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/gradlew.bat b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/gradlew.bat
new file mode 100644
index 00000000..62bd9b9c
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/settings.gradle b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/settings.gradle
new file mode 100644
index 00000000..4773db73
--- /dev/null
+++ b/HarmonyOS/Day4 Assingment/shreyshrivastava/FirstApplication/settings.gradle
@@ -0,0 +1 @@
+include ':entry'
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/.gitignore b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/.gitignore
new file mode 100644
index 00000000..37a4eb8b
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/.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/shreyshrivastava/FirstApplication/.idea/.gitignore b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/.idea/compiler.xml b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/.idea/compiler.xml
new file mode 100644
index 00000000..61a9130c
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/.idea/gradle.xml b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/.idea/gradle.xml
new file mode 100644
index 00000000..8e0f0cba
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/.idea/gradle.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/.idea/jarRepositories.xml b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/.idea/jarRepositories.xml
new file mode 100644
index 00000000..1dfcd020
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/.idea/misc.xml b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/.idea/misc.xml
new file mode 100644
index 00000000..58918f50
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/.idea/previewer/phone/phoneSettingConfig_-1918644437.json b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/.idea/previewer/phone/phoneSettingConfig_-1918644437.json
new file mode 100644
index 00000000..f505e6b9
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/.idea/previewer/phone/phoneSettingConfig_-1918644437.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/shreyshrivastava/FirstApplication/.idea/previewer/previewConfig.json b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/.idea/previewer/previewConfig.json
new file mode 100644
index 00000000..5f87258c
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/.idea/previewer/previewConfig.json
@@ -0,0 +1,9 @@
+{
+ "1.0.0": {
+ "LastPreviewDevice": {
+ "C:\\Users\\HP\\DevEcoStudioProjects\\FirstApplication\\entry": [
+ "phone"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/build.gradle b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/build.gradle
new file mode 100644
index 00000000..9ec29b00
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/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/Day5 Assingment/shreyshrivastava/FirstApplication/entry/.gitignore b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/.gitignore
new file mode 100644
index 00000000..796b96d1
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/build.gradle b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/build.gradle
new file mode 100644
index 00000000..3dcd9158
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/build.gradle
@@ -0,0 +1,30 @@
+apply plugin: 'com.huawei.ohos.hap'
+apply plugin: 'com.huawei.ohos.decctest'
+ohos {
+ compileSdkVersion 5
+ defaultConfig {
+ compatibleSdkVersion 4
+ }
+ buildTypes {
+ release {
+ proguardOpt {
+ proguardEnabled false
+ rulesFiles 'proguard-rules.pro'
+ }
+ }
+ }
+ compileOptions{
+ annotationEnabled true
+ }
+
+}
+
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
+ testImplementation 'junit:junit:4.13'
+ ohosTestImplementation 'com.huawei.ohos.testkit:runner:1.0.0.100'
+}
+decc {
+ supportType = ['html','xml']
+}
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/proguard-rules.pro b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/proguard-rules.pro
new file mode 100644
index 00000000..f7666e47
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/entry/src/main/config.json b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/config.json
new file mode 100644
index 00000000..c21afa19
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/config.json
@@ -0,0 +1,51 @@
+{
+ "app": {
+ "bundleName": "com.example.firstapplication",
+ "vendor": "example",
+ "version": {
+ "code": 1000000,
+ "name": "1.0.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Release"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.example.firstapplication",
+ "name": ".MyApplication",
+ "deviceType": [
+ "phone"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "entry",
+ "moduleType": "entry"
+ },
+ "abilities": [
+ {
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home",
+ "signup.pay",
+ "login.pay"
+ ]
+ }
+ ],
+ "orientation": "unspecified",
+ "name": "com.example.firstapplication.MainAbility",
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MainAbility.java b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MainAbility.java
new file mode 100644
index 00000000..8aa74702
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MainAbility.java
@@ -0,0 +1,19 @@
+package com.example.firstapplication;
+
+import com.example.firstapplication.slice.MainAbilitySlice;
+
+import ohos.aafwk.ability.Ability;
+import ohos.aafwk.content.Intent;
+
+
+
+public class MainAbility extends Ability {
+
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setMainRoute(MainAbilitySlice.class.getName());
+ }
+}
+
+
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MyApplication.java b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MyApplication.java
new file mode 100644
index 00000000..d8378471
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/MyApplication.java
@@ -0,0 +1,10 @@
+package com.example.firstapplication;
+
+import ohos.aafwk.ability.AbilityPackage;
+
+public class MyApplication extends AbilityPackage {
+ @Override
+ public void onInitialize() {
+ super.onInitialize();
+ }
+}
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/SignUpInfo.java b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/SignUpInfo.java
new file mode 100644
index 00000000..fa87c68b
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/SignUpInfo.java
@@ -0,0 +1,9 @@
+package com.example.firstapplication;
+
+import com.example.firstapplication.User;
+import ohos.data.orm.OrmDatabase;
+import ohos.data.orm.annotation.Database;
+
+@Database(entities = {User.class}, version = 1)
+public abstract class SignUpInfo extends OrmDatabase {
+}
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/User.java b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/User.java
new file mode 100644
index 00000000..39483fdf
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/User.java
@@ -0,0 +1,79 @@
+package com.example.firstapplication;
+
+import ohos.data.orm.OrmObject;
+import ohos.data.orm.annotation.Entity;
+import ohos.data.orm.annotation.Index;
+import ohos.data.orm.annotation.PrimaryKey;
+
+@Entity(tableName = "user", indices = {@Index(value = {"email"}, name = "email_index", unique = true)})
+public class User extends OrmObject {
+
+ // Set the userId to the auto-generated primary key.
+ // Note that the auto-generated primary key takes effect only when the data type is a wrapper class.
+ @PrimaryKey(autoGenerate = true)
+ private Integer userId;
+ private String firstName;
+ private String lastName;
+ private String password;
+ private String email;
+ private String mobile;
+
+ // true - male, false - female
+ private Boolean gender;
+
+ // Add the getter and setter methods.
+ public Integer getUserId() {
+ return userId;
+ }
+
+ public void setUserId(Integer userId) {
+ this.userId = userId;
+ }
+
+ public String getFirstName() {
+ return firstName;
+ }
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getMobile() {
+ return mobile;
+ }
+
+ public void setMobile(String mobile) {
+ this.mobile = mobile;
+ }
+
+ public Boolean getGender() {
+ return gender;
+ }
+
+ public void setGender(Boolean gender) {
+ this.gender = gender;
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/LoginAbilitySlice.java b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/LoginAbilitySlice.java
new file mode 100644
index 00000000..1293fee1
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/LoginAbilitySlice.java
@@ -0,0 +1,79 @@
+package com.example.firstapplication.slice;
+
+import com.example.firstapplication.ResourceTable;
+import com.example.firstapplication.SignUpInfo;
+import com.example.firstapplication.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.TextField;
+import ohos.agp.window.dialog.ToastDialog;
+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 {
+
+ TextField email;
+ TextField password;
+ Button buttonLogin;
+
+ OrmContext context;
+ DatabaseHelper helper;
+
+ static final HiLogLabel label = new HiLogLabel(HiLog.LOG_APP, 0x00201, "MY_TAG"); //MY_MODULE=
+
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_login);
+
+ helper = new DatabaseHelper(LoginAbilitySlice.this);
+ context = helper.getOrmContext("SignUpInfo", "SignUpInfo.db", SignUpInfo.class);
+
+ email = (TextField)findComponentById(ResourceTable.Id_text_login_email);
+ password = (TextField)findComponentById(ResourceTable.Id_text_login_password);
+
+ if (intent.hasParameter("email")) {
+ email.setText(intent.getStringParam("email"));
+ password.setText(intent.getStringParam("password"));
+ }
+
+ buttonLogin = (Button)findComponentById(ResourceTable.Id_button_login);
+ buttonLogin.setClickedListener(new Component.ClickedListener() {
+ @Override
+ public void onClick(Component component) {
+ OrmPredicates queryEmail = context.where(User.class).equalTo("email", email.getText().toString());
+ List usersEmail = context.query(queryEmail);
+ if (usersEmail.size() > 0) {
+ User user = usersEmail.get(0);
+ String userPassword = user.getPassword();
+ // if (userPassword.compareTo(password.getText()) == 0) {
+ present(new LoginSuccessfulAbilitySlice(), new Intent());
+ //}
+ } else {
+ ToastDialog toastDialog = new ToastDialog(getContext());
+ toastDialog.setText("Incorrect user information.");
+ toastDialog.setDuration(10000);
+ toastDialog.show();
+ }
+ }
+ });
+
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/LoginSuccessfulAbilitySlice.java b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/LoginSuccessfulAbilitySlice.java
new file mode 100644
index 00000000..dbbccdf1
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/LoginSuccessfulAbilitySlice.java
@@ -0,0 +1,23 @@
+package com.example.firstapplication.slice;
+
+import com.example.firstapplication.ResourceTable;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+
+public class LoginSuccessfulAbilitySlice extends AbilitySlice {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_login_successful);
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/MainAbilitySlice.java b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/MainAbilitySlice.java
new file mode 100644
index 00000000..d0fcbfd2
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/MainAbilitySlice.java
@@ -0,0 +1,61 @@
+package com.example.firstapplication.slice;
+
+
+import com.example.firstapplication.ResourceTable;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+
+import ohos.agp.animation.Animator;
+import ohos.agp.animation.AnimatorProperty;
+import ohos.agp.components.Button;
+import ohos.agp.components.Component;
+import ohos.agp.components.Image;
+import ohos.hiviewdfx.HiLog;
+import ohos.hiviewdfx.HiLogLabel;
+
+public class MainAbilitySlice extends AbilitySlice {
+ Image image;
+
+ Button button_signup;
+ Button button_login;
+
+ AnimatorProperty animatorProperty;
+
+ static final HiLogLabel label = new HiLogLabel(HiLog.LOG_APP, 0x00201, "MY_TAG");
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_main);
+
+ image = (Image) findComponentById(ResourceTable.Id_image_main);
+ animatorProperty = image.createAnimatorProperty();
+ animatorProperty.setDuration(5000).alpha(0).rotate(360).setLoopedCount(-1).setCurveType(Animator.CurveType.ACCELERATE);
+
+ image.setBindStateChangedListener(new Component.BindStateChangedListener() {
+ @Override
+ public void onComponentBoundToWindow(Component component) {
+ animatorProperty.start();
+ }
+
+ @Override
+ public void onComponentUnboundFromWindow(Component component) {
+ animatorProperty.stop();
+ }});
+
+ button_signup = (Button)findComponentById(ResourceTable.Id_button_main_signup);
+ button_signup.setClickedListener(component -> present(new SignupAbilitySlice(), new Intent()));
+
+ button_login = (Button)findComponentById(ResourceTable.Id_button_main_login);
+ button_login.setClickedListener(component -> present(new LoginAbilitySlice(), new Intent()));
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/SignupAbilitySlice.java b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/SignupAbilitySlice.java
new file mode 100644
index 00000000..8f5ddb73
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/java/com/example/firstapplication/slice/SignupAbilitySlice.java
@@ -0,0 +1,201 @@
+package com.example.firstapplication.slice;
+
+import com.example.firstapplication.ResourceTable;
+import com.example.firstapplication.SignUpInfo;
+import com.example.firstapplication.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 ohos.data.orm.OrmPredicates;
+import ohos.hiviewdfx.HiLog;
+
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class SignupAbilitySlice extends AbilitySlice {
+ TextField firstName;
+
+ TextField lastName;
+ Text errorLastName;
+ Boolean validLastName;
+
+ TextField email;
+ Text errorEmail;
+ Boolean validEmail;
+
+ TextField password;
+ Text errorPassword;
+ Boolean validPassword;
+
+ TextField mobile;
+ Text errorMobile;
+ Boolean validMobile;
+
+ RadioButton radioButtonMale;
+ RadioButton radioButtonFemale;
+ Text errorGender;
+ Boolean validGender;
+
+ Button buttonSignUp;
+
+ OrmContext context;
+ DatabaseHelper helper;
+
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_signup);
+
+ helper = new DatabaseHelper(SignupAbilitySlice.this);
+ context = helper.getOrmContext("SignUpInfo", "SignUpInfo.db", SignUpInfo.class);
+
+ firstName = (TextField)findComponentById(ResourceTable.Id_text_first_name);
+
+ lastName = (TextField)findComponentById(ResourceTable.Id_text_last_name);
+ errorLastName = (Text)findComponentById(ResourceTable.Id_text_error_last_name);
+ lastName.addTextObserver(new Text.TextObserver() {
+ @Override
+ public void onTextUpdated(String s, int i, int i1, int i2) {
+ validLastName = s.chars().allMatch(Character::isLetter);
+ if (!validLastName) {
+ errorLastName.setVisibility(0);
+ } else {
+ errorLastName.setVisibility(1);
+ }
+ }
+ });
+
+ Pattern pattern = Pattern.compile("^.+@.+\\..+$");
+ email = (TextField)findComponentById(ResourceTable.Id_text_email);
+ errorEmail = (Text)findComponentById(ResourceTable.Id_text_error_email);
+ email.addTextObserver(new Text.TextObserver() {
+ @Override
+ public void onTextUpdated(String s, int i, int i1, int i2) {
+ OrmPredicates queryEmail = context.where(User.class).equalTo("email", s);
+ List usersEmail = context.query(queryEmail);
+
+ Matcher matcher = pattern.matcher(s);
+ validEmail = matcher.matches() && (usersEmail.size() == 0);
+ if (!validEmail) {
+ errorEmail.setVisibility(0);
+ } else {
+ errorEmail.setVisibility(1);
+ }
+ }
+ });
+
+ password = (TextField)findComponentById(ResourceTable.Id_text_password);
+ errorPassword = (Text)findComponentById(ResourceTable.Id_text_error_password);
+ password.addTextObserver(new Text.TextObserver() {
+ @Override
+ public void onTextUpdated(String s, int i, int i1, int i2) {
+ validPassword = (Boolean) (s.length() >= 5);
+ if (!validPassword) {
+ errorPassword.setVisibility(0);
+ } else {
+ errorPassword.setVisibility(1);
+ }
+ }
+ });
+
+ mobile = (TextField)findComponentById(ResourceTable.Id_text_mobile);
+ errorMobile = (Text)findComponentById(ResourceTable.Id_text_error_mobile);
+ mobile.addTextObserver(new Text.TextObserver() {
+ @Override
+ public void onTextUpdated(String s, int i, int i1, int i2) {
+ validMobile = s.chars().allMatch(Character::isDigit);
+ if (!validMobile) {
+ errorMobile.setVisibility(0);
+ } else {
+ errorMobile.setVisibility(1);
+ }
+ }
+ });
+
+ radioButtonMale = (RadioButton)findComponentById(ResourceTable.Id_radio_button_male);
+ radioButtonFemale = (RadioButton)findComponentById(ResourceTable.Id_radio_button_female);
+ errorGender = (Text)findComponentById(ResourceTable.Id_text_error_gender);
+
+ buttonSignUp = (Button)findComponentById(ResourceTable.Id_button_signup);
+ buttonSignUp.setClickedListener(new Component.ClickedListener() {
+ @Override
+ public void onClick(Component component) {
+ String fName = firstName.getText().toString();
+
+ validGender = radioButtonMale.isChecked() ^ radioButtonFemale.isChecked();
+ if (!validGender) {
+ errorGender.setVisibility(0);
+ } else {
+ errorGender.setVisibility(1);
+ }
+
+ ToastDialog toastDialog = new ToastDialog(getContext());
+
+ if (validLastName && validEmail && validPassword && validMobile && validGender) {
+ OrmPredicates predicates= context.where(User.class).equalTo("email", email.getText());
+ List users= context.query(predicates);
+ if(users.size()==0) {
+ User user = new User();
+ user.setFirstName(fName);
+ user.setLastName(lastName.getText().toString());
+ user.setEmail(email.getText().toString());
+ user.setMobile(mobile.getText().toString());
+ user.setGender(radioButtonMale.isChecked());
+ boolean isSuccessed = context.insert(user);
+ isSuccessed = context.flush();
+
+ if (isSuccessed) {
+ toastDialog.setText("Thank you, sign up completed.");
+ showCommonDialog();
+
+ } else {
+ toastDialog.setText("Error occured.");
+ }
+ } else {
+ toastDialog.setText("Email Id already present.");
+ }
+ } else {
+ toastDialog.setText("Please enter valid information.");
+ }
+ toastDialog.setDuration(10000);
+ toastDialog.show();
+ }
+ });
+
+ }
+
+ private void showCommonDialog() {
+ CommonDialog commonDialog= new CommonDialog(this);
+ commonDialog.setTitleText("SignUp Success !!");
+ commonDialog.setContentText("Go to Login Page to enter the app. Please confirm");
+ commonDialog.setAutoClosable(true);
+ commonDialog.setSize(950,500);
+ commonDialog.setButton(IDialog.BUTTON1,"YES",(iDialog, i) -> {
+ Intent intent= new Intent();
+ intent.setParam("email", email.getText());
+ intent.setParam("password", password.getText());
+ present(new LoginAbilitySlice(), intent);
+ iDialog.destroy();
+ });
+ commonDialog.setButton(IDialog.BUTTON2,"NO",(iDialog, i) -> {
+ iDialog.destroy();
+ });
+ commonDialog.show();
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/element/string.json b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/element/string.json
new file mode 100644
index 00000000..bf9d8091
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/element/string.json
@@ -0,0 +1,52 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "FirstApplication"
+ },
+ {
+ "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": "dataability_description",
+ "value": "hap sample empty provider"
+ },
+ {
+ "name": "loginsuccessfulability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "loginsuccessfulability_HelloWorld",
+ "value": "Hello World"
+ },
+ {
+ "name": "loginsuccess_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "loginsuccess_HelloWorld",
+ "value": "Hello World"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_login.xml b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_login.xml
new file mode 100644
index 00000000..a9771000
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_login_success.xml b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_login_success.xml
new file mode 100644
index 00000000..a002c235
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_login_success.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_login_successful.xml b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_login_successful.xml
new file mode 100644
index 00000000..a002c235
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_login_successful.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_main.xml b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_main.xml
new file mode 100644
index 00000000..c0c0a3df
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_signup.xml b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/graphic/background_ability_signup.xml
new file mode 100644
index 00000000..a9771000
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_login.xml b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_login.xml
new file mode 100644
index 00000000..1357bc90
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_login.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_login_successful.xml b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_login_successful.xml
new file mode 100644
index 00000000..ee82f616
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_login_successful.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_main.xml b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_main.xml
new file mode 100644
index 00000000..cd931b2d
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_main.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_signup.xml b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_signup.xml
new file mode 100644
index 00000000..a6447cf8
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/layout/ability_signup.xml
@@ -0,0 +1,196 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/cat.jpg b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/cat.jpg
new file mode 100644
index 00000000..8d0cd03e
Binary files /dev/null and b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/cat.jpg differ
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/icon.png b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/icon.png
new file mode 100644
index 00000000..ce307a88
Binary files /dev/null and b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/main/resources/base/media/icon.png differ
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/ohosTest/config.json b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/ohosTest/config.json
new file mode 100644
index 00000000..42787e4d
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/ohosTest/config.json
@@ -0,0 +1,41 @@
+{
+ "app": {
+ "bundleName": "com.example.firstapplication",
+ "vendor": "example",
+ "version": {
+ "code": 1000000,
+ "name": "1.0.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Release"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.example.firstapplication",
+ "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/shreyshrivastava/FirstApplication/entry/src/ohosTest/java/com/example/firstapplication/ExampleOhosTest.java b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/ohosTest/java/com/example/firstapplication/ExampleOhosTest.java
new file mode 100644
index 00000000..aec63c56
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/ohosTest/java/com/example/firstapplication/ExampleOhosTest.java
@@ -0,0 +1,14 @@
+package com.example.firstapplication;
+
+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.firstapplication", actualBundleName);
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/test/java/com/example/firstapplication/ExampleTest.java b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/test/java/com/example/firstapplication/ExampleTest.java
new file mode 100644
index 00000000..52e4058f
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/entry/src/test/java/com/example/firstapplication/ExampleTest.java
@@ -0,0 +1,9 @@
+package com.example.firstapplication;
+
+import org.junit.Test;
+
+public class ExampleTest {
+ @Test
+ public void onStart() {
+ }
+}
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/gradle.properties b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/gradle.properties
new file mode 100644
index 00000000..0daf1830
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/gradle/wrapper/gradle-wrapper.jar b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..490fda85
Binary files /dev/null and b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/gradle/wrapper/gradle-wrapper.properties b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..f59159e8
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/gradlew b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/gradlew
new file mode 100644
index 00000000..2fe81a7d
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/gradlew.bat b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/gradlew.bat
new file mode 100644
index 00000000..62bd9b9c
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/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/shreyshrivastava/FirstApplication/settings.gradle b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/settings.gradle
new file mode 100644
index 00000000..4773db73
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/shreyshrivastava/FirstApplication/settings.gradle
@@ -0,0 +1 @@
+include ':entry'