diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aa724b7 --- /dev/null +++ b/.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/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..fb7f4a8 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..526b4c2 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..6e76212 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..33b74de --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,41 @@ +plugins { + id 'com.android.application' +} + +android { + compileSdk 30 + + defaultConfig { + applicationId "com.example.todo_app" + minSdk 21 + targetSdk 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.1' + implementation 'com.google.android.material:material:1.4.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.1' + implementation 'androidx.coordinatorlayout:coordinatorlayout:1.1.0' + implementation 'androidx.navigation:navigation-fragment:2.3.5' + implementation 'androidx.legacy:legacy-support-v4:1.0.0' + testImplementation 'junit:junit:4.+' + androidTestImplementation 'androidx.test.ext:junit:1.1.3' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' +} \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /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 \ No newline at end of file diff --git a/app/src/androidTest/java/com/example/todo_app/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/example/todo_app/ExampleInstrumentedTest.java new file mode 100644 index 0000000..292f352 --- /dev/null +++ b/app/src/androidTest/java/com/example/todo_app/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.example.todo_app; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + assertEquals("com.example.todo_app", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..d4b24fb --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000..f0f6f0c Binary files /dev/null and b/app/src/main/ic_launcher-playstore.png differ diff --git a/app/src/main/java/com/example/todo_app/Adapter/ToDoAdapter.java b/app/src/main/java/com/example/todo_app/Adapter/ToDoAdapter.java new file mode 100644 index 0000000..d588a16 --- /dev/null +++ b/app/src/main/java/com/example/todo_app/Adapter/ToDoAdapter.java @@ -0,0 +1,71 @@ +package com.example.todo_app.Adapter; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CheckBox; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.example.todo_app.Model.ToDoModel; +import com.example.todo_app.R; +import com.example.todo_app.SecondFragment; + +import java.util.List; + +public class ToDoAdapter extends RecyclerView.Adapter { + private List todoList; + private SecondFragment activity; + + public ToDoAdapter(SecondFragment activity){ + this.activity=activity; + } + + + + + @NonNull + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent, int ViewType) { + View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.tast_layout, parent, false); + return new ViewHolder(itemView); + + } + + @Override + public void onBindViewHolder(@NonNull final ViewHolder holder, int position) { + + + final ToDoModel item = todoList.get(position); + holder.task.setText(item.getTask()); + holder.task.setChecked(toBoolean(item.getStatus())); + + } + public int getItemCount () { + return todoList.size(); + } + private Boolean toBoolean ( int n){ + return n != 0; + } + + public SecondFragment getContext () { + return activity; + } + public void setTasks (List todoList) { + this.todoList = todoList; + } + + + + + public static class ViewHolder extends RecyclerView.ViewHolder { + CheckBox task; + + ViewHolder(View view) { + super(view); + task = view.findViewById(R.id.todoCheckbox); + } + } + } + diff --git a/app/src/main/java/com/example/todo_app/DialogCloseListner.java b/app/src/main/java/com/example/todo_app/DialogCloseListner.java new file mode 100644 index 0000000..c504d1e --- /dev/null +++ b/app/src/main/java/com/example/todo_app/DialogCloseListner.java @@ -0,0 +1,7 @@ +package com.example.todo_app; + +import android.content.DialogInterface; + +public interface DialogCloseListner { + public void handleDialogClose(DialogInterface dialog); +} diff --git a/app/src/main/java/com/example/todo_app/FirstFragment.java b/app/src/main/java/com/example/todo_app/FirstFragment.java new file mode 100644 index 0000000..3a35cb5 --- /dev/null +++ b/app/src/main/java/com/example/todo_app/FirstFragment.java @@ -0,0 +1,24 @@ +package com.example.todo_app; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import java.io.*; +import androidx.fragment.app.Fragment; + +import com.example.todo_app.*; + +public class FirstFragment extends Fragment { + + public FirstFragment(){ + // require a empty public constructor + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_first, container, false); + } +} diff --git a/app/src/main/java/com/example/todo_app/MainActivity.java b/app/src/main/java/com/example/todo_app/MainActivity.java new file mode 100644 index 0000000..a6a1b1c --- /dev/null +++ b/app/src/main/java/com/example/todo_app/MainActivity.java @@ -0,0 +1,130 @@ +package com.example.todo_app; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentTransaction; + +import android.content.Context; +import android.os.Bundle; +import android.view.MenuItem; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +import com.example.todo_app.Adapter.ToDoAdapter; +import com.example.todo_app.Model.ToDoModel; +import com.example.todo_app.Utils.DatabaseHelper; +import com.google.android.material.bottomnavigation.BottomNavigationView; +import com.google.android.material.bottomsheet.BottomSheetDialog; +import com.google.android.material.floatingactionbutton.FloatingActionButton; + +import java.util.ArrayList; +import java.util.List; + + +public class MainActivity extends AppCompatActivity{ + private ToDoAdapter taskAdapter; + private List taskList; + DatabaseHelper DB; + Context thiscontext; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + + taskList=new ArrayList<>(); + FirstFragment hometab = new FirstFragment(); + SecondFragment todostab = new SecondFragment(); + ThirdFragment notificationtab = new ThirdFragment(); + fourthFragment profiletab = new fourthFragment(); + + loadFragment(todostab); + View bottomNavigationView = (BottomNavigationView)findViewById(R.id.bottomNevigationView); + bottomNavigationView.setBackground(null); + + BottomNavigationView bottomNav = findViewById(R.id.bottomNevigationView); + bottomNav.setSelectedItemId(R.id.library); + bottomNav.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { + @Override + public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) { + Fragment fragment; + switch (menuItem.getItemId()) { + case R.id.home: + loadFragment(hometab); + return true; + case R.id.library: + loadFragment(todostab); + return true; + case R.id.notify: + loadFragment(notificationtab); + return true; + case R.id.account: + loadFragment(profiletab); + return true; + } + return false; + } + }); + + FloatingActionButton addfloatBotton = (FloatingActionButton)findViewById(R.id.addtaskbtn); + addfloatBotton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + showBottomSheetDialog(); + } + }); + + + + + } + + private void loadFragment(Fragment fragment) { + FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); + transaction.replace(R.id.flFragment, fragment); + transaction.addToBackStack(null); + transaction.commit(); + } + + private void showBottomSheetDialog() { + + final BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(this,R.style.DialogStyle); + bottomSheetDialog.setContentView(R.layout.new_task); + thiscontext = bottomSheetDialog.getContext(); + + DB=new DatabaseHelper(thiscontext); + + Button save=bottomSheetDialog.findViewById(R.id.newtaskbtn); + save.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + EditText text = bottomSheetDialog.findViewById(R.id.newtaskText); + String task=text.getText().toString(); + System.out.println(task); + Boolean checkinsertdata=DB.insertuserdetails(task); + if(checkinsertdata){ + Toast.makeText(MainActivity.this,"new entry inserted",Toast.LENGTH_LONG).show(); + + SecondFragment todostab = new SecondFragment(); + loadFragment(todostab); + + } + else{ + Toast.makeText(MainActivity.this,"entry not inserted",Toast.LENGTH_LONG).show(); + } + + + + } + }); + + bottomSheetDialog.show(); + } + + + +} diff --git a/app/src/main/java/com/example/todo_app/Model/ToDoModel.java b/app/src/main/java/com/example/todo_app/Model/ToDoModel.java new file mode 100644 index 0000000..489d606 --- /dev/null +++ b/app/src/main/java/com/example/todo_app/Model/ToDoModel.java @@ -0,0 +1,30 @@ +package com.example.todo_app.Model; + +public class ToDoModel { + private int id,status; + private String task; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public String getTask() { + return task; + } + + public void setTask(String task) { + this.task = task; + } +} diff --git a/app/src/main/java/com/example/todo_app/RecyclerItemTouchHelper.java b/app/src/main/java/com/example/todo_app/RecyclerItemTouchHelper.java new file mode 100644 index 0000000..5fd9744 --- /dev/null +++ b/app/src/main/java/com/example/todo_app/RecyclerItemTouchHelper.java @@ -0,0 +1,222 @@ +package com.example.todo_app; + +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.database.Cursor; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.graphics.drawable.Drawable; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.FragmentTransaction; +import androidx.recyclerview.widget.ItemTouchHelper; +import androidx.recyclerview.widget.RecyclerView; + +import com.example.todo_app.Adapter.ToDoAdapter; +import com.example.todo_app.Model.ToDoModel; +import com.example.todo_app.Utils.DatabaseHelper; +import com.google.android.material.bottomsheet.BottomSheetDialog; + +import java.util.ArrayList; +import java.util.List; + +public class RecyclerItemTouchHelper extends ItemTouchHelper.SimpleCallback { + private ToDoAdapter adapter; + Context thiscontext; + DatabaseHelper DB; + private List taskList; + public RecyclerItemTouchHelper(ToDoAdapter adapter){ + super(0,ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT); + this.adapter=adapter; + } + + @Override + public boolean onMove(RecyclerView recyclerView,RecyclerView.ViewHolder viewHolder,RecyclerView.ViewHolder target){ + return false; + } + + @Override + public void onSwiped(final RecyclerView.ViewHolder viewHolder,int direction){ + final int position=viewHolder.getAdapterPosition(); + if(direction==ItemTouchHelper.LEFT){ + AlertDialog.Builder builder=new AlertDialog.Builder(adapter.getContext().thiscontext); + builder.setTitle("Delete Task"); + builder.setMessage("Are you sure you want to delete this task?"); + builder.setPositiveButton("Confirm", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { +// System.out.println("delete------------"+position); + gettaskdone("delete",position); + } + }); + builder.setNegativeButton(android.R.string.cancel, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + System.out.println("do nothing----------------"); + } + }); + AlertDialog dialog=builder.create(); + dialog.show(); + } + else{ + gettaskdone("edit",position); + } + } + @Override + public void onChildDraw(Canvas c,RecyclerView recyclerView,RecyclerView.ViewHolder viewHolder,float dx,float dy,int actionState,boolean isCurrentlyactive){ + super.onChildDraw(c,recyclerView,viewHolder,dx,dy,actionState,isCurrentlyactive); + + Drawable icon; + ColorDrawable background; + View itemView= viewHolder.itemView; + int backgroundcorneroffset=20; + if(dx>0){ + icon= ContextCompat.getDrawable(adapter.getContext().thiscontext,R.drawable.ic_edit); + background=new ColorDrawable(ContextCompat.getColor(adapter.getContext().thiscontext,R.color.blue)); + } + else { + icon= ContextCompat.getDrawable(adapter.getContext().thiscontext,R.drawable.ic_delete); + background=new ColorDrawable(Color.RED); + } + + int iconMargin=(itemView.getHeight()-icon.getIntrinsicHeight())/2; + int iconTop=itemView.getTop()+(itemView.getHeight()-icon.getIntrinsicHeight())/2; + int iconBottom=iconTop+icon.getIntrinsicHeight(); + + if(dx>0){ + int iconLeft=itemView.getLeft()+iconMargin; + int iconRight=itemView.getLeft()+iconMargin+icon.getIntrinsicWidth(); + icon.setBounds(iconLeft,iconTop,iconRight,iconBottom); + background.setBounds(itemView.getLeft(),itemView.getTop(),itemView.getLeft()+((int)dx)+backgroundcorneroffset,itemView.getBottom()); + } + else if(dx<0){ + int iconLeft=itemView.getRight()-iconMargin-icon.getIntrinsicWidth(); + int iconRight=itemView.getRight()-iconMargin; + icon.setBounds(iconLeft,iconTop,iconRight,iconBottom); + background.setBounds(itemView.getRight()+((int)dx)-backgroundcorneroffset,itemView.getTop(),itemView.getRight(),itemView.getBottom()); + } + else{ + background.setBounds(0,0,0,0); + } + background.draw(c); + icon.draw(c); + } + + public void gettaskdone(String action,int pos){ + taskList = new ArrayList<>(); + thiscontext=adapter.getContext().thiscontext; + DB = new DatabaseHelper(thiscontext); + Cursor res = DB.getdata(); + if (res.getCount() == 0) { + Toast.makeText(thiscontext, "whoohoo! No ToDo Present", Toast.LENGTH_LONG).show(); + + } else { + + while (res.moveToNext()) { + ToDoModel task = new ToDoModel(); + task.setId(res.getInt(0)); + task.setTask(res.getString(1)); + task.setStatus(0); + + taskList.add(task); + System.out.println(res.getInt(0) + res.getString(1)); + } + } + + if(action.equals("edit")){ + System.out.println("editing...................."); + editItem(pos); + } + else{ + System.out.println("Deleting...................."); + deleteItem(pos); + } + + + } + + public void editItem(int position) { + ToDoModel item = taskList.get(position); + int editid=item.getId(); + String edittask=item.getTask(); + System.out.println("id : "+editid+" task : "+edittask); + showBottomSheetDialog(editid,edittask); + } + + public void deleteItem(int position) { + ToDoModel item = taskList.get(position); + int editid=item.getId(); + System.out.println("id : "+editid); + Boolean checkupdatedata=DB.deleteuserdetails(editid); + if(checkupdatedata){ + Toast.makeText(thiscontext,"Deleted Task",Toast.LENGTH_LONG).show(); + refreshsecondFragment(); + + } + else{ + Toast.makeText(thiscontext,"Task not Deleted",Toast.LENGTH_LONG).show(); + } + + } + + + private void showBottomSheetDialog(int id,String prevtask) { + + final BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(thiscontext,R.style.DialogStyle); + bottomSheetDialog.setContentView(R.layout.new_task); + thiscontext = bottomSheetDialog.getContext(); + + DB=new DatabaseHelper(thiscontext); + EditText text = bottomSheetDialog.findViewById(R.id.newtaskText); + Button save=bottomSheetDialog.findViewById(R.id.newtaskbtn); + save.setText("Update"); + text.setText(prevtask); + + save.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + + String task=text.getText().toString(); + System.out.println(task); + if(prevtask.equals(task)){ + Toast.makeText(thiscontext,"No update made.",Toast.LENGTH_LONG).show(); + + } + else { + Boolean checkupdatedata=DB.updateuserdetails(id,task); + if(checkupdatedata){ + Toast.makeText(thiscontext,"update saved",Toast.LENGTH_LONG).show(); + refreshsecondFragment(); + + } + else{ + Toast.makeText(thiscontext,"update not saved",Toast.LENGTH_LONG).show(); + } + } + + + } + }); + + bottomSheetDialog.show(); + } + + private void refreshsecondFragment() { + SecondFragment fragment = new SecondFragment(); + FragmentTransaction transaction = adapter.getContext().getActivity().getSupportFragmentManager().beginTransaction(); + transaction.replace(R.id.flFragment, fragment); + transaction.addToBackStack(null); + transaction.commit(); + } + + + +} diff --git a/app/src/main/java/com/example/todo_app/SecondFragment.java b/app/src/main/java/com/example/todo_app/SecondFragment.java new file mode 100644 index 0000000..d167db7 --- /dev/null +++ b/app/src/main/java/com/example/todo_app/SecondFragment.java @@ -0,0 +1,81 @@ +package com.example.todo_app; + +import android.content.Context; +import android.database.Cursor; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentTransaction; + +import androidx.recyclerview.widget.ItemTouchHelper; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.example.todo_app.Adapter.ToDoAdapter; +import com.example.todo_app.Model.ToDoModel; +import com.example.todo_app.Utils.DatabaseHelper; +import com.google.android.material.bottomsheet.BottomSheetDialog; + +public class SecondFragment extends Fragment { + + public SecondFragment() { + // require a empty public constructor + } + + Context thiscontext; + private ToDoAdapter taskAdapter; + private List taskList; + DatabaseHelper DB; + + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + // Inflate the layout for this fragment + View view = inflater.inflate(R.layout.fragment_second, container, false); + thiscontext = container.getContext(); + taskList = new ArrayList<>(); + RecyclerView taskRecyclerView = (RecyclerView) view.findViewById(R.id.taskRecyclerview); + taskRecyclerView.setLayoutManager(new LinearLayoutManager(thiscontext)); + taskAdapter = new ToDoAdapter(this); + taskRecyclerView.setAdapter(taskAdapter); + ItemTouchHelper itemTouchHelper=new ItemTouchHelper(new RecyclerItemTouchHelper(taskAdapter)); + itemTouchHelper.attachToRecyclerView(taskRecyclerView); + DB = new DatabaseHelper(thiscontext); + Cursor res = DB.getdata(); + if (res.getCount() == 0) { + Toast.makeText(thiscontext, "whoohoo! No ToDo Present", Toast.LENGTH_LONG).show(); + + } else { + + while (res.moveToNext()) { + ToDoModel task = new ToDoModel(); + task.setId(res.getInt(0)); + task.setTask(res.getString(1)); + task.setStatus(0); + + taskList.add(task); + System.out.println(res.getInt(0) + res.getString(1)); + } + } + + + taskAdapter.setTasks(taskList); + + + return view; + } + + + + +} diff --git a/app/src/main/java/com/example/todo_app/SplashActivity.java b/app/src/main/java/com/example/todo_app/SplashActivity.java new file mode 100644 index 0000000..6b87164 --- /dev/null +++ b/app/src/main/java/com/example/todo_app/SplashActivity.java @@ -0,0 +1,27 @@ +package com.example.todo_app; + +import androidx.appcompat.app.AppCompatActivity; + +import android.content.Intent; +import android.os.Bundle; +import android.os.Handler; + +import java.util.Objects; + +public class SplashActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_splash); + + final Intent i=new Intent(SplashActivity.this,MainActivity.class); + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + startActivity(i); + finish(); + } + },1000); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/todo_app/ThirdFragment.java b/app/src/main/java/com/example/todo_app/ThirdFragment.java new file mode 100644 index 0000000..c54d092 --- /dev/null +++ b/app/src/main/java/com/example/todo_app/ThirdFragment.java @@ -0,0 +1,24 @@ +package com.example.todo_app; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import java.io.*; +import androidx.fragment.app.Fragment; + +import com.example.todo_app.*; + +public class ThirdFragment extends Fragment { + + public ThirdFragment(){ + // require a empty public constructor + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_third, container, false); + } +} diff --git a/app/src/main/java/com/example/todo_app/Utils/DatabaseHelper.java b/app/src/main/java/com/example/todo_app/Utils/DatabaseHelper.java new file mode 100644 index 0000000..40ae87d --- /dev/null +++ b/app/src/main/java/com/example/todo_app/Utils/DatabaseHelper.java @@ -0,0 +1,88 @@ +package com.example.todo_app.Utils; + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; + +import androidx.annotation.Nullable; + +public class DatabaseHelper extends SQLiteOpenHelper { + + public DatabaseHelper(Context context) { + super(context, "Userdata.db", null, 1); + } + + @Override + public void onCreate(SQLiteDatabase DB) { + DB.execSQL("create table userdetails(id INTEGER PRIMARY KEY AUTOINCREMENT,task TEXT NOT NULL)"); + } + + @Override + public void onUpgrade(SQLiteDatabase DB, int oldVersion, int newVersion) { + + DB.execSQL("drop Table if exists Userdetails"); + } + + public Boolean insertuserdetails(String task) { + SQLiteDatabase DB = this.getWritableDatabase(); + ContentValues cv = new ContentValues(); + cv.put("task", task); + long result = DB.insert("Userdetails", null, cv); + if (result == -1) { + return false; + } else { + return true; + } + } + + public Boolean updateuserdetails(int id, String task) { + SQLiteDatabase DB = this.getWritableDatabase(); + ContentValues cv = new ContentValues(); + cv.put("task", task); + Cursor cursor = DB.rawQuery("select * from Userdetails where id=?", new String[]{String.valueOf(id)}); + + if (cursor.getCount() > 0) { + + long result = DB.update("Userdetails", cv, "id=?", new String[]{String.valueOf(id)}); + if (result == -1) { + return false; + } else { + return true; + } + } else { + return false; + } + } + + public Boolean deleteuserdetails(int id) { + SQLiteDatabase DB = this.getWritableDatabase(); + + Cursor cursor = DB.rawQuery("select * from Userdetails where id=?", new String[]{String.valueOf(id)}); + + if (cursor.getCount() > 0) { + + long result = DB.delete("Userdetails", "id=?", new String[]{String.valueOf(id)}); + if (result == -1) { + return false; + } else { + return true; + } + } else { + return false; + } + } + + public Cursor getdata() { + SQLiteDatabase DB = this.getWritableDatabase(); + + Cursor cursor = DB.rawQuery("select * from Userdetails",null); + + return cursor; + } + + + + +} diff --git a/app/src/main/java/com/example/todo_app/fourthFragment.java b/app/src/main/java/com/example/todo_app/fourthFragment.java new file mode 100644 index 0000000..cc3edd4 --- /dev/null +++ b/app/src/main/java/com/example/todo_app/fourthFragment.java @@ -0,0 +1,30 @@ +package com.example.todo_app; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import java.io.*; +import java.util.Objects; + +import androidx.fragment.app.Fragment; + +import com.example.todo_app.*; + +public class fourthFragment extends Fragment { + + public fourthFragment(){ + // require a empty public constructor + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + // Inflate the layout for this fragment + View view = inflater.inflate(R.layout.fragment_fourth, container, false); + TextView head=(TextView) view.findViewById(R.id.textView3); +// head.setText("hello tirtha!"); + return view; + } +} diff --git a/app/src/main/res/color/bottom_item_background.xml b/app/src/main/res/color/bottom_item_background.xml new file mode 100644 index 0000000..2859e77 --- /dev/null +++ b/app/src/main/res/color/bottom_item_background.xml @@ -0,0 +1,5 @@ + + + + + \ 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..da1dcd9 --- /dev/null +++ b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-v24/todo.png b/app/src/main/res/drawable-v24/todo.png new file mode 100644 index 0000000..32f63e9 Binary files /dev/null and b/app/src/main/res/drawable-v24/todo.png differ diff --git a/app/src/main/res/drawable/ic_account.xml b/app/src/main/res/drawable/ic_account.xml new file mode 100644 index 0000000..89199eb --- /dev/null +++ b/app/src/main/res/drawable/ic_account.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_add.xml b/app/src/main/res/drawable/ic_add.xml new file mode 100644 index 0000000..43f5701 --- /dev/null +++ b/app/src/main/res/drawable/ic_add.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_delete.xml b/app/src/main/res/drawable/ic_delete.xml new file mode 100644 index 0000000..8650397 --- /dev/null +++ b/app/src/main/res/drawable/ic_delete.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_edit.xml b/app/src/main/res/drawable/ic_edit.xml new file mode 100644 index 0000000..faddfce --- /dev/null +++ b/app/src/main/res/drawable/ic_edit.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_help.xml b/app/src/main/res/drawable/ic_help.xml new file mode 100644 index 0000000..1f5cba5 --- /dev/null +++ b/app/src/main/res/drawable/ic_help.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_home.xml b/app/src/main/res/drawable/ic_home.xml new file mode 100644 index 0000000..3a4c7da --- /dev/null +++ b/app/src/main/res/drawable/ic_home.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..a8b409b --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_library.xml b/app/src/main/res/drawable/ic_library.xml new file mode 100644 index 0000000..95df0ba --- /dev/null +++ b/app/src/main/res/drawable/ic_library.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_notifications.xml b/app/src/main/res/drawable/ic_notifications.xml new file mode 100644 index 0000000..21cb88d --- /dev/null +++ b/app/src/main/res/drawable/ic_notifications.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_search.xml b/app/src/main/res/drawable/ic_search.xml new file mode 100644 index 0000000..07b76d6 --- /dev/null +++ b/app/src/main/res/drawable/ic_search.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/round_border.xml b/app/src/main/res/drawable/round_border.xml new file mode 100644 index 0000000..9e06f6e --- /dev/null +++ b/app/src/main/res/drawable/round_border.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/top_border.xml b/app/src/main/res/drawable/top_border.xml new file mode 100644 index 0000000..647974a --- /dev/null +++ b/app/src/main/res/drawable/top_border.xml @@ -0,0 +1,8 @@ + + + + + \ 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..3253677 --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_splash.xml b/app/src/main/res/layout/activity_splash.xml new file mode 100644 index 0000000..92da26c --- /dev/null +++ b/app/src/main/res/layout/activity_splash.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_first.xml b/app/src/main/res/layout/fragment_first.xml new file mode 100644 index 0000000..63e1446 --- /dev/null +++ b/app/src/main/res/layout/fragment_first.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_fourth.xml b/app/src/main/res/layout/fragment_fourth.xml new file mode 100644 index 0000000..477faad --- /dev/null +++ b/app/src/main/res/layout/fragment_fourth.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_second.xml b/app/src/main/res/layout/fragment_second.xml new file mode 100644 index 0000000..5dc37ac --- /dev/null +++ b/app/src/main/res/layout/fragment_second.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_third.xml b/app/src/main/res/layout/fragment_third.xml new file mode 100644 index 0000000..2a4ada9 --- /dev/null +++ b/app/src/main/res/layout/fragment_third.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/new_task.xml b/app/src/main/res/layout/new_task.xml new file mode 100644 index 0000000..206af29 --- /dev/null +++ b/app/src/main/res/layout/new_task.xml @@ -0,0 +1,29 @@ + + + +