diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/.gitignore b/Android/ChakradharChokkaku/Advanced/MyNewsApp/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/.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/ChakradharChokkaku/Advanced/MyNewsApp/.idea/.gitignore b/Android/ChakradharChokkaku/Advanced/MyNewsApp/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/.idea/.name b/Android/ChakradharChokkaku/Advanced/MyNewsApp/.idea/.name
new file mode 100644
index 00000000..08594f06
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/.idea/.name
@@ -0,0 +1 @@
+My News App
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/.idea/compiler.xml b/Android/ChakradharChokkaku/Advanced/MyNewsApp/.idea/compiler.xml
new file mode 100644
index 00000000..fb7f4a8a
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/.idea/gradle.xml b/Android/ChakradharChokkaku/Advanced/MyNewsApp/.idea/gradle.xml
new file mode 100644
index 00000000..5cd135a0
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/.idea/gradle.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/.idea/jarRepositories.xml b/Android/ChakradharChokkaku/Advanced/MyNewsApp/.idea/jarRepositories.xml
new file mode 100644
index 00000000..0380d8d3
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/.idea/misc.xml b/Android/ChakradharChokkaku/Advanced/MyNewsApp/.idea/misc.xml
new file mode 100644
index 00000000..6199cc2a
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/.idea/runConfigurations.xml b/Android/ChakradharChokkaku/Advanced/MyNewsApp/.idea/runConfigurations.xml
new file mode 100644
index 00000000..797acea5
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/.idea/vcs.xml b/Android/ChakradharChokkaku/Advanced/MyNewsApp/.idea/vcs.xml
new file mode 100644
index 00000000..76c51b18
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/.idea/vcs.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/.gitignore b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/build.gradle b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/build.gradle
new file mode 100644
index 00000000..d4f0f13b
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/build.gradle
@@ -0,0 +1,50 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+
+ defaultConfig {
+ applicationId "com.example.mynewsapp"
+ 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.3.0'
+ implementation 'com.google.android.material:material:1.3.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
+ testImplementation 'junit:junit:4.+'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.2'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
+
+ implementation 'com.squareup.retrofit2:retrofit:2.4.0'
+ implementation 'com.google.code.gson:gson:2.8.6'
+ implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
+ implementation 'com.android.volley:volley:1.1.0'
+
+ // for Design
+ implementation 'com.google.android.material:material:1.0.0'
+ //for Image
+ implementation 'com.squareup.picasso:picasso:2.71828'
+
+}
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/proguard-rules.pro b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/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/ChakradharChokkaku/Advanced/MyNewsApp/app/src/androidTest/java/com/example/mynewsapp/ExampleInstrumentedTest.java b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/androidTest/java/com/example/mynewsapp/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..d15be094
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/androidTest/java/com/example/mynewsapp/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.example.mynewsapp;
+
+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.mynewsapp", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/AndroidManifest.xml b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..63aef16a
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/AndroidManifest.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/java/com/example/mynewsapp/Adapter.java b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/java/com/example/mynewsapp/Adapter.java
new file mode 100644
index 00000000..12f42842
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/java/com/example/mynewsapp/Adapter.java
@@ -0,0 +1,94 @@
+//package com.example.mynewsapp;
+
+//public class Adapter {
+//}
+package com.example.mynewsapp;
+
+import android.content.Context;
+import android.content.Intent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.example.mynewsapp.parameter.Articles;
+import com.squareup.picasso.Picasso;
+
+import java.util.List;
+import java.util.Locale;
+
+import androidx.annotation.NonNull;
+import androidx.cardview.widget.CardView;
+import androidx.recyclerview.widget.RecyclerView;
+
+public class Adapter extends RecyclerView.Adapter {
+ Context context;
+ List articles;
+ public Adapter(Context context, List articles) {
+ this.context = context;
+ this.articles = articles;
+ }
+
+
+ @NonNull
+ @Override
+ public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.list_items,parent,false);
+ return new ViewHolder(view);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull Adapter.ViewHolder holder, int position) {
+ final Articles a=articles.get(position);
+ String url=a.getUrl();
+ holder.tvTitle.setText(a.getTitle());
+ //get source ke saath .getname lagana hai 32.36 part 1
+ holder.tvSource.setText(a.getSource().getName());
+ holder.tvDate.setText(a.getPublishedAt());
+
+ String imageUrl=a.getUrlToImage();
+ //picasso ka syntax new 33.07 part1
+ Picasso.get().load(imageUrl).into(holder.imageView);
+ holder.cardView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intent=new Intent(context,NewsInDetails.class);
+ intent.putExtra("title",a.getTitle());
+ intent.putExtra("source",a.getSource().getName());
+ intent.putExtra("time",a.getPublishedAt());
+ intent.putExtra("imageUrl",a.getUrlToImage());
+ intent.putExtra("url",a.getUrl());
+ intent.putExtra("decs",a.getDescription());
+ context.startActivity(intent);
+ }
+ });
+
+ }
+
+ @Override
+ public int getItemCount() {
+ return articles.size();
+ }
+
+ public class ViewHolder extends RecyclerView.ViewHolder {
+ TextView tvTitle,tvSource,tvDate;
+ ImageView imageView;
+ CardView cardView;
+ public ViewHolder(@NonNull View itemView) {
+ super(itemView);
+
+ tvTitle=itemView.findViewById(R.id.tvId);
+ tvDate=itemView.findViewById(R.id.tvDate);
+ tvSource=itemView.findViewById(R.id.tvSource);
+ imageView=itemView.findViewById(R.id.image);
+ cardView=itemView.findViewById(R.id.cardView);
+ }
+ }
+ public String getCountry()
+ {
+ Locale locale=Locale.getDefault();
+ String country=locale.getCountry();
+ return country.toLowerCase();
+ }
+}
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/java/com/example/mynewsapp/Client.java b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/java/com/example/mynewsapp/Client.java
new file mode 100644
index 00000000..f1469d07
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/java/com/example/mynewsapp/Client.java
@@ -0,0 +1,28 @@
+package com.example.mynewsapp;
+
+import retrofit2.Retrofit;
+import retrofit2.converter.gson.GsonConverterFactory;
+
+@SuppressWarnings("ALL")
+public class Client {
+ private static final String BASE_URL="https://newsapi.org/v2/";
+ private static Client client;
+ private static Retrofit retrofit;
+ private Client()
+ {
+ retrofit=new Retrofit.Builder().baseUrl(BASE_URL).addConverterFactory(GsonConverterFactory.create()).build();
+ }
+
+ public static synchronized Client getInstance()
+ {
+ if (client==null)
+ {
+ client=new Client();
+ }
+ return client;
+ }
+ public Interface getApi()
+ {
+ return retrofit.create(Interface.class);
+ }
+}
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/java/com/example/mynewsapp/Interface.java b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/java/com/example/mynewsapp/Interface.java
new file mode 100644
index 00000000..644fd1aa
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/java/com/example/mynewsapp/Interface.java
@@ -0,0 +1,16 @@
+package com.example.mynewsapp;
+
+import com.example.mynewsapp.parameter.Headlines;
+
+import retrofit2.Call;
+import retrofit2.http.GET;
+import retrofit2.http.Query;
+
+public interface Interface {
+ @GET("top-headlines")
+ Call getHeadlines(
+ @Query("country") String country,
+ @Query("apikey") String apikey
+ );
+}
+
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/java/com/example/mynewsapp/Intro.java b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/java/com/example/mynewsapp/Intro.java
new file mode 100644
index 00000000..2fe0e790
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/java/com/example/mynewsapp/Intro.java
@@ -0,0 +1,14 @@
+package com.example.mynewsapp;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.os.Bundle;
+
+public class Intro extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_intro);
+ }
+}
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/java/com/example/mynewsapp/MainActivity.java b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/java/com/example/mynewsapp/MainActivity.java
new file mode 100644
index 00000000..d1ff9973
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/java/com/example/mynewsapp/MainActivity.java
@@ -0,0 +1,90 @@
+package com.example.mynewsapp;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+//import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+import android.widget.ImageButton;
+import android.widget.Toast;
+
+
+import com.example.mynewsapp.parameter.Articles;
+import com.example.mynewsapp.parameter.Headlines;
+//import com.google.android.material.floatingactionbutton.FloatingActionButton;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
+public class MainActivity extends AppCompatActivity {
+ RecyclerView recyclerView;
+ Adapter adapter;
+ final String API_KEY="b2e7e98c9f254caf86f64f856125d66f";
+ Button button;
+ ImageButton floatingActionButton;
+ List articles=new ArrayList<>();
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ recyclerView=(RecyclerView)findViewById(R.id.recyclerView);
+ button=findViewById(R.id.refreshButton);
+ recyclerView.setLayoutManager(new LinearLayoutManager(this));
+ final String country=getCountry();
+
+ floatingActionButton=(ImageButton)findViewById(R.id.floating);
+ floatingActionButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intent=new Intent(MainActivity.this,Intro.class);
+ startActivity(intent);
+ }
+ });
+
+ retrieveJson(country,API_KEY);
+ button.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ retrieveJson(country,API_KEY);
+ }
+ });
+ }
+ public void retrieveJson(String country,String apiKey)
+ {
+ Call call=Client.getInstance().getApi().getHeadlines(country,apiKey);
+ call.enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ if (response.isSuccessful() && response.body().getArticles()!=null){
+ articles.clear();
+ articles=response.body().getArticles();
+
+ adapter = new Adapter(MainActivity.this,articles);
+ recyclerView.setAdapter(adapter);
+ }
+ }
+ @Override
+ public void onFailure(Call call, Throwable t) {
+
+ Toast.makeText(MainActivity.this,"There is An Error",Toast.LENGTH_SHORT).show();
+ }
+ });
+ }
+ public String getCountry()
+ {
+ Locale locale=Locale.getDefault();
+ String country=locale.getCountry();
+ return country.toLowerCase();
+ }
+}
+
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/java/com/example/mynewsapp/NewsInDetails.java b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/java/com/example/mynewsapp/NewsInDetails.java
new file mode 100644
index 00000000..4feb77d9
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/java/com/example/mynewsapp/NewsInDetails.java
@@ -0,0 +1,53 @@
+package com.example.mynewsapp;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.squareup.picasso.Picasso;
+
+public class NewsInDetails extends AppCompatActivity {
+ TextView tvTitle,tvSource,tvTime,tvDesc;
+ ImageView imageView;
+ WebView webView;
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_news_in_details);
+ tvTitle=findViewById(R.id.tvId);
+ tvSource=findViewById(R.id.tvSource);
+ tvTime=findViewById(R.id.tvDate);
+ tvDesc=findViewById(R.id.tvDesc);
+ webView=findViewById(R.id.webView);
+ imageView=findViewById(R.id.image);
+
+ Intent intent=getIntent();
+ String title=intent.getStringExtra("title");
+ String source=intent.getStringExtra("source");
+ String time=intent.getStringExtra("time");
+ String imageUrl=intent.getStringExtra("imageUrl");
+ String url=intent.getStringExtra("url");
+ String desc=intent.getStringExtra("desc");
+
+
+ tvTitle.setText(title);
+ tvSource.setText(source);
+ tvTime.setText(time);
+ tvDesc.setText(desc);
+
+ Picasso.get().load(imageUrl).into(imageView);
+ webView.getSettings().setDomStorageEnabled(true);
+
+ webView.getSettings().setJavaScriptEnabled(true);
+ webView.getSettings().setLoadsImagesAutomatically(true);
+ webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
+ webView.setWebViewClient(new WebViewClient());
+ webView.loadUrl(url);
+ }
+}
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/java/com/example/mynewsapp/parameter/Articles.java b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/java/com/example/mynewsapp/parameter/Articles.java
new file mode 100644
index 00000000..55a52736
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/java/com/example/mynewsapp/parameter/Articles.java
@@ -0,0 +1,93 @@
+package com.example.mynewsapp.parameter;
+
+import com.google.gson.annotations.Expose;
+import com.google.gson.annotations.SerializedName;
+
+public class Articles {
+ @SerializedName("source")
+ @Expose
+ private Source source;
+ @SerializedName("author")
+ @Expose
+ private String author;
+ @SerializedName("title")
+ @Expose
+ private String title;
+ @SerializedName("description")
+ @Expose
+ private String description;
+ @SerializedName("url")
+ @Expose
+ private String url;
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ @SerializedName("urlToImage")
+ @Expose
+ private String urlToImage;
+ @SerializedName("publishedAt")
+ @Expose
+ private String publishedAt;
+
+ public Source getSource() {
+
+ return source;
+ }
+
+ public void setSource(Source source) {
+
+ this.source = source;
+ }
+
+ public String getAuthor() {
+
+ return author;
+ }
+
+ public void setAuthor(String author) {
+
+ this.author = author;
+ }
+
+ public String getTitle() {
+
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+
+ this.description = description;
+ }
+
+ public String getUrlToImage() {
+
+ return urlToImage;
+ }
+
+ public void setUrlToImage(String urlToImage) {
+ this.urlToImage = urlToImage;
+ }
+
+ public String getPublishedAt() {
+ return publishedAt;
+ }
+
+ public void setPublishedAt(String publishedAt) {
+
+ this.publishedAt = publishedAt;
+ }
+}
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/java/com/example/mynewsapp/parameter/Headlines.java b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/java/com/example/mynewsapp/parameter/Headlines.java
new file mode 100644
index 00000000..08164af7
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/java/com/example/mynewsapp/parameter/Headlines.java
@@ -0,0 +1,42 @@
+package com.example.mynewsapp.parameter;
+
+import com.google.gson.annotations.Expose;
+import com.google.gson.annotations.SerializedName;
+
+import java.util.List;
+
+public class Headlines {
+ @SerializedName("status")
+ @Expose
+ private String status;
+ @SerializedName("totalResults")
+ @Expose
+ private String totalResults;
+ @SerializedName("articles")
+ @Expose
+ private List articles;
+
+ public String getStatus() {
+ return status;
+ }
+
+ public String getTotalResults() {
+ return totalResults;
+ }
+
+ public void setTotalResults(String totalResults) {
+ this.totalResults = totalResults;
+ }
+
+ public List getArticles() {
+ return articles;
+ }
+
+ public void setArticles(List articles) {
+ this.articles = articles;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+}
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/java/com/example/mynewsapp/parameter/Source.java b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/java/com/example/mynewsapp/parameter/Source.java
new file mode 100644
index 00000000..119f4e7f
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/java/com/example/mynewsapp/parameter/Source.java
@@ -0,0 +1,29 @@
+package com.example.mynewsapp.parameter;
+
+import com.google.gson.annotations.Expose;
+import com.google.gson.annotations.SerializedName;
+
+public class Source {
+ @SerializedName("id")
+ @Expose
+ private String id;
+ @SerializedName("name")
+ @Expose
+ private String name;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/drawable-v24/back_ground_1.xml b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/drawable-v24/back_ground_1.xml
new file mode 100644
index 00000000..e4b87820
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/drawable-v24/back_ground_1.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/drawable/back_ground.xml b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/drawable/back_ground.xml
new file mode 100644
index 00000000..1830fd93
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/drawable/back_ground.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/drawable/ic_launcher_background.xml b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/layout/activity_intro.xml b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/layout/activity_intro.xml
new file mode 100644
index 00000000..1c7abc3a
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/layout/activity_intro.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/layout/activity_main.xml b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..0815f63f
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/layout/activity_news_in_details.xml b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/layout/activity_news_in_details.xml
new file mode 100644
index 00000000..99d54d98
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/layout/activity_news_in_details.xml
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/layout/list_items.xml b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/layout/list_items.xml
new file mode 100644
index 00000000..d9d0c863
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/layout/list_items.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/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/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-hdpi/ic_launcher.png b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..a571e600
Binary files /dev/null and b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..61da551c
Binary files /dev/null and b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-mdpi/ic_launcher.png b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..c41dd285
Binary files /dev/null and b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..db5080a7
Binary files /dev/null and b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..6dba46da
Binary files /dev/null and b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..da31a871
Binary files /dev/null and b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..15ac6817
Binary files /dev/null and b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..b216f2d3
Binary files /dev/null and b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..f25a4197
Binary files /dev/null and b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..e96783cc
Binary files /dev/null and b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/values-night/themes.xml b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..b7fd4a67
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/values/colors.xml b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/values/colors.xml
new file mode 100644
index 00000000..f8c6127d
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/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/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/values/strings.xml b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000..15abe438
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ My News App
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/values/themes.xml b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..2343a466
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/main/res/values/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/test/java/com/example/mynewsapp/ExampleUnitTest.java b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/test/java/com/example/mynewsapp/ExampleUnitTest.java
new file mode 100644
index 00000000..071a439d
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/app/src/test/java/com/example/mynewsapp/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.example.mynewsapp;
+
+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/ChakradharChokkaku/Advanced/MyNewsApp/build.gradle b/Android/ChakradharChokkaku/Advanced/MyNewsApp/build.gradle
new file mode 100644
index 00000000..9ade2a75
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/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/ChakradharChokkaku/Advanced/MyNewsApp/gradle.properties b/Android/ChakradharChokkaku/Advanced/MyNewsApp/gradle.properties
new file mode 100644
index 00000000..6826e61b
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/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/ChakradharChokkaku/Advanced/MyNewsApp/gradle/wrapper/gradle-wrapper.jar b/Android/ChakradharChokkaku/Advanced/MyNewsApp/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..f6b961fd
Binary files /dev/null and b/Android/ChakradharChokkaku/Advanced/MyNewsApp/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/Android/ChakradharChokkaku/Advanced/MyNewsApp/gradle/wrapper/gradle-wrapper.properties b/Android/ChakradharChokkaku/Advanced/MyNewsApp/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..76aabea9
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Sat Jun 19 08:55:52 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/ChakradharChokkaku/Advanced/MyNewsApp/gradlew b/Android/ChakradharChokkaku/Advanced/MyNewsApp/gradlew
new file mode 100644
index 00000000..cccdd3d5
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/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/ChakradharChokkaku/Advanced/MyNewsApp/gradlew.bat b/Android/ChakradharChokkaku/Advanced/MyNewsApp/gradlew.bat
new file mode 100644
index 00000000..f9553162
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/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/ChakradharChokkaku/Advanced/MyNewsApp/settings.gradle b/Android/ChakradharChokkaku/Advanced/MyNewsApp/settings.gradle
new file mode 100644
index 00000000..78e3ca9d
--- /dev/null
+++ b/Android/ChakradharChokkaku/Advanced/MyNewsApp/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "My News App"
+include ':app'
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/.gitignore b/Android/ChakradharChokkaku/Beginner/SplashScreens/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/.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/ChakradharChokkaku/Beginner/SplashScreens/.idea/.gitignore b/Android/ChakradharChokkaku/Beginner/SplashScreens/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/.idea/.name b/Android/ChakradharChokkaku/Beginner/SplashScreens/.idea/.name
new file mode 100644
index 00000000..ebe83b24
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/.idea/.name
@@ -0,0 +1 @@
+TwoActivities
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/.idea/compiler.xml b/Android/ChakradharChokkaku/Beginner/SplashScreens/.idea/compiler.xml
new file mode 100644
index 00000000..fb7f4a8a
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/.idea/gradle.xml b/Android/ChakradharChokkaku/Beginner/SplashScreens/.idea/gradle.xml
new file mode 100644
index 00000000..5cd135a0
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/.idea/gradle.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/.idea/jarRepositories.xml b/Android/ChakradharChokkaku/Beginner/SplashScreens/.idea/jarRepositories.xml
new file mode 100644
index 00000000..0380d8d3
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/.idea/misc.xml b/Android/ChakradharChokkaku/Beginner/SplashScreens/.idea/misc.xml
new file mode 100644
index 00000000..6199cc2a
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/.idea/runConfigurations.xml b/Android/ChakradharChokkaku/Beginner/SplashScreens/.idea/runConfigurations.xml
new file mode 100644
index 00000000..797acea5
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/.gitignore b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/build.gradle b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/build.gradle
new file mode 100644
index 00000000..0f4ad25f
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/build.gradle
@@ -0,0 +1,39 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+
+ defaultConfig {
+ applicationId "com.example.twoactivities"
+ 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.3.0'
+ implementation 'com.google.android.material:material:1.3.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
+ 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/ChakradharChokkaku/Beginner/SplashScreens/app/proguard-rules.pro b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/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/ChakradharChokkaku/Beginner/SplashScreens/app/src/androidTest/java/com/example/twoactivities/ExampleInstrumentedTest.java b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/androidTest/java/com/example/twoactivities/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..7d62b8c7
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/androidTest/java/com/example/twoactivities/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.example.twoactivities;
+
+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.twoactivities", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/AndroidManifest.xml b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..95a56d9e
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/AndroidManifest.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/java/com/example/twoactivities/MainActivity.java b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/java/com/example/twoactivities/MainActivity.java
new file mode 100644
index 00000000..6c5b5319
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/java/com/example/twoactivities/MainActivity.java
@@ -0,0 +1,29 @@
+package com.example.twoactivities;
+
+import androidx.appcompat.app.AppCompatActivity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+
+public class MainActivity extends AppCompatActivity {
+ private static final String LOG_TAG =
+ MainActivity.class.getSimpleName();
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ }
+ public void launchSecondActivity(View view) {
+ Intent intent = new Intent(this, SecondActivity.class);
+ Log.d(LOG_TAG, "Button clicked!");
+ startActivity(intent);
+ }
+
+ public void launchThirdActivity(View view) {
+ Intent intent = new Intent(this, ThirdActivity.class);
+ Log.d(LOG_TAG, "Button clicked!");
+ startActivity(intent);
+ }
+}
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/java/com/example/twoactivities/SecondActivity.java b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/java/com/example/twoactivities/SecondActivity.java
new file mode 100644
index 00000000..0b4e4038
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/java/com/example/twoactivities/SecondActivity.java
@@ -0,0 +1,23 @@
+package com.example.twoactivities;
+
+import androidx.appcompat.app.AppCompatActivity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.util.Log;
+
+public class SecondActivity extends AppCompatActivity {
+ private static final String LOG_TAG =
+ SecondActivity.class.getSimpleName();
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_second);
+ }
+
+ public void launchThirdActivity(View view) {
+ Intent intent = new Intent(this, ThirdActivity.class);
+ Log.d(LOG_TAG, "Button clicked!");
+ startActivity(intent);
+ }
+}
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/java/com/example/twoactivities/ThirdActivity.java b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/java/com/example/twoactivities/ThirdActivity.java
new file mode 100644
index 00000000..0c7842a6
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/java/com/example/twoactivities/ThirdActivity.java
@@ -0,0 +1,14 @@
+package com.example.twoactivities;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.os.Bundle;
+
+public class ThirdActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_third);
+ }
+}
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/drawable/app_background.png b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/drawable/app_background.png
new file mode 100644
index 00000000..fa3f4b32
Binary files /dev/null and b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/drawable/app_background.png differ
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/drawable/backg_1.jpeg b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/drawable/backg_1.jpeg
new file mode 100644
index 00000000..769103ea
Binary files /dev/null and b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/drawable/backg_1.jpeg differ
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/drawable/backg_2.jpeg b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/drawable/backg_2.jpeg
new file mode 100644
index 00000000..90f2c062
Binary files /dev/null and b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/drawable/backg_2.jpeg differ
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/drawable/backg_3.jpeg b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/drawable/backg_3.jpeg
new file mode 100644
index 00000000..6b82b863
Binary files /dev/null and b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/drawable/backg_3.jpeg differ
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/drawable/ic_launcher_background.xml b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/layout/activity_main.xml b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..b3f237a1
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/layout/activity_second.xml b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/layout/activity_second.xml
new file mode 100644
index 00000000..fe663705
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/layout/activity_second.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/layout/activity_third.xml b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/layout/activity_third.xml
new file mode 100644
index 00000000..2dbeac0e
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/layout/activity_third.xml
@@ -0,0 +1,8 @@
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/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/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-hdpi/ic_launcher.png b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..a571e600
Binary files /dev/null and b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..61da551c
Binary files /dev/null and b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-mdpi/ic_launcher.png b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..c41dd285
Binary files /dev/null and b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..db5080a7
Binary files /dev/null and b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..6dba46da
Binary files /dev/null and b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..da31a871
Binary files /dev/null and b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..15ac6817
Binary files /dev/null and b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..b216f2d3
Binary files /dev/null and b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..f25a4197
Binary files /dev/null and b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..e96783cc
Binary files /dev/null and b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/values-night/themes.xml b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..6d5ec7b2
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/values/colors.xml b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/values/colors.xml
new file mode 100644
index 00000000..f8c6127d
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/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/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/values/strings.xml b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000..dda11ffc
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/values/strings.xml
@@ -0,0 +1,4 @@
+
+ TwoActivities
+ SecondActivity
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/values/themes.xml b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..36c632a2
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/main/res/values/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/test/java/com/example/twoactivities/ExampleUnitTest.java b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/test/java/com/example/twoactivities/ExampleUnitTest.java
new file mode 100644
index 00000000..de29e251
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/app/src/test/java/com/example/twoactivities/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.example.twoactivities;
+
+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/ChakradharChokkaku/Beginner/SplashScreens/build.gradle b/Android/ChakradharChokkaku/Beginner/SplashScreens/build.gradle
new file mode 100644
index 00000000..9ade2a75
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/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/ChakradharChokkaku/Beginner/SplashScreens/gradle.properties b/Android/ChakradharChokkaku/Beginner/SplashScreens/gradle.properties
new file mode 100644
index 00000000..6826e61b
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/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/ChakradharChokkaku/Beginner/SplashScreens/gradle/wrapper/gradle-wrapper.jar b/Android/ChakradharChokkaku/Beginner/SplashScreens/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..f6b961fd
Binary files /dev/null and b/Android/ChakradharChokkaku/Beginner/SplashScreens/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/Android/ChakradharChokkaku/Beginner/SplashScreens/gradle/wrapper/gradle-wrapper.properties b/Android/ChakradharChokkaku/Beginner/SplashScreens/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..133ade47
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Mon May 31 12:39:01 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/ChakradharChokkaku/Beginner/SplashScreens/gradlew b/Android/ChakradharChokkaku/Beginner/SplashScreens/gradlew
new file mode 100644
index 00000000..cccdd3d5
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/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/ChakradharChokkaku/Beginner/SplashScreens/gradlew.bat b/Android/ChakradharChokkaku/Beginner/SplashScreens/gradlew.bat
new file mode 100644
index 00000000..f9553162
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/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/ChakradharChokkaku/Beginner/SplashScreens/settings.gradle b/Android/ChakradharChokkaku/Beginner/SplashScreens/settings.gradle
new file mode 100644
index 00000000..75f95c76
--- /dev/null
+++ b/Android/ChakradharChokkaku/Beginner/SplashScreens/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "TwoActivities"
+include ':app'
diff --git a/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/.gitignore b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/.gitignore
new file mode 100644
index 00000000..37a4eb8b
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/.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/ChakradharChokkaku/MyApp_Day1/.idea/.gitignore b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/.idea/compiler.xml b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/.idea/compiler.xml
new file mode 100644
index 00000000..61a9130c
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/.idea/gradle.xml b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/.idea/gradle.xml
new file mode 100644
index 00000000..b9090f42
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/.idea/gradle.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/.idea/jarRepositories.xml b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/.idea/jarRepositories.xml
new file mode 100644
index 00000000..1dfcd020
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/.idea/misc.xml b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/.idea/misc.xml
new file mode 100644
index 00000000..58918f50
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/.idea/previewer/phone/phoneSettingConfig_-369147091.json b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/.idea/previewer/phone/phoneSettingConfig_-369147091.json
new file mode 100644
index 00000000..f505e6b9
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/.idea/previewer/phone/phoneSettingConfig_-369147091.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/ChakradharChokkaku/MyApp_Day1/.idea/previewer/phone/phoneSettingConfig_-375543740.json b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/.idea/previewer/phone/phoneSettingConfig_-375543740.json
new file mode 100644
index 00000000..69beee7f
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/.idea/previewer/phone/phoneSettingConfig_-375543740.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/ChakradharChokkaku/MyApp_Day1/.idea/previewer/phone/phoneSettingConfig_1171317875.json b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/.idea/previewer/phone/phoneSettingConfig_1171317875.json
new file mode 100644
index 00000000..f505e6b9
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/.idea/previewer/phone/phoneSettingConfig_1171317875.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/ChakradharChokkaku/MyApp_Day1/.idea/previewer/phone/phoneSettingConfig_1886564479.json b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/.idea/previewer/phone/phoneSettingConfig_1886564479.json
new file mode 100644
index 00000000..69beee7f
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/.idea/previewer/phone/phoneSettingConfig_1886564479.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/ChakradharChokkaku/MyApp_Day1/.idea/previewer/previewConfig.json b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/.idea/previewer/previewConfig.json
new file mode 100644
index 00000000..413a86df
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/.idea/previewer/previewConfig.json
@@ -0,0 +1,18 @@
+{
+ "1.0.0": {
+ "LastPreviewDevice": {
+ "D:\\workspace\\HMOS\\DevEcoProjects\\SignUpApp\\entry": [
+ "phone"
+ ],
+ "D:\\workspace\\HMOS\\DevEcoProjects\\Assignment-Day1\\MyApp\\entry": [
+ "phone"
+ ],
+ "C:\\Users\\chakr\\DevEcoStudioProjects\\MyApp\\entry": [
+ "phone"
+ ],
+ "C:\\Users\\chakr\\DevEcoStudioProjects\\MyApp_Day1\\entry": [
+ "phone"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/build.gradle b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/build.gradle
new file mode 100644
index 00000000..8446a40b
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/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.6'
+ }
+}
+
+allprojects {
+ repositories {
+ maven {
+ url 'https://repo.huaweicloud.com/repository/maven/'
+ }
+ maven {
+ url 'https://developer.huawei.com/repo/'
+ }
+ jcenter()
+ }
+}
diff --git a/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/.gitignore b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/.gitignore
new file mode 100644
index 00000000..796b96d1
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/build.gradle b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/build.gradle
new file mode 100644
index 00000000..30c5f30b
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/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/ChakradharChokkaku/MyApp_Day1/entry/proguard-rules.pro b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/proguard-rules.pro
new file mode 100644
index 00000000..f7666e47
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/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/ChakradharChokkaku/MyApp_Day1/entry/src/main/config.json b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/config.json
new file mode 100644
index 00000000..4414dd20
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/config.json
@@ -0,0 +1,49 @@
+{
+ "app": {
+ "bundleName": "com.assigment.signupapp",
+ "vendor": "assigment",
+ "version": {
+ "code": 1,
+ "name": "1.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Release"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.assignment.myapp",
+ "name": ".MyApplication",
+ "deviceType": [
+ "phone"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "entry",
+ "moduleType": "entry"
+ },
+ "abilities": [
+ {
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ],
+ "orientation": "unspecified",
+ "name": "com.assignment.myapp.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/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/java/com/assignment/myapp/MainAbility.java b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/java/com/assignment/myapp/MainAbility.java
new file mode 100644
index 00000000..d33c6a46
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/java/com/assignment/myapp/MainAbility.java
@@ -0,0 +1,13 @@
+package com.assignment.myapp;
+
+import com.assignment.myapp.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/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/java/com/assignment/myapp/MyApplication.java b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/java/com/assignment/myapp/MyApplication.java
new file mode 100644
index 00000000..11120da5
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/java/com/assignment/myapp/MyApplication.java
@@ -0,0 +1,10 @@
+package com.assignment.myapp;
+
+import ohos.aafwk.ability.AbilityPackage;
+
+public class MyApplication extends AbilityPackage {
+ @Override
+ public void onInitialize() {
+ super.onInitialize();
+ }
+}
diff --git a/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/java/com/assignment/myapp/slice/LoginAbilitySlice.java b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/java/com/assignment/myapp/slice/LoginAbilitySlice.java
new file mode 100644
index 00000000..6b1d81f9
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/java/com/assignment/myapp/slice/LoginAbilitySlice.java
@@ -0,0 +1,13 @@
+package com.assignment.myapp.slice;
+
+import com.assignment.myapp.ResourceTable;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+
+public class LoginAbilitySlice extends AbilitySlice {
+ @Override
+ protected void onStart(Intent intent) {
+ super.onStart(intent);
+ setUIContent(ResourceTable.Layout_login_page);
+ }
+}
diff --git a/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/java/com/assignment/myapp/slice/MainAbilitySlice.java b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/java/com/assignment/myapp/slice/MainAbilitySlice.java
new file mode 100644
index 00000000..624e6b12
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/java/com/assignment/myapp/slice/MainAbilitySlice.java
@@ -0,0 +1,44 @@
+package com.assignment.myapp.slice;
+
+import com.assignment.myapp.ResourceTable;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.agp.components.Button;
+import ohos.agp.components.Component;
+import ohos.agp.components.Image;
+
+public class MainAbilitySlice extends AbilitySlice {
+ private Image appLogo;
+ private Button login;
+ private Button signup;
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_main);
+ initViews();
+ appLogo.setPixelMap(ResourceTable.Media_my_app);
+ appLogo.setScaleMode(Image.ScaleMode.STRETCH);
+ setListeners();
+ }
+
+ private void initViews() {
+ appLogo = (Image) findComponentById(ResourceTable.Id_image);
+ login = (Button) findComponentById(ResourceTable.Id_login);
+ signup = (Button) findComponentById(ResourceTable.Id_signup);
+ }
+
+ private void setListeners() {
+ login.setClickedListener(component -> present(new LoginAbilitySlice(), new Intent()));
+ signup.setClickedListener(component -> present(new SignUpAbilitySlice(), new Intent()));
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/java/com/assignment/myapp/slice/SignUpAbilitySlice.java b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/java/com/assignment/myapp/slice/SignUpAbilitySlice.java
new file mode 100644
index 00000000..9a8eb2c4
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/java/com/assignment/myapp/slice/SignUpAbilitySlice.java
@@ -0,0 +1,13 @@
+package com.assignment.myapp.slice;
+
+import com.assignment.myapp.ResourceTable;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+
+public class SignUpAbilitySlice extends AbilitySlice {
+ @Override
+ protected void onStart(Intent intent) {
+ super.onStart(intent);
+ setUIContent(ResourceTable.Layout_signup_page);
+ }
+}
diff --git a/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/resources/base/element/float.json b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/resources/base/element/float.json
new file mode 100644
index 00000000..e4d72149
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/resources/base/element/float.json
@@ -0,0 +1,32 @@
+{
+ "float": [
+ {
+ "name": "main_page_field_width",
+ "value": "200vp"
+ },
+ {
+ "name": "main_page_field_height",
+ "value": "200vp"
+ },
+ {
+ "name": "main_page_field_padding",
+ "value": "5vp"
+ },
+ {
+ "name": "main_page_login_top_margin",
+ "value": "70vp"
+ },
+ {
+ "name": "main_page_text_size",
+ "value": "20vp"
+ },
+ {
+ "name": "main_page_signup_top_margin",
+ "value": "40vp"
+ },
+ {
+ "name": "main_page_image_top_margin",
+ "value": "100vp"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/resources/base/element/string.json b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/resources/base/element/string.json
new file mode 100644
index 00000000..8e723769
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/resources/base/element/string.json
@@ -0,0 +1,20 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "myAPP"
+ },
+ {
+ "name": "mainability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "signup",
+ "value": "SIGN UP"
+ },
+ {
+ "name": "login",
+ "value": "LOGIN"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/resources/base/graphic/background_ability_main.xml b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/resources/base/graphic/background_ability_main.xml
new file mode 100644
index 00000000..c0c0a3df
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/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/ChakradharChokkaku/MyApp_Day1/entry/src/main/resources/base/graphic/button_background.xml b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/resources/base/graphic/button_background.xml
new file mode 100644
index 00000000..80fca8cc
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/resources/base/graphic/button_background.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/resources/base/layout/ability_main.xml b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/resources/base/layout/ability_main.xml
new file mode 100644
index 00000000..da94cf13
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/resources/base/layout/ability_main.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/resources/base/layout/login_page.xml b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/resources/base/layout/login_page.xml
new file mode 100644
index 00000000..e5b39dad
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/resources/base/layout/login_page.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/resources/base/layout/signup_page.xml b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/resources/base/layout/signup_page.xml
new file mode 100644
index 00000000..7c6916f1
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/resources/base/layout/signup_page.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/resources/base/media/icon.png b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/resources/base/media/icon.png
new file mode 100644
index 00000000..ce307a88
Binary files /dev/null and b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/resources/base/media/icon.png differ
diff --git a/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/resources/base/media/my_app.jpg b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/resources/base/media/my_app.jpg
new file mode 100644
index 00000000..bf707e63
Binary files /dev/null and b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/main/resources/base/media/my_app.jpg differ
diff --git a/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/ohosTest/config.json b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/ohosTest/config.json
new file mode 100644
index 00000000..7f322450
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/ohosTest/config.json
@@ -0,0 +1,41 @@
+{
+ "app": {
+ "bundleName": "com.assigment.signupapp",
+ "vendor": "assigment",
+ "version": {
+ "code": 1,
+ "name": "1.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Beta1"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.assigment.signupapp",
+ "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/ChakradharChokkaku/MyApp_Day1/entry/src/ohosTest/java/com/assignment/myapp/ExampleOhosTest.java b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/ohosTest/java/com/assignment/myapp/ExampleOhosTest.java
new file mode 100644
index 00000000..89468e2f
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/ohosTest/java/com/assignment/myapp/ExampleOhosTest.java
@@ -0,0 +1,14 @@
+package com.assignment.myapp;
+
+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.assigment.myapp", actualBundleName);
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/test/java/com/assignment/myapp/ExampleTest.java b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/test/java/com/assignment/myapp/ExampleTest.java
new file mode 100644
index 00000000..9b143d7a
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/entry/src/test/java/com/assignment/myapp/ExampleTest.java
@@ -0,0 +1,9 @@
+package com.assignment.myapp;
+
+import org.junit.Test;
+
+public class ExampleTest {
+ @Test
+ public void onStart() {
+ }
+}
diff --git a/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/gradle.properties b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/gradle.properties
new file mode 100644
index 00000000..0daf1830
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/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/ChakradharChokkaku/MyApp_Day1/gradle/wrapper/gradle-wrapper.jar b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..490fda85
Binary files /dev/null and b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/gradle/wrapper/gradle-wrapper.properties b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..f59159e8
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/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/ChakradharChokkaku/MyApp_Day1/gradlew b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/gradlew
new file mode 100644
index 00000000..2fe81a7d
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/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/ChakradharChokkaku/MyApp_Day1/gradlew.bat b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/gradlew.bat
new file mode 100644
index 00000000..62bd9b9c
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/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/ChakradharChokkaku/MyApp_Day1/settings.gradle b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/settings.gradle
new file mode 100644
index 00000000..4773db73
--- /dev/null
+++ b/HarmonyOS/Day1 Assingment/ChakradharChokkaku/MyApp_Day1/settings.gradle
@@ -0,0 +1 @@
+include ':entry'
diff --git a/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/.gitignore b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/.gitignore
new file mode 100644
index 00000000..37a4eb8b
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/.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/ChokkakuChakradhar/MyApp_Day2/.idea/.gitignore b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/.idea/compiler.xml b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/.idea/compiler.xml
new file mode 100644
index 00000000..61a9130c
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/.idea/gradle.xml b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/.idea/gradle.xml
new file mode 100644
index 00000000..b9090f42
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/.idea/gradle.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/.idea/jarRepositories.xml b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/.idea/jarRepositories.xml
new file mode 100644
index 00000000..1dfcd020
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/.idea/misc.xml b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/.idea/misc.xml
new file mode 100644
index 00000000..58918f50
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/.idea/previewer/phone/phoneSettingConfig_-668946747.json b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/.idea/previewer/phone/phoneSettingConfig_-668946747.json
new file mode 100644
index 00000000..69beee7f
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/.idea/previewer/phone/phoneSettingConfig_-668946747.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/ChokkakuChakradhar/MyApp_Day2/.idea/previewer/phone/phoneSettingConfig_2058821556.json b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/.idea/previewer/phone/phoneSettingConfig_2058821556.json
new file mode 100644
index 00000000..f505e6b9
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/.idea/previewer/phone/phoneSettingConfig_2058821556.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/ChokkakuChakradhar/MyApp_Day2/.idea/previewer/phone/phoneSettingConfig_2104963571.json b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/.idea/previewer/phone/phoneSettingConfig_2104963571.json
new file mode 100644
index 00000000..f505e6b9
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/.idea/previewer/phone/phoneSettingConfig_2104963571.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/ChokkakuChakradhar/MyApp_Day2/.idea/previewer/previewConfig.json b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/.idea/previewer/previewConfig.json
new file mode 100644
index 00000000..20c6c5c2
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/.idea/previewer/previewConfig.json
@@ -0,0 +1,15 @@
+{
+ "1.0.0": {
+ "LastPreviewDevice": {
+ "D:\\workspace\\HMOS\\DevEcoProjects\\MyApp2\\entry": [
+ "phone"
+ ],
+ "D:\\workspace\\HMOS\\DevEcoProjects\\Assignment-Day2\\MyApp\\entry": [
+ "phone"
+ ],
+ "C:\\Users\\chakr\\DevEcoStudioProjects\\MyApp_Day2\\entry": [
+ "phone"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/build.gradle b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/build.gradle
new file mode 100644
index 00000000..8446a40b
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/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.6'
+ }
+}
+
+allprojects {
+ repositories {
+ maven {
+ url 'https://repo.huaweicloud.com/repository/maven/'
+ }
+ maven {
+ url 'https://developer.huawei.com/repo/'
+ }
+ jcenter()
+ }
+}
diff --git a/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/.gitignore b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/.gitignore
new file mode 100644
index 00000000..796b96d1
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/build.gradle b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/build.gradle
new file mode 100644
index 00000000..30c5f30b
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/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/ChokkakuChakradhar/MyApp_Day2/entry/proguard-rules.pro b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/proguard-rules.pro
new file mode 100644
index 00000000..f7666e47
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/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/ChokkakuChakradhar/MyApp_Day2/entry/src/main/config.json b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/config.json
new file mode 100644
index 00000000..3614df3e
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/config.json
@@ -0,0 +1,49 @@
+{
+ "app": {
+ "bundleName": "com.assigmentday2.MyApp2",
+ "vendor": "assigmentday2",
+ "version": {
+ "code": 1,
+ "name": "1.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Release"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.assigment.myapp",
+ "name": ".MyApplication",
+ "deviceType": [
+ "phone"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "entry",
+ "moduleType": "entry"
+ },
+ "abilities": [
+ {
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ],
+ "orientation": "unspecified",
+ "name": "com.assigment.myapp.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/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/java/com/assigment/myapp/MainAbility.java b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/java/com/assigment/myapp/MainAbility.java
new file mode 100644
index 00000000..bb2570c1
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/java/com/assigment/myapp/MainAbility.java
@@ -0,0 +1,13 @@
+package com.assigment.myapp;
+
+import com.assigment.myapp.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/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/java/com/assigment/myapp/MyApplication.java b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/java/com/assigment/myapp/MyApplication.java
new file mode 100644
index 00000000..35fc605a
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/java/com/assigment/myapp/MyApplication.java
@@ -0,0 +1,10 @@
+package com.assigment.myapp;
+
+import ohos.aafwk.ability.AbilityPackage;
+
+public class MyApplication extends AbilityPackage {
+ @Override
+ public void onInitialize() {
+ super.onInitialize();
+ }
+}
diff --git a/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/java/com/assigment/myapp/Utils/PatternUtils.java b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/java/com/assigment/myapp/Utils/PatternUtils.java
new file mode 100644
index 00000000..66c3482e
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/java/com/assigment/myapp/Utils/PatternUtils.java
@@ -0,0 +1,37 @@
+package com.assigment.myapp.Utils;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class PatternUtils {
+ private static final String PATTERN_NUMBER_REGEX = ".*\\d.*";
+ private static final String PATTERN_SPECIAL_CHAR = "[^a-zA-Z0-9]";
+ private static final String PATTERN_NUMBER = "[^0-9]";
+ public static boolean isConsistOfNumber(String string) {
+ return string.matches(PATTERN_NUMBER_REGEX);
+ }
+
+ /**
+ * checks if the string contains a special character
+ *
+ * @param string - input string
+ * @return - true if it contains, else return false
+ */
+ public static boolean isContainSpecialCharacter(String string) {
+ Pattern pattern = Pattern.compile(PATTERN_SPECIAL_CHAR);
+ Matcher matcher = pattern.matcher(string);
+ return matcher.find();
+ }
+
+ /**
+ * checks if string contains only numbers
+ *
+ * @param string - input string
+ * @return true if it contains only numbers, else return false
+ */
+ public static boolean isContainOnlyNumber(String string) {
+ Pattern pattern = Pattern.compile(PATTERN_NUMBER);
+ Matcher matcher = pattern.matcher(string);
+ return !matcher.find();
+ }
+}
diff --git a/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/java/com/assigment/myapp/slice/LoginAbilitySlice.java b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/java/com/assigment/myapp/slice/LoginAbilitySlice.java
new file mode 100644
index 00000000..f72fee71
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/java/com/assigment/myapp/slice/LoginAbilitySlice.java
@@ -0,0 +1,13 @@
+package com.assigment.myapp.slice;
+
+import com.assigment.myapp.ResourceTable;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+
+public class LoginAbilitySlice extends AbilitySlice {
+ @Override
+ protected void onStart(Intent intent) {
+ super.onStart(intent);
+ setUIContent(ResourceTable.Layout_login_page);
+ }
+}
diff --git a/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/java/com/assigment/myapp/slice/MainAbilitySlice.java b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/java/com/assigment/myapp/slice/MainAbilitySlice.java
new file mode 100644
index 00000000..e2340fdb
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/java/com/assigment/myapp/slice/MainAbilitySlice.java
@@ -0,0 +1,43 @@
+package com.assigment.myapp.slice;
+
+import com.assigment.myapp.ResourceTable;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.agp.components.Button;
+import ohos.agp.components.Image;
+
+public class MainAbilitySlice extends AbilitySlice {
+ private Image appLogo;
+ private Button login;
+ private Button signup;
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_main);
+ initViews();
+ appLogo.setPixelMap(ResourceTable.Media_my_app);
+ appLogo.setScaleMode(Image.ScaleMode.STRETCH);
+ setListeners();
+ }
+
+ private void initViews() {
+ appLogo = (Image) findComponentById(ResourceTable.Id_image);
+ login = (Button) findComponentById(ResourceTable.Id_login);
+ signup = (Button) findComponentById(ResourceTable.Id_signup);
+ }
+
+ private void setListeners() {
+ login.setClickedListener(component -> present(new LoginAbilitySlice(), new Intent()));
+ signup.setClickedListener(component -> present(new SignUpAbilitySlice(), new Intent()));
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/java/com/assigment/myapp/slice/SignUpAbilitySlice.java b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/java/com/assigment/myapp/slice/SignUpAbilitySlice.java
new file mode 100644
index 00000000..3352da56
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/java/com/assigment/myapp/slice/SignUpAbilitySlice.java
@@ -0,0 +1,160 @@
+package com.assigment.myapp.slice;
+
+import com.assigment.myapp.ResourceTable;
+import com.assigment.myapp.Utils.PatternUtils;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.agp.components.*;
+import ohos.agp.window.dialog.ToastDialog;
+
+public class SignUpAbilitySlice extends AbilitySlice {
+ Image appLogo;
+ TextField firstName;
+ TextField lastName;
+ TextField emailField;
+ TextField passwordField;
+ TextField mobileField;
+ RadioButton maleButton;
+ RadioButton femaleButton;
+ Text firstNameError;
+ Text lastNameError;
+ Text emailError;
+ Text passwordError;
+ Text mobileError;
+ Button submit;
+
+ @Override
+ protected void onStart(Intent intent) {
+ super.onStart(intent);
+ setUIContent(ResourceTable.Layout_signup_page);
+ initViews();
+ initListeners();
+ }
+
+ private void initViews() {
+ firstName = (TextField) findComponentById(ResourceTable.Id_firstname);
+ lastName = (TextField) findComponentById(ResourceTable.Id_lastname);
+ emailField = (TextField) findComponentById(ResourceTable.Id_email);
+ passwordField = (TextField) findComponentById(ResourceTable.Id_password);
+ mobileField = (TextField) findComponentById(ResourceTable.Id_mobile);
+
+ firstNameError = (Text) findComponentById(ResourceTable.Id_firstname_error);
+ lastNameError = (Text) findComponentById(ResourceTable.Id_lastname_error);
+ emailError = (Text) findComponentById(ResourceTable.Id_email_error);
+ passwordError = (Text) findComponentById(ResourceTable.Id_password_error);
+ mobileError = (Text) findComponentById(ResourceTable.Id_mobile_error);
+
+ maleButton = (RadioButton) findComponentById(ResourceTable.Id_gender_male);
+ femaleButton = (RadioButton) findComponentById(ResourceTable.Id_gender_female);
+
+ submit = (Button) findComponentById(ResourceTable.Id_signup_btn);
+ appLogo = (Image) findComponentById(ResourceTable.Id_signup_page_header);
+ appLogo.setPixelMap(ResourceTable.Media_my_app);
+ appLogo.setScaleMode(Image.ScaleMode.STRETCH);
+ }
+
+ private void initListeners() {
+ firstName.addTextObserver((input,start,before, count)-> validateName(firstNameError,input));
+ lastName.addTextObserver((input, start, before, count)-> validateName(lastNameError,input));
+ emailField.addTextObserver((input, start, before, count) -> validateEmail(input));
+ passwordField.addTextObserver((input, start, before, count) -> validatePassword(input));
+ mobileField.addTextObserver((input, start, before, count) -> validateMobile(input));
+ submit.setClickedListener(component -> handleSubmitClick(component));
+ }
+
+ /**
+ * validates the firstname and last name
+ *
+ * @param errorText - error text object for the respective textfield
+ * @param input - input string in the textfield
+ */
+ public void validateName(Text errorText, String input) {
+ if (input == null) {
+ return;
+ }
+ if (PatternUtils.isConsistOfNumber(input) || PatternUtils.isContainSpecialCharacter(input)) {
+ errorText.setVisibility(Component.VISIBLE);
+ } else {
+ errorText.setVisibility(Component.HIDE);
+ }
+ }
+
+ /**
+ * validates if its a valid email address or not
+ *
+ * @param email - email string entered by user
+ */
+ public void validateEmail(String email){
+ if (email==null) {
+ return;
+ }
+ if (!(email.contains("@") && email.contains(".com"))) {
+ emailError.setVisibility(Component.VISIBLE);
+ } else {
+ emailError.setVisibility(Component.HIDE);
+ }
+ }
+
+ /**
+ * validates if its a valid password or not. If the string>5 and contains a special character, then its valid
+ *
+ * @param password - password string entered by user
+ */
+ public void validatePassword(String password) {
+ if (password == null) {
+ return;
+ }
+ if (password.length()<5 || !PatternUtils.isContainSpecialCharacter(password)) {
+ passwordError.setVisibility(Component.VISIBLE);
+ } else {
+ passwordError.setVisibility(Component.HIDE);
+ }
+ }
+
+ /**
+ * validates mobile number. If the number is less that 10 digits and contains non numeric chars,
+ * then its invalid
+ *
+ * @param mobile
+ */
+ public void validateMobile(String mobile) {
+ if (mobile == null) {
+ return;
+ }
+ if (mobile.length() < 10 || !PatternUtils.isContainOnlyNumber(mobile)) {
+ mobileError.setVisibility(Component.VISIBLE);
+ } else {
+ mobileError.setVisibility(Component.HIDE);
+ }
+ }
+
+ /**
+ * checks if the form can be submitted or not
+ *
+ * @param component - button
+ */
+ public void handleSubmitClick(Component component) {
+ ToastDialog toastDialog = new ToastDialog(component.getContext());
+ if (firstName.getText() == null
+ || lastName.getText() == null
+ || emailField.getText() == null
+ || passwordField.getText() == null
+ || mobileField.getText() == null
+ || firstName.getText().isEmpty()
+ || lastName.getText().isEmpty()
+ || emailField.getText().isEmpty()
+ || mobileField.getText().isEmpty()) {
+ toastDialog.setText(component.getContext().getString(ResourceTable.String_submit_error)).show();
+ } else if (firstNameError.getVisibility() == Component.VISIBLE
+ || lastNameError.getVisibility() == Component.VISIBLE
+ || emailError.getVisibility() == Component.VISIBLE
+ || passwordError.getVisibility() == Component.VISIBLE
+ || mobileError.getVisibility() == Component.VISIBLE) {
+ toastDialog.setText(component.getContext().getString(ResourceTable.String_submit_error)).show();
+ } else if (!maleButton.isChecked() && !femaleButton.isChecked()) {
+ toastDialog.setText(component.getContext().getString(ResourceTable.String_error_select_gender)).show();
+ } else {
+ toastDialog.setText(component.getContext().getString(ResourceTable.String_submit_success)).show();
+ }
+ }
+}
diff --git a/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/element/color.json b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/element/color.json
new file mode 100644
index 00000000..27e2c366
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/element/color.json
@@ -0,0 +1,16 @@
+{
+ "color": [
+ {
+ "name": "gray",
+ "value": "#FF98A2A2"
+ },
+ {
+ "name": "black",
+ "value": "#000000"
+ },
+ {
+ "name": "white",
+ "value": "#FFFFFF"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/element/float.json b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/element/float.json
new file mode 100644
index 00000000..65119407
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/element/float.json
@@ -0,0 +1,100 @@
+{
+ "float": [
+ {
+ "name": "signup_start_margin",
+ "value": "10vp"
+ },
+ {
+ "name": "signup_end_margin",
+ "value": "10vp"
+ },
+ {
+ "name": "signup_bottom_margin",
+ "value": "20vp"
+ },
+ {
+ "name": "signup_page_header_top_margin",
+ "value": "50vp"
+ },
+ {
+ "name": "signup_page_header_width",
+ "value": "100vp"
+ },
+ {
+ "name": "signup_page_header_height",
+ "value": "100vp"
+ },
+ {
+ "name": "signup_page_field_height",
+ "value": "30vp"
+ },
+ {
+ "name": "signup_page_field_text_size",
+ "value": "20vp"
+ },
+ {
+ "name": "signup_page_error_text_size",
+ "value": "15vp"
+ },
+ {
+ "name": "signup_page_radio_container_text_size",
+ "value": "30vp"
+ },
+ {
+ "name": "signup_page_field_top_margin",
+ "value": "20vp"
+ },
+ {
+ "name": "signup_page_first_name_top_margin",
+ "value": "40vp"
+ },
+ {
+ "name": "signup_page_field_padding",
+ "value": "3vp"
+ },
+ {
+ "name": "signup_page_submit_btn_padding",
+ "value": "5vp"
+ },
+ {
+ "name": "signup_page_submit_btn_text_size",
+ "value": "30vp"
+ },
+ {
+ "name": "signup_page_submit_btn_width",
+ "value": "200vp"
+ },
+ {
+ "name": "radio_container_top_margin",
+ "value": "10vp"
+ },
+ {
+ "name": "main_page_field_width",
+ "value": "200vp"
+ },
+ {
+ "name": "main_page_field_height",
+ "value": "200vp"
+ },
+ {
+ "name": "main_page_field_padding",
+ "value": "5vp"
+ },
+ {
+ "name": "main_page_login_top_margin",
+ "value": "70vp"
+ },
+ {
+ "name": "main_page_text_size",
+ "value": "20vp"
+ },
+ {
+ "name": "main_page_signup_top_margin",
+ "value": "40vp"
+ },
+ {
+ "name": "main_page_image_top_margin",
+ "value": "100vp"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/element/string.json b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/element/string.json
new file mode 100644
index 00000000..e105c214
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/element/string.json
@@ -0,0 +1,96 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "myAPP"
+ },
+ {
+ "name": "mainability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "HelloWorld",
+ "value": "Hello World"
+ },
+ {
+ "name": "email",
+ "value": "Email"
+ },
+ {
+ "name": "password",
+ "value": "Password"
+ },
+ {
+ "name": "Username",
+ "value": "username"
+ },
+ {
+ "name": "gender",
+ "value": "Gender"
+ },
+ {
+ "name": "mobile",
+ "value": "Mobile"
+ },
+ {
+ "name": "dob",
+ "value": "Birthday"
+ },
+ {
+ "name": "signup",
+ "value": "SIGN UP"
+ },
+ {
+ "name": "login",
+ "value": "LOGIN"
+ },
+ {
+ "name": "first_name",
+ "value": "First Name"
+ },
+ {
+ "name": "last_name",
+ "value": "Last Name"
+ },
+ {
+ "name": "email_error_text",
+ "value": "Invalid Email format..!!"
+ },
+ {
+ "name": "first_name_error_text",
+ "value": "must not contain alphanumeric text or integers"
+ },
+ {
+ "name": "last_name_error_text",
+ "value": "must not contain alphanumeric text or integers"
+ },
+ {
+ "name": "mobile_error_text",
+ "value": "Invalid mobile number - must contain only numbers"
+ },
+ {
+ "name": "password_error_text",
+ "value": "Weak password - must contain atleast 5 characters including a special character"
+ },
+ {
+ "name": "submit_error",
+ "value": "Submit ERROR..!!"
+ },
+ {
+ "name": "submit_success",
+ "value": "Submit SUCCESS..!!"
+ },
+ {
+ "name": "error_select_gender",
+ "value": "ERROR - Select gender"
+ },
+ {
+ "name": "radio_male",
+ "value": "Male"
+ },
+ {
+ "name": "radio_female",
+ "value": "Female"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/graphic/background_ability_main.xml b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/graphic/background_ability_main.xml
new file mode 100644
index 00000000..c0c0a3df
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/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/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/graphic/button_background.xml b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/graphic/button_background.xml
new file mode 100644
index 00000000..80fca8cc
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/graphic/button_background.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/layout/ability_main.xml b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/layout/ability_main.xml
new file mode 100644
index 00000000..da94cf13
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/layout/ability_main.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/layout/login_page.xml b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/layout/login_page.xml
new file mode 100644
index 00000000..40ff048c
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/layout/login_page.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/layout/signup_page.xml b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/layout/signup_page.xml
new file mode 100644
index 00000000..15d16d2d
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/layout/signup_page.xml
@@ -0,0 +1,208 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/media/icon.png b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/media/icon.png
new file mode 100644
index 00000000..ce307a88
Binary files /dev/null and b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/media/icon.png differ
diff --git a/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/media/my_app.jpg b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/media/my_app.jpg
new file mode 100644
index 00000000..bf707e63
Binary files /dev/null and b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/main/resources/base/media/my_app.jpg differ
diff --git a/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/ohosTest/config.json b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/ohosTest/config.json
new file mode 100644
index 00000000..aae4b173
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/ohosTest/config.json
@@ -0,0 +1,41 @@
+{
+ "app": {
+ "bundleName": "com.assigmentday2.MyApp2",
+ "vendor": "assigmentday2",
+ "version": {
+ "code": 1,
+ "name": "1.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Beta1"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.assigmentday2.MyApp2",
+ "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/ChokkakuChakradhar/MyApp_Day2/entry/src/ohosTest/java/com/assigment/myapp/ExampleOhosTest.java b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/ohosTest/java/com/assigment/myapp/ExampleOhosTest.java
new file mode 100644
index 00000000..5d767f78
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/ohosTest/java/com/assigment/myapp/ExampleOhosTest.java
@@ -0,0 +1,14 @@
+package com.assigment.myapp;
+
+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.assigment.MyApp", actualBundleName);
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/test/java/com/assigment/myapp/ExampleTest.java b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/test/java/com/assigment/myapp/ExampleTest.java
new file mode 100644
index 00000000..b0b55cc0
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/entry/src/test/java/com/assigment/myapp/ExampleTest.java
@@ -0,0 +1,9 @@
+package com.assigment.myapp;
+
+import org.junit.Test;
+
+public class ExampleTest {
+ @Test
+ public void onStart() {
+ }
+}
diff --git a/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/gradle.properties b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/gradle.properties
new file mode 100644
index 00000000..0daf1830
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/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/ChokkakuChakradhar/MyApp_Day2/gradle/wrapper/gradle-wrapper.jar b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..490fda85
Binary files /dev/null and b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/gradle/wrapper/gradle-wrapper.properties b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..f59159e8
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/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/ChokkakuChakradhar/MyApp_Day2/gradlew b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/gradlew
new file mode 100644
index 00000000..2fe81a7d
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/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/ChokkakuChakradhar/MyApp_Day2/gradlew.bat b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/gradlew.bat
new file mode 100644
index 00000000..62bd9b9c
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/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/ChokkakuChakradhar/MyApp_Day2/settings.gradle b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/settings.gradle
new file mode 100644
index 00000000..4773db73
--- /dev/null
+++ b/HarmonyOS/Day2 Assingment/ChokkakuChakradhar/MyApp_Day2/settings.gradle
@@ -0,0 +1 @@
+include ':entry'
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/.gitignore b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/.gitignore
new file mode 100644
index 00000000..37a4eb8b
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/.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/ChakradharChokkaku/MyApp_Day3/.idea/.gitignore b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/.idea/compiler.xml b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/.idea/compiler.xml
new file mode 100644
index 00000000..61a9130c
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/.idea/gradle.xml b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/.idea/gradle.xml
new file mode 100644
index 00000000..b9090f42
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/.idea/gradle.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/.idea/jarRepositories.xml b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/.idea/jarRepositories.xml
new file mode 100644
index 00000000..1dfcd020
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/.idea/misc.xml b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/.idea/misc.xml
new file mode 100644
index 00000000..58918f50
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/.idea/previewer/phone/phoneSettingConfig_-1348642059.json b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/.idea/previewer/phone/phoneSettingConfig_-1348642059.json
new file mode 100644
index 00000000..f505e6b9
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/.idea/previewer/phone/phoneSettingConfig_-1348642059.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/ChakradharChokkaku/MyApp_Day3/.idea/previewer/phone/phoneSettingConfig_-668946747.json b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/.idea/previewer/phone/phoneSettingConfig_-668946747.json
new file mode 100644
index 00000000..69beee7f
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/.idea/previewer/phone/phoneSettingConfig_-668946747.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/ChakradharChokkaku/MyApp_Day3/.idea/previewer/phone/phoneSettingConfig_2104963571.json b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/.idea/previewer/phone/phoneSettingConfig_2104963571.json
new file mode 100644
index 00000000..f505e6b9
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/.idea/previewer/phone/phoneSettingConfig_2104963571.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/ChakradharChokkaku/MyApp_Day3/.idea/previewer/previewConfig.json b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/.idea/previewer/previewConfig.json
new file mode 100644
index 00000000..efdad7ae
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/.idea/previewer/previewConfig.json
@@ -0,0 +1,15 @@
+{
+ "1.0.0": {
+ "LastPreviewDevice": {
+ "D:\\workspace\\HMOS\\DevEcoProjects\\MyApp2\\entry": [
+ "phone"
+ ],
+ "D:\\workspace\\HMOS\\DevEcoProjects\\Assignment-Day2\\MyApp\\entry": [
+ "phone"
+ ],
+ "C:\\Users\\chakr\\DevEcoStudioProjects\\MyApp_Day3\\entry": [
+ "phone"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/build.gradle b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/build.gradle
new file mode 100644
index 00000000..8446a40b
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/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.6'
+ }
+}
+
+allprojects {
+ repositories {
+ maven {
+ url 'https://repo.huaweicloud.com/repository/maven/'
+ }
+ maven {
+ url 'https://developer.huawei.com/repo/'
+ }
+ jcenter()
+ }
+}
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/.gitignore b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/.gitignore
new file mode 100644
index 00000000..796b96d1
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/build.gradle b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/build.gradle
new file mode 100644
index 00000000..3033cb87
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/build.gradle
@@ -0,0 +1,31 @@
+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'])
+ compile files('libs/ohos.jar','libs/orm_annotations_java.jar', 'libs/orm_annotations_processor_java.jar', 'libs/javapoet_java.jar')
+ annotationProcessor files('libs/orm_annotations_java.jar', 'libs/orm_annotations_processor_java.jar', 'libs/javapoet_java.jar')
+ 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/ChakradharChokkaku/MyApp_Day3/entry/libs/javapoet_java.jar b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/libs/javapoet_java.jar
new file mode 100644
index 00000000..00c9f224
Binary files /dev/null and b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/libs/javapoet_java.jar differ
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/libs/ohos.jar b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/libs/ohos.jar
new file mode 100644
index 00000000..2db8d228
Binary files /dev/null and b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/libs/ohos.jar differ
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/libs/orm_annotations_java.jar b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/libs/orm_annotations_java.jar
new file mode 100644
index 00000000..77f4815a
Binary files /dev/null and b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/libs/orm_annotations_java.jar differ
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/libs/orm_annotations_processor_java.jar b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/libs/orm_annotations_processor_java.jar
new file mode 100644
index 00000000..bbfd41bb
Binary files /dev/null and b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/libs/orm_annotations_processor_java.jar differ
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/proguard-rules.pro b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/proguard-rules.pro
new file mode 100644
index 00000000..f7666e47
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/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/ChakradharChokkaku/MyApp_Day3/entry/src/main/config.json b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/config.json
new file mode 100644
index 00000000..1ca7017c
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/config.json
@@ -0,0 +1,49 @@
+{
+ "app": {
+ "bundleName": "com.assigmentday.MyApp",
+ "vendor": "assigmentday",
+ "version": {
+ "code": 1,
+ "name": "1.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Release"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.assigment.myapp",
+ "name": ".MyApplication",
+ "deviceType": [
+ "phone"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "entry",
+ "moduleType": "entry"
+ },
+ "abilities": [
+ {
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ],
+ "orientation": "unspecified",
+ "name": "com.assigment.myapp.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/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/MainAbility.java b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/MainAbility.java
new file mode 100644
index 00000000..bb2570c1
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/MainAbility.java
@@ -0,0 +1,13 @@
+package com.assigment.myapp;
+
+import com.assigment.myapp.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/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/MyApplication.java b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/MyApplication.java
new file mode 100644
index 00000000..35fc605a
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/MyApplication.java
@@ -0,0 +1,10 @@
+package com.assigment.myapp;
+
+import ohos.aafwk.ability.AbilityPackage;
+
+public class MyApplication extends AbilityPackage {
+ @Override
+ public void onInitialize() {
+ super.onInitialize();
+ }
+}
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/Utils/Constants.java b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/Utils/Constants.java
new file mode 100644
index 00000000..f0ab012c
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/Utils/Constants.java
@@ -0,0 +1,10 @@
+package com.assigment.myapp.Utils;
+
+public class Constants {
+ public static String DB_NAME = "accountDb.db";
+ public static String DB_ALIAS_NAME = "AccountDb";
+ public static String FIELD_EMAIL = "email";
+ public static String FIELD_FIRSTNAME = "firstName";
+ public static String FIELD_GENDER = "gender";
+ public static String FIELD_PASSWORD = "password";
+}
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/Utils/PatternUtils.java b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/Utils/PatternUtils.java
new file mode 100644
index 00000000..66c3482e
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/Utils/PatternUtils.java
@@ -0,0 +1,37 @@
+package com.assigment.myapp.Utils;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class PatternUtils {
+ private static final String PATTERN_NUMBER_REGEX = ".*\\d.*";
+ private static final String PATTERN_SPECIAL_CHAR = "[^a-zA-Z0-9]";
+ private static final String PATTERN_NUMBER = "[^0-9]";
+ public static boolean isConsistOfNumber(String string) {
+ return string.matches(PATTERN_NUMBER_REGEX);
+ }
+
+ /**
+ * checks if the string contains a special character
+ *
+ * @param string - input string
+ * @return - true if it contains, else return false
+ */
+ public static boolean isContainSpecialCharacter(String string) {
+ Pattern pattern = Pattern.compile(PATTERN_SPECIAL_CHAR);
+ Matcher matcher = pattern.matcher(string);
+ return matcher.find();
+ }
+
+ /**
+ * checks if string contains only numbers
+ *
+ * @param string - input string
+ * @return true if it contains only numbers, else return false
+ */
+ public static boolean isContainOnlyNumber(String string) {
+ Pattern pattern = Pattern.compile(PATTERN_NUMBER);
+ Matcher matcher = pattern.matcher(string);
+ return !matcher.find();
+ }
+}
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/data/AccountDb.java b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/data/AccountDb.java
new file mode 100644
index 00000000..4c6a532a
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/data/AccountDb.java
@@ -0,0 +1,9 @@
+package com.assigment.myapp.data;
+
+import ohos.data.orm.OrmDatabase;
+import ohos.data.orm.annotation.Database;
+
+@Database(entities = {User.class}, version = 1)
+public abstract class AccountDb extends OrmDatabase {
+
+}
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/data/User.java b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/data/User.java
new file mode 100644
index 00000000..8b74c3d6
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/data/User.java
@@ -0,0 +1,70 @@
+package com.assigment.myapp.data;
+
+import ohos.data.orm.OrmObject;
+import ohos.data.orm.annotation.Column;
+import ohos.data.orm.annotation.Entity;
+import ohos.data.orm.annotation.PrimaryKey;
+
+@Entity(tableName = "User")
+public class User extends OrmObject {
+ @PrimaryKey
+ private String email;
+ @Column
+ private String password;
+ @Column
+ private String firstName;
+ @Column
+ private String lastName;
+ @Column
+ private String mobileNumber;
+ @Column
+ private String gender;
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String 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 getMobileNumber() {
+ return mobileNumber;
+ }
+
+ public void setMobileNumber(String mobileNumber) {
+ this.mobileNumber = mobileNumber;
+ }
+
+ public String getGender() {
+ return gender;
+ }
+
+ public void setGender(String gender) {
+ this.gender = gender;
+ }
+}
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/slice/IntroSlice.java b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/slice/IntroSlice.java
new file mode 100644
index 00000000..8299cb9a
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/slice/IntroSlice.java
@@ -0,0 +1,32 @@
+package com.assigment.myapp.slice;
+
+import com.assigment.myapp.ResourceTable;
+import com.assigment.myapp.Utils.Constants;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.agp.components.Text;
+
+public class IntroSlice extends AbilitySlice {
+ private static String GENDER_MALE = "M";
+ private static String GENDER_MALE_SALUTATION = "Mr.";
+ private static String GENDER_FEMALE_SALUTATION = "Ms.";
+ private static String SPACE = " ";
+
+ Text introText;
+ @Override
+ protected void onStart(Intent intent) {
+ super.onStart(intent);
+ setUIContent(ResourceTable.Layout_intro_page);
+ String firstName = intent.getStringParam(Constants.FIELD_FIRSTNAME);
+ String gender = intent.getStringParam(Constants.FIELD_GENDER);
+ String prefix;
+ if (gender.equalsIgnoreCase(GENDER_MALE)) {
+ prefix = GENDER_MALE_SALUTATION;
+ } else {
+ prefix = GENDER_FEMALE_SALUTATION;
+ }
+ introText = (Text) findComponentById(ResourceTable.Id_intro_text);
+ introText.setText(this.getString(ResourceTable.String_welcome)+SPACE+prefix+firstName);
+
+ }
+}
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/slice/LoginAbilitySlice.java b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/slice/LoginAbilitySlice.java
new file mode 100644
index 00000000..8dd800c7
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/slice/LoginAbilitySlice.java
@@ -0,0 +1,93 @@
+package com.assigment.myapp.slice;
+
+import com.assigment.myapp.ResourceTable;
+import com.assigment.myapp.Utils.Constants;
+import com.assigment.myapp.data.AccountDb;
+import com.assigment.myapp.data.User;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.agp.components.Button;
+import ohos.agp.components.Component;
+import ohos.agp.components.Text;
+import ohos.agp.components.TextField;
+import ohos.agp.window.dialog.ToastDialog;
+import ohos.data.DatabaseHelper;
+import ohos.data.orm.OrmContext;
+import ohos.data.orm.OrmPredicates;
+
+import java.util.List;
+
+import static com.assigment.myapp.Utils.Constants.DB_ALIAS_NAME;
+import static com.assigment.myapp.Utils.Constants.DB_NAME;
+
+public class LoginAbilitySlice extends AbilitySlice {
+ private TextField emailField;
+ private Text emailError;
+ private TextField passwordField;
+ private Button loginBtn;
+ private OrmContext ormContext;
+
+ @Override
+ protected void onStart(Intent intent) {
+ super.onStart(intent);
+ setUIContent(ResourceTable.Layout_login_page);
+ initViews();
+ initListeners();
+ initDb();
+ }
+
+ private void initViews() {
+ emailField = (TextField) findComponentById(ResourceTable.Id_login_email);
+ emailError = (Text) findComponentById(ResourceTable.Id_login_email_error);
+ passwordField = (TextField) findComponentById(ResourceTable.Id_login_password);
+ loginBtn = (Button) findComponentById(ResourceTable.Id_login_btn);
+ }
+
+ private void initListeners() {
+ emailField.addTextObserver((input, start, before, count) -> validateEmail(input));
+ loginBtn.setClickedListener(component -> handleLogin(component));
+ }
+
+ public void validateEmail(String email) {
+ if (email == null) {
+ return;
+ }
+ if (!(email.contains("@") && email.contains(".com"))) {
+ emailError.setVisibility(Component.VISIBLE);
+ } else {
+ emailError.setVisibility(Component.HIDE);
+ }
+ }
+
+ private void handleLogin(Component component) {
+ ToastDialog toastDialog = new ToastDialog(component.getContext());
+ if (emailField.getText() == null
+ || passwordField.getText() == null
+ || emailField.getText().isEmpty()
+ || passwordField.getText().isEmpty()) {
+ toastDialog.setText(component.getContext().getString(ResourceTable.String_login_error_empty_fields)).show();
+ } else if (emailError.getVisibility() == Component.VISIBLE) {
+ toastDialog.setText(component.getContext().getString(ResourceTable.String_login_error_invalid_email)).show();
+ } else {
+ OrmPredicates ormPredicates = ormContext.where(User.class);
+ ormPredicates.equalTo(Constants.FIELD_EMAIL, emailField.getText());
+ ormPredicates.and();
+ ormPredicates.equalTo(Constants.FIELD_PASSWORD, passwordField.getText());
+ List users = ormContext.query(ormPredicates);
+ if (users == null || users.isEmpty()) {
+ toastDialog.setText(component.getContext().getString(ResourceTable.String_login_error_invalid_credentials)).show();
+ } else {
+ toastDialog.setText(component.getContext().getString(ResourceTable.String_login_success)).show();
+ Intent intent = new Intent();
+ intent.setParam(Constants.FIELD_FIRSTNAME, users.get(0).getFirstName());
+ intent.setParam(Constants.FIELD_GENDER, users.get(0).getGender());
+ present(new IntroSlice(), intent);
+ }
+ }
+ }
+
+ private void initDb() {
+ DatabaseHelper databaseHelper = new DatabaseHelper(this);
+ ormContext = databaseHelper.getOrmContext(DB_ALIAS_NAME, DB_NAME, AccountDb.class);
+ }
+}
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/slice/MainAbilitySlice.java b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/slice/MainAbilitySlice.java
new file mode 100644
index 00000000..e2340fdb
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/slice/MainAbilitySlice.java
@@ -0,0 +1,43 @@
+package com.assigment.myapp.slice;
+
+import com.assigment.myapp.ResourceTable;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.agp.components.Button;
+import ohos.agp.components.Image;
+
+public class MainAbilitySlice extends AbilitySlice {
+ private Image appLogo;
+ private Button login;
+ private Button signup;
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_main);
+ initViews();
+ appLogo.setPixelMap(ResourceTable.Media_my_app);
+ appLogo.setScaleMode(Image.ScaleMode.STRETCH);
+ setListeners();
+ }
+
+ private void initViews() {
+ appLogo = (Image) findComponentById(ResourceTable.Id_image);
+ login = (Button) findComponentById(ResourceTable.Id_login);
+ signup = (Button) findComponentById(ResourceTable.Id_signup);
+ }
+
+ private void setListeners() {
+ login.setClickedListener(component -> present(new LoginAbilitySlice(), new Intent()));
+ signup.setClickedListener(component -> present(new SignUpAbilitySlice(), new Intent()));
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/slice/SignUpAbilitySlice.java b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/slice/SignUpAbilitySlice.java
new file mode 100644
index 00000000..6edf2f3e
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/java/com/assigment/myapp/slice/SignUpAbilitySlice.java
@@ -0,0 +1,209 @@
+package com.assigment.myapp.slice;
+
+import com.assigment.myapp.ResourceTable;
+import com.assigment.myapp.Utils.Constants;
+import com.assigment.myapp.Utils.PatternUtils;
+import com.assigment.myapp.data.AccountDb;
+import com.assigment.myapp.data.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 java.util.List;
+
+import static com.assigment.myapp.Utils.Constants.DB_ALIAS_NAME;
+import static com.assigment.myapp.Utils.Constants.DB_NAME;
+
+public class SignUpAbilitySlice extends AbilitySlice {
+ private static final int MIN_PASSWORD_LENGTH = 5;
+
+ private static String GENDER_MALE = "M";
+
+ private static String GENDER_FEMALE = "F";
+
+ private static int MOBILE_LENGTH = 10;
+
+ private Image appLogo;
+ private TextField firstName;
+ private TextField lastName;
+ private TextField emailField;
+ private TextField passwordField;
+ private TextField mobileField;
+ private RadioButton maleButton;
+ private RadioButton femaleButton;
+ private Text firstNameError;
+ private Text lastNameError;
+ private Text emailError;
+ private Text passwordError;
+ private Text mobileError;
+ private Button submit;
+ private OrmContext ormContext;
+
+ @Override
+ protected void onStart(Intent intent) {
+ super.onStart(intent);
+ setUIContent(ResourceTable.Layout_signup_page);
+ initViews();
+ initListeners();
+ DatabaseHelper databaseHelper = new DatabaseHelper(this);
+ ormContext = databaseHelper.getOrmContext(DB_ALIAS_NAME, DB_NAME, AccountDb.class);
+ }
+
+ private void initViews() {
+ firstName = (TextField) findComponentById(ResourceTable.Id_firstname);
+ lastName = (TextField) findComponentById(ResourceTable.Id_lastname);
+ emailField = (TextField) findComponentById(ResourceTable.Id_email);
+ passwordField = (TextField) findComponentById(ResourceTable.Id_password);
+ mobileField = (TextField) findComponentById(ResourceTable.Id_mobile);
+
+ firstNameError = (Text) findComponentById(ResourceTable.Id_firstname_error);
+ lastNameError = (Text) findComponentById(ResourceTable.Id_lastname_error);
+ emailError = (Text) findComponentById(ResourceTable.Id_email_error);
+ passwordError = (Text) findComponentById(ResourceTable.Id_password_error);
+ mobileError = (Text) findComponentById(ResourceTable.Id_mobile_error);
+
+ maleButton = (RadioButton) findComponentById(ResourceTable.Id_gender_male);
+ femaleButton = (RadioButton) findComponentById(ResourceTable.Id_gender_female);
+
+ submit = (Button) findComponentById(ResourceTable.Id_signup_btn);
+ appLogo = (Image) findComponentById(ResourceTable.Id_signup_page_header);
+ appLogo.setPixelMap(ResourceTable.Media_my_app);
+ appLogo.setScaleMode(Image.ScaleMode.STRETCH);
+ }
+
+ private void initListeners() {
+ firstName.addTextObserver((input,start,before, count)-> validateName(firstNameError,input));
+ lastName.addTextObserver((input, start, before, count)-> validateName(lastNameError,input));
+ emailField.addTextObserver((input, start, before, count) -> validateEmail(input));
+ passwordField.addTextObserver((input, start, before, count) -> validatePassword(input));
+ mobileField.addTextObserver((input, start, before, count) -> validateMobile(input));
+ submit.setClickedListener(component -> handleSubmitClick(component));
+ }
+
+ /**
+ * validates the firstname and last name
+ *
+ * @param errorText - error text object for the respective textfield
+ * @param input - input string in the textfield
+ */
+ public void validateName(Text errorText, String input) {
+ if (input == null) {
+ return;
+ }
+ if (PatternUtils.isConsistOfNumber(input) || PatternUtils.isContainSpecialCharacter(input)) {
+ errorText.setVisibility(Component.VISIBLE);
+ } else {
+ errorText.setVisibility(Component.HIDE);
+ }
+ }
+
+ /**
+ * validates if its a valid email address or not
+ *
+ * @param email - email string entered by user
+ */
+ public void validateEmail(String email){
+ if (email==null) {
+ return;
+ }
+ if (!(email.contains("@") && email.contains(".com"))) {
+ emailError.setVisibility(Component.VISIBLE);
+ } else {
+ emailError.setVisibility(Component.HIDE);
+ }
+ }
+
+ /**
+ * validates if its a valid password or not. If the string>5 and contains a special character, then its valid
+ *
+ * @param password - password string entered by user
+ */
+ public void validatePassword(String password) {
+ if (password == null) {
+ return;
+ }
+ if (password.length() < MIN_PASSWORD_LENGTH || !PatternUtils.isContainSpecialCharacter(password)) {
+ passwordError.setVisibility(Component.VISIBLE);
+ } else {
+ passwordError.setVisibility(Component.HIDE);
+ }
+ }
+
+ /**
+ * validates mobile number. If the number is less that 10 digits and contains non numeric chars,
+ * then its invalid
+ *
+ * @param mobile
+ */
+ public void validateMobile(String mobile) {
+ if (mobile == null) {
+ return;
+ }
+ if (mobile.length() < MOBILE_LENGTH || !PatternUtils.isContainOnlyNumber(mobile)) {
+ mobileError.setVisibility(Component.VISIBLE);
+ } else {
+ mobileError.setVisibility(Component.HIDE);
+ }
+ }
+
+ /**
+ * checks if the form can be submitted or not
+ *
+ * @param component - button
+ */
+ public void handleSubmitClick(Component component) {
+ ToastDialog toastDialog = new ToastDialog(component.getContext());
+ if (firstName.getText() == null
+ || lastName.getText() == null
+ || emailField.getText() == null
+ || passwordField.getText() == null
+ || mobileField.getText() == null
+ || firstName.getText().isEmpty()
+ || lastName.getText().isEmpty()
+ || emailField.getText().isEmpty()
+ || mobileField.getText().isEmpty()) {
+ toastDialog.setText(component.getContext().getString(ResourceTable.String_submit_error)).show();
+ } else if (firstNameError.getVisibility() == Component.VISIBLE
+ || lastNameError.getVisibility() == Component.VISIBLE
+ || emailError.getVisibility() == Component.VISIBLE
+ || passwordError.getVisibility() == Component.VISIBLE
+ || mobileError.getVisibility() == Component.VISIBLE) {
+ toastDialog.setText(component.getContext().getString(ResourceTable.String_submit_error)).show();
+ } else if (!maleButton.isChecked() && !femaleButton.isChecked()) {
+ toastDialog.setText(component.getContext().getString(ResourceTable.String_error_select_gender)).show();
+ } else {
+ User user = new User();
+ user.setEmail(emailField.getText());
+ user.setPassword(passwordField.getText());
+ user.setFirstName(firstName.getText());
+ user.setLastName(lastName.getText());
+ user.setMobileNumber(mobileField.getText());
+ user.setGender(maleButton.isChecked() ? GENDER_MALE : GENDER_FEMALE);
+ if (canInsertUserinAccountDb(user)) {
+ insetUserIntoAccountDb(user);
+ toastDialog.setText(component.getContext().getString(ResourceTable.String_submit_success)).show();
+ } else {
+ toastDialog.setText(component.getContext().getString(ResourceTable.String_submit_account_exist_error)).show();
+ }
+ }
+ }
+
+ private boolean canInsertUserinAccountDb(User user) {
+ OrmPredicates ormPredicates = ormContext.where(User.class);
+ ormPredicates.equalTo(Constants.FIELD_EMAIL, user.getEmail());
+ List users = ormContext.query(ormPredicates);
+ if (users == null || users.size() == 0) {
+ return true;
+ }
+ return false;
+ }
+
+ public void insetUserIntoAccountDb(User user) {
+ ormContext.insert(user);
+ ormContext.flush();
+ }
+}
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/element/color.json b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/element/color.json
new file mode 100644
index 00000000..027b81ce
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/element/color.json
@@ -0,0 +1,17 @@
+{
+ "color": [
+ {
+ "name": "gray",
+ "value": "#FF98A2A2"
+ },
+ {
+ "name": "black",
+ "value": "#000000"
+ },
+ {
+ "name": "white",
+ "value": "#FFFFFF"
+ }
+
+ ]
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/element/float.json b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/element/float.json
new file mode 100644
index 00000000..8c7b1c50
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/element/float.json
@@ -0,0 +1,120 @@
+{
+ "float": [
+ {
+ "name": "signup_start_margin",
+ "value": "10vp"
+ },
+ {
+ "name": "signup_end_margin",
+ "value": "10vp"
+ },
+ {
+ "name": "signup_bottom_margin",
+ "value": "20vp"
+ },
+ {
+ "name": "signup_page_header_top_margin",
+ "value": "50vp"
+ },
+ {
+ "name": "signup_page_header_width",
+ "value": "100vp"
+ },
+ {
+ "name": "signup_page_header_height",
+ "value": "100vp"
+ },
+ {
+ "name": "signup_page_field_height",
+ "value": "30vp"
+ },
+ {
+ "name": "signup_page_field_text_size",
+ "value": "20vp"
+ },
+ {
+ "name": "signup_page_error_text_size",
+ "value": "15vp"
+ },
+ {
+ "name": "signup_page_radio_container_text_size",
+ "value": "30vp"
+ },
+ {
+ "name": "signup_page_field_top_margin",
+ "value": "20vp"
+ },
+ {
+ "name": "signup_page_first_name_top_margin",
+ "value": "40vp"
+ },
+ {
+ "name": "signup_page_field_padding",
+ "value": "3vp"
+ },
+ {
+ "name": "signup_page_submit_btn_padding",
+ "value": "5vp"
+ },
+ {
+ "name": "signup_page_submit_btn_text_size",
+ "value": "30vp"
+ },
+ {
+ "name": "signup_page_submit_btn_width",
+ "value": "200vp"
+ },
+ {
+ "name": "radio_container_top_margin",
+ "value": "10vp"
+ },
+ {
+ "name": "main_page_field_width",
+ "value": "200vp"
+ },
+ {
+ "name": "main_page_field_height",
+ "value": "200vp"
+ },
+ {
+ "name": "main_page_field_padding",
+ "value": "5vp"
+ },
+ {
+ "name": "main_page_login_top_margin",
+ "value": "70vp"
+ },
+ {
+ "name": "main_page_text_size",
+ "value": "20vp"
+ },
+ {
+ "name": "main_page_signup_top_margin",
+ "value": "40vp"
+ },
+ {
+ "name": "main_page_image_top_margin",
+ "value": "100vp"
+ },
+ {
+ "name": "login_image_top_margin",
+ "value": "70vp"
+ },
+ {
+ "name": "text_padding",
+ "value": "15vp"
+ },
+ {
+ "name": "login_page_field_top_margin",
+ "value": "30vp"
+ },
+ {
+ "name": "login_page_email_field_top_margin",
+ "value": "50vp"
+ },
+ {
+ "name": "login_page_button_field_top_margin",
+ "value": "50vp"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/element/string.json b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/element/string.json
new file mode 100644
index 00000000..043decaa
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/element/string.json
@@ -0,0 +1,120 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "myAPP"
+ },
+ {
+ "name": "mainability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "HelloWorld",
+ "value": "Hello World"
+ },
+ {
+ "name": "email",
+ "value": "Email"
+ },
+ {
+ "name": "password",
+ "value": "Password"
+ },
+ {
+ "name": "Username",
+ "value": "username"
+ },
+ {
+ "name": "gender",
+ "value": "Gender"
+ },
+ {
+ "name": "mobile",
+ "value": "Mobile"
+ },
+ {
+ "name": "dob",
+ "value": "Birthday"
+ },
+ {
+ "name": "signup",
+ "value": "SIGN UP"
+ },
+ {
+ "name": "login",
+ "value": "LOGIN"
+ },
+ {
+ "name": "first_name",
+ "value": "First Name"
+ },
+ {
+ "name": "last_name",
+ "value": "Last Name"
+ },
+ {
+ "name": "email_error_text",
+ "value": "Invalid Email format..!!"
+ },
+ {
+ "name": "first_name_error_text",
+ "value": "must not contain alphanumeric text or integers"
+ },
+ {
+ "name": "last_name_error_text",
+ "value": "must not contain alphanumeric text or integers"
+ },
+ {
+ "name": "mobile_error_text",
+ "value": "Invalid mobile number - must contain only numbers"
+ },
+ {
+ "name": "password_error_text",
+ "value": "Weak password - must contain atleast 5 characters including a special character"
+ },
+ {
+ "name": "submit_error",
+ "value": "Submit ERROR..!!"
+ },
+ {
+ "name": "submit_success",
+ "value": "Submit SUCCESS..!!"
+ },
+ {
+ "name": "error_select_gender",
+ "value": "ERROR - Select gender"
+ },
+ {
+ "name": "radio_male",
+ "value": "Male"
+ },
+ {
+ "name": "radio_female",
+ "value": "Female"
+ },
+ {
+ "name": "submit_account_exist_error",
+ "value": "Account already exist..!!"
+ },
+ {
+ "name": "login_error_empty_fields",
+ "value": "Login error - Fields empty!!"
+ },
+ {
+ "name": "login_error_invalid_email",
+ "value": "Login error - Invalid email"
+ },
+ {
+ "name": "login_error_invalid_credentials",
+ "value": "Login error - Invalid credentials"
+ },
+ {
+ "name": "login_success",
+ "value": "Login SUCCESS"
+ },
+ {
+ "name": "welcome",
+ "value": "WELCOME"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/graphic/background_ability_main.xml b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/graphic/background_ability_main.xml
new file mode 100644
index 00000000..c0c0a3df
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/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/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/graphic/button_background.xml b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/graphic/button_background.xml
new file mode 100644
index 00000000..80fca8cc
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/graphic/button_background.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/graphic/textfield_background.xml b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/graphic/textfield_background.xml
new file mode 100644
index 00000000..7108356c
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/graphic/textfield_background.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/layout/ability_main.xml b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/layout/ability_main.xml
new file mode 100644
index 00000000..da94cf13
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/layout/ability_main.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/layout/intro_page.xml b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/layout/intro_page.xml
new file mode 100644
index 00000000..766d65e5
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/layout/intro_page.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/layout/login_page.xml b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/layout/login_page.xml
new file mode 100644
index 00000000..19eebb2a
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/layout/login_page.xml
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/layout/signup_page.xml b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/layout/signup_page.xml
new file mode 100644
index 00000000..16e400b8
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/layout/signup_page.xml
@@ -0,0 +1,215 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/media/icon.png b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/media/icon.png
new file mode 100644
index 00000000..ce307a88
Binary files /dev/null and b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/media/icon.png differ
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/media/my_app.jpg b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/media/my_app.jpg
new file mode 100644
index 00000000..bf707e63
Binary files /dev/null and b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/main/resources/base/media/my_app.jpg differ
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/ohosTest/config.json b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/ohosTest/config.json
new file mode 100644
index 00000000..aae4b173
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/ohosTest/config.json
@@ -0,0 +1,41 @@
+{
+ "app": {
+ "bundleName": "com.assigmentday2.MyApp2",
+ "vendor": "assigmentday2",
+ "version": {
+ "code": 1,
+ "name": "1.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Beta1"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.assigmentday2.MyApp2",
+ "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/ChakradharChokkaku/MyApp_Day3/entry/src/ohosTest/java/com/assigment/myapp/ExampleOhosTest.java b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/ohosTest/java/com/assigment/myapp/ExampleOhosTest.java
new file mode 100644
index 00000000..5d767f78
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/ohosTest/java/com/assigment/myapp/ExampleOhosTest.java
@@ -0,0 +1,14 @@
+package com.assigment.myapp;
+
+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.assigment.MyApp", actualBundleName);
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/test/java/com/assigment/myapp/ExampleTest.java b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/test/java/com/assigment/myapp/ExampleTest.java
new file mode 100644
index 00000000..b0b55cc0
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/entry/src/test/java/com/assigment/myapp/ExampleTest.java
@@ -0,0 +1,9 @@
+package com.assigment.myapp;
+
+import org.junit.Test;
+
+public class ExampleTest {
+ @Test
+ public void onStart() {
+ }
+}
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/gradle.properties b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/gradle.properties
new file mode 100644
index 00000000..0daf1830
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/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/ChakradharChokkaku/MyApp_Day3/gradle/wrapper/gradle-wrapper.jar b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..490fda85
Binary files /dev/null and b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/gradle/wrapper/gradle-wrapper.properties b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..f59159e8
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/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/ChakradharChokkaku/MyApp_Day3/gradlew b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/gradlew
new file mode 100644
index 00000000..2fe81a7d
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/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/ChakradharChokkaku/MyApp_Day3/gradlew.bat b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/gradlew.bat
new file mode 100644
index 00000000..62bd9b9c
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/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/ChakradharChokkaku/MyApp_Day3/settings.gradle b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/settings.gradle
new file mode 100644
index 00000000..4773db73
--- /dev/null
+++ b/HarmonyOS/Day3 Assingment/ChakradharChokkaku/MyApp_Day3/settings.gradle
@@ -0,0 +1 @@
+include ':entry'
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/.gitignore b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/.gitignore
new file mode 100644
index 00000000..37a4eb8b
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/.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/ChakradharChokkaku/MyApp_Day5/.idea/.gitignore b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/.idea/compiler.xml b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/.idea/compiler.xml
new file mode 100644
index 00000000..61a9130c
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/.idea/gradle.xml b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/.idea/gradle.xml
new file mode 100644
index 00000000..b9090f42
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/.idea/gradle.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/.idea/jarRepositories.xml b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/.idea/jarRepositories.xml
new file mode 100644
index 00000000..1dfcd020
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/.idea/misc.xml b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/.idea/misc.xml
new file mode 100644
index 00000000..58918f50
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/.idea/previewer/phone/phoneSettingConfig_-668946747.json b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/.idea/previewer/phone/phoneSettingConfig_-668946747.json
new file mode 100644
index 00000000..69beee7f
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/.idea/previewer/phone/phoneSettingConfig_-668946747.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/ChakradharChokkaku/MyApp_Day5/.idea/previewer/phone/phoneSettingConfig_2104963571.json b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/.idea/previewer/phone/phoneSettingConfig_2104963571.json
new file mode 100644
index 00000000..f505e6b9
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/.idea/previewer/phone/phoneSettingConfig_2104963571.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/ChakradharChokkaku/MyApp_Day5/.idea/previewer/previewConfig.json b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/.idea/previewer/previewConfig.json
new file mode 100644
index 00000000..3f7dc1b8
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/.idea/previewer/previewConfig.json
@@ -0,0 +1,12 @@
+{
+ "1.0.0": {
+ "LastPreviewDevice": {
+ "D:\\workspace\\HMOS\\DevEcoProjects\\MyApp2\\entry": [
+ "phone"
+ ],
+ "D:\\workspace\\HMOS\\DevEcoProjects\\Assignment-Day2\\MyApp\\entry": [
+ "phone"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/build.gradle b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/build.gradle
new file mode 100644
index 00000000..8446a40b
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/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.6'
+ }
+}
+
+allprojects {
+ repositories {
+ maven {
+ url 'https://repo.huaweicloud.com/repository/maven/'
+ }
+ maven {
+ url 'https://developer.huawei.com/repo/'
+ }
+ jcenter()
+ }
+}
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/.gitignore b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/.gitignore
new file mode 100644
index 00000000..796b96d1
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/build.gradle b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/build.gradle
new file mode 100644
index 00000000..3033cb87
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/build.gradle
@@ -0,0 +1,31 @@
+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'])
+ compile files('libs/ohos.jar','libs/orm_annotations_java.jar', 'libs/orm_annotations_processor_java.jar', 'libs/javapoet_java.jar')
+ annotationProcessor files('libs/orm_annotations_java.jar', 'libs/orm_annotations_processor_java.jar', 'libs/javapoet_java.jar')
+ 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/ChakradharChokkaku/MyApp_Day5/entry/libs/javapoet_java.jar b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/libs/javapoet_java.jar
new file mode 100644
index 00000000..00c9f224
Binary files /dev/null and b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/libs/javapoet_java.jar differ
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/libs/ohos.jar b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/libs/ohos.jar
new file mode 100644
index 00000000..2db8d228
Binary files /dev/null and b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/libs/ohos.jar differ
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/libs/orm_annotations_java.jar b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/libs/orm_annotations_java.jar
new file mode 100644
index 00000000..77f4815a
Binary files /dev/null and b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/libs/orm_annotations_java.jar differ
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/libs/orm_annotations_processor_java.jar b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/libs/orm_annotations_processor_java.jar
new file mode 100644
index 00000000..bbfd41bb
Binary files /dev/null and b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/libs/orm_annotations_processor_java.jar differ
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/proguard-rules.pro b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/proguard-rules.pro
new file mode 100644
index 00000000..f7666e47
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/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/ChakradharChokkaku/MyApp_Day5/entry/src/main/config.json b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/config.json
new file mode 100644
index 00000000..1ca7017c
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/config.json
@@ -0,0 +1,49 @@
+{
+ "app": {
+ "bundleName": "com.assigmentday.MyApp",
+ "vendor": "assigmentday",
+ "version": {
+ "code": 1,
+ "name": "1.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Release"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.assigment.myapp",
+ "name": ".MyApplication",
+ "deviceType": [
+ "phone"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "entry",
+ "moduleType": "entry"
+ },
+ "abilities": [
+ {
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ],
+ "orientation": "unspecified",
+ "name": "com.assigment.myapp.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/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/MainAbility.java b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/MainAbility.java
new file mode 100644
index 00000000..bb2570c1
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/MainAbility.java
@@ -0,0 +1,13 @@
+package com.assigment.myapp;
+
+import com.assigment.myapp.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/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/MyApplication.java b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/MyApplication.java
new file mode 100644
index 00000000..35fc605a
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/MyApplication.java
@@ -0,0 +1,10 @@
+package com.assigment.myapp;
+
+import ohos.aafwk.ability.AbilityPackage;
+
+public class MyApplication extends AbilityPackage {
+ @Override
+ public void onInitialize() {
+ super.onInitialize();
+ }
+}
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/Utils/AnimationUtils.java b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/Utils/AnimationUtils.java
new file mode 100644
index 00000000..b84a7a2e
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/Utils/AnimationUtils.java
@@ -0,0 +1,53 @@
+package com.assigment.myapp.Utils;
+
+import ohos.agp.animation.Animator;
+import ohos.agp.animation.AnimatorProperty;
+import ohos.agp.components.Image;
+
+public class AnimationUtils {
+ private static float ZERO_FLOAT = 0.0f;
+ private static float ONE_FLOAT = 1.0f;
+ private static long ANIM_DURATION = 700;
+
+ public static void setAppLogoAnimation(Image appLogo){
+ {
+ AnimatorProperty animatorProperty = appLogo.createAnimatorProperty().setCurveType(Animator.CurveType.CUBIC_BEZIER_EXTREME_DECELERATION)
+ .scaleXFrom(ONE_FLOAT).scaleX(ZERO_FLOAT).scaleYFrom(ONE_FLOAT).scaleY(ZERO_FLOAT).setDuration(ANIM_DURATION);
+ animatorProperty.setStateChangedListener(new Animator.StateChangedListener() {
+ @Override
+ public void onStart(Animator animator) {
+ }
+
+ @Override
+ public void onStop(Animator animator) {
+
+ }
+
+ @Override
+ public void onCancel(Animator animator) {
+
+ }
+
+ @Override
+ public void onEnd(Animator animator) {
+ if (animatorProperty.getTarget().getScaleX() == ZERO_FLOAT
+ && animatorProperty.getTarget().getScaleY() == ZERO_FLOAT) {
+ animatorProperty.setCurveType(Animator.CurveType.OVERSHOOT)
+ .scaleXFrom(ZERO_FLOAT).scaleX(ONE_FLOAT).scaleYFrom(ZERO_FLOAT).scaleY(ONE_FLOAT).setDuration(ANIM_DURATION).start();
+ }
+ }
+
+ @Override
+ public void onPause(Animator animator) {
+
+ }
+
+ @Override
+ public void onResume(Animator animator) {
+
+ }
+ });
+ animatorProperty.start();
+ }
+ }
+}
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/Utils/Constants.java b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/Utils/Constants.java
new file mode 100644
index 00000000..f0ab012c
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/Utils/Constants.java
@@ -0,0 +1,10 @@
+package com.assigment.myapp.Utils;
+
+public class Constants {
+ public static String DB_NAME = "accountDb.db";
+ public static String DB_ALIAS_NAME = "AccountDb";
+ public static String FIELD_EMAIL = "email";
+ public static String FIELD_FIRSTNAME = "firstName";
+ public static String FIELD_GENDER = "gender";
+ public static String FIELD_PASSWORD = "password";
+}
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/Utils/PatternUtils.java b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/Utils/PatternUtils.java
new file mode 100644
index 00000000..66c3482e
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/Utils/PatternUtils.java
@@ -0,0 +1,37 @@
+package com.assigment.myapp.Utils;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class PatternUtils {
+ private static final String PATTERN_NUMBER_REGEX = ".*\\d.*";
+ private static final String PATTERN_SPECIAL_CHAR = "[^a-zA-Z0-9]";
+ private static final String PATTERN_NUMBER = "[^0-9]";
+ public static boolean isConsistOfNumber(String string) {
+ return string.matches(PATTERN_NUMBER_REGEX);
+ }
+
+ /**
+ * checks if the string contains a special character
+ *
+ * @param string - input string
+ * @return - true if it contains, else return false
+ */
+ public static boolean isContainSpecialCharacter(String string) {
+ Pattern pattern = Pattern.compile(PATTERN_SPECIAL_CHAR);
+ Matcher matcher = pattern.matcher(string);
+ return matcher.find();
+ }
+
+ /**
+ * checks if string contains only numbers
+ *
+ * @param string - input string
+ * @return true if it contains only numbers, else return false
+ */
+ public static boolean isContainOnlyNumber(String string) {
+ Pattern pattern = Pattern.compile(PATTERN_NUMBER);
+ Matcher matcher = pattern.matcher(string);
+ return !matcher.find();
+ }
+}
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/data/AccountDb.java b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/data/AccountDb.java
new file mode 100644
index 00000000..4c6a532a
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/data/AccountDb.java
@@ -0,0 +1,9 @@
+package com.assigment.myapp.data;
+
+import ohos.data.orm.OrmDatabase;
+import ohos.data.orm.annotation.Database;
+
+@Database(entities = {User.class}, version = 1)
+public abstract class AccountDb extends OrmDatabase {
+
+}
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/data/User.java b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/data/User.java
new file mode 100644
index 00000000..8b74c3d6
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/data/User.java
@@ -0,0 +1,70 @@
+package com.assigment.myapp.data;
+
+import ohos.data.orm.OrmObject;
+import ohos.data.orm.annotation.Column;
+import ohos.data.orm.annotation.Entity;
+import ohos.data.orm.annotation.PrimaryKey;
+
+@Entity(tableName = "User")
+public class User extends OrmObject {
+ @PrimaryKey
+ private String email;
+ @Column
+ private String password;
+ @Column
+ private String firstName;
+ @Column
+ private String lastName;
+ @Column
+ private String mobileNumber;
+ @Column
+ private String gender;
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String 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 getMobileNumber() {
+ return mobileNumber;
+ }
+
+ public void setMobileNumber(String mobileNumber) {
+ this.mobileNumber = mobileNumber;
+ }
+
+ public String getGender() {
+ return gender;
+ }
+
+ public void setGender(String gender) {
+ this.gender = gender;
+ }
+}
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/slice/IntroSlice.java b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/slice/IntroSlice.java
new file mode 100644
index 00000000..8ef77e4c
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/slice/IntroSlice.java
@@ -0,0 +1,57 @@
+package com.assigment.myapp.slice;
+
+import com.assigment.myapp.ResourceTable;
+import com.assigment.myapp.Utils.AnimationUtils;
+import com.assigment.myapp.Utils.Constants;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.agp.components.Component;
+import ohos.agp.components.Image;
+import ohos.agp.components.Text;
+
+public class IntroSlice extends AbilitySlice {
+ private static String GENDER_MALE = "M";
+ private static String GENDER_MALE_SALUTATION = "Mr.";
+ private static String GENDER_FEMALE_SALUTATION = "Ms.";
+ private static String SPACE = " ";
+
+ private Image appLogo;
+ private Text introText;
+
+ @Override
+ protected void onStart(Intent intent) {
+ super.onStart(intent);
+ setUIContent(ResourceTable.Layout_intro_page);
+ initViews(intent);
+ initListener();
+ }
+
+ private void initViews(Intent intent) {
+ appLogo = (Image) findComponentById(ResourceTable.Id_intro_image);
+ introText = (Text) findComponentById(ResourceTable.Id_intro_text);
+ String firstName = intent.getStringParam(Constants.FIELD_FIRSTNAME);
+ String gender = intent.getStringParam(Constants.FIELD_GENDER);
+ String prefix;
+ if (gender.equalsIgnoreCase(GENDER_MALE)) {
+ prefix = GENDER_MALE_SALUTATION;
+ } else {
+ prefix = GENDER_FEMALE_SALUTATION;
+ }
+ introText.setText(this.getString(ResourceTable.String_welcome)+SPACE+prefix+firstName);
+ }
+
+ private void initListener() {
+ appLogo.setClickedListener(component -> AnimationUtils.setAppLogoAnimation(appLogo));
+ appLogo.setBindStateChangedListener(new Component.BindStateChangedListener() {
+ @Override
+ public void onComponentBoundToWindow(Component component) {
+ AnimationUtils.setAppLogoAnimation(appLogo);
+ }
+
+ @Override
+ public void onComponentUnboundFromWindow(Component component) {
+
+ }
+ });
+ }
+}
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/slice/LoginAbilitySlice.java b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/slice/LoginAbilitySlice.java
new file mode 100644
index 00000000..944e5cb5
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/slice/LoginAbilitySlice.java
@@ -0,0 +1,111 @@
+package com.assigment.myapp.slice;
+
+import com.assigment.myapp.ResourceTable;
+import com.assigment.myapp.Utils.AnimationUtils;
+import com.assigment.myapp.Utils.Constants;
+import com.assigment.myapp.data.AccountDb;
+import com.assigment.myapp.data.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 java.util.List;
+
+import static com.assigment.myapp.Utils.Constants.DB_ALIAS_NAME;
+import static com.assigment.myapp.Utils.Constants.DB_NAME;
+
+public class LoginAbilitySlice extends AbilitySlice {
+ private Image appLogo;
+ private TextField emailField;
+ private Text emailError;
+ private TextField passwordField;
+ private Button loginBtn;
+ private OrmContext ormContext;
+
+ @Override
+ protected void onStart(Intent intent) {
+ super.onStart(intent);
+ setUIContent(ResourceTable.Layout_login_page);
+ initViews(intent);
+ initListeners();
+ initDb();
+ }
+
+ private void initViews(Intent intent) {
+ appLogo = (Image) findComponentById(ResourceTable.Id_image);
+ emailField = (TextField) findComponentById(ResourceTable.Id_login_email);
+ emailError = (Text) findComponentById(ResourceTable.Id_login_email_error);
+ passwordField = (TextField) findComponentById(ResourceTable.Id_login_password);
+ loginBtn = (Button) findComponentById(ResourceTable.Id_login_btn);
+ if (intent!=null) {
+ String email = intent.getStringParam(Constants.FIELD_EMAIL);
+ String password = intent.getStringParam(Constants.FIELD_PASSWORD);
+ emailField.setText(email);
+ passwordField.setText(password);
+ }
+ }
+
+ private void initListeners() {
+ appLogo.setClickedListener(component -> AnimationUtils.setAppLogoAnimation(appLogo));
+ emailField.addTextObserver((input, start, before, count) -> validateEmail(input));
+ loginBtn.setClickedListener(component -> handleLogin(component));
+ appLogo.setBindStateChangedListener(new Component.BindStateChangedListener() {
+ @Override
+ public void onComponentBoundToWindow(Component component) {
+ AnimationUtils.setAppLogoAnimation(appLogo);
+ }
+
+ @Override
+ public void onComponentUnboundFromWindow(Component component) {
+
+ }
+ });
+ }
+
+ public void validateEmail(String email) {
+ if (email == null) {
+ return;
+ }
+ if (!(email.contains("@") && email.contains(".com"))) {
+ emailError.setVisibility(Component.VISIBLE);
+ } else {
+ emailError.setVisibility(Component.HIDE);
+ }
+ }
+
+ private void handleLogin(Component component) {
+ ToastDialog toastDialog = new ToastDialog(component.getContext());
+ if (emailField.getText() == null
+ || passwordField.getText() == null
+ || emailField.getText().isEmpty()
+ || passwordField.getText().isEmpty()) {
+ toastDialog.setText(component.getContext().getString(ResourceTable.String_login_error_empty_fields)).show();
+ } else if (emailError.getVisibility() == Component.VISIBLE) {
+ toastDialog.setText(component.getContext().getString(ResourceTable.String_login_error_invalid_email)).show();
+ } else {
+ OrmPredicates ormPredicates = ormContext.where(User.class);
+ ormPredicates.equalTo(Constants.FIELD_EMAIL, emailField.getText());
+ ormPredicates.and();
+ ormPredicates.equalTo(Constants.FIELD_PASSWORD, passwordField.getText());
+ List users = ormContext.query(ormPredicates);
+ if (users == null || users.isEmpty()) {
+ toastDialog.setText(component.getContext().getString(ResourceTable.String_login_error_invalid_credentials)).show();
+ } else {
+ toastDialog.setText(component.getContext().getString(ResourceTable.String_login_success)).show();
+ Intent intent = new Intent();
+ intent.setParam(Constants.FIELD_FIRSTNAME, users.get(0).getFirstName());
+ intent.setParam(Constants.FIELD_GENDER, users.get(0).getGender());
+ present(new IntroSlice(), intent);
+ }
+ }
+ }
+
+ private void initDb() {
+ DatabaseHelper databaseHelper = new DatabaseHelper(this);
+ ormContext = databaseHelper.getOrmContext(DB_ALIAS_NAME, DB_NAME, AccountDb.class);
+ }
+}
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/slice/MainAbilitySlice.java b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/slice/MainAbilitySlice.java
new file mode 100644
index 00000000..8dfe76d0
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/slice/MainAbilitySlice.java
@@ -0,0 +1,57 @@
+package com.assigment.myapp.slice;
+
+import com.assigment.myapp.ResourceTable;
+import com.assigment.myapp.Utils.AnimationUtils;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.agp.components.Button;
+import ohos.agp.components.Component;
+import ohos.agp.components.Image;
+
+public class MainAbilitySlice extends AbilitySlice {
+ private Image appLogo;
+ private Button login;
+ private Button signup;
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_main);
+ initViews();
+ setListeners();
+ }
+
+ private void initViews() {
+ appLogo = (Image) findComponentById(ResourceTable.Id_image);
+ login = (Button) findComponentById(ResourceTable.Id_login);
+ signup = (Button) findComponentById(ResourceTable.Id_signup);
+ appLogo.setPixelMap(ResourceTable.Media_my_app);
+ appLogo.setScaleMode(Image.ScaleMode.STRETCH);
+ }
+
+ private void setListeners() {
+ appLogo.setClickedListener(component -> AnimationUtils.setAppLogoAnimation(appLogo));
+ login.setClickedListener(component -> present(new LoginAbilitySlice(), new Intent()));
+ signup.setClickedListener(component -> present(new SignUpAbilitySlice(), new Intent()));
+ appLogo.setBindStateChangedListener(new Component.BindStateChangedListener() {
+ @Override
+ public void onComponentBoundToWindow(Component component) {
+ AnimationUtils.setAppLogoAnimation(appLogo);
+ }
+
+ @Override
+ public void onComponentUnboundFromWindow(Component component) {
+
+ }
+ });
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+}
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/slice/SignUpAbilitySlice.java b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/slice/SignUpAbilitySlice.java
new file mode 100644
index 00000000..fddb9f99
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/java/com/assigment/myapp/slice/SignUpAbilitySlice.java
@@ -0,0 +1,250 @@
+package com.assigment.myapp.slice;
+
+import com.assigment.myapp.ResourceTable;
+import com.assigment.myapp.Utils.AnimationUtils;
+import com.assigment.myapp.Utils.Constants;
+import com.assigment.myapp.Utils.PatternUtils;
+import com.assigment.myapp.data.AccountDb;
+import com.assigment.myapp.data.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 java.util.List;
+
+import static com.assigment.myapp.Utils.Constants.DB_ALIAS_NAME;
+import static com.assigment.myapp.Utils.Constants.DB_NAME;
+import static ohos.agp.components.ComponentContainer.LayoutConfig.MATCH_CONTENT;
+
+public class SignUpAbilitySlice extends AbilitySlice {
+ private static final int MIN_PASSWORD_LENGTH = 5;
+
+ public static final int DIALOG_BOX_WIDTH = 984;
+
+ private static String GENDER_MALE = "M";
+
+ private static String GENDER_FEMALE = "F";
+
+ private static int MOBILE_LENGTH = 10;
+
+ private Image appLogo;
+ private TextField firstName;
+ private TextField lastName;
+ private TextField emailField;
+ private TextField passwordField;
+ private TextField mobileField;
+ private RadioButton maleButton;
+ private RadioButton femaleButton;
+ private Text firstNameError;
+ private Text lastNameError;
+ private Text emailError;
+ private Text passwordError;
+ private Text mobileError;
+ private Button submit;
+ private OrmContext ormContext;
+
+ @Override
+ protected void onStart(Intent intent) {
+ super.onStart(intent);
+ setUIContent(ResourceTable.Layout_signup_page);
+ initViews();
+ initListeners();
+ DatabaseHelper databaseHelper = new DatabaseHelper(this);
+ ormContext = databaseHelper.getOrmContext(DB_ALIAS_NAME, DB_NAME, AccountDb.class);
+ }
+
+ private void initViews() {
+ firstName = (TextField) findComponentById(ResourceTable.Id_firstname);
+ lastName = (TextField) findComponentById(ResourceTable.Id_lastname);
+ emailField = (TextField) findComponentById(ResourceTable.Id_email);
+ passwordField = (TextField) findComponentById(ResourceTable.Id_password);
+ mobileField = (TextField) findComponentById(ResourceTable.Id_mobile);
+
+ firstNameError = (Text) findComponentById(ResourceTable.Id_firstname_error);
+ lastNameError = (Text) findComponentById(ResourceTable.Id_lastname_error);
+ emailError = (Text) findComponentById(ResourceTable.Id_email_error);
+ passwordError = (Text) findComponentById(ResourceTable.Id_password_error);
+ mobileError = (Text) findComponentById(ResourceTable.Id_mobile_error);
+
+ maleButton = (RadioButton) findComponentById(ResourceTable.Id_gender_male);
+ femaleButton = (RadioButton) findComponentById(ResourceTable.Id_gender_female);
+
+ submit = (Button) findComponentById(ResourceTable.Id_signup_btn);
+ appLogo = (Image) findComponentById(ResourceTable.Id_signup_page_header);
+ appLogo.setPixelMap(ResourceTable.Media_my_app);
+ appLogo.setScaleMode(Image.ScaleMode.STRETCH);
+ }
+
+ private void initListeners() {
+ appLogo.setClickedListener(component -> AnimationUtils.setAppLogoAnimation(appLogo));
+ firstName.addTextObserver((input,start,before, count)-> validateName(firstNameError,input));
+ lastName.addTextObserver((input, start, before, count)-> validateName(lastNameError,input));
+ emailField.addTextObserver((input, start, before, count) -> validateEmail(input));
+ passwordField.addTextObserver((input, start, before, count) -> validatePassword(input));
+ mobileField.addTextObserver((input, start, before, count) -> validateMobile(input));
+ submit.setClickedListener(component -> handleSubmitClick(component));
+ appLogo.setBindStateChangedListener(new Component.BindStateChangedListener() {
+ @Override
+ public void onComponentBoundToWindow(Component component) {
+ AnimationUtils.setAppLogoAnimation(appLogo);
+ }
+
+ @Override
+ public void onComponentUnboundFromWindow(Component component) {
+
+ }
+ });
+ }
+
+ /**
+ * validates the firstname and last name
+ *
+ * @param errorText - error text object for the respective textfield
+ * @param input - input string in the textfield
+ */
+ public void validateName(Text errorText, String input) {
+ if (input == null) {
+ return;
+ }
+ if (PatternUtils.isConsistOfNumber(input) || PatternUtils.isContainSpecialCharacter(input)) {
+ errorText.setVisibility(Component.VISIBLE);
+ } else {
+ errorText.setVisibility(Component.HIDE);
+ }
+ }
+
+ /**
+ * validates if its a valid email address or not
+ *
+ * @param email - email string entered by user
+ */
+ public void validateEmail(String email){
+ if (email==null) {
+ return;
+ }
+ if (!(email.contains("@") && email.contains(".com"))) {
+ emailError.setVisibility(Component.VISIBLE);
+ } else {
+ emailError.setVisibility(Component.HIDE);
+ }
+ }
+
+ /**
+ * validates if its a valid password or not. If the string>5 and contains a special character, then its valid
+ *
+ * @param password - password string entered by user
+ */
+ public void validatePassword(String password) {
+ if (password == null) {
+ return;
+ }
+ if (password.length() < MIN_PASSWORD_LENGTH || !PatternUtils.isContainSpecialCharacter(password)) {
+ passwordError.setVisibility(Component.VISIBLE);
+ } else {
+ passwordError.setVisibility(Component.HIDE);
+ }
+ }
+
+ /**
+ * validates mobile number. If the number is less that 10 digits and contains non numeric chars,
+ * then its invalid
+ *
+ * @param mobile
+ */
+ public void validateMobile(String mobile) {
+ if (mobile == null) {
+ return;
+ }
+ if (mobile.length() < MOBILE_LENGTH || !PatternUtils.isContainOnlyNumber(mobile)) {
+ mobileError.setVisibility(Component.VISIBLE);
+ } else {
+ mobileError.setVisibility(Component.HIDE);
+ }
+ }
+
+ /**
+ * checks if the form can be submitted or not
+ *
+ * @param component - button
+ */
+ public void handleSubmitClick(Component component) {
+ ToastDialog toastDialog = new ToastDialog(component.getContext());
+ if (firstName.getText() == null
+ || lastName.getText() == null
+ || emailField.getText() == null
+ || passwordField.getText() == null
+ || mobileField.getText() == null
+ || firstName.getText().isEmpty()
+ || lastName.getText().isEmpty()
+ || emailField.getText().isEmpty()
+ || mobileField.getText().isEmpty()) {
+ toastDialog.setText(component.getContext().getString(ResourceTable.String_submit_error)).show();
+ } else if (firstNameError.getVisibility() == Component.VISIBLE
+ || lastNameError.getVisibility() == Component.VISIBLE
+ || emailError.getVisibility() == Component.VISIBLE
+ || passwordError.getVisibility() == Component.VISIBLE
+ || mobileError.getVisibility() == Component.VISIBLE) {
+ toastDialog.setText(component.getContext().getString(ResourceTable.String_submit_error)).show();
+ } else if (!maleButton.isChecked() && !femaleButton.isChecked()) {
+ toastDialog.setText(component.getContext().getString(ResourceTable.String_error_select_gender)).show();
+ } else {
+ User user = new User();
+ user.setEmail(emailField.getText());
+ user.setPassword(passwordField.getText());
+ user.setFirstName(firstName.getText());
+ user.setLastName(lastName.getText());
+ user.setMobileNumber(mobileField.getText());
+ user.setGender(maleButton.isChecked() ? GENDER_MALE : GENDER_FEMALE);
+ if (canInsertUserinAccountDb(user)) {
+ insetUserIntoAccountDb(user);
+ showSignupSucessDialog(component, user);
+ } else {
+ toastDialog.setText(component.getContext().getString(ResourceTable.String_submit_account_exist_error)).show();
+ }
+ }
+ }
+
+ private boolean canInsertUserinAccountDb(User user) {
+ OrmPredicates ormPredicates = ormContext.where(User.class);
+ ormPredicates.equalTo(Constants.FIELD_EMAIL, user.getEmail());
+ List users = ormContext.query(ormPredicates);
+ if (users == null || users.size() == 0) {
+ return true;
+ }
+ return false;
+ }
+
+ public void insetUserIntoAccountDb(User user) {
+ ormContext.insert(user);
+ ormContext.flush();
+ }
+
+ public void showSignupSucessDialog(Component component, User user) {
+ CommonDialog commonDialog = new CommonDialog(this);
+ commonDialog.setTitleText(component.getContext().getString(ResourceTable.String_singup_success_dialog_title));
+ commonDialog.setContentText(component.getContext().getString(ResourceTable.String_singup_success_dialog_content));
+ commonDialog.setAutoClosable(true);
+ commonDialog.setSize(MATCH_CONTENT, MATCH_CONTENT);
+ commonDialog.setButton(IDialog.BUTTON1,
+ component.getContext().getString(ResourceTable.String_signup_success_dialog_option_1),
+ (iDialog, i) -> {
+ Intent intent = new Intent();
+ intent.setParam(Constants.FIELD_EMAIL, user.getEmail());
+ intent.setParam(Constants.FIELD_PASSWORD, user.getPassword());
+ present(new LoginAbilitySlice(), intent);
+ iDialog.destroy();
+ });
+ commonDialog.setButton(IDialog.BUTTON2,
+ component.getContext().getString(ResourceTable.String_signup_success_dialog_option_2),
+ (iDialog, i) -> {
+ iDialog.destroy();
+ });
+ commonDialog.show();
+ }
+}
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/element/color.json b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/element/color.json
new file mode 100644
index 00000000..27e2c366
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/element/color.json
@@ -0,0 +1,16 @@
+{
+ "color": [
+ {
+ "name": "gray",
+ "value": "#FF98A2A2"
+ },
+ {
+ "name": "black",
+ "value": "#000000"
+ },
+ {
+ "name": "white",
+ "value": "#FFFFFF"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/element/float.json b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/element/float.json
new file mode 100644
index 00000000..8c7b1c50
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/element/float.json
@@ -0,0 +1,120 @@
+{
+ "float": [
+ {
+ "name": "signup_start_margin",
+ "value": "10vp"
+ },
+ {
+ "name": "signup_end_margin",
+ "value": "10vp"
+ },
+ {
+ "name": "signup_bottom_margin",
+ "value": "20vp"
+ },
+ {
+ "name": "signup_page_header_top_margin",
+ "value": "50vp"
+ },
+ {
+ "name": "signup_page_header_width",
+ "value": "100vp"
+ },
+ {
+ "name": "signup_page_header_height",
+ "value": "100vp"
+ },
+ {
+ "name": "signup_page_field_height",
+ "value": "30vp"
+ },
+ {
+ "name": "signup_page_field_text_size",
+ "value": "20vp"
+ },
+ {
+ "name": "signup_page_error_text_size",
+ "value": "15vp"
+ },
+ {
+ "name": "signup_page_radio_container_text_size",
+ "value": "30vp"
+ },
+ {
+ "name": "signup_page_field_top_margin",
+ "value": "20vp"
+ },
+ {
+ "name": "signup_page_first_name_top_margin",
+ "value": "40vp"
+ },
+ {
+ "name": "signup_page_field_padding",
+ "value": "3vp"
+ },
+ {
+ "name": "signup_page_submit_btn_padding",
+ "value": "5vp"
+ },
+ {
+ "name": "signup_page_submit_btn_text_size",
+ "value": "30vp"
+ },
+ {
+ "name": "signup_page_submit_btn_width",
+ "value": "200vp"
+ },
+ {
+ "name": "radio_container_top_margin",
+ "value": "10vp"
+ },
+ {
+ "name": "main_page_field_width",
+ "value": "200vp"
+ },
+ {
+ "name": "main_page_field_height",
+ "value": "200vp"
+ },
+ {
+ "name": "main_page_field_padding",
+ "value": "5vp"
+ },
+ {
+ "name": "main_page_login_top_margin",
+ "value": "70vp"
+ },
+ {
+ "name": "main_page_text_size",
+ "value": "20vp"
+ },
+ {
+ "name": "main_page_signup_top_margin",
+ "value": "40vp"
+ },
+ {
+ "name": "main_page_image_top_margin",
+ "value": "100vp"
+ },
+ {
+ "name": "login_image_top_margin",
+ "value": "70vp"
+ },
+ {
+ "name": "text_padding",
+ "value": "15vp"
+ },
+ {
+ "name": "login_page_field_top_margin",
+ "value": "30vp"
+ },
+ {
+ "name": "login_page_email_field_top_margin",
+ "value": "50vp"
+ },
+ {
+ "name": "login_page_button_field_top_margin",
+ "value": "50vp"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/element/string.json b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/element/string.json
new file mode 100644
index 00000000..d90f9e3e
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/element/string.json
@@ -0,0 +1,136 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "myAPP"
+ },
+ {
+ "name": "mainability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "HelloWorld",
+ "value": "Hello World"
+ },
+ {
+ "name": "email",
+ "value": "Email"
+ },
+ {
+ "name": "password",
+ "value": "Password"
+ },
+ {
+ "name": "Username",
+ "value": "username"
+ },
+ {
+ "name": "gender",
+ "value": "Gender"
+ },
+ {
+ "name": "mobile",
+ "value": "Mobile"
+ },
+ {
+ "name": "dob",
+ "value": "Birthday"
+ },
+ {
+ "name": "signup",
+ "value": "SIGN UP"
+ },
+ {
+ "name": "login",
+ "value": "LOGIN"
+ },
+ {
+ "name": "first_name",
+ "value": "First Name"
+ },
+ {
+ "name": "last_name",
+ "value": "Last Name"
+ },
+ {
+ "name": "email_error_text",
+ "value": "Invalid Email format..!!"
+ },
+ {
+ "name": "first_name_error_text",
+ "value": "must not contain alphanumeric text or integers"
+ },
+ {
+ "name": "last_name_error_text",
+ "value": "must not contain alphanumeric text or integers"
+ },
+ {
+ "name": "mobile_error_text",
+ "value": "Invalid mobile number - must contain only numbers"
+ },
+ {
+ "name": "password_error_text",
+ "value": "Weak password - must contain atleast 5 characters including a special character"
+ },
+ {
+ "name": "submit_error",
+ "value": "Submit ERROR..!!"
+ },
+ {
+ "name": "submit_success",
+ "value": "Submit SUCCESS..!!"
+ },
+ {
+ "name": "error_select_gender",
+ "value": "ERROR - Select gender"
+ },
+ {
+ "name": "radio_male",
+ "value": "Male"
+ },
+ {
+ "name": "radio_female",
+ "value": "Female"
+ },
+ {
+ "name": "submit_account_exist_error",
+ "value": "Account already exist..!!"
+ },
+ {
+ "name": "login_error_empty_fields",
+ "value": "Login error - Fields empty!!"
+ },
+ {
+ "name": "login_error_invalid_email",
+ "value": "Login error - Invalid email"
+ },
+ {
+ "name": "login_error_invalid_credentials",
+ "value": "Login error - Invalid credentials"
+ },
+ {
+ "name": "login_success",
+ "value": "Login SUCCESS"
+ },
+ {
+ "name": "singup_success_dialog_title",
+ "value": "Signup Success!!"
+ },
+ {
+ "name": "singup_success_dialog_content",
+ "value": "To enter app, Go to Login. Confirm?"
+ },
+ {
+ "name": "signup_success_dialog_option_1",
+ "value": "YES"
+ },
+ {
+ "name": "signup_success_dialog_option_2",
+ "value": "NO"
+ },
+ {
+ "name": "welcome",
+ "value": "Welcome"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/graphic/background_ability_main.xml b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/graphic/background_ability_main.xml
new file mode 100644
index 00000000..c0c0a3df
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/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/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/graphic/button_background.xml b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/graphic/button_background.xml
new file mode 100644
index 00000000..80fca8cc
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/graphic/button_background.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/graphic/textfield_background.xml b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/graphic/textfield_background.xml
new file mode 100644
index 00000000..7108356c
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/graphic/textfield_background.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/layout/ability_main.xml b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/layout/ability_main.xml
new file mode 100644
index 00000000..da94cf13
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/layout/ability_main.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/layout/intro_page.xml b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/layout/intro_page.xml
new file mode 100644
index 00000000..1f4004e3
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/layout/intro_page.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/layout/login_page.xml b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/layout/login_page.xml
new file mode 100644
index 00000000..19eebb2a
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/layout/login_page.xml
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/layout/signup_page.xml b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/layout/signup_page.xml
new file mode 100644
index 00000000..5f3a03d0
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/layout/signup_page.xml
@@ -0,0 +1,217 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/media/icon.png b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/media/icon.png
new file mode 100644
index 00000000..ce307a88
Binary files /dev/null and b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/media/icon.png differ
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/media/my_app.jpg b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/media/my_app.jpg
new file mode 100644
index 00000000..bf707e63
Binary files /dev/null and b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/main/resources/base/media/my_app.jpg differ
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/ohosTest/config.json b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/ohosTest/config.json
new file mode 100644
index 00000000..aae4b173
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/ohosTest/config.json
@@ -0,0 +1,41 @@
+{
+ "app": {
+ "bundleName": "com.assigmentday2.MyApp2",
+ "vendor": "assigmentday2",
+ "version": {
+ "code": 1,
+ "name": "1.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Beta1"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.assigmentday2.MyApp2",
+ "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/ChakradharChokkaku/MyApp_Day5/entry/src/ohosTest/java/com/assigment/myapp/ExampleOhosTest.java b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/ohosTest/java/com/assigment/myapp/ExampleOhosTest.java
new file mode 100644
index 00000000..5d767f78
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/ohosTest/java/com/assigment/myapp/ExampleOhosTest.java
@@ -0,0 +1,14 @@
+package com.assigment.myapp;
+
+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.assigment.MyApp", actualBundleName);
+ }
+}
\ No newline at end of file
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/test/java/com/assigment/myapp/ExampleTest.java b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/test/java/com/assigment/myapp/ExampleTest.java
new file mode 100644
index 00000000..b0b55cc0
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/entry/src/test/java/com/assigment/myapp/ExampleTest.java
@@ -0,0 +1,9 @@
+package com.assigment.myapp;
+
+import org.junit.Test;
+
+public class ExampleTest {
+ @Test
+ public void onStart() {
+ }
+}
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/gradle.properties b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/gradle.properties
new file mode 100644
index 00000000..0daf1830
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/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/ChakradharChokkaku/MyApp_Day5/gradle/wrapper/gradle-wrapper.jar b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..490fda85
Binary files /dev/null and b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/gradle/wrapper/gradle-wrapper.properties b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..f59159e8
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/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/ChakradharChokkaku/MyApp_Day5/gradlew b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/gradlew
new file mode 100644
index 00000000..2fe81a7d
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/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/ChakradharChokkaku/MyApp_Day5/gradlew.bat b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/gradlew.bat
new file mode 100644
index 00000000..62bd9b9c
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/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/ChakradharChokkaku/MyApp_Day5/settings.gradle b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/settings.gradle
new file mode 100644
index 00000000..4773db73
--- /dev/null
+++ b/HarmonyOS/Day5 Assingment/ChakradharChokkaku/MyApp_Day5/settings.gradle
@@ -0,0 +1 @@
+include ':entry'