diff --git a/.gitignore b/.gitignore index 39b6783..603b140 100644 --- a/.gitignore +++ b/.gitignore @@ -1,65 +1,14 @@ -# Built application files -*.apk -*.ap_ - -# Files for the ART/Dalvik VM -*.dex - -# Java class files -*.class - -# Generated files -bin/ -gen/ -out/ - -# Gradle files -.gradle/ -build/ - -# Local configuration file (sdk path, etc) -local.properties - -# Proguard folder generated by Eclipse -proguard/ - -# Log Files -*.log - -# Android Studio Navigation editor temp files -.navigation/ - -# Android Studio captures folder -captures/ - -# IntelliJ *.iml -.idea/workspace.xml -.idea/tasks.xml -.idea/gradle.xml -.idea/assetWizardSettings.xml -.idea/dictionaries -.idea/libraries -.idea/caches - -# Keystore files -# Uncomment the following line if you do not want to check your keystore files in. -#*.jks - -# External native build folder generated in Android Studio 2.2 and later +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures .externalNativeBuild - -# Google Services (e.g. APIs or Firebase) -google-services.json - -# Freeline -freeline.py -freeline/ -freeline_project_description.json - -# fastlane -fastlane/report.xml -fastlane/Preview.html -fastlane/screenshots -fastlane/test_output -fastlane/readme.md +.cxx diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..32ff19d --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +Sayed Android Learning \ No newline at end of file diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..ae78c11 --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,113 @@ + + + + + +
+ + + + xmlns:android + + ^$ + + + +
+
+ + + + xmlns:.* + + ^$ + + + BY_NAME + +
+
+ + + + .*:id + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:name + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + name + + ^$ + + + +
+
+ + + + style + + ^$ + + + +
+
+ + + + .* + + ^$ + + + BY_NAME + +
+
+ + + + .* + + http://schemas.android.com/apk/res/android + + + ANDROID_ATTRIBUTE_ORDER + +
+
+ + + + .* + + .* + + + BY_NAME + +
+
+
+
+
+
\ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..d291b3d --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..37a7509 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000..7f68460 --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 261eeb9..0000000 --- a/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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 - - http://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. diff --git a/README.md b/README.md deleted file mode 100644 index 9e1d13b..0000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# AndroidLearning -I am a newbie in learning android development , here in my first job i want to track my learning progress from the very beginning thats why this repo has been created diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..65d7534 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,36 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 28 + defaultConfig { + applicationId "lab.itsoul.com.dailygoods.app.sayedandroidlearning" + minSdkVersion 21 + targetSdkVersion 28 + versionCode 1 + versionName "1.0" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'androidx.appcompat:appcompat:1.0.2' + implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + implementation 'com.squareup.picasso:picasso:2.71828' + implementation 'androidx.legacy:legacy-support-v4:1.0.0' + implementation 'com.google.android.material:material:1.0.0' + implementation 'androidx.navigation:navigation-fragment:2.0.0' + implementation 'androidx.navigation:navigation-ui:2.0.0' + implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0' + testImplementation 'junit:junit:4.12' + implementation 'com.android.support:design:28.1.1' + androidTestImplementation 'androidx.test.ext:junit:1.1.0' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' + implementation 'androidx.navigation:navigation-runtime:2.1.0' +} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..f1b4245 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/app/src/androidTest/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ExampleInstrumentedTest.java b/app/src/androidTest/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ExampleInstrumentedTest.java new file mode 100644 index 0000000..764d0e6 --- /dev/null +++ b/app/src/androidTest/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ExampleInstrumentedTest.java @@ -0,0 +1,27 @@ +package lab.itsoul.com.dailygoods.app.sayedandroidlearning; + +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("lab.itsoul.com.dailygoods.app.sayedandroidlearning", appContext.getPackageName()); + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..7394d33 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/CountryProfileActivity.java b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/CountryProfileActivity.java new file mode 100644 index 0000000..d73dcfd --- /dev/null +++ b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/CountryProfileActivity.java @@ -0,0 +1,56 @@ +package lab.itsoul.com.dailygoods.app.sayedandroidlearning; + +import androidx.appcompat.app.AppCompatActivity; + +import android.os.Bundle; +import android.widget.ImageView; +import android.widget.TextView; + +import com.squareup.picasso.Picasso; + +public class CountryProfileActivity extends AppCompatActivity { + + + private TextView countryTextview; + private ImageView countryImageView; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_country_profile); + this.countryImageView = findViewById(R.id.CountryProfileImageViewerID); + this.countryTextview = findViewById(R.id.CountryProfileTextViewID); + + Bundle countryname = getIntent().getExtras(); + + if (countryname != null) { + String name = (String) countryname.get("name"); + showDetails(name); + } + + } + + public void showDetails(String name) { + if (name.equals("Bangladesh")) { + loadUsingPicasso(this.countryImageView, R.drawable.bangladesh_info); + this.countryTextview.setText(R.string.banglades_details); + + } else if (name.equals("India")) { + loadUsingPicasso(this.countryImageView, R.drawable.india_background); + this.countryTextview.setText(R.string.india_details); + + } else { + loadUsingPicasso(this.countryImageView, R.drawable.pakistan_background); + this.countryTextview.setText(R.string.pakistan_details); + } + } + + private void loadUsingPicasso(ImageView imageView, int resourceId) { + Picasso.get() + .load(resourceId) + .resize(300, 300) + .into(imageView); + } + + +} diff --git a/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/Dashboard.java b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/Dashboard.java new file mode 100644 index 0000000..63e45c6 --- /dev/null +++ b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/Dashboard.java @@ -0,0 +1,80 @@ +package lab.itsoul.com.dailygoods.app.sayedandroidlearning; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.ActionBarDrawerToggle; +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; +import androidx.core.view.GravityCompat; +import androidx.drawerlayout.widget.DrawerLayout; + +import android.os.Bundle; +import android.view.MenuItem; + +import com.google.android.material.navigation.NavigationView; + +import lab.itsoul.com.dailygoods.app.sayedandroidlearning.ui.send.SendFragment; + +public class Dashboard extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { + + private DrawerLayout myDrawer; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_dashboard); + + + //toolbar ke khuje pawa gese + Toolbar toolbar = findViewById(R.id.toolbar_sayed_dashboard); + setSupportActionBar(toolbar); + + //drawer ke khuje pawa hoise + this.myDrawer = findViewById(R.id.drawer_layout_sayed_main_dashboard); + //ekta toggle add kora hoise which is hamberger icon + ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, myDrawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); + myDrawer.addDrawerListener(toggle); + toggle.syncState(); + + NavigationView navigationView = findViewById(R.id.nav_view_mainDashboard_sayed); + navigationView.setNavigationItemSelectedListener(this); + + if (savedInstanceState == null) { + getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container_dashboard_sayed, + new MessageFragment()).commit(); + navigationView.setCheckedItem(R.id.nav_sayedMessage); + } + + } + + @Override + public void onBackPressed() { + if (myDrawer.isDrawerOpen(GravityCompat.START)) { + myDrawer.closeDrawer(GravityCompat.START); + } else { + super.onBackPressed(); + } + + } + + @Override + public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) { + switch (menuItem.getItemId()) { + case R.id.nav_sayedMessage: + getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container_dashboard_sayed, + new MessageFragment()).commit(); + break; + + case R.id.nav_sayedShare: + getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container_dashboard_sayed, + new SendFragment()).commit(); + break; + + default: + getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container_dashboard_sayed, + new FragmentDefault()).commit(); + } + + this.myDrawer.closeDrawer(GravityCompat.START); + return true; + } +} diff --git a/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/FragmentDefault.java b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/FragmentDefault.java new file mode 100644 index 0000000..e2d77cc --- /dev/null +++ b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/FragmentDefault.java @@ -0,0 +1,19 @@ +package lab.itsoul.com.dailygoods.app.sayedandroidlearning; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; + +public class FragmentDefault extends Fragment { + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_default , container , false); + } +} diff --git a/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/MainActivity.java b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/MainActivity.java new file mode 100644 index 0000000..82316c3 --- /dev/null +++ b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/MainActivity.java @@ -0,0 +1,112 @@ +package lab.itsoul.com.dailygoods.app.sayedandroidlearning; + +import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; + +import android.content.DialogInterface; +import android.content.Intent; +import android.os.Bundle; +import android.service.autofill.FillEventHistory; +import android.util.Log; +import android.view.View; +import android.widget.Button; +import android.widget.TextView; +import android.widget.Toast; + +public class MainActivity extends AppCompatActivity { + + private Button bangladeshBtn , indiaButton , pakButton ; + private Intent profileActivityIntent , SecondActivityIntent ; + private TextView ansTV ; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + this.bangladeshBtn = findViewById(R.id.banglades_button); + this.indiaButton = findViewById(R.id.india_button); + this.pakButton = findViewById(R.id.pakistan_button); + this.profileActivityIntent = new Intent(MainActivity.this , CountryProfileActivity.class); + this.SecondActivityIntent = new Intent(MainActivity.this , SecondActivity.class); + this.ansTV = findViewById(R.id.mainActivityTextView); + } + + public void clickOnBd(View view) { + String about = view.toString(); + Toast toast = Toast.makeText(getApplicationContext() , "bangladesh button is clicked", Toast.LENGTH_SHORT); + toast.show(); + System.out.println(about); + + this.profileActivityIntent.putExtra("name","Bangladesh"); + startActivity(this.profileActivityIntent); + + } + + public void clickOnIndia(View view) { + Toast toast = Toast.makeText(getApplicationContext() , "India button is clicked ", Toast.LENGTH_SHORT); + toast.show(); + + this.profileActivityIntent.putExtra("name","India"); + startActivity(this.profileActivityIntent); + + } + + public void clickOnPak(View view) { + Toast toast = Toast.makeText(getApplicationContext() , "Pakistan button is clicked ", Toast.LENGTH_SHORT); + toast.show(); + + this.profileActivityIntent.putExtra("name","Pakistan"); + startActivity(this.profileActivityIntent); + + } + + @Override + public void onBackPressed() { + AlertDialog.Builder builder ; + builder = new AlertDialog.Builder(MainActivity.this) ; + + builder.setIcon(R.drawable.question); + builder.setTitle(R.string.question_button_title); + builder.setCancelable(false); + builder.setMessage(R.string.question_button_text); + + builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + finish(); + } + }); + + builder.setNegativeButton("No", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.cancel(); + } + }); + + AlertDialog alertDialog = builder.create(); + alertDialog.show(); + + + } + + public void clickForSecondActivity(View view) { + + startActivityForResult(this.SecondActivityIntent , 1); + + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + + if (resultCode == 1 && requestCode == 1) + { + String value = data.getStringExtra("result"); + this.ansTV.setText(value); + } + } +} diff --git a/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/MessageFragment.java b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/MessageFragment.java new file mode 100644 index 0000000..38df3e0 --- /dev/null +++ b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/MessageFragment.java @@ -0,0 +1,21 @@ +package lab.itsoul.com.dailygoods.app.sayedandroidlearning; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; + +public class MessageFragment extends Fragment { + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + + return inflater.inflate(R.layout.fragment_sayed_message , container , false); + + } +} diff --git a/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/SecondActivity.java b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/SecondActivity.java new file mode 100644 index 0000000..dcf4dc9 --- /dev/null +++ b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/SecondActivity.java @@ -0,0 +1,50 @@ +package lab.itsoul.com.dailygoods.app.sayedandroidlearning; + +import androidx.appcompat.app.AppCompatActivity; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; + +public class SecondActivity extends AppCompatActivity { + + Button submit; + EditText name, password, email, contact, date; + Intent backTomainPage ; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_second); + name = (EditText) findViewById(R.id.editText1); + password = (EditText) findViewById(R.id.editText2); + email = (EditText) findViewById(R.id.editText3); + date = (EditText) findViewById(R.id.editText4); + contact = (EditText) findViewById(R.id.editText5); + submit = (Button) findViewById(R.id.button); + + this.backTomainPage = new Intent(SecondActivity.this , MainActivity.class); + } + + public void clickForSecondActivity(View view) { + + StringBuilder sb = new StringBuilder(); + sb.append(this.name.getText().toString()); + sb.append("\n"); + sb.append(this.password.getText().toString()); + sb.append("\n"); + sb.append(this.email.getText().toString()); + sb.append("\n"); + sb.append(this.date.getText().toString()); + sb.append("\n"); + sb.append(this.contact.getText().toString()); + sb.append("\n"); + + this.backTomainPage.putExtra("result", sb.toString()); + setResult(1 , this.backTomainPage); + finish(); + + } +} diff --git a/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/SharedPreferenceLearning.java b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/SharedPreferenceLearning.java new file mode 100644 index 0000000..2af9906 --- /dev/null +++ b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/SharedPreferenceLearning.java @@ -0,0 +1,74 @@ +package lab.itsoul.com.dailygoods.app.sayedandroidlearning; + +import androidx.appcompat.app.AppCompatActivity; + +import android.content.SharedPreferences; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; +import android.widget.Toast; + +import java.lang.reflect.Array; + +public class SharedPreferenceLearning extends AppCompatActivity { + + private TextView loadTextView ; + private Button saveButton,loadButton ; + private EditText username , password ; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_shared_preference_learning); + this.username = findViewById(R.id.usernameEditTextId); + this.password = findViewById(R.id.passwordEditTextId); + this.saveButton = findViewById(R.id.saveButtonId); + this.loadButton = findViewById(R.id.loadButtonId); + this.loadTextView = findViewById(R.id.loadViewTextId); + + } + + public void pressedOnSave(View view) { + + + String uName , pass ; + uName = this.username.getText().toString(); + pass = this.password.getText().toString(); + + if ( uName.equals("") && pass.equals("")) + { + Toast.makeText(getApplicationContext() , "Please enter value " ,Toast.LENGTH_SHORT ).show() ; + } + else + { + SharedPreferences preferences = getSharedPreferences("Login" , MODE_PRIVATE); + SharedPreferences.Editor editor = preferences.edit(); + editor.putString("username", uName); + editor.putString("password" , pass); + this.username.setText(""); + this.password.setText(""); + editor.commit(); + Toast.makeText(getApplicationContext() , "saved " ,Toast.LENGTH_SHORT ).show() ; + } + + } + + + + public void pressedOnLoad(View view) { + + SharedPreferences sharedPreferences = getSharedPreferences("Login" , MODE_PRIVATE); + if (sharedPreferences.contains("username") && sharedPreferences.contains("password")) + { + StringBuilder sb = new StringBuilder(); + sb.append(sharedPreferences.getString("username" , " no data was found ") ); + sb.append("\n"); + sb.append(sharedPreferences.getString("password" , " no data was found")) ; + this.loadTextView.setText(sb); + + } + + } +} diff --git a/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/navigationDashBoard.java b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/navigationDashBoard.java new file mode 100644 index 0000000..811cdaa --- /dev/null +++ b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/navigationDashBoard.java @@ -0,0 +1,69 @@ +package lab.itsoul.com.dailygoods.app.sayedandroidlearning; + +import android.os.Bundle; + +import com.google.android.material.floatingactionbutton.FloatingActionButton; +import com.google.android.material.snackbar.Snackbar; + +import android.view.View; + +import androidx.navigation.NavController; +import androidx.navigation.Navigation; +import androidx.navigation.ui.AppBarConfiguration; +import androidx.navigation.ui.NavigationUI; + +import com.google.android.material.navigation.NavigationView; + +import androidx.drawerlayout.widget.DrawerLayout; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; + +import android.view.Menu; + +public class navigationDashBoard extends AppCompatActivity { + + private AppBarConfiguration mAppBarConfiguration; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_navigation_dash_board); + Toolbar toolbar = findViewById(R.id.toolbar); + setSupportActionBar(toolbar); + FloatingActionButton fab = findViewById(R.id.fab); + fab.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) + .setAction("Action", null).show(); + } + }); + DrawerLayout drawer = findViewById(R.id.drawer_layout); + NavigationView navigationView = findViewById(R.id.nav_view); + // Passing each menu ID as a set of Ids because each + // menu should be considered as top level destinations. + mAppBarConfiguration = new AppBarConfiguration.Builder( + R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow, + R.id.nav_tools, R.id.nav_share, R.id.nav_send) + .setDrawerLayout(drawer) + .build(); + NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment); + NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration); + NavigationUI.setupWithNavController(navigationView, navController); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate the menu; this adds items to the action bar if it is present. + getMenuInflater().inflate(R.menu.navigation_dash_board, menu); + return true; + } + + @Override + public boolean onSupportNavigateUp() { + NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment); + return NavigationUI.navigateUp(navController, mAppBarConfiguration) + || super.onSupportNavigateUp(); + } +} diff --git a/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/gallery/GalleryFragment.java b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/gallery/GalleryFragment.java new file mode 100644 index 0000000..30e45a7 --- /dev/null +++ b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/gallery/GalleryFragment.java @@ -0,0 +1,35 @@ +package lab.itsoul.com.dailygoods.app.sayedandroidlearning.ui.gallery; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProviders; + +import lab.itsoul.com.dailygoods.app.sayedandroidlearning.R; + +public class GalleryFragment extends Fragment { + + private GalleryViewModel galleryViewModel; + + public View onCreateView(@NonNull LayoutInflater inflater, + ViewGroup container, Bundle savedInstanceState) { + galleryViewModel = + ViewModelProviders.of(this).get(GalleryViewModel.class); + View root = inflater.inflate(R.layout.fragment_gallery, container, false); + final TextView textView = root.findViewById(R.id.text_gallery); + galleryViewModel.getText().observe(this, new Observer() { + @Override + public void onChanged(@Nullable String s) { + textView.setText(s); + } + }); + return root; + } +} \ No newline at end of file diff --git a/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/gallery/GalleryViewModel.java b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/gallery/GalleryViewModel.java new file mode 100644 index 0000000..f1857e1 --- /dev/null +++ b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/gallery/GalleryViewModel.java @@ -0,0 +1,19 @@ +package lab.itsoul.com.dailygoods.app.sayedandroidlearning.ui.gallery; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + +public class GalleryViewModel extends ViewModel { + + private MutableLiveData mText; + + public GalleryViewModel() { + mText = new MutableLiveData<>(); + mText.setValue("This is gallery fragment"); + } + + public LiveData getText() { + return mText; + } +} \ No newline at end of file diff --git a/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/home/HomeFragment.java b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/home/HomeFragment.java new file mode 100644 index 0000000..4810a35 --- /dev/null +++ b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/home/HomeFragment.java @@ -0,0 +1,35 @@ +package lab.itsoul.com.dailygoods.app.sayedandroidlearning.ui.home; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProviders; + +import lab.itsoul.com.dailygoods.app.sayedandroidlearning.R; + +public class HomeFragment extends Fragment { + + private HomeViewModel homeViewModel; + + public View onCreateView(@NonNull LayoutInflater inflater, + ViewGroup container, Bundle savedInstanceState) { + homeViewModel = + ViewModelProviders.of(this).get(HomeViewModel.class); + View root = inflater.inflate(R.layout.fragment_home, container, false); + final TextView textView = root.findViewById(R.id.text_home); + homeViewModel.getText().observe(this, new Observer() { + @Override + public void onChanged(@Nullable String s) { + textView.setText(s); + } + }); + return root; + } +} \ No newline at end of file diff --git a/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/home/HomeViewModel.java b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/home/HomeViewModel.java new file mode 100644 index 0000000..5ba1ce4 --- /dev/null +++ b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/home/HomeViewModel.java @@ -0,0 +1,19 @@ +package lab.itsoul.com.dailygoods.app.sayedandroidlearning.ui.home; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + +public class HomeViewModel extends ViewModel { + + private MutableLiveData mText; + + public HomeViewModel() { + mText = new MutableLiveData<>(); + mText.setValue("This is home fragment"); + } + + public LiveData getText() { + return mText; + } +} \ No newline at end of file diff --git a/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/send/SendFragment.java b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/send/SendFragment.java new file mode 100644 index 0000000..6808485 --- /dev/null +++ b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/send/SendFragment.java @@ -0,0 +1,35 @@ +package lab.itsoul.com.dailygoods.app.sayedandroidlearning.ui.send; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProviders; + +import lab.itsoul.com.dailygoods.app.sayedandroidlearning.R; + +public class SendFragment extends Fragment { + + private SendViewModel sendViewModel; + + public View onCreateView(@NonNull LayoutInflater inflater, + ViewGroup container, Bundle savedInstanceState) { + sendViewModel = + ViewModelProviders.of(this).get(SendViewModel.class); + View root = inflater.inflate(R.layout.fragment_send, container, false); + final TextView textView = root.findViewById(R.id.text_send); + sendViewModel.getText().observe(this, new Observer() { + @Override + public void onChanged(@Nullable String s) { + textView.setText(s); + } + }); + return root; + } +} \ No newline at end of file diff --git a/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/send/SendViewModel.java b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/send/SendViewModel.java new file mode 100644 index 0000000..04fb00a --- /dev/null +++ b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/send/SendViewModel.java @@ -0,0 +1,19 @@ +package lab.itsoul.com.dailygoods.app.sayedandroidlearning.ui.send; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + +public class SendViewModel extends ViewModel { + + private MutableLiveData mText; + + public SendViewModel() { + mText = new MutableLiveData<>(); + mText.setValue("Tanvir bhai ekjon boss"); + } + + public LiveData getText() { + return mText; + } +} \ No newline at end of file diff --git a/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/share/ShareFragment.java b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/share/ShareFragment.java new file mode 100644 index 0000000..ffe9350 --- /dev/null +++ b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/share/ShareFragment.java @@ -0,0 +1,35 @@ +package lab.itsoul.com.dailygoods.app.sayedandroidlearning.ui.share; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProviders; + +import lab.itsoul.com.dailygoods.app.sayedandroidlearning.R; + +public class ShareFragment extends Fragment { + + private ShareViewModel shareViewModel; + + public View onCreateView(@NonNull LayoutInflater inflater, + ViewGroup container, Bundle savedInstanceState) { + shareViewModel = + ViewModelProviders.of(this).get(ShareViewModel.class); + View root = inflater.inflate(R.layout.fragment_share, container, false); + final TextView textView = root.findViewById(R.id.text_share); + shareViewModel.getText().observe(this, new Observer() { + @Override + public void onChanged(@Nullable String s) { + textView.setText(s); + } + }); + return root; + } +} \ No newline at end of file diff --git a/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/share/ShareViewModel.java b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/share/ShareViewModel.java new file mode 100644 index 0000000..a93fd5d --- /dev/null +++ b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/share/ShareViewModel.java @@ -0,0 +1,19 @@ +package lab.itsoul.com.dailygoods.app.sayedandroidlearning.ui.share; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + +public class ShareViewModel extends ViewModel { + + private MutableLiveData mText; + + public ShareViewModel() { + mText = new MutableLiveData<>(); + mText.setValue("This is share fragment"); + } + + public LiveData getText() { + return mText; + } +} \ No newline at end of file diff --git a/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/slideshow/SlideshowFragment.java b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/slideshow/SlideshowFragment.java new file mode 100644 index 0000000..a5f608f --- /dev/null +++ b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/slideshow/SlideshowFragment.java @@ -0,0 +1,35 @@ +package lab.itsoul.com.dailygoods.app.sayedandroidlearning.ui.slideshow; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProviders; + +import lab.itsoul.com.dailygoods.app.sayedandroidlearning.R; + +public class SlideshowFragment extends Fragment { + + private SlideshowViewModel slideshowViewModel; + + public View onCreateView(@NonNull LayoutInflater inflater, + ViewGroup container, Bundle savedInstanceState) { + slideshowViewModel = + ViewModelProviders.of(this).get(SlideshowViewModel.class); + View root = inflater.inflate(R.layout.fragment_slideshow, container, false); + final TextView textView = root.findViewById(R.id.text_slideshow); + slideshowViewModel.getText().observe(this, new Observer() { + @Override + public void onChanged(@Nullable String s) { + textView.setText(s); + } + }); + return root; + } +} \ No newline at end of file diff --git a/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/slideshow/SlideshowViewModel.java b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/slideshow/SlideshowViewModel.java new file mode 100644 index 0000000..b5350d2 --- /dev/null +++ b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/slideshow/SlideshowViewModel.java @@ -0,0 +1,19 @@ +package lab.itsoul.com.dailygoods.app.sayedandroidlearning.ui.slideshow; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + +public class SlideshowViewModel extends ViewModel { + + private MutableLiveData mText; + + public SlideshowViewModel() { + mText = new MutableLiveData<>(); + mText.setValue("This is slideshow fragment"); + } + + public LiveData getText() { + return mText; + } +} \ No newline at end of file diff --git a/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/tools/ToolsFragment.java b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/tools/ToolsFragment.java new file mode 100644 index 0000000..94fe3f5 --- /dev/null +++ b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/tools/ToolsFragment.java @@ -0,0 +1,35 @@ +package lab.itsoul.com.dailygoods.app.sayedandroidlearning.ui.tools; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProviders; + +import lab.itsoul.com.dailygoods.app.sayedandroidlearning.R; + +public class ToolsFragment extends Fragment { + + private ToolsViewModel toolsViewModel; + + public View onCreateView(@NonNull LayoutInflater inflater, + ViewGroup container, Bundle savedInstanceState) { + toolsViewModel = + ViewModelProviders.of(this).get(ToolsViewModel.class); + View root = inflater.inflate(R.layout.fragment_tools, container, false); + final TextView textView = root.findViewById(R.id.text_tools); + toolsViewModel.getText().observe(this, new Observer() { + @Override + public void onChanged(@Nullable String s) { + textView.setText(s); + } + }); + return root; + } +} \ No newline at end of file diff --git a/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/tools/ToolsViewModel.java b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/tools/ToolsViewModel.java new file mode 100644 index 0000000..ed44c24 --- /dev/null +++ b/app/src/main/java/lab/itsoul/com/dailygoods/app/sayedandroidlearning/ui/tools/ToolsViewModel.java @@ -0,0 +1,19 @@ +package lab.itsoul.com.dailygoods.app.sayedandroidlearning.ui.tools; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + +public class ToolsViewModel extends ViewModel { + + private MutableLiveData mText; + + public ToolsViewModel() { + mText = new MutableLiveData<>(); + mText.setValue("This is tools fragment"); + } + + public LiveData getText() { + return mText; + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..1f6bb29 --- /dev/null +++ b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + diff --git a/app/src/main/res/drawable/bangladesh.png b/app/src/main/res/drawable/bangladesh.png new file mode 100644 index 0000000..7ff0922 Binary files /dev/null and b/app/src/main/res/drawable/bangladesh.png differ diff --git a/app/src/main/res/drawable/bangladesh_info.jpg b/app/src/main/res/drawable/bangladesh_info.jpg new file mode 100644 index 0000000..a34a88b Binary files /dev/null and b/app/src/main/res/drawable/bangladesh_info.jpg differ diff --git a/app/src/main/res/drawable/ic_hamberger_menu.xml b/app/src/main/res/drawable/ic_hamberger_menu.xml new file mode 100644 index 0000000..567d841 --- /dev/null +++ b/app/src/main/res/drawable/ic_hamberger_menu.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..0d025f9 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_menu_camera.xml b/app/src/main/res/drawable/ic_menu_camera.xml new file mode 100644 index 0000000..634fe92 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_camera.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_menu_gallery.xml b/app/src/main/res/drawable/ic_menu_gallery.xml new file mode 100644 index 0000000..03c7709 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_gallery.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_menu_manage.xml b/app/src/main/res/drawable/ic_menu_manage.xml new file mode 100644 index 0000000..aeb047d --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_manage.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_menu_send.xml b/app/src/main/res/drawable/ic_menu_send.xml new file mode 100644 index 0000000..fdf1c90 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_send.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_menu_share.xml b/app/src/main/res/drawable/ic_menu_share.xml new file mode 100644 index 0000000..338d95a --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_share.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_menu_slideshow.xml b/app/src/main/res/drawable/ic_menu_slideshow.xml new file mode 100644 index 0000000..5e9e163 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_slideshow.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_message_icon.xml b/app/src/main/res/drawable/ic_message_icon.xml new file mode 100644 index 0000000..ce97ab8 --- /dev/null +++ b/app/src/main/res/drawable/ic_message_icon.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/india.png b/app/src/main/res/drawable/india.png new file mode 100644 index 0000000..92f15da Binary files /dev/null and b/app/src/main/res/drawable/india.png differ diff --git a/app/src/main/res/drawable/india_background.jpg b/app/src/main/res/drawable/india_background.jpg new file mode 100644 index 0000000..90817f0 Binary files /dev/null and b/app/src/main/res/drawable/india_background.jpg differ diff --git a/app/src/main/res/drawable/pakistan.png b/app/src/main/res/drawable/pakistan.png new file mode 100644 index 0000000..2286197 Binary files /dev/null and b/app/src/main/res/drawable/pakistan.png differ diff --git a/app/src/main/res/drawable/pakistan_background.jpg b/app/src/main/res/drawable/pakistan_background.jpg new file mode 100644 index 0000000..353566f Binary files /dev/null and b/app/src/main/res/drawable/pakistan_background.jpg differ diff --git a/app/src/main/res/drawable/question.png b/app/src/main/res/drawable/question.png new file mode 100644 index 0000000..2f6d311 Binary files /dev/null and b/app/src/main/res/drawable/question.png differ diff --git a/app/src/main/res/drawable/side_nav_bar.xml b/app/src/main/res/drawable/side_nav_bar.xml new file mode 100644 index 0000000..6d81870 --- /dev/null +++ b/app/src/main/res/drawable/side_nav_bar.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_country_profile.xml b/app/src/main/res/layout/activity_country_profile.xml new file mode 100644 index 0000000..c317959 --- /dev/null +++ b/app/src/main/res/layout/activity_country_profile.xml @@ -0,0 +1,28 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_dashboard.xml b/app/src/main/res/layout/activity_dashboard.xml new file mode 100644 index 0000000..70cb213 --- /dev/null +++ b/app/src/main/res/layout/activity_dashboard.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..e2ac0fe --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,75 @@ + + + + + + + + +