Skip to content

Commit

Permalink
HomeScreen Timetable widget
Browse files Browse the repository at this point in the history
  • Loading branch information
sjain30 committed Nov 29, 2020
1 parent d7a49d1 commit 597a902
Show file tree
Hide file tree
Showing 5 changed files with 159 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,13 @@ import android.app.Application
import android.util.Log
import androidx.lifecycle.*
import com.college.collegeconnect.database.AttendanceDatabase
import com.college.collegeconnect.database.TimeTableDatabase
import com.college.collegeconnect.database.entity.TimetableEntity
import com.college.collegeconnect.datamodels.SaveSharedPreference
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.firestore.*
import java.text.SimpleDateFormat
import java.util.*

class HomeViewModel(application: Application): AndroidViewModel(application) {

Expand All @@ -16,6 +20,7 @@ class HomeViewModel(application: Application): AndroidViewModel(application) {
var nameLive : MutableLiveData<String>?= null
var rollNoLive:MutableLiveData<String>?= null
var branchLive:MutableLiveData<String>?= null
var classList:MutableLiveData<List<TimetableEntity>>?= null
// var tot: MutableLiveData<List<Int>>?= null

fun returnName(): LiveData<String> {
Expand All @@ -26,6 +31,16 @@ class HomeViewModel(application: Application): AndroidViewModel(application) {
return nameLive!!
}

fun returnNow() : LiveData<List<TimetableEntity>> {
if (classList == null) {
classList = MutableLiveData()
Log.d("TAG", "returnNow: called")
getHappeningNow()
}
Log.d("TAG", "returnNow: ${classList!!.value.toString()}")
return classList!!
}

fun returnRoll(): LiveData<String> {
if (rollNoLive == null) {
rollNoLive = MutableLiveData()
Expand Down Expand Up @@ -95,6 +110,22 @@ class HomeViewModel(application: Application): AndroidViewModel(application) {
}
}

fun getHappeningNow() : LiveData<out List<TimetableEntity>>{

val classlist = when(Calendar.getInstance()[Calendar.DAY_OF_WEEK]) {
1 -> TimeTableDatabase(getApplication()).getSundayDao().getSunClasses()
2 -> TimeTableDatabase(getApplication()).getMondayDao().getMonClasses()
3 -> TimeTableDatabase(getApplication()).getTuesdayDao().getTuesClasses()
4 -> TimeTableDatabase(getApplication()).getWednesdayDao().getWedClasses()
5 -> TimeTableDatabase(getApplication()).getThursdayDao().getThursClasses()
6 -> TimeTableDatabase(getApplication()).getFridayDao().getFriClasses()
7 -> TimeTableDatabase(getApplication()).getSaturdayDao().getSatClasses()
else -> null
}
Log.d("TAG", "getHappeningNow: ${classlist?.value}")
return classlist!!
}

fun getAttended():LiveData<Int>{
return AttendanceDatabase(getApplication()).getAttendanceDao().getAttended()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ import com.squareup.picasso.Picasso
import de.hdodenhof.circleimageview.CircleImageView
import kotlinx.android.synthetic.main.fragment_home.*
import java.io.*
import java.text.SimpleDateFormat
import java.util.*

class HomeFragment : Fragment() {
var bottomNavigationView: BottomNavigationView? = null
Expand Down Expand Up @@ -120,6 +122,35 @@ class HomeFragment : Fragment() {
recyclerviewHome.layoutManager = LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)
val adapter = context?.let { HomeRecyclerAdapter(it) }
recyclerviewHome.adapter = adapter

//Set happening now
var now = false
homeViewModel.getHappeningNow().observe(requireActivity(), {
it.forEach { it1->
val pattern = "dd-MM-yyyy"
val dateInString: String = SimpleDateFormat(pattern, Locale.getDefault()).format(Date())
val startingTime = getMilli("$dateInString ${it1.startTime}")
val endingTime = getMilli("$dateInString ${it1.endTime}")
if(System.currentTimeMillis() in startingTime until endingTime) {
txt_now_subject_title.text = it1.subjectName
txt_now_room_num.text = it1.roomNumber
txt_now_time.text = "${it1.startTimeShow} - ${it1.endTimeShow}"
now = true
}
}
if (!now) {
txt_now_state.text = "No class happening currently"
txt_now_time.visibility = View.GONE
card_now_class.visibility = View.GONE
}
})
}

// get time in milliseconds
private fun getMilli(myDate: String): Long {
val format = SimpleDateFormat("dd-MM-yyyy hh:mm:ss", Locale.getDefault())
val d = format.parse(myDate)
return d.time
}

private fun download_dp() {
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/res/layout/activity_new_time_table.xml
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="28dp"
android:layout_marginTop="8dp"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
Expand Down
92 changes: 92 additions & 0 deletions app/src/main/res/layout/fragment_home.xml
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,98 @@
app:layout_constraintStart_toEndOf="@+id/attendanceCard"
app:layout_constraintTop_toTopOf="@+id/attendanceCard" />

<com.google.android.material.card.MaterialCardView
android:id="@+id/card_happening_now"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="24dp"
android:outlineAmbientShadowColor="@color/latestBlue"
android:outlineSpotShadowColor="@color/latestBlue"
app:cardCornerRadius="7dp"
app:cardElevation="8dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/recyclerviewHome">

<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="8dp">

<ImageView
android:id="@+id/lec_state_circle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:paddingBottom="8dp"
android:src="@drawable/ic_ellipse_filled"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<TextView
android:id="@+id/txt_now_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="32dp"
android:text="time"
android:textColor="@color/blackToWhite"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@+id/card_now_class"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/card_now_class" />

<TextView
android:id="@+id/txt_now_state"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:text="Happening Now"
android:textColor="@color/latestBlue"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintStart_toEndOf="@+id/lec_state_circle"
app:layout_constraintTop_toTopOf="@+id/lec_state_circle" />

<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/card_now_class"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/lec_state_circle"
app:layout_constraintTop_toBottomOf="@+id/txt_now_state">

<TextView
android:id="@+id/txt_now_subject_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif"
android:gravity="center"
android:text="Subject Name"
android:textColor="@color/latestBlue"
android:textSize="24sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<TextView
android:id="@+id/txt_now_room_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:drawablePadding="5dp"
android:text="Room number"
android:textSize="14sp"
app:drawableLeftCompat="@drawable/ic_room"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/txt_now_subject_title" />
</androidx.constraintlayout.widget.ConstraintLayout>

</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>

</androidx.constraintlayout.widget.ConstraintLayout>


Expand Down
7 changes: 4 additions & 3 deletions app/src/main/res/layout/timetable_card.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,25 @@
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:cardElevation="0dp"
app:cardBackgroundColor="@android:color/transparent"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:background="@android:color/transparent"
android:layout_height="140dp">

<View
android:id="@+id/divider_bottom"
android:layout_width="match_parent"
android:layout_height="1dp"
android:visibility="gone"
android:background="?android:attr/listDivider"
android:backgroundTint="@color/blackToWhite"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
app:layout_constraintStart_toStartOf="parent" />

<ImageView
android:id="@+id/lec_state_circle"
Expand Down Expand Up @@ -118,7 +120,6 @@
</com.google.android.material.card.MaterialCardView>



</androidx.constraintlayout.widget.ConstraintLayout>

</com.google.android.material.card.MaterialCardView>

0 comments on commit 597a902

Please sign in to comment.